class Shortcode::Transformer
Public Class Methods
new(configuration)
click to toggle source
# File lib/shortcode/transformer.rb, line 3 def initialize(configuration) @configuration = configuration setup_rules end
Public Instance Methods
apply(str, options={})
click to toggle source
# File lib/shortcode/transformer.rb, line 8 def apply(str, options={}) klass_instance.apply(str, options) end
Private Instance Methods
klass()
click to toggle source
# File lib/shortcode/transformer.rb, line 14 def klass @klass ||= Class.new(Parslet::Transform) end
klass_instance()
click to toggle source
# File lib/shortcode/transformer.rb, line 18 def klass_instance @klass_instance ||= klass.new end
setup_rules()
click to toggle source
rubocop:disable Metrics/AbcSize
# File lib/shortcode/transformer.rb, line 23 def setup_rules config = @configuration klass.rule(text: klass.send(:simple, :text)) { String(text) } klass.rule( open: klass.send(:simple, :name), options: klass.send(:subtree, :options), inner: klass.send(:sequence, :inner), close: klass.send(:simple, :name) ) { Shortcode::Tag.new(name.to_s, config, options, inner.join, additional_attributes).render } klass.rule( open_close: klass.send(:simple, :name), options: klass.send(:subtree, :options) ) { Shortcode::Tag.new(name.to_s, config, options, "", additional_attributes).render } klass.rule(body: klass.send(:sequence, :strings)) { strings.join } end