Module: Finitio::Syntax::Heading

Includes:
Node
Defined in:
lib/finitio/syntax/type/heading.rb

Instance Method Summary collapse

Methods included from Node

included, #metadata, #resolve_ruby_const, #unique_names!

Instance Method Details

#allow_extra?Boolean

Returns:

  • (Boolean)


8
9
10
# File 'lib/finitio/syntax/type/heading.rb', line 8

def allow_extra?
  !allow_extra.nil?
end

#attributes(factory) ⇒ Object



16
17
18
# File 'lib/finitio/syntax/type/heading.rb', line 16

def attributes(factory)
  captures[:attribute].map{|a| a.compile(factory) }
end

#compile(factory) ⇒ Object



20
21
22
23
# File 'lib/finitio/syntax/type/heading.rb', line 20

def compile(factory)
  options = allow_extra ? allow_extra.compile(factory) : {}
  Finitio::Heading.new(attributes(factory), options)
end

#multi?Boolean

Returns:

  • (Boolean)


12
13
14
# File 'lib/finitio/syntax/type/heading.rb', line 12

def multi?
  captures[:attribute].any?{|a| a.optional? } or allow_extra?
end

#to_astObject



25
26
27
28
29
# File 'lib/finitio/syntax/type/heading.rb', line 25

def to_ast
  ast = captures[:attribute].map(&:to_ast).unshift(:heading)
  ast << allow_extra.to_ast if allow_extra
  ast
end