Sha256: 08a51afc4eca4dd45ca5ca198ad68e2d00e88bba38d9d749bea682a32fdf6507

Contents?: true

Size: 654 Bytes

Versions: 3

Compression:

Stored size: 654 Bytes

Contents

module Xdrgen::AST
  module Declarations
    class Base < Treetop::Runtime::SyntaxNode
      TYPE_NODES = [
        Typespecs::Base,
        Concerns::NestedDefinition,
        Concerns::Contained,
      ]

      def type
        search(type_s) do |node|
          TYPE_NODES.any?{|t| node.is_a?(t)}
        end
      end

      private
      def search(cur_el, &predicate)
        return cur_el if predicate.call(cur_el)
        return if cur_el.elements.blank?

        cur_el.elements.each do |next_el|
          child_result = search(next_el, &predicate)
          return child_result if child_result.present?
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
xdrgen-0.1.1 lib/xdrgen/ast/declarations/base.rb
xdrgen-0.1.0 lib/xdrgen/ast/declarations/base.rb
xdrgen-0.0.1 lib/xdrgen/ast/declarations/base.rb