duxml 0.8.8 → 0.8.9
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/validate_xml +30 -30
- data/lib/duxml.rb +76 -76
- data/lib/duxml/doc.rb +108 -91
- data/lib/duxml/doc/element.rb +250 -250
- data/lib/duxml/doc/lazy_ox.rb +167 -167
- data/lib/duxml/doc/node_set.rb +38 -38
- data/lib/duxml/meta.rb +72 -72
- data/lib/duxml/meta/grammar.rb +133 -133
- data/lib/duxml/meta/grammar/pattern.rb +111 -111
- data/lib/duxml/meta/grammar/pattern/attr_name_pattern.rb +36 -36
- data/lib/duxml/meta/grammar/pattern/attr_val_pattern.rb +36 -36
- data/lib/duxml/meta/grammar/pattern/child_pattern.rb +60 -60
- data/lib/duxml/meta/grammar/pattern/text_pattern.rb +31 -31
- data/lib/duxml/meta/grammar/pattern_maker.rb +68 -68
- data/lib/duxml/meta/grammar/relax_ng.rb +39 -39
- data/lib/duxml/meta/grammar/relax_ng/attrs_rule.rb +58 -58
- data/lib/duxml/meta/grammar/relax_ng/children_rule.rb +82 -82
- data/lib/duxml/meta/grammar/relax_ng/value_rule.rb +44 -44
- data/lib/duxml/meta/grammar/rule.rb +58 -58
- data/lib/duxml/meta/grammar/rule/attrs_rule.rb +77 -77
- data/lib/duxml/meta/grammar/rule/children_rule.rb +135 -135
- data/lib/duxml/meta/grammar/rule/text_rule.rb +39 -39
- data/lib/duxml/meta/grammar/rule/value_rule.rb +110 -110
- data/lib/duxml/meta/grammar/spreadsheet.rb +34 -34
- data/lib/duxml/meta/history.rb +88 -88
- data/lib/duxml/meta/history/add.rb +30 -30
- data/lib/duxml/meta/history/change.rb +70 -70
- data/lib/duxml/meta/history/change_attr.rb +33 -33
- data/lib/duxml/meta/history/change_text.rb +32 -32
- data/lib/duxml/meta/history/error.rb +24 -24
- data/lib/duxml/meta/history/new_attr.rb +32 -32
- data/lib/duxml/meta/history/new_text.rb +36 -36
- data/lib/duxml/meta/history/qualify_error.rb +21 -21
- data/lib/duxml/meta/history/remove.rb +27 -27
- data/lib/duxml/meta/history/undo.rb +23 -23
- data/lib/duxml/meta/history/validate_error.rb +20 -20
- data/lib/duxml/reportable.rb +28 -28
- data/lib/duxml/ruby_ext/fixnum.rb +55 -55
- data/lib/duxml/ruby_ext/module.rb +11 -11
- data/lib/duxml/ruby_ext/object.rb +13 -13
- data/lib/duxml/ruby_ext/regexp.rb +19 -19
- data/lib/duxml/ruby_ext/string.rb +37 -37
- data/lib/duxml/saxer.rb +75 -75
- metadata +12 -12
@@ -1,31 +1,31 @@
|
|
1
|
-
# Copyright (c) 2016 Freescale Semiconductor Inc.
|
2
|
-
|
3
|
-
require File.expand_path(File.dirname(__FILE__) + '/change')
|
4
|
-
|
5
|
-
module Duxml
|
6
|
-
module Add; end
|
7
|
-
|
8
|
-
# created when an doc gains a child
|
9
|
-
class AddClass < ChangeClass
|
10
|
-
include Add
|
11
|
-
|
12
|
-
def initialize(_subject, _child, _index)
|
13
|
-
super _subject
|
14
|
-
@child, @index = _child, _index
|
15
|
-
end
|
16
|
-
|
17
|
-
attr_reader :subject, :child, :index
|
18
|
-
alias_method :parent, :subject
|
19
|
-
alias_method :object, :child
|
20
|
-
end
|
21
|
-
|
22
|
-
module Add
|
23
|
-
def description
|
24
|
-
%(#{super} #{child.description} added to #{parent.description} at index #{index == -1 ? '0' : index.to_s}.)
|
25
|
-
end
|
26
|
-
|
27
|
-
def parent
|
28
|
-
subject
|
29
|
-
end
|
30
|
-
end # class Add
|
1
|
+
# Copyright (c) 2016 Freescale Semiconductor Inc.
|
2
|
+
|
3
|
+
require File.expand_path(File.dirname(__FILE__) + '/change')
|
4
|
+
|
5
|
+
module Duxml
|
6
|
+
module Add; end
|
7
|
+
|
8
|
+
# created when an doc gains a child
|
9
|
+
class AddClass < ChangeClass
|
10
|
+
include Add
|
11
|
+
|
12
|
+
def initialize(_subject, _child, _index)
|
13
|
+
super _subject
|
14
|
+
@child, @index = _child, _index
|
15
|
+
end
|
16
|
+
|
17
|
+
attr_reader :subject, :child, :index
|
18
|
+
alias_method :parent, :subject
|
19
|
+
alias_method :object, :child
|
20
|
+
end
|
21
|
+
|
22
|
+
module Add
|
23
|
+
def description
|
24
|
+
%(#{super} #{child.description} added to #{parent.description} at index #{index == -1 ? '0' : index.to_s}.)
|
25
|
+
end
|
26
|
+
|
27
|
+
def parent
|
28
|
+
subject
|
29
|
+
end
|
30
|
+
end # class Add
|
31
31
|
end # module Duxml
|
@@ -1,71 +1,71 @@
|
|
1
|
-
# Copyright (c) 2016 Freescale Semiconductor Inc.
|
2
|
-
|
3
|
-
require File.expand_path(File.dirname(__FILE__) + '/../grammar/pattern')
|
4
|
-
|
5
|
-
module Duxml
|
6
|
-
module Change; end
|
7
|
-
# do not use - only for subclassing
|
8
|
-
# changes represent events i.e. patterns with a fixed position in time,
|
9
|
-
# and can include qualification and validation errors
|
10
|
-
class ChangeClass < PatternClass
|
11
|
-
include Change
|
12
|
-
|
13
|
-
@time_stamp
|
14
|
-
|
15
|
-
# all subclasses of Change must call this super method or implement the same function within their #initialize
|
16
|
-
#
|
17
|
-
# @param _subject [Duxml::Element] parent doc affected by change
|
18
|
-
def initialize(_subject, *args)
|
19
|
-
super _subject
|
20
|
-
@time_stamp = Time.now
|
21
|
-
args.each do |arg|
|
22
|
-
if arg.is_a?(Duxml::Element)
|
23
|
-
@object = arg
|
24
|
-
break
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
attr_reader :time_stamp
|
30
|
-
end # class ChangeClass < PatternClass
|
31
|
-
|
32
|
-
module Change
|
33
|
-
def abstract?
|
34
|
-
false
|
35
|
-
end
|
36
|
-
|
37
|
-
# @return [String] gives its time stamp
|
38
|
-
def description
|
39
|
-
"at #{time_stamp}#{line_expr}:"
|
40
|
-
end
|
41
|
-
|
42
|
-
# @return [-1,0,1,nil] compares dates of changes
|
43
|
-
def <=>(obj)
|
44
|
-
return nil unless obj.is_a?(Duxml::Change)
|
45
|
-
date <=> obj.date
|
46
|
-
end
|
47
|
-
|
48
|
-
# @return [Fixnum] line number of changed object; -l if not applicable
|
49
|
-
def line
|
50
|
-
case
|
51
|
-
when object.respond_to?(:line) && object.line.is_a?(Numeric) && object.line >= 0
|
52
|
-
object.line
|
53
|
-
when object.respond_to?(:object) && object.object.respond_to?(:line) && object.object.line.is_a?(Numeric) && object.object.line >= 0
|
54
|
-
object.object.line
|
55
|
-
when object.respond_to?(:subject) && object.subject.respond_to?(:line) && object.subject.line.is_a?(Numeric) && object.subject.line >= 0
|
56
|
-
object.subject.line
|
57
|
-
when subject.respond_to?(:line) && subject.line.is_a?(Numeric) && subject.line >= 0
|
58
|
-
subject.line
|
59
|
-
else
|
60
|
-
-1
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
private
|
65
|
-
|
66
|
-
# @return [String] string equivalent of object's line number
|
67
|
-
def line_expr
|
68
|
-
line >= 0 ? " on line #{line.to_s}" : ''
|
69
|
-
end
|
70
|
-
end # class Change
|
1
|
+
# Copyright (c) 2016 Freescale Semiconductor Inc.
|
2
|
+
|
3
|
+
require File.expand_path(File.dirname(__FILE__) + '/../grammar/pattern')
|
4
|
+
|
5
|
+
module Duxml
|
6
|
+
module Change; end
|
7
|
+
# do not use - only for subclassing
|
8
|
+
# changes represent events i.e. patterns with a fixed position in time,
|
9
|
+
# and can include qualification and validation errors
|
10
|
+
class ChangeClass < PatternClass
|
11
|
+
include Change
|
12
|
+
|
13
|
+
@time_stamp
|
14
|
+
|
15
|
+
# all subclasses of Change must call this super method or implement the same function within their #initialize
|
16
|
+
#
|
17
|
+
# @param _subject [Duxml::Element] parent doc affected by change
|
18
|
+
def initialize(_subject, *args)
|
19
|
+
super _subject
|
20
|
+
@time_stamp = Time.now
|
21
|
+
args.each do |arg|
|
22
|
+
if arg.is_a?(Duxml::Element)
|
23
|
+
@object = arg
|
24
|
+
break
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
attr_reader :time_stamp
|
30
|
+
end # class ChangeClass < PatternClass
|
31
|
+
|
32
|
+
module Change
|
33
|
+
def abstract?
|
34
|
+
false
|
35
|
+
end
|
36
|
+
|
37
|
+
# @return [String] gives its time stamp
|
38
|
+
def description
|
39
|
+
"at #{time_stamp}#{line_expr}:"
|
40
|
+
end
|
41
|
+
|
42
|
+
# @return [-1,0,1,nil] compares dates of changes
|
43
|
+
def <=>(obj)
|
44
|
+
return nil unless obj.is_a?(Duxml::Change)
|
45
|
+
date <=> obj.date
|
46
|
+
end
|
47
|
+
|
48
|
+
# @return [Fixnum] line number of changed object; -l if not applicable
|
49
|
+
def line
|
50
|
+
case
|
51
|
+
when object.respond_to?(:line) && object.line.is_a?(Numeric) && object.line >= 0
|
52
|
+
object.line
|
53
|
+
when object.respond_to?(:object) && object.object.respond_to?(:line) && object.object.line.is_a?(Numeric) && object.object.line >= 0
|
54
|
+
object.object.line
|
55
|
+
when object.respond_to?(:subject) && object.subject.respond_to?(:line) && object.subject.line.is_a?(Numeric) && object.subject.line >= 0
|
56
|
+
object.subject.line
|
57
|
+
when subject.respond_to?(:line) && subject.line.is_a?(Numeric) && subject.line >= 0
|
58
|
+
subject.line
|
59
|
+
else
|
60
|
+
-1
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
private
|
65
|
+
|
66
|
+
# @return [String] string equivalent of object's line number
|
67
|
+
def line_expr
|
68
|
+
line >= 0 ? " on line #{line.to_s}" : ''
|
69
|
+
end
|
70
|
+
end # class Change
|
71
71
|
end # module Duxml
|
@@ -1,34 +1,34 @@
|
|
1
|
-
# Copyright (c) 2016 Freescale Semiconductor Inc.
|
2
|
-
|
3
|
-
require File.expand_path(File.dirname(__FILE__) + '/change')
|
4
|
-
|
5
|
-
module Duxml
|
6
|
-
module ChangeAttr; end
|
7
|
-
|
8
|
-
# created when Element has an attribute already and its value has been changed
|
9
|
-
class ChangeAttrClass < ChangeClass
|
10
|
-
include ChangeAttr
|
11
|
-
|
12
|
-
# @param _subject [Duxml::Element] parent doc whose attribute changed
|
13
|
-
# @param _attr_name [String] name of the changed attribute
|
14
|
-
# @param _old_value [String] old attribute value
|
15
|
-
def initialize(_subject, _attr_name, _old_value)
|
16
|
-
super _subject
|
17
|
-
@attr_name, @old_value = _attr_name, _old_value
|
18
|
-
end
|
19
|
-
|
20
|
-
attr_reader :attr_name, :old_value
|
21
|
-
end # class ChangeAttributeClass
|
22
|
-
|
23
|
-
module ChangeAttr
|
24
|
-
# @return [String] new value of attribute
|
25
|
-
def value
|
26
|
-
subject[attr_name]
|
27
|
-
end
|
28
|
-
|
29
|
-
# @return [String] self description
|
30
|
-
def description
|
31
|
-
"#{super} #{subject.description}'s @#{attr_name} changed value from '#{old_value}' to '#{value}'."
|
32
|
-
end
|
33
|
-
end # module ChangeAttribute
|
1
|
+
# Copyright (c) 2016 Freescale Semiconductor Inc.
|
2
|
+
|
3
|
+
require File.expand_path(File.dirname(__FILE__) + '/change')
|
4
|
+
|
5
|
+
module Duxml
|
6
|
+
module ChangeAttr; end
|
7
|
+
|
8
|
+
# created when Element has an attribute already and its value has been changed
|
9
|
+
class ChangeAttrClass < ChangeClass
|
10
|
+
include ChangeAttr
|
11
|
+
|
12
|
+
# @param _subject [Duxml::Element] parent doc whose attribute changed
|
13
|
+
# @param _attr_name [String] name of the changed attribute
|
14
|
+
# @param _old_value [String] old attribute value
|
15
|
+
def initialize(_subject, _attr_name, _old_value)
|
16
|
+
super _subject
|
17
|
+
@attr_name, @old_value = _attr_name, _old_value
|
18
|
+
end
|
19
|
+
|
20
|
+
attr_reader :attr_name, :old_value
|
21
|
+
end # class ChangeAttributeClass
|
22
|
+
|
23
|
+
module ChangeAttr
|
24
|
+
# @return [String] new value of attribute
|
25
|
+
def value
|
26
|
+
subject[attr_name]
|
27
|
+
end
|
28
|
+
|
29
|
+
# @return [String] self description
|
30
|
+
def description
|
31
|
+
"#{super} #{subject.description}'s @#{attr_name} changed value from '#{old_value}' to '#{value}'."
|
32
|
+
end
|
33
|
+
end # module ChangeAttribute
|
34
34
|
end # module Duxml
|
@@ -1,33 +1,33 @@
|
|
1
|
-
# Copyright (c) 2016 Freescale Semiconductor Inc.
|
2
|
-
|
3
|
-
require File.expand_path(File.dirname(__FILE__) + '/change')
|
4
|
-
|
5
|
-
module Duxml
|
6
|
-
module ChangeText; end
|
7
|
-
# created when doc has text and text has been changed
|
8
|
-
class ChangeTextClass < ChangeClass
|
9
|
-
include ChangeText
|
10
|
-
|
11
|
-
# @param _subject [Duxml::Element] parent doc whose text has changed
|
12
|
-
# @param _index [Fixnum] index of parent's nodes that text is found at
|
13
|
-
# @param _old_text [String] string that was replaced
|
14
|
-
def initialize(_subject, _index, _old_text)
|
15
|
-
super _subject
|
16
|
-
@index, @old_text = _index, _old_text
|
17
|
-
end
|
18
|
-
|
19
|
-
attr_reader :index, :old_text
|
20
|
-
end
|
21
|
-
|
22
|
-
module ChangeText
|
23
|
-
# @return [String] self description
|
24
|
-
def description
|
25
|
-
"#{super} #{subject.description}'s text at index #{index} changed from '#{old_text}' to '#{text}'."
|
26
|
-
end
|
27
|
-
|
28
|
-
# @return [String] new content (subsequent changes may mean this new content no longer exists in its original form!)
|
29
|
-
def text
|
30
|
-
subject.nodes[index]
|
31
|
-
end
|
32
|
-
end # module ChangeText
|
1
|
+
# Copyright (c) 2016 Freescale Semiconductor Inc.
|
2
|
+
|
3
|
+
require File.expand_path(File.dirname(__FILE__) + '/change')
|
4
|
+
|
5
|
+
module Duxml
|
6
|
+
module ChangeText; end
|
7
|
+
# created when doc has text and text has been changed
|
8
|
+
class ChangeTextClass < ChangeClass
|
9
|
+
include ChangeText
|
10
|
+
|
11
|
+
# @param _subject [Duxml::Element] parent doc whose text has changed
|
12
|
+
# @param _index [Fixnum] index of parent's nodes that text is found at
|
13
|
+
# @param _old_text [String] string that was replaced
|
14
|
+
def initialize(_subject, _index, _old_text)
|
15
|
+
super _subject
|
16
|
+
@index, @old_text = _index, _old_text
|
17
|
+
end
|
18
|
+
|
19
|
+
attr_reader :index, :old_text
|
20
|
+
end
|
21
|
+
|
22
|
+
module ChangeText
|
23
|
+
# @return [String] self description
|
24
|
+
def description
|
25
|
+
"#{super} #{subject.description}'s text at index #{index} changed from '#{old_text}' to '#{text}'."
|
26
|
+
end
|
27
|
+
|
28
|
+
# @return [String] new content (subsequent changes may mean this new content no longer exists in its original form!)
|
29
|
+
def text
|
30
|
+
subject.nodes[index]
|
31
|
+
end
|
32
|
+
end # module ChangeText
|
33
33
|
end # module Duxml
|
@@ -1,25 +1,25 @@
|
|
1
|
-
# Copyright (c) 2016 Freescale Semiconductor Inc.
|
2
|
-
|
3
|
-
require File.expand_path(File.dirname(__FILE__) + '/change')
|
4
|
-
|
5
|
-
module Duxml
|
6
|
-
module Error
|
7
|
-
def error?
|
8
|
-
true
|
9
|
-
end
|
10
|
-
end # class Error
|
11
|
-
|
12
|
-
# do not use except to subclass
|
13
|
-
class ErrorClass < ChangeClass
|
14
|
-
include Error
|
15
|
-
|
16
|
-
# @param _rule [Rule] rule that was violated
|
17
|
-
# @param _change_or_pattern [ChangeClass, PatternClass] can be triggered by a change or a pattern found in a static document
|
18
|
-
def initialize(_rule, _change_or_pattern)
|
19
|
-
super(_rule)
|
20
|
-
@object = _change_or_pattern
|
21
|
-
end
|
22
|
-
alias_method :rule, :subject
|
23
|
-
end
|
24
|
-
|
1
|
+
# Copyright (c) 2016 Freescale Semiconductor Inc.
|
2
|
+
|
3
|
+
require File.expand_path(File.dirname(__FILE__) + '/change')
|
4
|
+
|
5
|
+
module Duxml
|
6
|
+
module Error
|
7
|
+
def error?
|
8
|
+
true
|
9
|
+
end
|
10
|
+
end # class Error
|
11
|
+
|
12
|
+
# do not use except to subclass
|
13
|
+
class ErrorClass < ChangeClass
|
14
|
+
include Error
|
15
|
+
|
16
|
+
# @param _rule [Rule] rule that was violated
|
17
|
+
# @param _change_or_pattern [ChangeClass, PatternClass] can be triggered by a change or a pattern found in a static document
|
18
|
+
def initialize(_rule, _change_or_pattern)
|
19
|
+
super(_rule)
|
20
|
+
@object = _change_or_pattern
|
21
|
+
end
|
22
|
+
alias_method :rule, :subject
|
23
|
+
end
|
24
|
+
|
25
25
|
end # module Duxml
|
@@ -1,33 +1,33 @@
|
|
1
|
-
# Copyright (c) 2016 Freescale Semiconductor Inc.
|
2
|
-
|
3
|
-
require File.expand_path(File.dirname(__FILE__) + '/change')
|
4
|
-
|
5
|
-
module Duxml
|
6
|
-
module NewAttr; end
|
7
|
-
|
8
|
-
# created when doc gains a new attribute
|
9
|
-
class NewAttrClass < ChangeClass
|
10
|
-
include NewAttr
|
11
|
-
|
12
|
-
# @param _subject [Duxml::Element] parent doc
|
13
|
-
# @param _attr_name
|
14
|
-
def initialize(_subject, _attr_name)
|
15
|
-
super(_subject)
|
16
|
-
@attr_name = _attr_name
|
17
|
-
end
|
18
|
-
|
19
|
-
attr_reader :attr_name
|
20
|
-
end
|
21
|
-
|
22
|
-
module NewAttr
|
23
|
-
# @return [String] value of the new attribute
|
24
|
-
def value
|
25
|
-
subject[attr_name]
|
26
|
-
end
|
27
|
-
|
28
|
-
# @return [String] self description
|
29
|
-
def description
|
30
|
-
"#{super} #{subject.description} given new attribute '#{attr_name}' with value '#{value}'."
|
31
|
-
end
|
32
|
-
end # module NewAttribute
|
1
|
+
# Copyright (c) 2016 Freescale Semiconductor Inc.
|
2
|
+
|
3
|
+
require File.expand_path(File.dirname(__FILE__) + '/change')
|
4
|
+
|
5
|
+
module Duxml
|
6
|
+
module NewAttr; end
|
7
|
+
|
8
|
+
# created when doc gains a new attribute
|
9
|
+
class NewAttrClass < ChangeClass
|
10
|
+
include NewAttr
|
11
|
+
|
12
|
+
# @param _subject [Duxml::Element] parent doc
|
13
|
+
# @param _attr_name
|
14
|
+
def initialize(_subject, _attr_name)
|
15
|
+
super(_subject)
|
16
|
+
@attr_name = _attr_name
|
17
|
+
end
|
18
|
+
|
19
|
+
attr_reader :attr_name
|
20
|
+
end
|
21
|
+
|
22
|
+
module NewAttr
|
23
|
+
# @return [String] value of the new attribute
|
24
|
+
def value
|
25
|
+
subject[attr_name]
|
26
|
+
end
|
27
|
+
|
28
|
+
# @return [String] self description
|
29
|
+
def description
|
30
|
+
"#{super} #{subject.description} given new attribute '#{attr_name}' with value '#{value}'."
|
31
|
+
end
|
32
|
+
end # module NewAttribute
|
33
33
|
end # module Duxml
|