Sha256: ebff71eab4a48f017f0b26f4f9d721d92beb0fd984d16f2fc509a34a4ba4d55b

Contents?: true

Size: 1.14 KB

Versions: 7

Compression:

Stored size: 1.14 KB

Contents

# @Opulent
module Opulent
  # @Parser
  class Parser
    # Check if we match a new node definition to use within our page.
    #
    # Definitions will not be recursive because, by the time we parse
    # the definition children, the definition itself is not in the
    # knowledgebase yet.
    #
    # However, we may use previously defined nodes inside new definitions,
    # due to the fact that they are known at parse time.
    #
    # @param nodes [Array] Parent node to which we append to
    #
    def define(parent, indent)
      return unless accept(:def)

      # Definition parent check
      Logger.error :parse, @code, @i, @j, :definition if parent[@type] != :root

      # Process data
      name = accept(:node, :*).to_sym

      # Create node
      definition = [:def, name, { parameters: attributes }, [], indent]

      # Set definition as root node and let the parser know that we're inside
      # a definition. This is used because inside definitions we do not
      # process nodes (we do not check if they are have a definition or not).
      root definition, indent

      # Add to parent
      @definitions[name] = definition
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
opulent-1.6.7 lib/opulent/parser/define.rb
opulent-1.6.6 lib/opulent/parser/define.rb
opulent-1.6.5 lib/opulent/parser/define.rb
opulent-1.6.3 lib/opulent/parser/define.rb
opulent-1.6.2 lib/opulent/parser/define.rb
opulent-1.6.1 lib/opulent/parser/define.rb
opulent-1.6.0 lib/opulent/parser/define.rb