Sha256: 037fb6496704355bd4466932f0d59462369d1a748cdcffa0a4da43e39c42d11c
Contents?: true
Size: 1.07 KB
Versions: 2
Compression:
Stored size: 1.07 KB
Contents
class Shortcode::Transformer def initialize(configuration) @configuration = configuration setup_rules end def apply(str, options={}) klass_instance.apply(str, options) end private def klass @klass ||= Class.new(Parslet::Transform) end def klass_instance @klass_instance ||= klass.new end # rubocop:disable Metrics/AbcSize 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 # rubocop:enable Metrics/AbcSize end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
shortcode-2.0.0 | lib/shortcode/transformer.rb |
shortcode-2.0.0.pre | lib/shortcode/transformer.rb |