Module: Finitio::Syntax::Attribute

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

Instance Method Summary collapse

Methods included from Node

included, #metadata, #resolve_ruby_const, #unique_names!

Instance Method Details

#compile(factory) ⇒ Object



17
18
19
20
21
22
23
# File 'lib/finitio/syntax/type/attribute.rb', line 17

def compile(factory)
  n = attribute_name.to_sym
  t = type.compile(factory)
  r = required?
  m = 
  factory.attribute(n, t, r, m)
end

#optional?Boolean



9
10
11
# File 'lib/finitio/syntax/type/attribute.rb', line 9

def optional?
  multiplicity == ':?'
end

#required?Boolean



13
14
15
# File 'lib/finitio/syntax/type/attribute.rb', line 13

def required?
  multiplicity == ':'
end

#to_astObject



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

def to_ast
  ast = [:attribute, attribute_name, type.to_ast]
  ast << false unless required?
  ast
end