Package xyz.cofe.text

Class Template<V>

java.lang.Object
xyz.cofe.text.Template<V>

public class Template<V>
extends java.lang.Object
Простые текстовые шаблоны.

Шаблон задается в виде строки с переменными, пример: "hello ${text}"

В дальнейшем этот шаблон можно использовать, подставляя на место переменной реальные значения.

Пример:
     public static class Item {
         public final int a;
         public final int b;

         public Item(int a, int b) {
             this.a = a;
             this.b = b;
         }
     }

     public void test03(){
         var str = Template
             .parse("a=${a} b=${b}",Item.class)
             .bind("a", v->""+v.a )
             .bind("b", v->""+v.b )
             .eval(new Item(1,3));

         System.out.println(str);
         // будет выведено: a=1 b=3
     }
 
  • Nested Class Summary

    Nested Classes 
    Modifier and Type Class Description
    static class  Template.BindedCodeItem<V>
    Фрагмент шаблона - переменная которая уже связана с функций
    static class  Template.CodeItem<V>
    Фрагмент шаблона - переменная которая еще не связана с функций
    static class  Template.Item<V>
    Фрагмент шаблона
    static class  Template.TextItem<V>
    Фрагмент шаблона - обычный текст
  • Field Summary

    Fields 
    Modifier and Type Field Description
    protected java.util.List<Template.Item<V>> items
    Элементы шаблона
  • Constructor Summary

    Constructors 
    Constructor Description
    Template​(java.util.List<Template.Item<V>> items)
    Конструктор
  • Method Summary

    Modifier and Type Method Description
    Template<V> bind​(java.lang.String code, java.util.function.Function<V,​java.lang.String> evalFun)
    Клонирует и привязывает наименование переменной в шаблоне с функцией генератором значения.
    Template<V> binder​(java.util.function.Function<java.lang.String,​java.util.Optional<java.util.function.Function<V,​java.lang.String>>> binder)
    Клонирует и привязывает наименование переменной в шаблоне с функцией генератором значения.
    java.lang.String eval​(V value)
    Интерпретация шаблона
    java.util.List<Template.Item<V>> items()
    Возвращает элементы шаблона
    static <V> Template<V> parse​(java.lang.String template)
    Парсинг шаблона
    static <V> Template<V> parse​(java.lang.String template, java.lang.Class<V> valueType)
    Парсинг шаблона
    static <A> java.util.List<A> parse​(java.lang.String template, java.util.function.Function<java.lang.String,​A> text, java.util.function.Function<java.lang.String,​A> code)
    Парсинг шаблонов
    java.lang.String toString()
    Возвращает текст шаблона

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Field Details

    • items

      protected final java.util.List<Template.Item<V>> items
      Элементы шаблона
  • Constructor Details

    • Template

      public Template​(java.util.List<Template.Item<V>> items)
      Конструктор
      Parameters:
      items - элементы шаблона
  • Method Details

    • parse

      public static <A> java.util.List<A> parse​(java.lang.String template, java.util.function.Function<java.lang.String,​A> text, java.util.function.Function<java.lang.String,​A> code)
      Парсинг шаблонов
      Type Parameters:
      A - тип результата интерпретации фрагмента
      Parameters:
      template - шаблон
      text - функция интерпретации текста
      code - функция интерпретации переменной/кода
      Returns:
      фрагменты
    • items

      public java.util.List<Template.Item<V>> items()
      Возвращает элементы шаблона
      Returns:
      Элементы шаблона
    • toString

      public java.lang.String toString()
      Возвращает текст шаблона
      Overrides:
      toString in class java.lang.Object
      Returns:
      текст шаблона
    • parse

      public static <V> Template<V> parse​(java.lang.String template, java.lang.Class<V> valueType)
      Парсинг шаблона
      Type Parameters:
      V - тип значения
      Parameters:
      template - шаблон
      valueType - тип значения
      Returns:
      шаблон
    • parse

      public static <V> Template<V> parse​(java.lang.String template)
      Парсинг шаблона
      Type Parameters:
      V - тип значения
      Parameters:
      template - шаблон
      Returns:
      шаблон
    • binder

      public Template<V> binder​(java.util.function.Function<java.lang.String,​java.util.Optional<java.util.function.Function<V,​java.lang.String>>> binder)
      Клонирует и привязывает наименование переменной в шаблоне с функцией генератором значения.
      Ранее связанные переменные не переопределяются.
      Parameters:
      binder - функция связывающая шаблон с значением
      Returns:
      новый шаблон
    • bind

      public Template<V> bind​(java.lang.String code, java.util.function.Function<V,​java.lang.String> evalFun)
      Клонирует и привязывает наименование переменной в шаблоне с функцией генератором значения.
      Ранее связанные переменные не переопределяются.
      Parameters:
      code - наименование переменной
      evalFun - функция связывающая шаблон с значением
      Returns:
      новый шаблон
      See Also:
      binder(Function)
    • eval

      public java.lang.String eval​(V value)
      Интерпретация шаблона
      Parameters:
      value - значение подставляемое в шаблон
      Returns:
      текстовое представление