Sha256: c7fc1a244b5b28c77432aa1715d69c08316dea5f5c0c1a8e99f06deacc6cb50e

Contents?: true

Size: 1.03 KB

Versions: 31

Compression:

Stored size: 1.03 KB

Contents

# @Opulent
module Opulent
  # @Parser
  module Parser
    # @Define
    module Define
      # Match a definition node with its parameters and body
      #
      # def node_name[ parameters ]
      #   body nodes
      #
      # @param parent [Node] Parent node to which we append the definition
      #
      def define(parent)
        if lookahead :def_lookahead
          # Get current line's indentation
          indent = accept_unstripped(:indent) || ""

          if accept :def
            # Get definition name
            def_name = accept :identifier, :*

            # Get element attributes
            atts = attributes({}) || {}

            # Create a new node
            node = @create.definition def_name.to_sym, atts, parent, indent.size

            # Consume the newline from the end of the element
            error :define unless accept_unstripped(:line_feed).strip.empty?
            accept_unstripped :newline

            return node
          end
        end
      end
    end
  end
end

Version data entries

31 entries across 31 versions & 1 rubygems

Version Path
opulent-1.5.5 .libold/opulent/parser/define.rb
opulent-1.5.4 .libold/opulent/parser/define.rb
opulent-1.5.3 .libold/opulent/parser/define.rb
opulent-1.5.2 .libold/opulent/parser/define.rb
opulent-1.5.1 .libold/opulent/parser/define.rb
opulent-1.5.0 .libold/opulent/parser/define.rb
opulent-1.4.8 .libold/opulent/parser/define.rb
opulent-1.4.7 .libold/opulent/parser/define.rb
opulent-1.4.6 .libold/opulent/parser/define.rb
opulent-1.4.5 .libold/opulent/parser/define.rb
opulent-1.4.3 .libold/opulent/parser/define.rb
opulent-1.4.2 .libold/opulent/parser/define.rb
opulent-1.4.1 .libold/opulent/parser/define.rb
opulent-1.4.0 .libold/opulent/parser/define.rb
opulent-1.3.3 .libold/opulent/parser/define.rb
opulent-1.3.2 .libold/opulent/parser/define.rb
opulent-1.3.1 .libold/opulent/parser/define.rb
opulent-1.3.0 .libold/opulent/parser/define.rb
opulent-1.2.1 .libold/opulent/parser/define.rb
opulent-1.2.0 .libold/opulent/parser/define.rb