Package xyz.cofe.text

Class 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

      All Methods Static Methods Instance Methods Concrete Methods 
      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 Detail

      • items

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

      • Template

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

      • 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:
        текстовое представление