duxml 0.8.8 → 0.8.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/bin/validate_xml +30 -30
  3. data/lib/duxml.rb +76 -76
  4. data/lib/duxml/doc.rb +108 -91
  5. data/lib/duxml/doc/element.rb +250 -250
  6. data/lib/duxml/doc/lazy_ox.rb +167 -167
  7. data/lib/duxml/doc/node_set.rb +38 -38
  8. data/lib/duxml/meta.rb +72 -72
  9. data/lib/duxml/meta/grammar.rb +133 -133
  10. data/lib/duxml/meta/grammar/pattern.rb +111 -111
  11. data/lib/duxml/meta/grammar/pattern/attr_name_pattern.rb +36 -36
  12. data/lib/duxml/meta/grammar/pattern/attr_val_pattern.rb +36 -36
  13. data/lib/duxml/meta/grammar/pattern/child_pattern.rb +60 -60
  14. data/lib/duxml/meta/grammar/pattern/text_pattern.rb +31 -31
  15. data/lib/duxml/meta/grammar/pattern_maker.rb +68 -68
  16. data/lib/duxml/meta/grammar/relax_ng.rb +39 -39
  17. data/lib/duxml/meta/grammar/relax_ng/attrs_rule.rb +58 -58
  18. data/lib/duxml/meta/grammar/relax_ng/children_rule.rb +82 -82
  19. data/lib/duxml/meta/grammar/relax_ng/value_rule.rb +44 -44
  20. data/lib/duxml/meta/grammar/rule.rb +58 -58
  21. data/lib/duxml/meta/grammar/rule/attrs_rule.rb +77 -77
  22. data/lib/duxml/meta/grammar/rule/children_rule.rb +135 -135
  23. data/lib/duxml/meta/grammar/rule/text_rule.rb +39 -39
  24. data/lib/duxml/meta/grammar/rule/value_rule.rb +110 -110
  25. data/lib/duxml/meta/grammar/spreadsheet.rb +34 -34
  26. data/lib/duxml/meta/history.rb +88 -88
  27. data/lib/duxml/meta/history/add.rb +30 -30
  28. data/lib/duxml/meta/history/change.rb +70 -70
  29. data/lib/duxml/meta/history/change_attr.rb +33 -33
  30. data/lib/duxml/meta/history/change_text.rb +32 -32
  31. data/lib/duxml/meta/history/error.rb +24 -24
  32. data/lib/duxml/meta/history/new_attr.rb +32 -32
  33. data/lib/duxml/meta/history/new_text.rb +36 -36
  34. data/lib/duxml/meta/history/qualify_error.rb +21 -21
  35. data/lib/duxml/meta/history/remove.rb +27 -27
  36. data/lib/duxml/meta/history/undo.rb +23 -23
  37. data/lib/duxml/meta/history/validate_error.rb +20 -20
  38. data/lib/duxml/reportable.rb +28 -28
  39. data/lib/duxml/ruby_ext/fixnum.rb +55 -55
  40. data/lib/duxml/ruby_ext/module.rb +11 -11
  41. data/lib/duxml/ruby_ext/object.rb +13 -13
  42. data/lib/duxml/ruby_ext/regexp.rb +19 -19
  43. data/lib/duxml/ruby_ext/string.rb +37 -37
  44. data/lib/duxml/saxer.rb +75 -75
  45. metadata +12 -12
@@ -1,14 +1,14 @@
1
- # Copyright (c) 2016 Freescale Semiconductor Inc.
2
-
3
- require File.expand_path(File.dirname(__FILE__) + '/string')
4
-
5
- class Object
6
- def simple_name
7
- self.class.to_s.split('::').last
8
- end
9
-
10
- def simple_module
11
- a = self.class.to_s.split('::')
12
- a.size > 1 ? a[-2] : 'Module'
13
- end
1
+ # Copyright (c) 2016 Freescale Semiconductor Inc.
2
+
3
+ require File.expand_path(File.dirname(__FILE__) + '/string')
4
+
5
+ class Object
6
+ def simple_name
7
+ self.class.to_s.split('::').last
8
+ end
9
+
10
+ def simple_module
11
+ a = self.class.to_s.split('::')
12
+ a.size > 1 ? a[-2] : 'Module'
13
+ end
14
14
  end
