Sha256: c84d55f3ae3ae62ef04d907c7dc8ac710ff2752bbff90fb5b5308a047d83f068
Contents?: true
Size: 1.79 KB
Versions: 2
Compression:
Stored size: 1.79 KB
Contents
module Pione module Transformer # DocumentTransformer is a transformer for syntax tree of document. class DocumentTransformer < Parslet::Transform include LiteralTransformer include FeatureExprTransformer include ExprTransformer include FlowElementTransformer include BlockTransformer include RuleDefinitionTransformer # @param package_name [String] # package name of the document def initialize(package_name="Main") super() @current_package_name = package_name Thread.current[:current_package_name] = @current_package_name end def check_model_type(data, type) data.pione_model_type == type end rule(:toplevel_assignment_line => simple(:assignment)) { Naming.AssignmentLine(assignment.set_toplevel(true)) } rule(:toplevel_param_line => simple(:naming_param_line)) { assignment = naming_param_line.value assignment.set_toplevel(true) assignment.set_user_param(true) Naming.ParamLine(assignment) } # Transform +:param_block+ as Naming::ParamBlock. rule(:param_block => subtree(:tree)) { param_type = tree[:param_type] assignments = tree[:in_block_assignments] _assignments = assignments.map do |assignment| assignment.set_toplevel(true) assignment.set_user_param(true) case param_type when "Advanced" assignment.set_param_type(:advanced) else assignment.set_param_type(:basic) end end Naming.ParamBlock(_assignments) } # Transform +:package+ as Naming::Package. rule(:package => subtree(:tree)) { @current_package = Naming.Package(tree[:package_name].to_s) } end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
pione-0.2.2 | lib/pione/transformer/document-transformer.rb |
pione-0.2.1 | lib/pione/transformer/document-transformer.rb |