base/src/sqwl/cms/package.scala
author Tomas Zeman <tomas@functionals.cz>
Tue, 29 Dec 2020 16:57:31 +0100
changeset 34 775d6da26993
parent 23 afcfbdeb3b88
permissions -rw-r--r--
Dynamic content rendering: current time tag.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
34
775d6da26993 Dynamic content rendering: current time tag.
Tomas Zeman <tomas@functionals.cz>
parents: 23
diff changeset
     1
/*
775d6da26993 Dynamic content rendering: current time tag.
Tomas Zeman <tomas@functionals.cz>
parents: 23
diff changeset
     2
 * Copyright 2018-2020 Tomas Zeman <tomas@functionals.cz>
775d6da26993 Dynamic content rendering: current time tag.
Tomas Zeman <tomas@functionals.cz>
parents: 23
diff changeset
     3
 *
775d6da26993 Dynamic content rendering: current time tag.
Tomas Zeman <tomas@functionals.cz>
parents: 23
diff changeset
     4
 * Licensed under the Apache License, Version 2.0 (the "License");
775d6da26993 Dynamic content rendering: current time tag.
Tomas Zeman <tomas@functionals.cz>
parents: 23
diff changeset
     5
 * you may not use this file except in compliance with the License.
775d6da26993 Dynamic content rendering: current time tag.
Tomas Zeman <tomas@functionals.cz>
parents: 23
diff changeset
     6
 * You may obtain a copy of the License at
775d6da26993 Dynamic content rendering: current time tag.
Tomas Zeman <tomas@functionals.cz>
parents: 23
diff changeset
     7
 *
775d6da26993 Dynamic content rendering: current time tag.
Tomas Zeman <tomas@functionals.cz>
parents: 23
diff changeset
     8
 *     http://www.apache.org/licenses/LICENSE-2.0
775d6da26993 Dynamic content rendering: current time tag.
Tomas Zeman <tomas@functionals.cz>
parents: 23
diff changeset
     9
 *
775d6da26993 Dynamic content rendering: current time tag.
Tomas Zeman <tomas@functionals.cz>
parents: 23
diff changeset
    10
 * Unless required by applicable law or agreed to in writing, software
775d6da26993 Dynamic content rendering: current time tag.
Tomas Zeman <tomas@functionals.cz>
parents: 23
diff changeset
    11
 * distributed under the License is distributed on an "AS IS" BASIS,
775d6da26993 Dynamic content rendering: current time tag.
Tomas Zeman <tomas@functionals.cz>
parents: 23
diff changeset
    12
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
775d6da26993 Dynamic content rendering: current time tag.
Tomas Zeman <tomas@functionals.cz>
parents: 23
diff changeset
    13
 * See the License for the specific language governing permissions and
775d6da26993 Dynamic content rendering: current time tag.
Tomas Zeman <tomas@functionals.cz>
parents: 23
diff changeset
    14
 * limitations under the License.
775d6da26993 Dynamic content rendering: current time tag.
Tomas Zeman <tomas@functionals.cz>
parents: 23
diff changeset
    15
 */
16
4556852613a9 Scalatex based article implementation
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    16
package sqwl
4556852613a9 Scalatex based article implementation
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    17
4556852613a9 Scalatex based article implementation
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    18
import java.nio.file.Path
34
775d6da26993 Dynamic content rendering: current time tag.
Tomas Zeman <tomas@functionals.cz>
parents: 23
diff changeset
    19
import java.time.LocalDateTime
16
4556852613a9 Scalatex based article implementation
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    20
4556852613a9 Scalatex based article implementation
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    21
import scala.io.Source
4556852613a9 Scalatex based article implementation
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    22
import scala.util.{Failure, Success, Try}
23
afcfbdeb3b88 @lnk method
Tomas Zeman <tzeman@volny.cz>
parents: 18
diff changeset
    23
import scalatags.Text.all._
34
775d6da26993 Dynamic content rendering: current time tag.
Tomas Zeman <tomas@functionals.cz>
parents: 23
diff changeset
    24
