Sha256: bc5863aed38265136addb02525adc1cab3a8b475fe7812e8d8b5f6e2312ffd05

Contents?: true

Size: 1.04 KB

Versions: 4

Compression:

Stored size: 1.04 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

      # Transform +:param_block+ as Naming::ParamBlock.
      rule(:param_block => sequence(:assignment_list)) {
        Naming.ParamBlock(assignment_list)
      }

      # Transform +:package+ as Naming::Package.
      rule(:package => subtree(:tree)) {
        @current_package = Naming.Package(tree[:package_name].to_s)
      }
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
pione-0.2.0 lib/pione/transformer/document-transformer.rb
pione-0.1.4 lib/pione/transformer/document-transformer.rb
pione-0.1.3 lib/pione/transformer/document-transformer.rb
pione-0.1.2 lib/pione/transformer/document-transformer.rb