rng 0.1.1 → 0.1.2

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.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +2 -0
  3. data/.rubocop_todo.yml +64 -0
  4. data/CODE_OF_CONDUCT.md +132 -0
  5. data/Gemfile +3 -1
  6. data/README.adoc +402 -0
  7. data/lib/rng/any_name.rb +26 -0
  8. data/lib/rng/attribute.rb +58 -4
  9. data/lib/rng/choice.rb +60 -0
  10. data/lib/rng/data.rb +32 -0
  11. data/lib/rng/define.rb +51 -3
  12. data/lib/rng/element.rb +62 -16
  13. data/lib/rng/empty.rb +23 -0
  14. data/lib/rng/except.rb +62 -0
  15. data/lib/rng/external_ref.rb +28 -0
  16. data/lib/rng/grammar.rb +36 -0
  17. data/lib/rng/group.rb +60 -0
  18. data/lib/rng/include.rb +24 -0
  19. data/lib/rng/interleave.rb +58 -0
  20. data/lib/rng/list.rb +56 -0
  21. data/lib/rng/mixed.rb +58 -0
  22. data/lib/rng/name.rb +28 -0
  23. data/lib/rng/not_allowed.rb +23 -0
  24. data/lib/rng/ns_name.rb +31 -0
  25. data/lib/rng/one_or_more.rb +58 -0
  26. data/lib/rng/optional.rb +58 -0
  27. data/lib/rng/param.rb +30 -0
  28. data/lib/rng/parent_ref.rb +28 -0
  29. data/lib/rng/parse_rnc.rb +26 -0
  30. data/lib/rng/pattern.rb +24 -0
  31. data/lib/rng/ref.rb +28 -0
  32. data/lib/rng/rnc_parser.rb +351 -94
  33. data/lib/rng/start.rb +54 -5
  34. data/lib/rng/text.rb +26 -0
  35. data/lib/rng/to_rnc.rb +55 -0
  36. data/lib/rng/value.rb +29 -0
  37. data/lib/rng/version.rb +1 -1
  38. data/lib/rng/zero_or_more.rb +58 -0
  39. data/lib/rng.rb +29 -5
  40. data/rng.gemspec +3 -2
  41. data/spec/fixtures/rnc/address_book.rnc +10 -0
  42. data/spec/fixtures/rnc/complex_example.rnc +61 -0
  43. data/spec/fixtures/rng/address_book.rng +20 -0
  44. data/spec/fixtures/rng/relaxng.rng +335 -0
  45. data/spec/fixtures/rng/testSuite.rng +163 -0
  46. data/spec/fixtures/spectest.xml +6845 -0
  47. data/spec/rng/rnc_parser_spec.rb +6 -4
  48. data/spec/rng/rnc_roundtrip_spec.rb +121 -0
  49. data/spec/rng/schema_spec.rb +115 -166
  50. data/spec/rng/spectest_spec.rb +195 -0
  51. data/spec/spec_helper.rb +33 -0
  52. metadata +54 -7
  53. data/lib/rng/builder.rb +0 -158
  54. data/lib/rng/rng_parser.rb +0 -107
  55. data/lib/rng/schema.rb +0 -18
  56. data/spec/rng/rng_parser_spec.rb +0 -102
@@ -0,0 +1,163 @@
1
+ <?xml version="1.0"?>
2
+ <grammar xmlns="http://relaxng.org/ns/structure/1.0" ns="">
3
+ <!--
4
+ Target namespace is intentionally set to "" so as not to interfere with
5
+ prefix/URI bindings
6
+ -->
7
+
8
+ <start>
9
+ <ref name="testSuite"/>
10
+ </start>
11
+
12
+ <define name="testSuite">
13
+ <element name="testSuite">
14
+ <ref name="header"/>
15
+ <zeroOrMore>
16
+ <choice>
17
+ <ref name="testSuite"/>
18
+ <ref name="testCase"/>
19
+ </choice>
20
+ </zeroOrMore>
21
+ </element>
22
+ </define>
23
+
24
+ <define name="testCase">
25
+ <element name="testCase">
26
+ <ref name="header"/>
27
+
28
+ <ref name="resources"/>
29
+
30
+ <choice>
31
+
32
+ <!-- Incorrect schema -->
33
+ <element name="incorrect">
34
+ <ref name="dtd"/>
35
+ <ref name="anyElement"/>
36
+ </element>
37
+
38
+ <!-- Correct schema and test cases -->
39
+ <group>
40
+ <ref name="correct"/>
41
+ <zeroOrMore>
42
+ <choice>
43
+ <!-- Valid test cases -->
44
+ <element name="valid">
45
+ <ref name="dtd"/>
46
+ <ref name="anyElement"/>
47
+ </element>
48
+ <!-- Invalid test cases -->
49
+ <element name="invalid">
50
+ <ref name="dtd"/>
51
+ <ref name="anyElement"/>
52
+ </element>
53
+ </choice>
54
+ </zeroOrMore>
55
+ </group>
56
+
57
+ </choice>
58
+
59
+ </element>
60
+ </define>
61
+
62
+ <define name="correct">
63
+ <element name="correct">
64
+ <ref name="dtd"/>
65
+ <externalRef href="relaxng.rng"/>
66
+ </element>
67
+ </define>
68
+
69
+ <define name="any">
70
+ <zeroOrMore>
71
+ <choice>
72
+ <ref name="anyElement"/>
73
+ <attribute>
74
+ <anyName/>
75
+ <text/>
76
+ </attribute>
77
+ <text/>
78
+ </choice>
79
+ </zeroOrMore>
80
+ </define>
81
+
82
+ <define name="anyElement">
83
+ <element>
84
+ <anyName/>
85
+ <ref name="any"/>
86
+ </element>
87
+ </define>
88
+
89
+ <define name="header">
90
+ <zeroOrMore>
91
+ <choice>
92
+ <element name="title">
93
+ <text/>
94
+ </element>
95
+ <element name="documentation">
96
+ <text/>
97
+ </element>
98
+ <element name="author">
99
+ <text/>
100
+ </element>
101
+ <!-- Email address for correspondence about test cases. -->
102
+ <element name="email">
103
+ <text/>
104
+ </element>
105
+ <!-- Section of the specification being tested. -->
106
+ <element name="section">
107
+ <text/>
108
+ </element>
109
+ <element name="requires">
110
+ <attribute name="datatypeLibrary"/>
111
+ </element>
112
+ <element>
113
+ <anyName>
114
+ <except>
115
+ <nsName/>
116
+ </except>
117
+ </anyName>
118
+ <ref name="any"/>
119
+ </element>
120
+ </choice>
121
+ </zeroOrMore>
122
+ </define>
123
+
124
+ <define name="resources">
125
+ <zeroOrMore>
126
+ <choice>
127
+ <element name="resource">
128
+ <attribute name="name">
129
+ <ref name="pathSegment"/>
130
+ </attribute>
131
+ <ref name="dtd"/>
132
+ <choice>
133
+ <ref name="anyElement"/>
134
+ <text/>
135
+ </choice>
136
+ </element>
137
+ <element name="dir">
138
+ <attribute name="name">
139
+ <ref name="pathSegment"/>
140
+ </attribute>
141
+ <ref name="resources"/>
142
+ </element>
143
+ </choice>
144
+ </zeroOrMore>
145
+ </define>
146
+
147
+ <define name="dtd">
148
+ <optional>
149
+ <attribute name="dtd"/>
150
+ </optional>
151
+ </define>
152
+
153
+ <!-- A relative URI segment. -->
154
+
155
+ <define name="pathSegment">
156
+ <data datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
157
+ type="string">
158
+ <!-- one or more RFC 2396 pchars -->
159
+ <param name="pattern">([\-A-Za-z0-9:@&amp;=+$,_.!~*'()]|%[0-9a-fA-F][0-9a-fA-F])+</param>
160
+ </data>
161
+ </define>
162
+
163
+ </grammar>