Sha256: be4d10644b4632da329dd4cf3964ed21717ce3421f199bf8f537d1b786d82c69
Contents?: true
Size: 1.05 KB
Versions: 2
Compression:
Stored size: 1.05 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 def setup_rules shortcode_configuration = @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, shortcode_configuration, 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, shortcode_configuration, options, '', additional_attributes).render } klass.rule(body: klass.send(:sequence, :strings)) { strings.join } end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
shortcode-1.2.1 | lib/shortcode/transformer.rb |
shortcode-1.2.0 | lib/shortcode/transformer.rb |