class Smartdown::Engine::Interpolator::ElementContentInterpolator
Public Instance Methods
call(state)
click to toggle source
# File lib/smartdown/engine/interpolator.rb, line 38 def call(state) element.dup.tap do |e| e.content = interpolate(e.content, state) end end
Private Instance Methods
interpolate(text, state)
click to toggle source
# File lib/smartdown/engine/interpolator.rb, line 45 def interpolate(text, state) text.to_s.gsub(/%{([^}]+)}/) do |_| term = resolve_term($1, state) if term.is_a?(Smartdown::Model::Answer::Base) term = term.humanize end term end end
resolve_term(interpolation, state)
click to toggle source
# File lib/smartdown/engine/interpolator.rb, line 55 def resolve_term(interpolation, state) begin parsed = Smartdown::Parser::Predicates.new.parse(interpolation) Smartdown::Parser::NodeTransform.new.apply(parsed, {}).evaluate(state) rescue Parslet::ParseFailed state.get(interpolation) end end