@@ -1,20 +1,20 @@
1
- # Copyright (c) 2016 Freescale Semiconductor Inc.
2
-
3
- class Regexp
4
- class << self
5
- # @return [Regexp] C identifier e.g. ident_ifier0, excluding 'true' and 'false'
6
- def identifier
7
- /(?:(?!true|false))\b([a-zA-Z_][a-zA-Z0-9_]*)\b/
8
- end
9
-
10
- # @return [Regexp] XML NMTOKEN e.g xml:attribute, also-valid, CDATA
11
- def nmtoken
12
- /(?!\s)([a-zA-Z0-9_\-.:]*)(?!\s)/
13
- end
14
-
15
- # @return [Regexp] Ruby constant e.g. Constant, CONSTANT
16
- def constant
17
- /\b([A-Z][a-zA-Z0-9_]*)\b/
18
- end
19
- end
1
+ # Copyright (c) 2016 Freescale Semiconductor Inc.
2
+
3
+ class Regexp
4
+ class << self
5
+ # @return [Regexp] C identifier e.g. ident_ifier0, excluding 'true' and 'false'
6
+ def identifier
7
+ /(?:(?!true|false))\b([a-zA-Z_][a-zA-Z0-9_]*)\b/
8
+ end
9
+
10
+ # @return [Regexp] XML NMTOKEN e.g xml:attribute, also-valid, CDATA
11
+ def nmtoken
12
+ /(?!\s)([a-zA-Z0-9_\-.:]*)(?!\s)/
13
+ end
14
+
15
+ # @return [Regexp] Ruby constant e.g. Constant, CONSTANT
16
+ def constant
17
+ /\b([A-Z][a-zA-Z0-9_]*)\b/
18
+ end
19
+ end
20
20
  end
