rtext 0.4.0 → 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.
- data/CHANGELOG +20 -0
- data/{README → README.rdoc} +5 -1
- data/RText_Protocol +444 -0
- data/Rakefile +10 -10
- data/lib/rtext/completer.rb +32 -26
- data/lib/rtext/context_builder.rb +113 -59
- data/lib/rtext/default_loader.rb +73 -8
- data/lib/rtext/default_service_provider.rb +30 -14
- data/lib/rtext/frontend/config.rb +58 -0
- data/lib/rtext/frontend/connector.rb +233 -0
- data/lib/rtext/frontend/connector_manager.rb +81 -0
- data/lib/rtext/frontend/context.rb +56 -0
- data/lib/rtext/generic.rb +13 -0
- data/lib/rtext/instantiator.rb +30 -7
- data/lib/rtext/language.rb +54 -27
- data/lib/rtext/link_detector.rb +57 -0
- data/lib/rtext/message_helper.rb +77 -0
- data/lib/rtext/parser.rb +19 -68
- data/lib/rtext/serializer.rb +18 -3
- data/lib/rtext/service.rb +182 -118
- data/lib/rtext/tokenizer.rb +102 -0
- data/test/completer_test.rb +327 -70
- data/test/context_builder_test.rb +671 -91
- data/test/instantiator_test.rb +153 -0
- data/test/integration/backend.out +10 -0
- data/test/integration/crash_on_request_editor.rb +12 -0
- data/test/integration/ecore_editor.rb +50 -0
- data/test/integration/frontend.log +25138 -0
- data/test/integration/model/invalid_encoding.invenc +2 -0
- data/test/integration/model/test.crash_on_request +18 -0
- data/test/integration/model/test.crashing_backend +18 -0
- data/test/integration/model/test.dont_open_socket +0 -0
- data/test/integration/model/test.invalid_cmd_line +0 -0
- data/test/integration/model/test.not_in_rtext +0 -0
- data/test/integration/model/test_large_with_errors.ect3 +43523 -0
- data/test/integration/model/test_metamodel.ect +18 -0
- data/test/integration/model/test_metamodel2.ect +5 -0
- data/test/integration/model/test_metamodel_error.ect2 +3 -0
- data/test/integration/model/test_metamodel_ok.ect2 +18 -0
- data/test/integration/test.rb +684 -0
- data/test/link_detector_test.rb +276 -0
- data/test/message_helper_test.rb +118 -0
- data/test/rtext_test.rb +4 -1
- data/test/serializer_test.rb +96 -1
- data/test/tokenizer_test.rb +125 -0
- metadata +36 -10
- data/RText_Plugin_Implementation_Guide +0 -268
- data/lib/rtext_plugin/connection_manager.rb +0 -59
data/test/completer_test.rb
CHANGED
@@ -12,6 +12,7 @@ module TestMM
|
|
12
12
|
extend RGen::MetamodelBuilder::ModuleExtension
|
13
13
|
class TestNode2 < RGen::MetamodelBuilder::MMBase
|
14
14
|
has_attr 'text', String
|
15
|
+
has_attr 'unlabled', String
|
15
16
|
end
|
16
17
|
class TestNode < RGen::MetamodelBuilder::MMBase
|
17
18
|
has_attr 'text', String
|
@@ -37,10 +38,10 @@ end
|
|
37
38
|
|
38
39
|
def test_after_command
|
39
40
|
options = complete TestMM, <<-END
|
40
|
-
|
41
|
+
TestNode |
|
41
42
|
END
|
42
43
|
assert_options([
|
43
|
-
["
|
44
|
+
["\"\"", "[unlabled1] <EString>"],
|
44
45
|
["text:", "<EString>"],
|
45
46
|
["nums:", "<EInt>"],
|
46
47
|
["related:", "<TestNode>"],
|
@@ -50,25 +51,46 @@ end
|
|
50
51
|
|
51
52
|
def test_lable_prefix
|
52
53
|
options = complete TestMM, <<-END
|
53
|
-
|
54
|
+
TestNode t|
|
54
55
|
END
|
55
56
|
assert_options([
|
56
|
-
["
|
57
|
+
["\"\"", "[unlabled1] <EString>"],
|
58
|
+
["text:", "<EString>"],
|
59
|
+
["nums:", "<EInt>"],
|
60
|
+
["related:", "<TestNode>"],
|
61
|
+
["others:", "<TestNode>"]
|
62
|
+
], options)
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_lable_within
|
66
|
+
options = complete TestMM, <<-END
|
67
|
+
TestNode t|ext
|
68
|
+
END
|
69
|
+
assert_options([
|
70
|
+
["\"\"", "[unlabled1] <EString>"],
|
71
|
+
["text:", "<EString>"],
|
72
|
+
["nums:", "<EInt>"],
|
73
|
+
["related:", "<TestNode>"],
|
74
|
+
["others:", "<TestNode>"]
|
57
75
|
], options)
|
58
76
|
end
|
59
77
|
|
60
78
|
def test_unlabled_prefix
|
61
79
|
options = complete TestMM, <<-END
|
62
|
-
|
80
|
+
TestNode u|
|
63
81
|
END
|
64
82
|
assert_options([
|
65
|
-
["
|
83
|
+
["\"\"", "[unlabled1] <EString>"],
|
84
|
+
["text:", "<EString>"],
|
85
|
+
["nums:", "<EInt>"],
|
86
|
+
["related:", "<TestNode>"],
|
87
|
+
["others:", "<TestNode>"]
|
66
88
|
], options)
|
67
89
|
end
|
68
90
|
|
69
91
|
def test_after_labled_value
|
70
92
|
options = complete TestMM, <<-END
|
71
|
-
|
93
|
+
TestNode nums: 1, |
|
72
94
|
END
|
73
95
|
assert_options([
|
74
96
|
["text:", "<EString>"],
|
@@ -77,12 +99,46 @@ def test_after_labled_value
|
|
77
99
|
], options)
|
78
100
|
end
|
79
101
|
|
102
|
+
def test_after_labled_value_directly_after_comma
|
103
|
+
options = complete TestMM, <<-END
|
104
|
+
TestNode nums: 1,|
|
105
|
+
END
|
106
|
+
assert_options([
|
107
|
+
["text:", "<EString>"],
|
108
|
+
["related:", "<TestNode>"],
|
109
|
+
["others:", "<TestNode>"]
|
110
|
+
], options)
|
111
|
+
end
|
112
|
+
|
113
|
+
def test_after_second_labled_value_directly_after_comma
|
114
|
+
options = complete TestMM, <<-END
|
115
|
+
TestNode nums: 1, text: "a",|
|
116
|
+
END
|
117
|
+
assert_options([
|
118
|
+
["related:", "<TestNode>"],
|
119
|
+
["others:", "<TestNode>"]
|
120
|
+
], options)
|
121
|
+
end
|
122
|
+
|
80
123
|
def test_after_unlabled_value
|
81
124
|
options = complete TestMM, <<-END
|
82
|
-
|
125
|
+
TestNode "bla", |
|
126
|
+
END
|
127
|
+
assert_options([
|
128
|
+
["0", "[unlabled2] <EInt>"],
|
129
|
+
["text:", "<EString>"],
|
130
|
+
["nums:", "<EInt>"],
|
131
|
+
["related:", "<TestNode>"],
|
132
|
+
["others:", "<TestNode>"]
|
133
|
+
], options)
|
134
|
+
end
|
135
|
+
|
136
|
+
def test_after_unlabled_value_directly_after_comma
|
137
|
+
options = complete TestMM, <<-END
|
138
|
+
TestNode "bla",|
|
83
139
|
END
|
84
140
|
assert_options([
|
85
|
-
["
|
141
|
+
["0", "[unlabled2] <EInt>"],
|
86
142
|
["text:", "<EString>"],
|
87
143
|
["nums:", "<EInt>"],
|
88
144
|
["related:", "<TestNode>"],
|
@@ -92,7 +148,19 @@ end
|
|
92
148
|
|
93
149
|
def test_after_unlabled_value2
|
94
150
|
options = complete TestMM, <<-END
|
95
|
-
|
151
|
+
TestNode "bla", 1, |
|
152
|
+
END
|
153
|
+
assert_options([
|
154
|
+
["text:", "<EString>"],
|
155
|
+
["nums:", "<EInt>"],
|
156
|
+
["related:", "<TestNode>"],
|
157
|
+
["others:", "<TestNode>"]
|
158
|
+
], options)
|
159
|
+
end
|
160
|
+
|
161
|
+
def test_after_unlabled_value3
|
162
|
+
options = complete TestMM, <<-END
|
163
|
+
TestNode "bla", 1,|
|
96
164
|
END
|
97
165
|
assert_options([
|
98
166
|
["text:", "<EString>"],
|
@@ -104,7 +172,7 @@ end
|
|
104
172
|
|
105
173
|
def test_after_array
|
106
174
|
options = complete TestMM, <<-END
|
107
|
-
|
175
|
+
TestNode nums: [1, 2], |
|
108
176
|
END
|
109
177
|
assert_options([
|
110
178
|
["text:", "<EString>"],
|
@@ -115,7 +183,7 @@ end
|
|
115
183
|
|
116
184
|
def test_after_array_direct
|
117
185
|
options = complete TestMM, <<-END
|
118
|
-
|
186
|
+
TestNode nums: [1, 2]|
|
119
187
|
END
|
120
188
|
assert_options([
|
121
189
|
], options)
|
@@ -123,80 +191,122 @@ end
|
|
123
191
|
|
124
192
|
def test_value_int
|
125
193
|
options = complete TestMM, <<-END
|
126
|
-
|
194
|
+
TestNode nums: |
|
195
|
+
END
|
196
|
+
assert_options([
|
197
|
+
["0", "<EInt>"],
|
198
|
+
], options)
|
199
|
+
end
|
200
|
+
|
201
|
+
def test_value_int_part
|
202
|
+
options = complete TestMM, <<-END
|
203
|
+
TestNode nums: 0|
|
127
204
|
END
|
128
205
|
assert_options([
|
129
|
-
["0",
|
130
|
-
["1", nil],
|
131
|
-
["2", nil],
|
132
|
-
["3", nil],
|
133
|
-
["4", nil]
|
206
|
+
["0", "<EInt>"]
|
134
207
|
], options)
|
135
208
|
end
|
136
209
|
|
137
210
|
def test_value_boolean
|
138
211
|
options = complete TestMM, <<-END
|
139
|
-
|
212
|
+
TestNode3 bool: |
|
213
|
+
END
|
214
|
+
assert_options([
|
215
|
+
["true", "<EBoolean>"],
|
216
|
+
["false", "<EBoolean>"],
|
217
|
+
], options)
|
218
|
+
end
|
219
|
+
|
220
|
+
def test_value_boolean_part
|
221
|
+
options = complete TestMM, <<-END
|
222
|
+
TestNode3 bool: t|
|
223
|
+
END
|
224
|
+
assert_options([
|
225
|
+
["true", "<EBoolean>"],
|
226
|
+
["false", "<EBoolean>"],
|
227
|
+
], options)
|
228
|
+
end
|
229
|
+
|
230
|
+
def test_value_boolean_full
|
231
|
+
options = complete TestMM, <<-END
|
232
|
+
TestNode3 bool: true|
|
140
233
|
END
|
141
234
|
assert_options([
|
142
|
-
["true",
|
143
|
-
["false",
|
235
|
+
["true", "<EBoolean>"],
|
236
|
+
["false", "<EBoolean>"],
|
144
237
|
], options)
|
145
238
|
end
|
146
239
|
|
147
240
|
def test_value_float
|
148
241
|
options = complete TestMM, <<-END
|
149
|
-
|
242
|
+
TestNode3 float: |
|
243
|
+
END
|
244
|
+
assert_options([
|
245
|
+
["0.0", "<EFloat>"],
|
246
|
+
], options)
|
247
|
+
end
|
248
|
+
|
249
|
+
def test_value_float_part
|
250
|
+
options = complete TestMM, <<-END
|
251
|
+
TestNode3 float: 0|
|
252
|
+
END
|
253
|
+
assert_options([
|
254
|
+
["0.0", "<EFloat>"],
|
255
|
+
], options)
|
256
|
+
end
|
257
|
+
|
258
|
+
def test_value_float_full
|
259
|
+
options = complete TestMM, <<-END
|
260
|
+
TestNode3 float: 0.0|
|
150
261
|
END
|
151
262
|
assert_options([
|
152
|
-
["0.0",
|
153
|
-
["1.0", nil],
|
154
|
-
["2.0", nil],
|
155
|
-
["3.0", nil],
|
156
|
-
["4.0", nil]
|
263
|
+
["0.0", "<EFloat>"],
|
157
264
|
], options)
|
158
265
|
end
|
159
266
|
|
160
267
|
def test_value_enum
|
161
268
|
options = complete TestMM, <<-END
|
162
|
-
|
269
|
+
TestNode3 enum: |
|
270
|
+
END
|
271
|
+
assert_options([
|
272
|
+
["A", "<SomeEnum>"],
|
273
|
+
["B", "<SomeEnum>"],
|
274
|
+
["non-word*chars", "<SomeEnum>"]
|
275
|
+
], options)
|
276
|
+
end
|
277
|
+
|
278
|
+
def test_value_enum_part
|
279
|
+
options = complete TestMM, <<-END
|
280
|
+
TestNode3 enum: A|
|
163
281
|
END
|
164
282
|
assert_options([
|
165
|
-
["A",
|
166
|
-
["B",
|
167
|
-
["non-word*chars",
|
283
|
+
["A", "<SomeEnum>"],
|
284
|
+
["B", "<SomeEnum>"],
|
285
|
+
["non-word*chars", "<SomeEnum>"]
|
168
286
|
], options)
|
169
287
|
end
|
170
288
|
|
171
289
|
def test_array_value
|
172
290
|
options = complete TestMM, <<-END
|
173
|
-
|
291
|
+
TestNode nums: [|
|
174
292
|
END
|
175
293
|
assert_options([
|
176
|
-
["0",
|
177
|
-
["1", nil],
|
178
|
-
["2", nil],
|
179
|
-
["3", nil],
|
180
|
-
["4", nil]
|
294
|
+
["0", "<EInt>"],
|
181
295
|
], options)
|
182
296
|
end
|
183
297
|
|
184
298
|
def test_array_value2
|
185
299
|
options = complete TestMM, <<-END
|
186
|
-
|
300
|
+
TestNode nums: [1,|
|
187
301
|
END
|
188
302
|
assert_options([
|
189
|
-
["0",
|
190
|
-
["1", nil],
|
191
|
-
["2", nil],
|
192
|
-
["3", nil],
|
193
|
-
["4", nil]
|
303
|
+
["0", "<EInt>"],
|
194
304
|
], options)
|
195
305
|
end
|
196
306
|
|
197
307
|
def test_reference_value
|
198
308
|
options = complete(TestMM, %Q(\
|
199
|
-
|
309
|
+
TestNode related: |\
|
200
310
|
), lambda { |r| [
|
201
311
|
RText::Completer::CompletionOption.new("A", "a"),
|
202
312
|
RText::Completer::CompletionOption.new("B", "b") ] })
|
@@ -206,9 +316,78 @@ def test_reference_value
|
|
206
316
|
], options)
|
207
317
|
end
|
208
318
|
|
319
|
+
def test_reference_value_part
|
320
|
+
options = complete(TestMM, %Q(\
|
321
|
+
TestNode related: /My/|\
|
322
|
+
), lambda { |r| [
|
323
|
+
RText::Completer::CompletionOption.new("/My/Target", "a"),
|
324
|
+
RText::Completer::CompletionOption.new("/MyOther/Target", "b") ] })
|
325
|
+
assert_options([
|
326
|
+
["/My/Target", "a"],
|
327
|
+
["/MyOther/Target", "b"]
|
328
|
+
], options)
|
329
|
+
end
|
330
|
+
|
209
331
|
def test_reference_value_no_ref_completion_provider
|
210
332
|
options = complete TestMM, <<-END
|
211
|
-
|
333
|
+
TestNode related: |
|
334
|
+
END
|
335
|
+
assert_options([
|
336
|
+
], options)
|
337
|
+
end
|
338
|
+
|
339
|
+
def test_reference_value_in_array
|
340
|
+
options = complete(TestMM, %Q(\
|
341
|
+
TestNode others: |
|
342
|
+
), lambda { |r| [
|
343
|
+
RText::Completer::CompletionOption.new("A", "a"),
|
344
|
+
RText::Completer::CompletionOption.new("B", "b") ] })
|
345
|
+
assert_options([
|
346
|
+
["A", "a"],
|
347
|
+
["B", "b"],
|
348
|
+
], options)
|
349
|
+
end
|
350
|
+
|
351
|
+
def test_reference_value_in_array_after_bracket
|
352
|
+
options = complete(TestMM, %Q(\
|
353
|
+
TestNode others: [|
|
354
|
+
), lambda { |r| [
|
355
|
+
RText::Completer::CompletionOption.new("A", "a"),
|
356
|
+
RText::Completer::CompletionOption.new("B", "b") ] })
|
357
|
+
assert_options([
|
358
|
+
["A", "a"],
|
359
|
+
["B", "b"],
|
360
|
+
], options)
|
361
|
+
end
|
362
|
+
|
363
|
+
def test_reference_value_in_array_second_value
|
364
|
+
options = complete(TestMM, %Q(\
|
365
|
+
TestNode others: [xxx, |
|
366
|
+
), lambda { |r| [
|
367
|
+
RText::Completer::CompletionOption.new("A", "a"),
|
368
|
+
RText::Completer::CompletionOption.new("B", "b") ] })
|
369
|
+
assert_options([
|
370
|
+
["A", "a"],
|
371
|
+
["B", "b"],
|
372
|
+
], options)
|
373
|
+
end
|
374
|
+
|
375
|
+
def test_reference_value_nested
|
376
|
+
options = complete(TestMM, %Q(\
|
377
|
+
TestNode {
|
378
|
+
TestNode SimpleState, others: [|/StatemachineMM/State]
|
379
|
+
), lambda { |r| [
|
380
|
+
RText::Completer::CompletionOption.new("A", "a"),
|
381
|
+
RText::Completer::CompletionOption.new("B", "b") ] })
|
382
|
+
assert_options([
|
383
|
+
["A", "a"],
|
384
|
+
["B", "b"],
|
385
|
+
], options)
|
386
|
+
end
|
387
|
+
|
388
|
+
def test_after_curly
|
389
|
+
options = complete TestMM, <<-END
|
390
|
+
TestNode {|
|
212
391
|
END
|
213
392
|
assert_options([
|
214
393
|
], options)
|
@@ -216,8 +395,8 @@ end
|
|
216
395
|
|
217
396
|
def test_children
|
218
397
|
options = complete TestMM, <<-END
|
219
|
-
|
220
|
-
|
398
|
+
TestNode {
|
399
|
+
|
|
221
400
|
END
|
222
401
|
assert_options([
|
223
402
|
["TestNode", "<unlabled1>, <unlabled2>"],
|
@@ -228,65 +407,115 @@ end
|
|
228
407
|
|
229
408
|
def test_children_with_role
|
230
409
|
options = complete TestMM, <<-END
|
231
|
-
|
232
|
-
|
233
|
-
|
410
|
+
TestNode {
|
411
|
+
child2RoleA:
|
412
|
+
|
|
413
|
+
END
|
414
|
+
assert_options([
|
415
|
+
["TestNode2", "<unlabled>"],
|
416
|
+
], options)
|
417
|
+
end
|
418
|
+
|
419
|
+
def test_after_child_role
|
420
|
+
options = complete TestMM, <<-END
|
421
|
+
TestNode {
|
422
|
+
child2RoleA:|
|
423
|
+
END
|
424
|
+
assert_options([
|
425
|
+
], options)
|
426
|
+
end
|
427
|
+
|
428
|
+
def test_after_child_role2
|
429
|
+
options = complete TestMM, <<-END
|
430
|
+
TestNode {
|
431
|
+
child2RoleA: |
|
432
|
+
END
|
433
|
+
assert_options([
|
434
|
+
], options)
|
435
|
+
end
|
436
|
+
|
437
|
+
def test_after_child_role3
|
438
|
+
options = complete TestMM, <<-END
|
439
|
+
TestNode {
|
440
|
+
child2RoleA: [|
|
441
|
+
END
|
442
|
+
assert_options([
|
443
|
+
], options)
|
444
|
+
end
|
445
|
+
|
446
|
+
def test_after_child_role4
|
447
|
+
options = complete TestMM, <<-END
|
448
|
+
TestNode {
|
449
|
+
child2RoleA: [ |
|
234
450
|
END
|
235
451
|
assert_options([
|
236
|
-
["TestNode2", ""],
|
237
452
|
], options)
|
238
453
|
end
|
239
454
|
|
240
455
|
def test_children_with_role_array
|
241
456
|
options = complete TestMM, <<-END
|
242
|
-
|
243
|
-
|
244
|
-
|
457
|
+
TestNode {
|
458
|
+
child2RoleB: [
|
459
|
+
|
|
245
460
|
END
|
246
461
|
assert_options([
|
247
|
-
["TestNode2", ""],
|
462
|
+
["TestNode2", "<unlabled>"],
|
248
463
|
], options)
|
249
464
|
end
|
250
465
|
|
251
466
|
def test_children_prefix
|
252
467
|
options = complete TestMM, <<-END
|
253
|
-
|
254
|
-
|
255
|
-
|
468
|
+
TestNode {
|
469
|
+
child2RoleB: [
|
470
|
+
X|
|
256
471
|
END
|
257
472
|
assert_options([
|
473
|
+
["TestNode2", "<unlabled>"],
|
258
474
|
], options)
|
259
475
|
end
|
260
476
|
|
261
477
|
def test_children_inside_childrole
|
262
478
|
options = complete TestMM, <<-END
|
263
|
-
|
264
|
-
|
265
|
-
|
479
|
+
TestNode {
|
480
|
+
child2RoleA:
|
481
|
+
TestNode2 |
|
266
482
|
END
|
267
483
|
assert_options([
|
484
|
+
["unlabled", "[unlabled] <EString>"],
|
268
485
|
["text:", "<EString>"]
|
269
486
|
], options)
|
270
487
|
end
|
271
488
|
|
272
489
|
def test_children_inside_childrole_array
|
273
490
|
options = complete TestMM, <<-END
|
274
|
-
|
275
|
-
|
276
|
-
|
491
|
+
TestNode {
|
492
|
+
child2RoleB: [
|
493
|
+
TestNode2 |
|
277
494
|
END
|
278
495
|
assert_options([
|
496
|
+
["unlabled", "[unlabled] <EString>"],
|
279
497
|
["text:", "<EString>"]
|
280
498
|
], options)
|
281
499
|
end
|
282
500
|
|
501
|
+
def test_unquoted_argument
|
502
|
+
options = complete TestMM, <<-END
|
503
|
+
TestNode {
|
504
|
+
child2RoleB: [
|
505
|
+
TestNode2 text: |
|
506
|
+
END
|
507
|
+
assert_options([
|
508
|
+
["text", "<EString>"]
|
509
|
+
], options)
|
510
|
+
end
|
511
|
+
|
283
512
|
def test_root
|
284
513
|
options = complete TestMM, <<-END
|
285
|
-
|
514
|
+
|
|
286
515
|
END
|
287
516
|
assert_options([
|
288
517
|
["TestNode", "<unlabled1>, <unlabled2>"],
|
289
|
-
["TestNode2", ""],
|
518
|
+
["TestNode2", "<unlabled>"],
|
290
519
|
["TestNode3", ""],
|
291
520
|
["TextNode", ""]
|
292
521
|
], options)
|
@@ -296,7 +525,7 @@ def test_root_no_context_lines
|
|
296
525
|
options = complete TestMM, ""
|
297
526
|
assert_options([
|
298
527
|
["TestNode", "<unlabled1>, <unlabled2>"],
|
299
|
-
["TestNode2", ""],
|
528
|
+
["TestNode2", "<unlabled>"],
|
300
529
|
["TestNode3", ""],
|
301
530
|
["TextNode", ""]
|
302
531
|
], options)
|
@@ -304,9 +533,36 @@ end
|
|
304
533
|
|
305
534
|
def test_root_prefix
|
306
535
|
options = complete TestMM, <<-END
|
307
|
-
|
308
|
-
|
536
|
+
Text|
|
537
|
+
END
|
538
|
+
assert_options([
|
539
|
+
["TestNode", "<unlabled1>, <unlabled2>"],
|
540
|
+
["TestNode2", "<unlabled>"],
|
541
|
+
["TestNode3", ""],
|
542
|
+
["TextNode", ""]
|
543
|
+
], options)
|
544
|
+
end
|
545
|
+
|
546
|
+
def test_within_command
|
547
|
+
options = complete TestMM, <<-END
|
548
|
+
Text|Node
|
549
|
+
END
|
550
|
+
assert_options([
|
551
|
+
["TestNode", "<unlabled1>, <unlabled2>"],
|
552
|
+
["TestNode2", "<unlabled>"],
|
553
|
+
["TestNode3", ""],
|
554
|
+
["TextNode", ""]
|
555
|
+
], options)
|
556
|
+
end
|
557
|
+
|
558
|
+
def test_within_command2
|
559
|
+
options = complete TestMM, <<-END
|
560
|
+
|TextNode
|
561
|
+
END
|
309
562
|
assert_options([
|
563
|
+
["TestNode", "<unlabled1>, <unlabled2>"],
|
564
|
+
["TestNode2", "<unlabled>"],
|
565
|
+
["TestNode3", ""],
|
310
566
|
["TextNode", ""]
|
311
567
|
], options)
|
312
568
|
end
|
@@ -323,7 +579,8 @@ def complete(mm, text, ref_comp_option_provider=nil)
|
|
323
579
|
end
|
324
580
|
lang = RText::Language.new(mm.ecore,
|
325
581
|
:root_classes => mm.ecore.eAllClasses,
|
326
|
-
:unlabled_arguments => lambda {|c| ["unlabled1", "unlabled2"]}
|
582
|
+
:unlabled_arguments => lambda {|c| ["unlabled1", "unlabled2", "unlabled"]},
|
583
|
+
:unquoted_arguments => lambda {|c| c.name == "TestNode2" ? ["text", "unlabled"] : []})
|
327
584
|
context = RText::ContextBuilder.build_context(lang, context_lines, pos_in_line)
|
328
585
|
RText::Completer.new(lang).complete(context, ref_comp_option_provider)
|
329
586
|
end
|