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 = metadata
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_ast ⇒ Object
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
|