@@ -1,37 +1,37 @@
1
- # Copyright (c) 2016 Freescale Semiconductor Inc.
2
- require File.expand_path(File.dirname(__FILE__) + '/regexp')
3
-
4
- class String
5
- # @return [String] converts string into Ruby constant. self must be String with no whitespaces and match Regexp.nmtoken
6
- # 'foo-bar'.constantize => 'Foo_bar'
7
- # 'foo_bar'.constantize => 'FooBar'
8
- # 'fooBar'.constantize => 'FooBar'
9
- def constantize
10
- return self if Regexp.constant.match(self)
11
- raise Exception unless Regexp.nmtoken.match(self)
12
- s = split('_').collect do |word| word[0] = word[0].upcase; word unless word == '_' end.join.gsub('-', '_')
13
- raise Exception unless s.match(Regexp.constant)
14
- s
15
- end
16
-
17
- # @param sym [Symbol] optional setting for what type of nmtoken desired: either :snakeCase or :under_score
18
- # @return [String] does reverse of #constantize e.g.
19
- # 'Foo_b'.nmtokenize => 'foo-bar'
20
- # 'FooBar'.nmtokenize => 'foo_bar'
21
- def nmtokenize(sym = :under_score)
22
- split('::').collect do |word|
23
- s = word.gsub(/(?!^)[A-Z_]/) do |match|
24
- case
25
- when match == '_' then '-'
26
- when sym == :snakeCase
27
- match
28
- when sym == :under_score
29
- "_#{match.downcase}"
30
- else
31
- end
32
- end
33
- s[0] = s[0].downcase
34
- s
35
- end.join(':')
36
- end
37
- end # class String
1
+ # Copyright (c) 2016 Freescale Semiconductor Inc.
2
+ require File.expand_path(File.dirname(__FILE__) + '/regexp')
3
+
4
+ class String
5
+ # @return [String] converts string into Ruby constant. self must be String with no whitespaces and match Regexp.nmtoken
6
+ # 'foo-bar'.constantize => 'Foo_bar'
7
+ # 'foo_bar'.constantize => 'FooBar'
8
+ # 'fooBar'.constantize => 'FooBar'
9
+ def constantize
10
+ return self if Regexp.constant.match(self)
11
+ raise Exception unless Regexp.nmtoken.match(self)
12
+ s = split('_').collect do |word| word[0] = word[0].upcase; word unless word == '_' end.join.gsub('-', '_')
13
+ raise Exception unless s.match(Regexp.constant)
14
+ s
15
+ end
16
+
17
+ # @param sym [Symbol] optional setting for what type of nmtoken desired: either :snakeCase or :under_score
18
+ # @return [String] does reverse of #constantize e.g.
19
+ # 'Foo_b'.nmtokenize => 'foo-bar'
20
+ # 'FooBar'.nmtokenize => 'foo_bar'
21
+ def nmtokenize(sym = :under_score)
22
+ split('::').collect do |word|
23
+ s = word.gsub(/(?!^)[A-Z_]/) do |match|
24
+ case
25
+ when match == '_' then '-'
26
+ when sym == :snakeCase
27
+ match
28
+ when sym == :under_score
29
+ "_#{match.downcase}"
30
+ else
31
+ end
32
+ end
33
+ s[0] = s[0].downcase
34
+ s
35
+ end.join(':')
36
+ end
37
+ end # class String
@@ -1,76 +1,76 @@
1
- # Copyright (c) 2016 Freescale Semiconductor Inc.
2
-
3
- require File.expand_path(File.dirname(__FILE__) + '/doc')
4
-
5
- module Duxml
6
- module Saxer
7
- @io
8
-
9
- attr_accessor :io
10
- # @param path_or_xml [String] path of file to parse or XML as String
11
- # @return [Doc, Element] finished document with each Element's line and column info added
12
- def sax(path_or_xml, obs=nil)
13
- doc_or_no = File.exists?(path_or_xml)
14
- io = doc_or_no ? File.open(path_or_xml): path_or_xml
15
- saxer = DocuLiner.new(Duxml::Doc.new, obs)
16
- Ox.sax_parse(saxer, io, {convert_special: true, symbolize: false})
17
- doc = saxer.cursor
18
- return doc.root unless doc_or_no
19
- doc.add_observer obs if obs and doc.count_observers < 1
20
- doc.path = path_or_xml
21
- doc
22
- end
23
-
24
- alias_method :parse, :sax
25
-
26
- class DocuLiner < ::Ox::Sax
27
- # @param doc [Ox::Document] document that is being constructed as XML is parsed
28
- # @param _observer [Object] object that will observe this document's content
29
- def initialize(doc, _observer)
30
- @cursor_stack = [doc]
31
- @line = 0
32
- @column = 0
33
- @observer = _observer
34
- end
35
-
36
- attr_reader :line, :column, :observer
37
-
38
- def cursor
39
- cursor_stack.last
40
- end
41
-
42
- attr_accessor :cursor_stack
43
-
44
- def start_element(name)
45
- cursor.nodes.insert(-1, Duxml::Element.new(name, line, column))
46
- cursor_stack << cursor.nodes.last.set_doc!(cursor_stack.first)
47
- end
48
-
49
- def attr(name, val)
50
- cursor[name] = val
51
- end
52
-
53
- def text(str)
54
- cursor.nodes.insert(-1, str)
55
- end
56
-
57
- def end_element(name)
58
- cursor.add_observer(observer) if observer
59
- @cursor_stack.pop
60
- end
61
-
62
- private
63
-
64
- def doc
65
- cursor_stack.first
66
- end
67
-
68
- def location_key
69
- @alocation.inject do |a, index|
70
- a ||= ""
71
- a << index.to_s
72
- end
73
- end
74
- end # class DocuLiner < ::Ox::Sax
75
- end # module Saxer
1
+ # Copyright (c) 2016 Freescale Semiconductor Inc.
2
+
3
+ require File.expand_path(File.dirname(__FILE__) + '/doc')
4
+
5
+ module Duxml
6
+ module Saxer
7
+ @io
8
+
9
+ attr_accessor :io
10
+ # @param path_or_xml [String] path of file to parse or XML as String
11
+ # @return [Doc, Element] finished document with each Element's line and column info added
12
+ def sax(path_or_xml, obs=nil)
13
+ doc_or_no = File.exists?(path_or_xml)
14
+ io = doc_or_no ? File.open(path_or_xml): path_or_xml
15
+ saxer = DocuLiner.new(Duxml::Doc.new, obs)
16
+ Ox.sax_parse(saxer, io, {convert_special: true, symbolize: false})
17
+ doc = saxer.cursor
18
+ return doc.root unless doc_or_no
19
+ doc.add_observer obs if obs and doc.count_observers < 1
20
+ doc.path = path_or_xml
21
+ doc
22
+ end
23
+
24
+ alias_method :parse, :sax
25
+
26
+ class DocuLiner < ::Ox::Sax
27
+ # @param doc [Ox::Document] document that is being constructed as XML is parsed
28
+ # @param _observer [Object] object that will observe this document's content
29
+ def initialize(doc, _observer)
30
+ @cursor_stack = [doc]
31
+ @line = 0
32
+ @column = 0
33
+ @observer = _observer
34
+ end
35
+
36
+ attr_reader :line, :column, :observer
37
+
38
+ def cursor
39
+ cursor_stack.last
40
+ end
41
+
42
+ attr_accessor :cursor_stack
43
+
44
+ def start_element(name)
45
+ cursor.nodes.insert(-1, Duxml::Element.new(name, line, column))
46
+ cursor_stack << cursor.nodes.last.set_doc!(cursor_stack.first)
47
+ end
48
+
49
+ def attr(name, val)
50
+ cursor[name] = val
51
+ end
52
+
53
+ def text(str)
54
+ cursor.nodes.insert(-1, str)
55
+ end
56
+
57
+ def end_element(name)
58
+ cursor.add_observer(observer) if observer
59
+ @cursor_stack.pop
60
+ end
61
+
62
+ private
63
+
64
+ def doc
65
+ cursor_stack.first
66
+ end
67
+
68
+ def location_key
69
+ @alocation.inject do |a, index|
70
+ a ||= ""
71
+ a << index.to_s
72
+ end
73
+ end
74
+ end # class DocuLiner < ::Ox::Sax
75
+ end # module Saxer
76
76
  end # module Duxml
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: duxml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.8
4
+ version: 0.8.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Kong
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-02 00:00:00.000000000 Z
11
+ date: 2016-10-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ox
@@ -46,27 +46,31 @@ executables:
46
46
  extensions: []
