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.
@@ -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: