nom-xml 0.5.4 → 1.2.0
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 +5 -5
- data/.github/workflows/ruby.yml +24 -0
- data/Gemfile +2 -5
- data/Rakefile +2 -19
- data/lib/nom/xml/decorators/nodeset.rb +5 -1
- data/lib/nom/xml/decorators/terminology.rb +11 -18
- data/lib/nom/xml/nokogiri_extension.rb +1 -3
- data/lib/nom/xml/term.rb +5 -1
- data/lib/nom/xml/version.rb +1 -1
- data/nom-xml.gemspec +0 -1
- data/spec/examples/mods_example_spec.rb +1 -5
- data/spec/lib/terminology_decorator_spec.rb +0 -17
- data/spec/spec_helper.rb +2 -6
- metadata +7 -25
- data/.travis.yml +0 -13
- data/gemfiles/rails3.gemfile +0 -6
- data/gemfiles/rails4.gemfile +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 2b2ab72999bcce7d9fc1173c01393e03d8e2388428d90943e2fe1831f8b52563
|
4
|
+
data.tar.gz: 6c1c4a29b276fc07afe6bfd241f4a2a29105e49a9e20c39801f15577dc512889
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 91ac790f990da5482c3489d3e57d0c014e01f9684ad408e5202e792d8f581d0412df55b427435aa320250ef9398a2f774c81c1abfda151f0ba7a55c94d20e8a9
|
7
|
+
data.tar.gz: 0ecd92b30918cde11a15197ea58edc6ccbc2d479a7a2f7d010789eee303f55edfac4cff0525dfbe972349f72cc49e4d4d43fc82ccb16422b343ae2a3593cbcea
|
@@ -0,0 +1,24 @@
|
|
1
|
+
name: CI
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches: [ master ]
|
6
|
+
pull_request:
|
7
|
+
branches: [ master ]
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
tests:
|
11
|
+
runs-on: ubuntu-latest
|
12
|
+
strategy:
|
13
|
+
matrix:
|
14
|
+
ruby: [jruby-9.2.12.0, 2.4, 2.5, 2.6, 2.7, 3.0]
|
15
|
+
steps:
|
16
|
+
- uses: actions/checkout@v2
|
17
|
+
- name: Set up Ruby
|
18
|
+
uses: ruby/setup-ruby@v1
|
19
|
+
with:
|
20
|
+
ruby-version: ${{ matrix.ruby }}
|
21
|
+
- name: Install dependencies
|
22
|
+
run: bundle install
|
23
|
+
- name: Run tests
|
24
|
+
run: bundle exec rake
|
data/Gemfile
CHANGED
@@ -2,8 +2,5 @@ source 'https://rubygems.org'
|
|
2
2
|
|
3
3
|
gemspec
|
4
4
|
|
5
|
-
gem 'simplecov'
|
6
|
-
gem '
|
7
|
-
gem 'debugger', :platform => :mri_19
|
8
|
-
gem "redcarpet", :platform => :ruby_19
|
9
|
-
gem 'byebug'
|
5
|
+
gem 'simplecov'
|
6
|
+
gem 'byebug', platform: :mri
|
data/Rakefile
CHANGED
@@ -10,25 +10,8 @@ rescue Bundler::BundlerError => e
|
|
10
10
|
exit e.status_code
|
11
11
|
end
|
12
12
|
|
13
|
-
task :
|
13
|
+
task default: :spec
|
14
14
|
|
15
15
|
require 'rspec/core/rake_task'
|
16
16
|
desc "Run specs"
|
17
|
-
RSpec::Core::RakeTask.new
|
18
|
-
|
19
|
-
if ENV['COVERAGE'] and RUBY_VERSION =~ /^1.8/
|
20
|
-
t.rcov = true
|
21
|
-
t.rcov_opts = %w{--exclude spec\/*,gems\/*,ruby\/* --aggregate coverage.data}
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
require 'yard'
|
26
|
-
YARD::Rake::YardocTask.new do |t|
|
27
|
-
t.options = ["--readme", "README.md"]
|
28
|
-
end
|
29
|
-
|
30
|
-
desc "Continuous Integration build"
|
31
|
-
task :ci do
|
32
|
-
Rake::Task['spec'].invoke
|
33
|
-
# Rake::Task['yard'].invoke
|
34
|
-
end
|
17
|
+
RSpec::Core::RakeTask.new(:spec)
|
@@ -31,7 +31,11 @@ module Nom::XML::Decorators::NodeSet
|
|
31
31
|
def method_missing sym, *args, &block
|
32
32
|
if self.all? { |node| node.respond_to? sym }
|
33
33
|
result = self.collect { |node| node.send(sym, *args, &block) }.flatten
|
34
|
-
|
34
|
+
if result.empty? || result.any? { |x| x.is_a? Nokogiri::XML::Node }
|
35
|
+
self.class.new(self.document, result) rescue result
|
36
|
+
else
|
37
|
+
result
|
38
|
+
end
|
35
39
|
else
|
36
40
|
begin
|
37
41
|
self.document.template_registry.send(sym, self, *args, &block)
|
@@ -1,19 +1,4 @@
|
|
1
1
|
module Nom::XML::Decorators::Terminology
|
2
|
-
|
3
|
-
def self.extended node
|
4
|
-
node.add_terminology_method_overrides!
|
5
|
-
end
|
6
|
-
|
7
|
-
def add_terminology_method_overrides!
|
8
|
-
self.term_accessors.each do |k, term|
|
9
|
-
if self.respond_to_without_terms? k and not term.options[:override]
|
10
|
-
raise "Trying to redefine method #{k} on #{self.to_s}"
|
11
|
-
end
|
12
|
-
end.select { |k, term| term.options[:override] }.each do |method, term|
|
13
|
-
define_term_method(method, self.term_accessors[method.to_sym])
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
2
|
def method_missing method, *args, &block
|
18
3
|
if self.term_accessors[method.to_sym]
|
19
4
|
define_term_method(method, self.term_accessors[method.to_sym])
|
@@ -97,9 +82,7 @@ module Nom::XML::Decorators::Terminology
|
|
97
82
|
end
|
98
83
|
|
99
84
|
def lookup_term term, *args
|
100
|
-
|
101
|
-
|
102
|
-
args += options.map { |key, value| %{#{key}="#{value.gsub(/"/, '\\\"') }"} }
|
85
|
+
args = extract_term_options(*args)
|
103
86
|
|
104
87
|
xpath = term.local_xpath
|
105
88
|
|
@@ -114,4 +97,14 @@ module Nom::XML::Decorators::Terminology
|
|
114
97
|
|
115
98
|
result.values_for_term(term)
|
116
99
|
end
|
100
|
+
|
101
|
+
def extract_term_options(*args)
|
102
|
+
if args.last.is_a? Hash
|
103
|
+
h = args.pop
|
104
|
+
|
105
|
+
args + h.map { |key, value| %(#{key}="#{value.gsub(/"/, '\\\"')}") }
|
106
|
+
else
|
107
|
+
args
|
108
|
+
end
|
109
|
+
end
|
117
110
|
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'active_support/core_ext/array'
|
2
|
-
|
3
1
|
module Nom::XML
|
4
2
|
module NokogiriExtension
|
5
3
|
|
@@ -24,7 +22,7 @@ module Nom::XML
|
|
24
22
|
# Set the terminology accessors for this document
|
25
23
|
def set_terminology options = {}, &block
|
26
24
|
@terminology = Nom::XML::Terminology.new(self, options, &block)
|
27
|
-
|
25
|
+
|
28
26
|
self
|
29
27
|
end
|
30
28
|
|
data/lib/nom/xml/term.rb
CHANGED
@@ -16,6 +16,10 @@ module Nom::XML
|
|
16
16
|
# @attr [Hash] options
|
17
17
|
# @yield
|
18
18
|
def initialize parent, name, options = {}, *args, &block
|
19
|
+
if Nokogiri::XML::Node.instance_methods.include?(name.to_sym)
|
20
|
+
raise "Unable to redefine method #{name} on Nokogiri::XML::Node"
|
21
|
+
end
|
22
|
+
|
19
23
|
@name = name
|
20
24
|
@terms = {}
|
21
25
|
@parent = parent
|
@@ -48,7 +52,7 @@ module Nom::XML
|
|
48
52
|
# Get the relative xpath to this node from its immediate parent's term
|
49
53
|
# @return [String]
|
50
54
|
def local_xpath
|
51
|
-
xpath = if xmlns.
|
55
|
+
xpath = if xmlns.nil? || xmlns.empty?
|
52
56
|
""
|
53
57
|
else
|
54
58
|
xmlns + ":"
|
data/lib/nom/xml/version.rb
CHANGED
data/nom-xml.gemspec
CHANGED
@@ -12,7 +12,6 @@ Gem::Specification.new do |s|
|
|
12
12
|
s.summary = %q{ A library to help you tame sprawling XML schemas. }
|
13
13
|
s.description = %q{ NOM allows you to define a “terminology” to ease translation between XML and ruby objects }
|
14
14
|
|
15
|
-
s.add_dependency 'activesupport', '>= 3.2.18' # could be rails/AS 3 or 4+, but we don't support old insecure versions
|
16
15
|
s.add_dependency 'i18n'
|
17
16
|
s.add_dependency 'nokogiri'
|
18
17
|
|
@@ -13,7 +13,7 @@ describe "Namespaces example" do
|
|
13
13
|
|
14
14
|
t.author :path => '//mods:name' do |n|
|
15
15
|
n.authorityURI :path => '@authorityURI', :accessor => lambda { |e| e.text }
|
16
|
-
n.
|
16
|
+
n.mods_description :path => 'mods:description'
|
17
17
|
n.valueURI :path => '@valueURI'
|
18
18
|
n.namePart :path => 'mods:namePart', :single => true, :index_as => [:type_1]
|
19
19
|
end
|
@@ -39,10 +39,6 @@ describe "Namespaces example" do
|
|
39
39
|
xml
|
40
40
|
}
|
41
41
|
|
42
|
-
it "should work with existing reserved method names when override is present" do
|
43
|
-
expect(subject.author.first.description.text).to include('asdf')
|
44
|
-
end
|
45
|
-
|
46
42
|
it "should return nodesets by default" do
|
47
43
|
expect(subject.personal_authors).to be_a_kind_of(Nokogiri::XML::NodeSet)
|
48
44
|
end
|
@@ -32,23 +32,6 @@ describe "Nutrition" do
|
|
32
32
|
xml
|
33
33
|
}
|
34
34
|
|
35
|
-
describe "#add_terminology_method_overrides!" do
|
36
|
-
|
37
|
-
it "should warn you if you try to override already existing methods" do
|
38
|
-
pending if defined? JRUBY_VERSION
|
39
|
-
mock_term = {:text => double(:options => {})}
|
40
|
-
allow(document.a.first).to receive(:term_accessors).and_return mock_term
|
41
|
-
expect { document.a.first.add_terminology_method_overrides! }.to raise_error /Trying to redefine/
|
42
|
-
end
|
43
|
-
|
44
|
-
it "should let you override the warning" do
|
45
|
-
pending if defined? JRUBY_VERSION
|
46
|
-
mock_term = {:text => double(:options => { :override => true } )}
|
47
|
-
allow(document.a.first).to receive(:term_accessors).and_return mock_term
|
48
|
-
expect { document.a.first.add_terminology_method_overrides! }.to_not raise_error
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
35
|
describe "#terms" do
|
53
36
|
|
54
37
|
context "root element" do
|
data/spec/spec_helper.rb
CHANGED
@@ -1,13 +1,9 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
SimpleCov.start
|
4
|
-
end
|
1
|
+
require 'simplecov'
|
2
|
+
SimpleCov.start
|
5
3
|
|
6
4
|
require 'rspec'
|
7
5
|
require 'nom'
|
8
6
|
require 'equivalent-xml/rspec_matchers'
|
9
|
-
|
10
7
|
RSpec.configure do |config|
|
11
8
|
|
12
9
|
end
|
13
|
-
|
metadata
CHANGED
@@ -1,30 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nom-xml
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Beer
|
8
8
|
- Michael B. Klein
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2022-01-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
-
- !ruby/object:Gem::Dependency
|
15
|
-
name: activesupport
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
requirements:
|
18
|
-
- - ">="
|
19
|
-
- !ruby/object:Gem::Version
|
20
|
-
version: 3.2.18
|
21
|
-
type: :runtime
|
22
|
-
prerelease: false
|
23
|
-
version_requirements: !ruby/object:Gem::Requirement
|
24
|
-
requirements:
|
25
|
-
- - ">="
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
version: 3.2.18
|
28
14
|
- !ruby/object:Gem::Dependency
|
29
15
|
name: i18n
|
30
16
|
requirement: !ruby/object:Gem::Requirement
|
@@ -118,15 +104,13 @@ extra_rdoc_files:
|
|
118
104
|
- LICENSE
|
119
105
|
- README.md
|
120
106
|
files:
|
107
|
+
- ".github/workflows/ruby.yml"
|
121
108
|
- ".gitignore"
|
122
109
|
- ".rspec"
|
123
|
-
- ".travis.yml"
|
124
110
|
- Gemfile
|
125
111
|
- LICENSE
|
126
112
|
- README.md
|
127
113
|
- Rakefile
|
128
|
-
- gemfiles/rails3.gemfile
|
129
|
-
- gemfiles/rails4.gemfile
|
130
114
|
- lib/nom.rb
|
131
115
|
- lib/nom/xml.rb
|
132
116
|
- lib/nom/xml/decorators.rb
|
@@ -156,7 +140,7 @@ files:
|
|
156
140
|
homepage: http://github.com/cbeer/nom-xml
|
157
141
|
licenses: []
|
158
142
|
metadata: {}
|
159
|
-
post_install_message:
|
143
|
+
post_install_message:
|
160
144
|
rdoc_options: []
|
161
145
|
require_paths:
|
162
146
|
- lib
|
@@ -171,9 +155,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
171
155
|
- !ruby/object:Gem::Version
|
172
156
|
version: '0'
|
173
157
|
requirements: []
|
174
|
-
|
175
|
-
|
176
|
-
signing_key:
|
158
|
+
rubygems_version: 3.2.32
|
159
|
+
signing_key:
|
177
160
|
specification_version: 4
|
178
161
|
summary: A library to help you tame sprawling XML schemas.
|
179
162
|
test_files:
|
@@ -191,4 +174,3 @@ test_files:
|
|
191
174
|
- spec/lib/terminology_spec.rb
|
192
175
|
- spec/spec_helper.rb
|
193
176
|
- spec/test_spec.rb
|
194
|
-
has_rdoc:
|
data/.travis.yml
DELETED
data/gemfiles/rails3.gemfile
DELETED