Module: Pione::Util::ParsletTransformerModule
- Included in:
- Lang::ConditionalBranchTransformer, Lang::ContextTransformer, Lang::DeclarationTransformer, Lang::ExprTransformer, Lang::LiteralTransformer
- Defined in:
- lib/pione/util/parslet-extension.rb
Overview
+ParsletTransformerModule+ enables parslet's transforms to be defined by multiple modules.
Class Method Summary collapse
- .included(mod) ⇒ Object private
Class Method Details
.included(mod) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
# File 'lib/pione/util/parslet-extension.rb', line 119 def included(mod) singleton = class << mod; self; end create_pair_by(Parslet, Parslet::Transform).each do |name, orig| singleton.__send__(:define_method, name) do |*args, &b| orig.__send__(name, *args, &b) end end class << mod def included(klass) name = :@__transform_rules klass_rules = klass.instance_variable_get(name) klass_rules = klass_rules ? klass_rules + rules : rules klass.instance_variable_set(name, klass_rules) end end end |