term_utils 0.3.2 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +16 -2
- data/COPYING +3 -3
- data/README.md +51 -16
- data/Rakefile +6 -0
- data/doc/TermUtils/AP/Article.html +57 -55
- data/doc/TermUtils/AP/ArticleResult.html +584 -0
- data/doc/TermUtils/AP/Flag.html +295 -78
- data/doc/TermUtils/AP/Parameter.html +891 -103
- data/doc/TermUtils/AP/ParameterResult.html +980 -0
- data/doc/TermUtils/{FF/Cursor/Context.html → AP/ParameterWalkerHooks.html} +60 -60
- data/doc/TermUtils/AP/ParseError.html +651 -19
- data/doc/TermUtils/AP/Parser.html +181 -121
- data/doc/TermUtils/AP/Result.html +201 -528
- data/doc/TermUtils/AP/Syntax.html +103 -393
- data/doc/TermUtils/AP/SyntaxError.html +9 -91
- data/doc/TermUtils/AP/Walker.html +686 -0
- data/doc/TermUtils/AP.html +49 -160
- data/doc/TermUtils/FF/Config.html +203 -35
- data/doc/TermUtils/FF/Context.html +585 -0
- data/doc/TermUtils/FF/Entry.html +626 -0
- data/doc/TermUtils/FF/Finder.html +850 -0
- data/doc/TermUtils/FF/{Cursor.html → FinderEntry.html} +473 -211
- data/doc/TermUtils/FF/FinderQuery.html +946 -0
- data/doc/TermUtils/FF/Query.html +402 -70
- data/doc/TermUtils/FF.html +135 -11
- data/doc/TermUtils/PropertyTreeNode.html +304 -190
- data/doc/TermUtils/Tab/Column.html +98 -96
- data/doc/TermUtils/Tab/Header.html +30 -30
- data/doc/TermUtils/Tab/Holder.html +81 -81
- data/doc/TermUtils/Tab/Printer.html +43 -43
- data/doc/TermUtils/Tab/Table.html +124 -128
- data/doc/TermUtils/Tab/TableError.html +7 -89
- data/doc/TermUtils/Tab.html +93 -86
- data/doc/TermUtils.html +10 -10
- data/doc/_index.html +62 -42
- data/doc/class_list.html +3 -3
- data/doc/css/style.css +3 -2
- data/doc/file.README.html +63 -26
- data/doc/file_list.html +2 -2
- data/doc/frames.html +2 -2
- data/doc/index.html +63 -26
- data/doc/js/app.js +14 -3
- data/doc/method_list.html +708 -236
- data/doc/top-level-namespace.html +7 -7
- data/lib/term_utils/ap/article.rb +15 -9
- data/lib/term_utils/ap/flag.rb +37 -20
- data/lib/term_utils/ap/parameter.rb +88 -19
- data/lib/term_utils/ap/parser.rb +143 -116
- data/lib/term_utils/ap/result.rb +208 -161
- data/lib/term_utils/ap/syntax.rb +53 -69
- data/lib/term_utils/ap.rb +79 -24
- data/lib/term_utils/ff/config.rb +22 -10
- data/lib/term_utils/{ap/no_such_value_error.rb → ff/entry.rb} +26 -8
- data/lib/term_utils/ff/finder.rb +255 -0
- data/lib/term_utils/ff/query.rb +94 -17
- data/lib/term_utils/ff.rb +12 -2
- data/lib/term_utils/property_tree_node.rb +47 -19
- data/lib/term_utils/tab.rb +106 -61
- data/lib/term_utils.rb +8 -1
- data/term_utils.gemspec +4 -4
- metadata +18 -17
- data/doc/TermUtils/AP/Element.html +0 -1025
- data/doc/TermUtils/AP/Level.html +0 -638
- data/doc/TermUtils/AP/NoSuchValueError.html +0 -217
- data/lib/term_utils/ap/element.rb +0 -78
- data/lib/term_utils/ap/level.rb +0 -57
- data/lib/term_utils/ap/parse_error.rb +0 -27
- data/lib/term_utils/ap/syntax_error.rb +0 -27
- data/lib/term_utils/ff/cursor.rb +0 -153
data/lib/term_utils/ap/result.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
# Copyright (C)
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Copyright (C) 2023 Thomas Baron
|
4
4
|
#
|
5
5
|
# This file is part of term_utils.
|
6
6
|
#
|
@@ -15,183 +15,230 @@
|
|
15
15
|
#
|
16
16
|
# You should have received a copy of the GNU General Public License
|
17
17
|
# along with term_utils. If not, see <https://www.gnu.org/licenses/>.
|
18
|
+
|
18
19
|
module TermUtils
|
19
20
|
module AP
|
20
21
|
# Represents an argument parsing Result.
|
21
22
|
class Result
|
22
|
-
# @return [
|
23
|
-
|
23
|
+
# @return [Syntax]
|
24
|
+
attr_reader :parameter
|
25
|
+
# @return [Array<ParameterResult>]
|
26
|
+
attr_reader :results
|
27
|
+
# @return [Array<String>]
|
28
|
+
attr_accessor :remaining_arguments
|
29
|
+
|
24
30
|
# Constructs a new Result.
|
25
|
-
# @param syntax [
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
@
|
30
|
-
@element = element ? element.dup : nil
|
31
|
-
if value
|
32
|
-
@value = value.dup
|
33
|
-
@value.key = nil
|
34
|
-
else
|
35
|
-
@value = TermUtils::PropertyTreeNode.new
|
36
|
-
end
|
31
|
+
# @param syntax [Syntax]
|
32
|
+
def initialize(syntax)
|
33
|
+
@syntax = syntax
|
34
|
+
@results = []
|
35
|
+
@remaining_arguments = nil
|
37
36
|
end
|
38
|
-
|
39
|
-
#
|
40
|
-
# @
|
41
|
-
def
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
37
|
+
|
38
|
+
# Adds a ParameterResult.
|
39
|
+
# @param result [ParameterResult]
|
40
|
+
def add_result(result)
|
41
|
+
@results << result
|
42
|
+
end
|
43
|
+
|
44
|
+
# Returns the first ParameterResult for a given parameter id.
|
45
|
+
# @param id [Symbol]
|
46
|
+
# @return [ParameterResult]
|
47
|
+
def find_parameter(id)
|
48
|
+
@results.find { |r| r.param_id == id }
|
49
|
+
end
|
50
|
+
|
51
|
+
# Returns all ParameterResult(s) for a given parameter id.
|
52
|
+
# @param id [Symbol]
|
53
|
+
# @return [Array<ParameterResult>]
|
54
|
+
def find_parameters(id)
|
55
|
+
@results.find_all { |r| r.param_id == id }
|
56
|
+
end
|
57
|
+
|
58
|
+
# Walks through this one.
|
59
|
+
def walk(&block)
|
60
|
+
walker = TermUtils::AP::Walker.new
|
61
|
+
block.call(walker)
|
62
|
+
@results.each do |p|
|
63
|
+
p.results.each do |a|
|
64
|
+
walker.notify_article(a)
|
56
65
|
end
|
66
|
+
walker.notify_parameter(p)
|
57
67
|
end
|
58
|
-
|
59
|
-
end
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
68
|
+
walker.notify_finished(@remaining_arguments)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
# Represents a result for a parameter.
|
73
|
+
class ParameterResult
|
74
|
+
# @return [Parameter]
|
75
|
+
attr_accessor :parameter
|
76
|
+
# @return [Array<ArticleResult>]
|
77
|
+
attr_accessor :results
|
78
|
+
|
79
|
+
# Constructs a new ParameterResult.
|
80
|
+
# @param parent [Result]
|
81
|
+
# @param parameter [Parameter]
|
82
|
+
def initialize(parent, parameter)
|
83
|
+
@parent = parent
|
84
|
+
@parent.add_result(self)
|
85
|
+
@parameter = parameter
|
86
|
+
@results = []
|
87
|
+
end
|
88
|
+
|
89
|
+
# Adds an ArticleResult.
|
90
|
+
# @param result [ArticleResult]
|
91
|
+
def add_result(result)
|
92
|
+
@results << result
|
69
93
|
end
|
70
|
-
|
71
|
-
# @
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
#
|
84
|
-
# @param id [Symbol
|
85
|
-
# @
|
86
|
-
|
87
|
-
|
94
|
+
|
95
|
+
# @return [Symbol]
|
96
|
+
def param_id
|
97
|
+
@parameter.id
|
98
|
+
end
|
99
|
+
|
100
|
+
# Returns the first ArticleResult for a given article id.
|
101
|
+
# @param id [Symbol]
|
102
|
+
# @return [ArticleResult]
|
103
|
+
def find_article(id)
|
104
|
+
@results.find { |r| r.art_id == id }
|
105
|
+
end
|
106
|
+
|
107
|
+
# Returns all ArticleResult(s) for a given article id.
|
108
|
+
# @param id [Symbol]
|
109
|
+
# @return [Array<Result>]
|
110
|
+
def find_articles(id)
|
111
|
+
@results.find_all { |r| r.art_id == id }
|
112
|
+
end
|
113
|
+
|
114
|
+
# Returns the value of the first ArticleResult.
|
115
|
+
# @param id [Symbol] Filter of article id.
|
88
116
|
# @return [Object]
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
node = @value.find_node(id)
|
107
|
-
if node && node.child_nodes && index
|
108
|
-
node = node.child_node(index)
|
117
|
+
def value(id = nil)
|
118
|
+
return @results.first.value unless id
|
119
|
+
|
120
|
+
find_article(id).value
|
121
|
+
end
|
122
|
+
|
123
|
+
# Returns the value of all ArticleResult(s).
|
124
|
+
# @param id [Symbol] Filter of article id.
|
125
|
+
# @return [Array<Object>]
|
126
|
+
def values(id = nil)
|
127
|
+
return @results.map(&:value) unless id
|
128
|
+
|
129
|
+
vals = []
|
130
|
+
@results.each do |r|
|
131
|
+
next if r.art_id != id
|
132
|
+
|
133
|
+
vals << r.values
|
109
134
|
end
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
135
|
+
vals
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
# Represents a result for an article.
|
140
|
+
class ArticleResult
|
141
|
+
# @return [ParameterResult]
|
142
|
+
attr_accessor :parent
|
143
|
+
# @return [Article]
|
144
|
+
attr_accessor :article
|
145
|
+
# @return [Object]
|
146
|
+
attr_accessor :value
|
147
|
+
|
148
|
+
# Constructs a new ArticleResult.
|
149
|
+
# @param parent [ParameterResult]
|
150
|
+
# @param article [Article]
|
151
|
+
# @param value [Object]
|
152
|
+
def initialize(parent, article, value)
|
153
|
+
@parent = parent
|
154
|
+
@parent.add_result(self)
|
155
|
+
@article = article
|
156
|
+
@value = value
|
157
|
+
end
|
158
|
+
|
159
|
+
# @return [Symbol]
|
160
|
+
def art_id
|
161
|
+
@article.id
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
# Represents a Result Walker.
|
166
|
+
class Walker
|
167
|
+
# Constructs a new Walker.
|
168
|
+
def initialize
|
169
|
+
@anonymous_parameter_hook = nil
|
170
|
+
@anonymous_article_hook = nil
|
171
|
+
@parameter_hooks = {}
|
172
|
+
@finished_hook = nil
|
173
|
+
end
|
174
|
+
|
175
|
+
# Registers a parameter hook.
|
176
|
+
def parameter(param_id = nil, &block)
|
177
|
+
unless param_id
|
178
|
+
# Anonymous parameter hook
|
179
|
+
@anonymous_parameter_hook = block
|
180
|
+
return
|
133
181
|
end
|
182
|
+
|
183
|
+
@parameter_hooks[param_id] = TermUtils::AP::ParameterWalkerHooks.new unless @parameter_hooks.key?(param_id)
|
184
|
+
@parameter_hooks[param_id].hook = block
|
134
185
|
end
|
135
|
-
|
136
|
-
#
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
index = opts.fetch(:index, nil)
|
143
|
-
id = [id] if id.is_a? Symbol
|
144
|
-
obj = fetch_syntax_object(id)
|
145
|
-
raise TermUtils::AP::NoSuchValueError, "no such syntax object" unless obj
|
146
|
-
node = @value.find_node(id)
|
147
|
-
if node && node.child_nodes && index
|
148
|
-
node = node.child_node(index)
|
186
|
+
|
187
|
+
# Registers an article hook.
|
188
|
+
def article(param_id = nil, art_id = nil, &block)
|
189
|
+
unless param_id
|
190
|
+
# Anonymous article hook
|
191
|
+
@anonymous_article_hook = block
|
192
|
+
return
|
149
193
|
end
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
elsif obj.is_a? TermUtils::AP::Article
|
157
|
-
throw :value, TermUtils::AP::Result.new(@syntax, obj, node)
|
158
|
-
end
|
159
|
-
raise TermUtils::AP::NoSuchValueError, "wrong id"
|
194
|
+
|
195
|
+
unless art_id
|
196
|
+
# Anonymous article hook
|
197
|
+
@parameter_hooks[param_id] = TermUtils::AP::ParameterWalkerHooks.new unless @parameter_hooks.key?(param_id)
|
198
|
+
@parameter_hooks[param_id].anonymous_article_hook = block
|
199
|
+
return
|
160
200
|
end
|
201
|
+
|
202
|
+
@parameter_hooks[param_id] = TermUtils::AP::ParameterWalkerHooks.new unless @parameter_hooks.key?(param_id)
|
203
|
+
@parameter_hooks[param_id].article_hooks ||= {}
|
204
|
+
@parameter_hooks[param_id].article_hooks[art_id] = block
|
161
205
|
end
|
162
|
-
|
163
|
-
#
|
164
|
-
|
165
|
-
|
166
|
-
def fetch_syntax_object(id_path)
|
167
|
-
id = id_path.dup
|
168
|
-
id = [@element.id].concat(id) if @element
|
169
|
-
catch :done do
|
170
|
-
fetch_syntax_object0(@syntax, id)
|
171
|
-
end
|
206
|
+
|
207
|
+
# Registers a walk finished hook.
|
208
|
+
def finished(&block)
|
209
|
+
@finished_hook = block
|
172
210
|
end
|
173
|
-
|
174
|
-
#
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
end
|
211
|
+
|
212
|
+
# Calls parameter hooks.
|
213
|
+
def notify_parameter(parameter)
|
214
|
+
# (1of2) ID parameter hook
|
215
|
+
param_hooks = @parameter_hooks[parameter.param_id]
|
216
|
+
param_hooks.hook.call(parameter) if param_hooks && param_hooks.hook
|
217
|
+
# (2of2) Anonymous parameter hook
|
218
|
+
@anonymous_parameter_hook.call(parameter) if @anonymous_parameter_hook
|
219
|
+
end
|
220
|
+
|
221
|
+
# Calls article hooks.
|
222
|
+
def notify_article(article)
|
223
|
+
# (1of2) ID article hook
|
224
|
+
param_hooks = @parameter_hooks[article.parent.param_id]
|
225
|
+
if param_hooks
|
226
|
+
# ID article hook
|
227
|
+
param_hooks.article_hooks[article.art_id].call(article) if param_hooks.article_hooks && param_hooks.article_hooks.key?(article.art_id)
|
228
|
+
# Anonymous article hook
|
229
|
+
param_hooks.anonymous_article_hook.call(article) if param_hooks.anonymous_article_hook
|
193
230
|
end
|
231
|
+
# (2of2) Anonymous article hook
|
232
|
+
@anonymous_article_hook.call(article) if @anonymous_article_hook
|
233
|
+
end
|
234
|
+
|
235
|
+
# Calls finished hook.
|
236
|
+
def notify_finished(remaining_arguments)
|
237
|
+
@finished_hook.call(remaining_arguments) if @finished_hook
|
194
238
|
end
|
195
239
|
end
|
240
|
+
|
241
|
+
# Parameter hooks for Walker.
|
242
|
+
ParameterWalkerHooks = Struct.new('ParameterWalkerHooks', :hook, :anonymous_article_hook, :article_hooks)
|
196
243
|
end
|
197
244
|
end
|
data/lib/term_utils/ap/syntax.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
# Copyright (C)
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Copyright (C) 2023 Thomas Baron
|
4
4
|
#
|
5
5
|
# This file is part of term_utils.
|
6
6
|
#
|
@@ -15,97 +15,81 @@
|
|
15
15
|
#
|
16
16
|
# You should have received a copy of the GNU General Public License
|
17
17
|
# along with term_utils. If not, see <https://www.gnu.org/licenses/>.
|
18
|
+
|
18
19
|
module TermUtils
|
19
20
|
module AP
|
20
|
-
# Represents the argument list syntax. It holds a list of parameters
|
21
|
-
# levels.
|
21
|
+
# Represents the argument list syntax. It holds a list of parameters.
|
22
22
|
class Syntax
|
23
|
-
# @return [Array<
|
24
|
-
attr_accessor :
|
23
|
+
# @return [Array<Parameter>]
|
24
|
+
attr_accessor :parameters
|
25
|
+
|
25
26
|
# Constructs a new Syntax.
|
26
27
|
def initialize
|
27
|
-
@
|
28
|
+
@parameters = []
|
28
29
|
end
|
30
|
+
|
29
31
|
# For dup method.
|
30
32
|
def initialize_dup(other)
|
31
|
-
|
32
|
-
|
33
|
-
other.elements.each do |e|
|
34
|
-
@elements << e.dup
|
35
|
-
end
|
36
|
-
end
|
37
|
-
super
|
33
|
+
super(other)
|
34
|
+
@parameters = other.parameters.map(&:dup) if other.parameters
|
38
35
|
end
|
36
|
+
|
39
37
|
# Finalizes this one. Internal use.
|
40
38
|
# @return [nil]
|
39
|
+
# @raise [SyntaxError]
|
41
40
|
def finalize!(opts = {})
|
42
|
-
opts[:anonymous] = 0 unless opts.
|
43
|
-
|
41
|
+
opts[:anonymous] = 0 unless opts.key? :anonymous
|
42
|
+
opts[:flag_labels] = []
|
43
|
+
@parameters.each { |p| p.finalize!(opts) }
|
44
|
+
nil
|
44
45
|
end
|
46
|
+
|
45
47
|
# Creates and adds a new Parameter.
|
48
|
+
# @param id [Symbol, nil]
|
46
49
|
# @param opts [Hash]
|
47
50
|
# @option opts [Symbol] :id
|
48
|
-
# @option opts [Integer] :min_occurs
|
49
|
-
# @option opts [Integer] :max_occurs
|
50
|
-
# @return [
|
51
|
-
def define_parameter(opts = {}, &block)
|
51
|
+
# @option opts [Integer] :min_occurs
|
52
|
+
# @option opts [Integer] :max_occurs
|
53
|
+
# @return [Parameter]
|
54
|
+
def define_parameter(id = nil, opts = {}, &block)
|
55
|
+
if id
|
56
|
+
param = @parameters.find { |p| p.id == id }
|
57
|
+
if param
|
58
|
+
block.call(param) if block
|
59
|
+
return param
|
60
|
+
end
|
61
|
+
|
62
|
+
opts[:id] = id
|
63
|
+
end
|
52
64
|
new_parameter = TermUtils::AP::Parameter.new(opts)
|
53
|
-
@
|
65
|
+
@parameters << new_parameter
|
54
66
|
block.call(new_parameter) if block
|
55
67
|
new_parameter
|
56
68
|
end
|
57
|
-
|
58
|
-
#
|
59
|
-
# @option opts [Symbol] :id
|
60
|
-
# @option opts [Integer] :min_occurs Default value is `0`.
|
61
|
-
# @option opts [Integer] :max_occurs Default value is `1`.
|
62
|
-
# @return [TermUtils::AP::Level]
|
63
|
-
def define_level(opts = {}, &block)
|
64
|
-
new_level = TermUtils::AP::Level.new(opts)
|
65
|
-
@elements << new_level
|
66
|
-
block.call(new_level) if block
|
67
|
-
new_level
|
68
|
-
end
|
69
|
-
# Fetches all direct flagged parameters and levels.
|
69
|
+
|
70
|
+
# Fetches all flagged parameters and unflagged parameters.
|
70
71
|
# @return [Array]
|
71
|
-
|
72
|
-
# @see TermUtils::AP::Syntax#fetch_unflagged_parameters
|
73
|
-
def fetch_elements
|
74
|
-
flagged_elems = {}
|
72
|
+
def fetch_parameters
|
75
73
|
unflagged_params = []
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
74
|
+
flagged_params = {}
|
75
|
+
shortcut_flags = {}
|
76
|
+
@parameters.each do |p|
|
77
|
+
if p.flagged?
|
78
|
+
# Flagged
|
79
|
+
p.flags.each do |f|
|
80
|
+
flagged_params[f.label] = p
|
81
|
+
if f.long?
|
82
|
+
shortcut_flags["#{f.label}="] = f
|
83
|
+
else
|
84
|
+
shortcut_flags[f.label] = f
|
85
|
+
end
|
84
86
|
end
|
87
|
+
else
|
88
|
+
# Unflagged
|
89
|
+
unflagged_params << p
|
85
90
|
end
|
86
91
|
end
|
87
|
-
[
|
88
|
-
end
|
89
|
-
# Fetches all direct flagged parameters and levels.
|
90
|
-
# @return [Hash<String, TermUtils::AP::Element>]
|
91
|
-
def fetch_flagged_elements
|
92
|
-
elems = {}
|
93
|
-
@elements.each do |e|
|
94
|
-
e.flags.each do |f|
|
95
|
-
elems[f.to_s] = e
|
96
|
-
end
|
97
|
-
end
|
98
|
-
elems
|
99
|
-
end
|
100
|
-
# Fetches all direct unflagged.
|
101
|
-
# @return [Array<TermUtils::AP::Parameter>]
|
102
|
-
def fetch_unflagged_parameters
|
103
|
-
params = []
|
104
|
-
@elements.each do |e|
|
105
|
-
next unless e.is_a? TermUtils::AP::Parameter
|
106
|
-
params << e if e.flags.empty?
|
107
|
-
end
|
108
|
-
params
|
92
|
+
[unflagged_params, flagged_params, shortcut_flags]
|
109
93
|
end
|
110
94
|
end
|
111
95
|
end
|