module SatoriLikeDictionary::Renderer
satori token renderer
Constants
- NUMBERS
number map
Public Instance Methods
render(events, request)
click to toggle source
render the content @param [Events] events events definition @param [OpenStruct] request request hash @return [String|OpenStruct] result
# File lib/satori_like_dictionary.rb, line 147 def render(events, request) value = render_base(events, request) if request.__satori_target_character OpenStruct.new({Value: value, Reference0: request.__satori_target_character}) else value end end
render_base(events, request)
click to toggle source
process basic replacements @param [Events] events events definition @param [OpenStruct] request request hash @return [String] result
# File lib/satori_like_dictionary.rb, line 115 def render_base(events, request) value = render_template(events, request) .gsub(/\b_(\S+)/, "\\q[\\1,\\1]") .gsub(/(([^)]*))/) do content = $1 if content.match(/^[0-90-9]+$/) "\\s[#{content.gsub(/[0-9]/) {|m| NUMBERS[m]} }]" else begin entry = events.send(content, request) # event rescue ArgumentError entry = events.send(content) # satori dictionary rescue NoMethodError entry = nil # wrong event end if entry.respond_to?(:render) # satori entry entry.render(events, request) elsif entry.respond_to?(:Value) # ostruct value entry.Value else # simple value entry end end end .gsub(/\r?\n/, "\\n") value end
render_template(events, request)
click to toggle source
execute template @param [Events] events events definition @param [OpenStruct] request request hash @return [String] result
# File lib/satori_like_dictionary.rb, line 105 def render_template(events, request) template = NanoTemplate.new.template(to_template) context = TemplateContext.new(events, request) template.call(context) end