hermod 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: