defmastership 1.0.6 → 1.0.11
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/bin/defmastership +12 -7
- data/features/changeref.feature +33 -0
- data/features/definition_checksum.feature +298 -0
- data/features/definition_version.feature +204 -0
- data/features/export.feature +21 -74
- data/features/modify.feature +23 -1
- data/lib/defmastership.rb +6 -0
- data/lib/defmastership/batch_modifier.rb +2 -0
- data/lib/defmastership/change_ref_line_modifier.rb +2 -1
- data/lib/defmastership/change_ref_modifier.rb +2 -2
- data/lib/defmastership/constants.rb +4 -2
- data/lib/defmastership/csv_formatter.rb +12 -6
- data/lib/defmastership/csv_formatter_body.rb +8 -5
- data/lib/defmastership/csv_formatter_header.rb +5 -1
- data/lib/defmastership/definition.rb +4 -4
- data/lib/defmastership/document.rb +33 -27
- data/lib/defmastership/modifier_base.rb +1 -1
- data/lib/defmastership/rename_included_files_modifier.rb +2 -17
- data/lib/defmastership/update_def_checksum_line_modifier.rb +38 -0
- data/lib/defmastership/update_def_checksum_modifier.rb +21 -0
- data/lib/defmastership/update_def_version_line_modifier.rb +58 -0
- data/lib/defmastership/update_def_version_modifier.rb +25 -0
- data/lib/defmastership/version.rb +1 -1
- data/spec/unit/defmastership/batch_modifier_spec.rb +8 -0
- data/spec/unit/defmastership/change_ref_line_modifier_spec.rb +15 -0
- data/spec/unit/defmastership/csv_formatter_body_spec.rb +42 -60
- data/spec/unit/defmastership/csv_formatter_header_spec.rb +23 -1
- data/spec/unit/defmastership/csv_formatter_spec.rb +204 -67
- data/spec/unit/defmastership/definition_spec.rb +19 -4
- data/spec/unit/defmastership/document_spec.rb +129 -5
- data/spec/unit/defmastership/update_def_checksum_line_modifier_spec.rb +78 -0
- data/spec/unit/defmastership/update_def_checksum_modifier_spec.rb +75 -0
- data/spec/unit/defmastership/update_def_version_line_modifier_spec.rb +127 -0
- data/spec/unit/defmastership/update_def_version_modifier_spec.rb +80 -0
- metadata +12 -2
data/features/export.feature
CHANGED
@@ -15,62 +15,9 @@ Feature: The extract command
|
|
15
15
|
When I successfully run `defmastership export toto.adoc`
|
16
16
|
Then the file "toto.csv" should contain:
|
17
17
|
"""
|
18
|
-
Type,Reference,Value,
|
18
|
+
Type,Reference,Value,Checksum
|
19
19
|
requirement,TOTO-0001,"Exemple of multiline requirement.
|
20
|
-
Second line."
|
21
|
-
"""
|
22
|
-
And the stdout should not contain anything
|
23
|
-
And the stderr should not contain anything
|
24
|
-
|
25
|
-
Scenario: Extract one definition with WRONG explicit checksum to CSV
|
26
|
-
Given a file named "toto.adoc" with:
|
27
|
-
"""
|
28
|
-
[define, requirement, TOTO-0001(babe1234)]
|
29
|
-
def one
|
30
|
-
"""
|
31
|
-
When I successfully run `defmastership export toto.adoc`
|
32
|
-
Then the file "toto.csv" should contain:
|
33
|
-
"""
|
34
|
-
Type,Reference,Value,sha256,Wrong explicit checksum
|
35
|
-
requirement,TOTO-0001,def one,d27cb5c3,babe1234
|
36
|
-
"""
|
37
|
-
And the stdout should not contain anything
|
38
|
-
And the stderr should not contain anything
|
39
|
-
|
40
|
-
Scenario: Extract two definitions with one WRONG explicit checksum to CSV
|
41
|
-
Given a file named "toto.adoc" with:
|
42
|
-
"""
|
43
|
-
[define, requirement, TOTO-0001(d27cb5c3)]
|
44
|
-
def one
|
45
|
-
|
46
|
-
[define, requirement, TOTO-0002(babe1234)]
|
47
|
-
def two
|
48
|
-
"""
|
49
|
-
When I successfully run `defmastership export toto.adoc`
|
50
|
-
Then the file "toto.csv" should contain:
|
51
|
-
"""
|
52
|
-
Type,Reference,Value,sha256,Wrong explicit checksum
|
53
|
-
requirement,TOTO-0001,def one,d27cb5c3,\"\"
|
54
|
-
requirement,TOTO-0002,def two,b80e1be5,babe1234
|
55
|
-
"""
|
56
|
-
And the stdout should not contain anything
|
57
|
-
And the stderr should not contain anything
|
58
|
-
|
59
|
-
Scenario: Extract one definition with explicit checksum to CSV
|
60
|
-
Given a file named "toto.adoc" with:
|
61
|
-
"""
|
62
|
-
[define, requirement, TOTO-0001(b86dcbde)]
|
63
|
-
--
|
64
|
-
Exemple of multiline requirement.
|
65
|
-
Second line.
|
66
|
-
--
|
67
|
-
"""
|
68
|
-
When I successfully run `defmastership export toto.adoc`
|
69
|
-
Then the file "toto.csv" should contain:
|
70
|
-
"""
|
71
|
-
Type,Reference,Value,sha256
|
72
|
-
requirement,TOTO-0001,"Exemple of multiline requirement.
|
73
|
-
Second line.",b86dcbde
|
20
|
+
Second line.",~b86dcbde
|
74
21
|
"""
|
75
22
|
And the stdout should not contain anything
|
76
23
|
And the stderr should not contain anything
|
@@ -87,9 +34,9 @@ Feature: The extract command
|
|
87
34
|
When I successfully run `defmastership export --separator=';' toto.adoc`
|
88
35
|
Then the file "toto.csv" should contain:
|
89
36
|
"""
|
90
|
-
Type;Reference;Value;
|
37
|
+
Type;Reference;Value;Checksum
|
91
38
|
requirement;TOTO-0001;"Exemple of multiline requirement.
|
92
|
-
Second line."
|
39
|
+
Second line.";~b86dcbde
|
93
40
|
"""
|
94
41
|
|
95
42
|
Scenario: Extract one definition with variable to CSV
|
@@ -107,10 +54,10 @@ Feature: The extract command
|
|
107
54
|
When I successfully run `defmastership export toto.adoc`
|
108
55
|
Then the file "toto.csv" should contain:
|
109
56
|
"""
|
110
|
-
Type,Reference,Value,
|
57
|
+
Type,Reference,Value,Checksum
|
111
58
|
requirement,TOTO-0001,"Exemple of multiline requirement with variable: Variable content.
|
112
59
|
Variable content : Variable content Toto.
|
113
|
-
Third line with {not_defined_variable}."
|
60
|
+
Third line with {not_defined_variable}.",~3bf370ed
|
114
61
|
"""
|
115
62
|
And the stdout should not contain anything
|
116
63
|
And the stderr should not contain anything
|
@@ -135,11 +82,11 @@ Feature: The extract command
|
|
135
82
|
When I successfully run `defmastership export toto.adoc`
|
136
83
|
Then the file "toto.csv" should contain:
|
137
84
|
"""
|
138
|
-
Type,Reference,Value,
|
85
|
+
Type,Reference,Value,Checksum
|
139
86
|
requirement,TOTO-0001,"Exemple of multiline requirement.
|
140
|
-
Second line."
|
87
|
+
Second line.",~b86dcbde
|
141
88
|
something_else,TOTO-0003,"only one paragraphe.
|
142
|
-
with two sentences."
|
89
|
+
with two sentences.",~4761e172
|
143
90
|
"""
|
144
91
|
And the file "toto.csv" should not contain:
|
145
92
|
"""
|
@@ -225,9 +172,9 @@ Feature: The extract command
|
|
225
172
|
When I successfully run `defmastership export toto.adoc`
|
226
173
|
Then the file "toto.csv" should contain:
|
227
174
|
"""
|
228
|
-
Type,Reference,Value,
|
175
|
+
Type,Reference,Value,Checksum,Labels
|
229
176
|
requirement,TOTO-0001,"Exemple of multiline requirement.
|
230
|
-
Second line."
|
177
|
+
Second line.",~b86dcbde,"label1
|
231
178
|
label2"
|
232
179
|
"""
|
233
180
|
And the stdout should not contain anything
|
@@ -248,9 +195,9 @@ Feature: The extract command
|
|
248
195
|
When I successfully run `defmastership export toto.adoc`
|
249
196
|
Then the file "toto.csv" should contain:
|
250
197
|
"""
|
251
|
-
Type,Reference,Value,
|
198
|
+
Type,Reference,Value,Checksum,Participate to:
|
252
199
|
requirement,TOTO-0001,"Exemple of multiline requirement.
|
253
|
-
Second line."
|
200
|
+
Second line.",~b86dcbde,"SYSTEM-0012
|
254
201
|
SYSTEM-0014"
|
255
202
|
"""
|
256
203
|
And the stdout should not contain anything
|
@@ -271,9 +218,9 @@ Feature: The extract command
|
|
271
218
|
When I successfully run `defmastership export toto.adoc`
|
272
219
|
Then the file "toto.csv" should contain:
|
273
220
|
"""
|
274
|
-
Type,Reference,Value,
|
221
|
+
Type,Reference,Value,Checksum,Participate to:
|
275
222
|
requirement,TOTO-0001,"Exemple of multiline requirement.
|
276
|
-
Second line."
|
223
|
+
Second line.",~b86dcbde,"SYSTEM-0012
|
277
224
|
SYSTEM-0014"
|
278
225
|
"""
|
279
226
|
And the stdout should not contain anything
|
@@ -295,9 +242,9 @@ Feature: The extract command
|
|
295
242
|
And the stderr should not contain anything
|
296
243
|
And the file "toto.csv" should contain:
|
297
244
|
"""
|
298
|
-
Type,Reference,Value,
|
245
|
+
Type,Reference,Value,Checksum,Participate to:
|
299
246
|
requirement,TOTO-0001,"Exemple of multiline requirement.
|
300
|
-
Second line."
|
247
|
+
Second line.",~b86dcbde,"SYSTEM-0012
|
301
248
|
SYSTEM-0014"
|
302
249
|
"""
|
303
250
|
|
@@ -314,9 +261,9 @@ Feature: The extract command
|
|
314
261
|
When I successfully run `defmastership export toto.adoc`
|
315
262
|
Then the file "toto.csv" should contain:
|
316
263
|
"""
|
317
|
-
Type,Reference,Value,
|
264
|
+
Type,Reference,Value,Checksum,Internal links
|
318
265
|
requirement,TOTO-0001,"Exemple of multiline requirement.
|
319
|
-
Second line: defs:iref[TOTO-0001], defs:iref[TOTO-0123]."
|
266
|
+
Second line: defs:iref[TOTO-0001], defs:iref[TOTO-0123].",~059b7188,"TOTO-0001
|
320
267
|
TOTO-0123
|
321
268
|
TOTO-0002"
|
322
269
|
"""
|
@@ -339,8 +286,8 @@ Feature: The extract command
|
|
339
286
|
And the stdout should not contain anything
|
340
287
|
Then the file "toto.csv" should contain:
|
341
288
|
"""
|
342
|
-
Type,Reference,Value,
|
343
|
-
requirement,TOTO-0001,One single line
|
289
|
+
Type,Reference,Value,Checksum,Verified by:,Criticity:
|
290
|
+
requirement,TOTO-0001,One single line.,~554b0ff5,Beautiful Test,Very cool
|
344
291
|
"""
|
345
292
|
And the stdout should not contain anything
|
346
293
|
And the stderr should not contain anything
|
data/features/modify.feature
CHANGED
@@ -3,7 +3,7 @@ Feature: The modify command
|
|
3
3
|
In order to manage to applu predefined modifications
|
4
4
|
I want defmastership to apply automatic modifications
|
5
5
|
|
6
|
-
Scenario:
|
6
|
+
Scenario: Changes with one modifier
|
7
7
|
Given a file named "modifications.yml" with:
|
8
8
|
"""
|
9
9
|
---
|
@@ -36,6 +36,28 @@ Feature: The modify command
|
|
36
36
|
[define, requirement, TOTO-0123]
|
37
37
|
"""
|
38
38
|
|
39
|
+
|
40
|
+
Scenario: Change with wrong modifier
|
41
|
+
Given a file named "modifications.yml" with:
|
42
|
+
"""
|
43
|
+
---
|
44
|
+
:temp-references:
|
45
|
+
:type: change_ref
|
46
|
+
:config:
|
47
|
+
:from_regexp: TOTO-TEMP-[X\d]{4}
|
48
|
+
:to_template: TOTO-%<next_ref>04d
|
49
|
+
:next_ref: 123
|
50
|
+
"""
|
51
|
+
And a file named "thedoc.adoc" with:
|
52
|
+
"""
|
53
|
+
[define, requirement, TOTO-TEMP-XXX1]
|
54
|
+
"""
|
55
|
+
When I run `defmastership modify --modifications wrong-modification thedoc.adoc`
|
56
|
+
Then it should fail with:
|
57
|
+
"""
|
58
|
+
error: wrong-modification is not a known modification
|
59
|
+
"""
|
60
|
+
|
39
61
|
Scenario: Make modifications with yaml file parameter
|
40
62
|
Given a file named "pouet.yml" with:
|
41
63
|
"""
|
data/lib/defmastership.rb
CHANGED
@@ -22,3 +22,9 @@ require('defmastership/change_ref_line_modifier')
|
|
22
22
|
|
23
23
|
require('defmastership/rename_included_files_modifier')
|
24
24
|
require('defmastership/rename_included_files_line_modifier')
|
25
|
+
|
26
|
+
require('defmastership/update_def_checksum_modifier')
|
27
|
+
require('defmastership/update_def_checksum_line_modifier')
|
28
|
+
|
29
|
+
require('defmastership/update_def_version_modifier')
|
30
|
+
require('defmastership/update_def_version_line_modifier')
|
@@ -26,6 +26,8 @@ module DefMastership
|
|
26
26
|
private
|
27
27
|
|
28
28
|
def modifier_from(modif)
|
29
|
+
raise(ArgumentError, "#{modif} is not a known modification") if @config[modif.to_sym].nil?
|
30
|
+
|
29
31
|
class_name = "#{@config[modif.to_sym][:type].split('_').map(&:capitalize).join}Modifier"
|
30
32
|
DefMastership.const_get(class_name).new(@config[modif.to_sym][:config])
|
31
33
|
end
|
@@ -66,12 +66,13 @@ module DefMastership
|
|
66
66
|
regexp_str =
|
67
67
|
"(?<before>#{REGEXP_FROM[const][:before]})" \
|
68
68
|
"(?<from>#{from})" \
|
69
|
+
"#{DMRegexp::DEF_VERSION_AND_CHECKSUM}" \
|
69
70
|
"(?<after>#{REGEXP_FROM[const][:after]})"
|
70
71
|
Regexp.new(regexp_str, Regexp::EXTENDED)
|
71
72
|
end
|
72
73
|
|
73
74
|
def text_with(match, replacement)
|
74
|
-
match[:before] + replacement + match[:after]
|
75
|
+
match[:before] + replacement + (match[:version_and_checksum] || '') + match[:after]
|
75
76
|
end
|
76
77
|
|
77
78
|
def hmerge(match)
|
@@ -20,10 +20,12 @@ module DefMastership
|
|
20
20
|
(,\s*\[\s*(?<labels>.*?)\s*\])?\s*\]
|
21
21
|
AFT
|
22
22
|
|
23
|
-
|
23
|
+
DEF_VERSION_AND_CHECKSUM = '(?<version_and_checksum>' \
|
24
|
+
'\((?<explicit_version>[^~]+)?(?<explicit_checksum>~[[:alnum:]]+)?\)' \
|
25
|
+
')?'
|
24
26
|
|
25
27
|
DEFINITION = Regexp.new(
|
26
|
-
"#{DEF_BEFORE_REF}(?<reference>[\\w:_-]+)#{
|
28
|
+
"#{DEF_BEFORE_REF}(?<reference>[\\w:_-]+)#{DEF_VERSION_AND_CHECKSUM}#{DEF_AFTER_REF}",
|
27
29
|
Regexp::EXTENDED
|
28
30
|
)
|
29
31
|
|
@@ -8,18 +8,13 @@ require('defmastership/csv_formatter_body')
|
|
8
8
|
module DefMastership
|
9
9
|
# to export a CSV file
|
10
10
|
class CSVFormatter
|
11
|
-
COLUMN_LIST1 = %i[fixed wrong_explicit_checksum labels eref iref attributes].freeze
|
12
|
-
COLUMN_LIST2 = %i[fixed labels eref iref attributes].freeze
|
13
|
-
private_constant :COLUMN_LIST1
|
14
|
-
private_constant :COLUMN_LIST2
|
15
|
-
|
16
11
|
def initialize(doc, sep = ',')
|
17
12
|
@doc = doc
|
18
13
|
@sep = sep
|
19
14
|
end
|
20
15
|
|
21
16
|
def export_to(output_file)
|
22
|
-
column_list =
|
17
|
+
column_list = build_column_list
|
23
18
|
CSV.open(output_file, 'w:ISO-8859-1', { col_sep: @sep }) do |csv|
|
24
19
|
csv << header(column_list)
|
25
20
|
@doc.definitions.each { |definition| csv << body(definition, column_list) }
|
@@ -39,5 +34,16 @@ module DefMastership
|
|
39
34
|
body_line = column_list.map { |part| body_formatter.public_send(part, definition) }
|
40
35
|
body_line.reduce(:+)
|
41
36
|
end
|
37
|
+
|
38
|
+
def build_column_list
|
39
|
+
column_list = [:fixed]
|
40
|
+
column_list += [:wrong_explicit_checksum] if @doc.wrong_explicit_checksum?
|
41
|
+
column_list += [:explicit_version] if @doc.explicit_version?
|
42
|
+
column_list += [:labels] unless @doc.labels.empty?
|
43
|
+
column_list += [:eref] unless @doc.eref.empty?
|
44
|
+
column_list += [:iref] if @doc.iref
|
45
|
+
column_list += [:attributes] unless @doc.attributes.empty?
|
46
|
+
column_list
|
47
|
+
end
|
42
48
|
end
|
43
49
|
end
|
@@ -19,8 +19,13 @@ module DefMastership
|
|
19
19
|
wrong_explicit_checksum ? [wrong_explicit_checksum] : ['']
|
20
20
|
end
|
21
21
|
|
22
|
+
def explicit_version(definition)
|
23
|
+
explicit_version = definition.explicit_version
|
24
|
+
explicit_version ? [explicit_version] : ['']
|
25
|
+
end
|
26
|
+
|
22
27
|
def labels(definition)
|
23
|
-
|
28
|
+
[definition.labels.to_a.join("\n")]
|
24
29
|
end
|
25
30
|
|
26
31
|
def eref(definition)
|
@@ -28,13 +33,11 @@ module DefMastership
|
|
28
33
|
end
|
29
34
|
|
30
35
|
def iref(definition)
|
31
|
-
|
36
|
+
[definition.iref.join("\n")]
|
32
37
|
end
|
33
38
|
|
34
39
|
def attributes(definition)
|
35
|
-
@doc.attributes.map
|
36
|
-
definition.attributes[key]
|
37
|
-
end
|
40
|
+
@doc.attributes.map { |key, _| definition.attributes[key] }
|
38
41
|
end
|
39
42
|
end
|
40
43
|
end
|
@@ -11,13 +11,17 @@ module DefMastership
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def fixed
|
14
|
-
%w[Type Reference Value
|
14
|
+
%w[Type Reference Value Checksum]
|
15
15
|
end
|
16
16
|
|
17
17
|
def wrong_explicit_checksum
|
18
18
|
@doc.wrong_explicit_checksum? ? ['Wrong explicit checksum'] : []
|
19
19
|
end
|
20
20
|
|
21
|
+
def explicit_version
|
22
|
+
@doc.explicit_version? ? ['Version'] : []
|
23
|
+
end
|
24
|
+
|
21
25
|
def labels
|
22
26
|
@doc.labels.empty? ? [] : %w[Labels]
|
23
27
|
end
|
@@ -6,19 +6,19 @@ require 'digest'
|
|
6
6
|
module DefMastership
|
7
7
|
# DefMastership definition: contains all data of a definition
|
8
8
|
class Definition
|
9
|
-
attr_reader :type, :reference, :lines, :labels, :eref, :iref, :attributes
|
9
|
+
attr_reader :type, :reference, :lines, :labels, :eref, :iref, :attributes, :explicit_version
|
10
10
|
|
11
11
|
def initialize(match)
|
12
12
|
@type = match[:type]
|
13
13
|
@reference = match[:reference]
|
14
14
|
@lines = []
|
15
15
|
@labels = Set.new
|
16
|
-
labels
|
17
|
-
@labels.merge(labels.split(/\s*,\s*/).to_set) if labels
|
16
|
+
@labels.merge(match[:labels].split(/\s*,\s*/).to_set) if match[:labels]
|
18
17
|
@eref = Hash.new([])
|
19
18
|
@iref = []
|
20
19
|
@attributes = {}
|
21
20
|
@explicit_checksum = match[:explicit_checksum]
|
21
|
+
@explicit_version = match[:explicit_version]
|
22
22
|
end
|
23
23
|
|
24
24
|
def <<(new_line)
|
@@ -31,7 +31,7 @@ module DefMastership
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def sha256
|
34
|
-
Digest::SHA2.new(256).hexdigest(value).split(//).last(8).join
|
34
|
+
"~#{Digest::SHA2.new(256).hexdigest(value).split(//).last(8).join}"
|
35
35
|
end
|
36
36
|
|
37
37
|
def wrong_explicit_checksum
|
@@ -1,6 +1,8 @@
|
|
1
1
|
# Copyright (c) 2020 Jerome Arbez-Gindre
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
+
require('asciidoctor')
|
5
|
+
|
4
6
|
module DefMastership
|
5
7
|
# Contains the content of a DefMastership document: mainly definitions
|
6
8
|
|
@@ -16,16 +18,37 @@ module DefMastership
|
|
16
18
|
@attributes = {}
|
17
19
|
@in_literal = true
|
18
20
|
@variables = {}
|
19
|
-
|
20
21
|
@definition_parser = DefinitionParser.new(self)
|
21
22
|
end
|
22
23
|
|
24
|
+
def parse(lines)
|
25
|
+
lines.reject(&:commented?).each do |line|
|
26
|
+
(@in_literal ? FILTERS : FILTERS_IN_LITERAL).each do |filter|
|
27
|
+
next unless line.match(filter.regexp)
|
28
|
+
|
29
|
+
line = generate_event(filter.event, Regexp.last_match, line)
|
30
|
+
|
31
|
+
break if filter.consumed_line
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def parse_file_with_preprocessor(adoc_file)
|
37
|
+
parse(Asciidoctor.load_file(adoc_file, safe: :unsafe, parse: false).reader.read_lines)
|
38
|
+
end
|
39
|
+
|
23
40
|
def wrong_explicit_checksum?
|
24
41
|
@definitions.reduce(false) do |res, definition|
|
25
42
|
res || !definition.wrong_explicit_checksum.nil?
|
26
43
|
end
|
27
44
|
end
|
28
45
|
|
46
|
+
def explicit_version?
|
47
|
+
@definitions.reduce(false) do |res, definition|
|
48
|
+
res || !definition.explicit_version.nil?
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
29
52
|
def code_block_delimiter(_match, line)
|
30
53
|
@in_literal ^= true
|
31
54
|
line
|
@@ -38,6 +61,10 @@ module DefMastership
|
|
38
61
|
line
|
39
62
|
end
|
40
63
|
|
64
|
+
def ref_to_def(ref)
|
65
|
+
@definitions.find { |definition| definition.reference == ref }
|
66
|
+
end
|
67
|
+
|
41
68
|
def add_line(_match, line)
|
42
69
|
@definitions.last << line
|
43
70
|
line
|
@@ -45,17 +72,12 @@ module DefMastership
|
|
45
72
|
|
46
73
|
def new_eref_setup(match, line)
|
47
74
|
@eref[match[:refname].to_sym] ||= {}
|
48
|
-
|
49
|
-
@eref[match[:refname].to_sym][match[:symb].to_sym] =
|
50
|
-
match[:value]
|
75
|
+
@eref[match[:refname].to_sym][match[:symb].to_sym] = match[:value]
|
51
76
|
line
|
52
77
|
end
|
53
78
|
|
54
79
|
def new_eref_def(match, line)
|
55
|
-
@definitions.last.add_eref(
|
56
|
-
match[:refname].to_sym,
|
57
|
-
match[:extrefs]
|
58
|
-
)
|
80
|
+
@definitions.last.add_eref(match[:refname].to_sym, match[:extrefs])
|
59
81
|
line
|
60
82
|
end
|
61
83
|
|
@@ -73,10 +95,7 @@ module DefMastership
|
|
73
95
|
end
|
74
96
|
|
75
97
|
def new_attribute_value(match, line)
|
76
|
-
@definitions.last.set_attribute(
|
77
|
-
match[:attr].to_sym,
|
78
|
-
match[:value]
|
79
|
-
)
|
98
|
+
@definitions.last.set_attribute(match[:attr].to_sym, match[:value])
|
80
99
|
line
|
81
100
|
end
|
82
101
|
|
@@ -86,26 +105,13 @@ module DefMastership
|
|
86
105
|
end
|
87
106
|
|
88
107
|
def new_variable_use(_match, line)
|
89
|
-
new_line = line.dup
|
90
108
|
line.scan(DMRegexp::VARIABLE_USE) do |_|
|
91
109
|
varname = Regexp.last_match[:varname]
|
92
110
|
next if @variables[varname.to_sym].nil?
|
93
111
|
|
94
|
-
|
95
|
-
end
|
96
|
-
new_line
|
97
|
-
end
|
98
|
-
|
99
|
-
def parse(lines)
|
100
|
-
lines.reject(&:commented?).each do |line|
|
101
|
-
(@in_literal ? FILTERS : FILTERS_IN_LITERAL).each do |filter|
|
102
|
-
next unless line.match(filter.regexp)
|
103
|
-
|
104
|
-
line = generate_event(filter.event, Regexp.last_match, line)
|
105
|
-
|
106
|
-
break if filter.consumed_line
|
107
|
-
end
|
112
|
+
line = line.gsub("{#{varname}}", @variables[varname.to_sym])
|
108
113
|
end
|
114
|
+
line
|
109
115
|
end
|
110
116
|
|
111
117
|
private
|