hermod 1.0.1
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 +7 -0
- data/.gitignore +22 -0
- data/.travis.yml +3 -0
- data/Gemfile +10 -0
- data/LICENSE +202 -0
- data/README.md +496 -0
- data/Rakefile +10 -0
- data/hermod.gemspec +32 -0
- data/lib/hermod/sanitisation.rb +26 -0
- data/lib/hermod/version.rb +3 -0
- data/lib/hermod/xml_node.rb +55 -0
- data/lib/hermod/xml_section.rb +108 -0
- data/lib/hermod/xml_section_builder.rb +223 -0
- data/lib/hermod.rb +5 -0
- data/spec/hermod/xml_section_builder/date_node_spec.rb +27 -0
- data/spec/hermod/xml_section_builder/monetary_node_spec.rb +50 -0
- data/spec/hermod/xml_section_builder/parent_node_spec.rb +28 -0
- data/spec/hermod/xml_section_builder/string_node_spec.rb +70 -0
- data/spec/hermod/xml_section_builder/yes_no_node_spec.rb +36 -0
- data/spec/hermod/xml_section_builder/yes_node_spec.rb +36 -0
- data/spec/hermod/xml_section_spec.rb +95 -0
- data/spec/hermod_spec.rb +7 -0
- data/spec/minitest_helper.rb +74 -0
- metadata +193 -0
@@ -0,0 +1,74 @@
|
|
1
|
+
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
2
|
+
require 'hermod'
|
3
|
+
|
4
|
+
require 'minitest/autorun'
|
5
|
+
require 'pry-rescue/minitest'
|
6
|
+
|
7
|
+
require 'nokogiri'
|
8
|
+
|
9
|
+
# Public: Returns the value of a given node from an xml payload.
|
10
|
+
#
|
11
|
+
# node_name - xml node name, for example: FinalSubmission
|
12
|
+
#
|
13
|
+
# Returns a String
|
14
|
+
def value_of_node(node_name)
|
15
|
+
value_of_nodes(node_name).first
|
16
|
+
end
|
17
|
+
|
18
|
+
# Public: Returns an array of the values of nodes in an xml payload.
|
19
|
+
#
|
20
|
+
# node_name - xml node name, for example: NIletter
|
21
|
+
#
|
22
|
+
# Returns an Array
|
23
|
+
def value_of_nodes(node_name)
|
24
|
+
ns = nodes(node_name)
|
25
|
+
ns.map do |n|
|
26
|
+
raise "failed to find #{node_name.inspect} in #{subject.inspect}" if n.nil?
|
27
|
+
n.content
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# Public: Returns the number of nodes with the given name in the payload
|
32
|
+
#
|
33
|
+
# node_name - xml node name, for example: NIletters
|
34
|
+
#
|
35
|
+
# Returns an Integer
|
36
|
+
def number_of_nodes(node_name)
|
37
|
+
nodes(node_name).count
|
38
|
+
end
|
39
|
+
|
40
|
+
# Public: Returns the Nokogiri.XML node for the given name.
|
41
|
+
#
|
42
|
+
# node_name - xml node name, for example: FinalSubmission
|
43
|
+
#
|
44
|
+
# Returns a Nokogiri::XML::Node
|
45
|
+
def node(node_name)
|
46
|
+
nodes(node_name).first
|
47
|
+
end
|
48
|
+
|
49
|
+
# Public: Returns a list of Nokogiri.XML nodes for the given name.
|
50
|
+
#
|
51
|
+
# node_name - xml node name, for example: NIletter
|
52
|
+
#
|
53
|
+
# Returns an Array of Nokogiri::XML::Node objects
|
54
|
+
def nodes(node_name)
|
55
|
+
Nokogiri.XML(subject.to_xml.to_s).remove_namespaces!.css(node_name)
|
56
|
+
end
|
57
|
+
|
58
|
+
# Public: Get the nth node in the document
|
59
|
+
#
|
60
|
+
# index - the zero-based index of the node you wish to retrieve
|
61
|
+
#
|
62
|
+
# Returns an XML::Node (from LibXML)
|
63
|
+
def node_by_index(index)
|
64
|
+
subject.to_xml.to_a[index]
|
65
|
+
end
|
66
|
+
|
67
|
+
# Public: Returns a hash of attributes on the node with the given name
|
68
|
+
#
|
69
|
+
# node_name - xml node name, for example: NIletter
|
70
|
+
#
|
71
|
+
# Returns a Hash
|
72
|
+
def attributes_for_node(node_name)
|
73
|
+
node(node_name).attributes
|
74
|
+
end
|
metadata
ADDED
@@ -0,0 +1,193 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: hermod
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Harry Mills
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-07-31 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: libxml-ruby
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.7'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 2.7.0
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '2.7'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 2.7.0
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: activesupport
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '4.1'
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 4.1.4
|
43
|
+
type: :runtime
|
44
|
+
prerelease: false
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - "~>"
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '4.1'
|
50
|
+
- - ">="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: 4.1.4
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: bundler
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - "~>"
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '1.6'
|
60
|
+
type: :development
|
61
|
+
prerelease: false
|
62
|
+
version_requirements: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - "~>"
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '1.6'
|
67
|
+
- !ruby/object:Gem::Dependency
|
68
|
+
name: rake
|
69
|
+
requirement: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - "~>"
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: '10.3'
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 10.3.2
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - "~>"
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '10.3'
|
84
|
+
- - ">="
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: 10.3.2
|
87
|
+
- !ruby/object:Gem::Dependency
|
88
|
+
name: minitest
|
89
|
+
requirement: !ruby/object:Gem::Requirement
|
90
|
+
requirements:
|
91
|
+
- - "~>"
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '5.3'
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 5.3.5
|
97
|
+
type: :development
|
98
|
+
prerelease: false
|
99
|
+
version_requirements: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '5.3'
|
104
|
+
- - ">="
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: 5.3.5
|
107
|
+
- !ruby/object:Gem::Dependency
|
108
|
+
name: nokogiri
|
109
|
+
requirement: !ruby/object:Gem::Requirement
|
110
|
+
requirements:
|
111
|
+
- - "~>"
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: '1.6'
|
114
|
+
- - ">="
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: 1.6.2.1
|
117
|
+
type: :development
|
118
|
+
prerelease: false
|
119
|
+
version_requirements: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - "~>"
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '1.6'
|
124
|
+
- - ">="
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: 1.6.2.1
|
127
|
+
description: |-
|
128
|
+
A Ruby library for talking to the HMRC Government Gateway.
|
129
|
+
This provides a builder for creating classes that can generate the XML needed complete with type information and
|
130
|
+
runtime validation.
|
131
|
+
email:
|
132
|
+
- harry@freeagent.com
|
133
|
+
executables: []
|
134
|
+
extensions: []
|
135
|
+
extra_rdoc_files: []
|
136
|
+
files:
|
137
|
+
- ".gitignore"
|
138
|
+
- ".travis.yml"
|
139
|
+
- Gemfile
|
140
|
+
- LICENSE
|
141
|
+
- README.md
|
142
|
+
- Rakefile
|
143
|
+
- hermod.gemspec
|
144
|
+
- lib/hermod.rb
|
145
|
+
- lib/hermod/sanitisation.rb
|
146
|
+
- lib/hermod/version.rb
|
147
|
+
- lib/hermod/xml_node.rb
|
148
|
+
- lib/hermod/xml_section.rb
|
149
|
+
- lib/hermod/xml_section_builder.rb
|
150
|
+
- spec/hermod/xml_section_builder/date_node_spec.rb
|
151
|
+
- spec/hermod/xml_section_builder/monetary_node_spec.rb
|
152
|
+
- spec/hermod/xml_section_builder/parent_node_spec.rb
|
153
|
+
- spec/hermod/xml_section_builder/string_node_spec.rb
|
154
|
+
- spec/hermod/xml_section_builder/yes_no_node_spec.rb
|
155
|
+
- spec/hermod/xml_section_builder/yes_node_spec.rb
|
156
|
+
- spec/hermod/xml_section_spec.rb
|
157
|
+
- spec/hermod_spec.rb
|
158
|
+
- spec/minitest_helper.rb
|
159
|
+
homepage: ''
|
160
|
+
licenses:
|
161
|
+
- Apache License, Version 2.0
|
162
|
+
metadata: {}
|
163
|
+
post_install_message:
|
164
|
+
rdoc_options: []
|
165
|
+
require_paths:
|
166
|
+
- lib
|
167
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
168
|
+
requirements:
|
169
|
+
- - ">="
|
170
|
+
- !ruby/object:Gem::Version
|
171
|
+
version: '2'
|
172
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
173
|
+
requirements:
|
174
|
+
- - ">="
|
175
|
+
- !ruby/object:Gem::Version
|
176
|
+
version: '0'
|
177
|
+
requirements: []
|
178
|
+
rubyforge_project:
|
179
|
+
rubygems_version: 2.4.1
|
180
|
+
signing_key:
|
181
|
+
specification_version: 4
|
182
|
+
summary: A Ruby library for talking to the HMRC Government Gateway.
|
183
|
+
test_files:
|
184
|
+
- spec/hermod/xml_section_builder/date_node_spec.rb
|
185
|
+
- spec/hermod/xml_section_builder/monetary_node_spec.rb
|
186
|
+
- spec/hermod/xml_section_builder/parent_node_spec.rb
|
187
|
+
- spec/hermod/xml_section_builder/string_node_spec.rb
|
188
|
+
- spec/hermod/xml_section_builder/yes_no_node_spec.rb
|
189
|
+
- spec/hermod/xml_section_builder/yes_node_spec.rb
|
190
|
+
- spec/hermod/xml_section_spec.rb
|
191
|
+
- spec/hermod_spec.rb
|
192
|
+
- spec/minitest_helper.rb
|
193
|
+
has_rdoc:
|