import scalatags.text.Builder
16
4556852613a9 Scalatex based article implementation
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    25
4556852613a9 Scalatex based article implementation
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    26
package object cms {
4556852613a9 Scalatex based article implementation
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    27
18
8cfd67425811 Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents: 16
diff changeset
    28
  def readSourceFull(src: Source): Try[String] = {
16
4556852613a9 Scalatex based article implementation
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    29
    try {
4556852613a9 Scalatex based article implementation
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    30
      Success(src.getLines.mkString)
4556852613a9 Scalatex based article implementation
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    31
    } catch {
4556852613a9 Scalatex based article implementation
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    32
      case t: Throwable => Failure(t)
4556852613a9 Scalatex based article implementation
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    33
    } finally {
4556852613a9 Scalatex based article implementation
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    34
      src.close()
4556852613a9 Scalatex based article implementation
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    35
    }
4556852613a9 Scalatex based article implementation
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    36
  }
18
8cfd67425811 Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents: 16
diff changeset
    37
8cfd67425811 Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents: 16
diff changeset
    38
  def readFile(f: Path, enc: String = "UTF-8"): Try[String] =
8cfd67425811 Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents: 16
diff changeset
    39
    readSourceFull(Source.fromFile(f.toFile, enc))
8cfd67425811 Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents: 16
diff changeset
    40
8cfd67425811 Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents: 16
diff changeset
    41
  def readFile(f: String): String =
8cfd67425811 Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents: 16
diff changeset
    42
    readSourceFull(Source.fromFile(f, "UTF-8")) getOrElse ""
8cfd67425811 Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents: 16
diff changeset
    43
23
afcfbdeb3b88 @lnk method
Tomas Zeman <tzeman@volny.cz>
parents: 18
diff changeset
    44
  def lnk(name: String, customUrl: String = ""): Frag = {
afcfbdeb3b88 @lnk method
Tomas Zeman <tzeman@volny.cz>
parents: 18
diff changeset
    45
    val usedUrl = if (customUrl == "") name else customUrl
afcfbdeb3b88 @lnk method
Tomas Zeman <tzeman@volny.cz>
parents: 18
diff changeset
    46
    a(name, href := usedUrl)
afcfbdeb3b88 @lnk method
Tomas Zeman <tzeman@volny.cz>
parents: 18
diff changeset
    47
  }
34
775d6da26993 Dynamic content rendering: current time tag.
Tomas Zeman <tomas@functionals.cz>
parents: 23
diff changeset
    48
775d6da26993 Dynamic content rendering: current time tag.
Tomas Zeman <tomas@functionals.cz>
parents: 23
diff changeset
    49
  def time: Frag = new Frag {
775d6da26993 Dynamic content rendering: current time tag.
Tomas Zeman <tomas@functionals.cz>
parents: 23
diff changeset
    50
775d6da26993 Dynamic content rendering: current time tag.
Tomas Zeman <tomas@functionals.cz>
parents: 23
diff changeset
    51
    override def render: String = {
775d6da26993 Dynamic content rendering: current time tag.
Tomas Zeman <tomas@functionals.cz>
parents: 23
diff changeset
    52
      println("time.render()")
775d6da26993 Dynamic content rendering: current time tag.
Tomas Zeman <tomas@functionals.cz>
parents: 23
diff changeset
    53
      LocalDateTime.now().toString
775d6da26993 Dynamic content rendering: current time tag.
Tomas Zeman <tomas@functionals.cz>
parents: 23
diff changeset
    54
    }
775d6da26993 Dynamic content rendering: current time tag.
Tomas Zeman <tomas@functionals.cz>
parents: 23
diff changeset
    55
775d6da26993 Dynamic content rendering: current time tag.
Tomas Zeman <tomas@functionals.cz>
parents: 23
diff changeset
    56
    override def applyTo(t: Builder): Unit = {
775d6da26993 Dynamic content rendering: current time tag.
Tomas Zeman <tomas@functionals.cz>
parents: 23
diff changeset
    57
      println("time.applyTo()")
775d6da26993 Dynamic content rendering: current time tag.
Tomas Zeman <tomas@functionals.cz>
parents: 23
diff changeset
    58
      t.addChild(render)
775d6da26993 Dynamic content rendering: current time tag.
Tomas Zeman <tomas@functionals.cz>
parents: 23
diff changeset
    59
    }
775d6da26993 Dynamic content rendering: current time tag.
Tomas Zeman <tomas@functionals.cz>
parents: 23
diff changeset
    60
  }
16
4556852613a9 Scalatex based article implementation
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    61
}