47
47
  extra_rdoc_files: []
48
48
  files:
49
+ - bin/validate_xml
50
+ - lib/duxml.rb
51
+ - lib/duxml/doc.rb
49
52
  - lib/duxml/doc/element.rb
50
53
  - lib/duxml/doc/lazy_ox.rb
51
54
  - lib/duxml/doc/node_set.rb
52
- - lib/duxml/doc.rb
55
+ - lib/duxml/meta.rb
56
+ - lib/duxml/meta/grammar.rb
57
+ - lib/duxml/meta/grammar/pattern.rb
53
58
  - lib/duxml/meta/grammar/pattern/attr_name_pattern.rb
54
59
  - lib/duxml/meta/grammar/pattern/attr_val_pattern.rb
55
60
  - lib/duxml/meta/grammar/pattern/child_pattern.rb
56
61
  - lib/duxml/meta/grammar/pattern/text_pattern.rb
57
- - lib/duxml/meta/grammar/pattern.rb
58
62
  - lib/duxml/meta/grammar/pattern_maker.rb
63
+ - lib/duxml/meta/grammar/relax_ng.rb
59
64
  - lib/duxml/meta/grammar/relax_ng/attrs_rule.rb
60
65
  - lib/duxml/meta/grammar/relax_ng/children_rule.rb
61
66
  - lib/duxml/meta/grammar/relax_ng/value_rule.rb
62
- - lib/duxml/meta/grammar/relax_ng.rb
67
+ - lib/duxml/meta/grammar/rule.rb
63
68
  - lib/duxml/meta/grammar/rule/attrs_rule.rb
64
69
  - lib/duxml/meta/grammar/rule/children_rule.rb
65
70
  - lib/duxml/meta/grammar/rule/text_rule.rb
66
71
  - lib/duxml/meta/grammar/rule/value_rule.rb
67
- - lib/duxml/meta/grammar/rule.rb
68
72
  - lib/duxml/meta/grammar/spreadsheet.rb
69
- - lib/duxml/meta/grammar.rb
73
+ - lib/duxml/meta/history.rb
70
74
  - lib/duxml/meta/history/add.rb
71
75
  - lib/duxml/meta/history/change.rb
72
76
  - lib/duxml/meta/history/change_attr.rb
@@ -78,8 +82,6 @@ files:
78
82
  - lib/duxml/meta/history/remove.rb
79
83
  - lib/duxml/meta/history/undo.rb
80
84
  - lib/duxml/meta/history/validate_error.rb
81
- - lib/duxml/meta/history.rb
82
- - lib/duxml/meta.rb
83
85
  - lib/duxml/reportable.rb
84
86
  - lib/duxml/ruby_ext/fixnum.rb
85
87
  - lib/duxml/ruby_ext/module.rb
@@ -87,8 +89,6 @@ files:
87
89
  - lib/duxml/ruby_ext/regexp.rb
88
90
  - lib/duxml/ruby_ext/string.rb
89
91
  - lib/duxml/saxer.rb
90
- - lib/duxml.rb
91
- - bin/validate_xml
92
92
  homepage: http://www.github.com/Ludocracy/duxml
93
93
  licenses:
94
94
  - MIT
@@ -109,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
109
109
  version: 1.8.11
110
110
  requirements: []
111
111
  rubyforge_project:
112
- rubygems_version: 2.0.14.1
112
+ rubygems_version: 2.5.1
113
113
  signing_key:
114
114
  specification_version: 4
115
115
  summary: Dynamic Universal XML