Class: TermUtils::AP::Syntax
- Inherits:
-
Object
- Object
- TermUtils::AP::Syntax
- Defined in:
- lib/term_utils/ap/syntax.rb
Overview
Represents the argument list syntax. It holds a list of parameters and levels.
Instance Attribute Summary collapse
Instance Method Summary collapse
-
#define_level(opts = {}, &block) ⇒ TermUtils::AP::Level
Creates and adds a new Level.
-
#define_parameter(opts = {}, &block) ⇒ TermUtils::AP::Parameter
Creates and adds a new Parameter.
-
#fetch_elements ⇒ Array
Fetches all direct flagged parameters and levels.
-
#fetch_flagged_elements ⇒ Hash<String, TermUtils::AP::Element>
Fetches all direct flagged parameters and levels.
-
#fetch_unflagged_parameters ⇒ Array<TermUtils::AP::Parameter>
Fetches all direct unflagged.
-
#finalize!(opts = {}) ⇒ nil
Finalizes this one.
-
#initialize ⇒ Syntax
constructor
Constructs a new Syntax.
-
#initialize_dup(other) ⇒ Object
For dup method.
Constructor Details
#initialize ⇒ Syntax
Constructs a new Syntax.
26 27 28 |
# File 'lib/term_utils/ap/syntax.rb', line 26 def initialize @elements = [] end |
Instance Attribute Details
#elements ⇒ Array<TermUtils::AP::Element>
24 25 26 |
# File 'lib/term_utils/ap/syntax.rb', line 24 def elements @elements end |
Instance Method Details
#define_level(opts = {}, &block) ⇒ TermUtils::AP::Level
Creates and adds a new Level.
63 64 65 66 67 68 |
# File 'lib/term_utils/ap/syntax.rb', line 63 def define_level(opts = {}, &block) new_level = TermUtils::AP::Level.new(opts) @elements << new_level block.call(new_level) if block new_level end |
#define_parameter(opts = {}, &block) ⇒ TermUtils::AP::Parameter
Creates and adds a new Parameter.
51 52 53 54 55 56 |
# File 'lib/term_utils/ap/syntax.rb', line 51 def define_parameter(opts = {}, &block) new_parameter = TermUtils::AP::Parameter.new(opts) @elements << new_parameter block.call(new_parameter) if block new_parameter end |
#fetch_elements ⇒ Array
Fetches all direct flagged parameters and levels.
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/term_utils/ap/syntax.rb', line 73 def fetch_elements flagged_elems = {} unflagged_params = [] @elements.each do |e| if e.flags.empty? # Parameter unflagged_params << e else # Parameter or Level e.flags.each do |f| flagged_elems[f.to_s] = e end end end [flagged_elems, unflagged_params] end |
#fetch_flagged_elements ⇒ Hash<String, TermUtils::AP::Element>
Fetches all direct flagged parameters and levels.
91 92 93 94 95 96 97 98 99 |
# File 'lib/term_utils/ap/syntax.rb', line 91 def fetch_flagged_elements elems = {} @elements.each do |e| e.flags.each do |f| elems[f.to_s] = e end end elems end |
#fetch_unflagged_parameters ⇒ Array<TermUtils::AP::Parameter>
Fetches all direct unflagged.
102 103 104 105 106 107 108 109 |
# File 'lib/term_utils/ap/syntax.rb', line 102 def fetch_unflagged_parameters params = [] @elements.each do |e| next unless e.is_a? TermUtils::AP::Parameter params << e if e.flags.empty? end params end |
#finalize!(opts = {}) ⇒ nil
Finalizes this one. Internal use.
41 42 43 44 |
# File 'lib/term_utils/ap/syntax.rb', line 41 def finalize!(opts = {}) opts[:anonymous] = 0 unless opts.has_key? :anonymous @elements.each { |e| e.finalize!(opts) } end |
#initialize_dup(other) ⇒ Object
For dup method.
30 31 32 33 34 35 36 37 38 |
# File 'lib/term_utils/ap/syntax.rb', line 30 def initialize_dup(other) if other.elements @elements = [] other.elements.each do |e| @elements << e.dup end end super end |