All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.mchange.feedletter.trivialtemplate.TrivialTemplate.scala Maven / Gradle / Ivy

package com.mchange.feedletter.trivialtemplate

/**
  * Replacement is case-insensitive
  */
object TrivialTemplate:
  private val KeyRegex        = """(?i)(? String = k => throw new KeyNotFound(s"Key '$k' required by template, not found.")
    val AsIs : String => String = k => s"%$k%"

  def escapeText( text : String ) : String =
    KeyRegex.replaceAllIn( text, m => """\""" + m.group(0) )

case class TrivialTemplate( body : String ):
  import TrivialTemplate.*

  def resolve( replacements : Map[String,String], defaults : String => String = Defaults.Fail ) : String =
    val replaced = KeyRegex.replaceAllIn( body, m => { val k = m.group(1).toLowerCase(); replacements.map((k,v)=>(k.toLowerCase,v)).getOrElse( k, defaults(k) ) } )
    val unescaped = EscapedKeyRegex.replaceAllIn( replaced, m => m.group(0).substring(1) ) 
    unescaped





© 2015 - 2025 Weber Informatics LLC | Privacy Policy