class Dry::Schema::Messages::Template
@api private
dynamically
Template wraps a string with interpolation tokens and defines evaluator function
def self.[](input)
- Api: - private
def self.[](input) new(*parse(input)) end
def self.parse(input)
- Api: - private
def self.parse(input) tokens = input.scan(TOKEN_REGEXP).flatten(1).map(&:to_sym) text = input.gsub('%', '#') evaluator = <<-RUBY.strip -> (#{tokens.map { |token| "#{token}:" }.join(", ")}) { "#{text}" } RUBY [text, tokens, eval(evaluator, binding, __FILE__, __LINE__ - 3)] end
def call(data = EMPTY_HASH)
- Api: - private
def call(data = EMPTY_HASH) data.empty? ? evaluator.() : evaluator.(data) end
def data(input)
- Api: - private
def data(input) tokens.each_with_object({}) { |k, h| h[k] = input[k] } end
def initialize(text, tokens, evaluator)
- Api: - private
def initialize(text, tokens, evaluator) @text = text @tokens = tokens @evaluator = evaluator end