mab2 0.0.4 → 0.1.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 +4 -4
- data/.rspec +3 -0
- data/Gemfile +17 -3
- data/Rakefile +4 -6
- data/lib/mab2.rb +3 -2
- data/lib/mab2/document.rb +71 -44
- data/lib/mab2/document/scope.rb +91 -31
- data/lib/mab2/version.rb +1 -1
- data/mab2.gemspec +12 -14
- data/{test/mab_files/dsl_2.xml → spec/assets/mab_files/mab.xml} +6 -14
- data/spec/mab2/document/scope/subfield_spec.rb +34 -0
- data/spec/mab2/document/scope_spec.rb +140 -0
- data/spec/mab2/document_spec.rb +52 -0
- data/spec/mab2_spec.rb +2 -0
- data/spec/spec_helper.rb +30 -0
- metadata +51 -79
- data/lib/mab2/aleph_sequential_adapter.rb +0 -10
- data/lib/mab2/document/datafield.rb +0 -15
- data/lib/mab2/document/subfield.rb +0 -10
- data/lib/mab2/mab_xml_adapter.rb +0 -50
- data/test/mab2/test_controlfield.rb +0 -24
- data/test/mab2/test_datafield.rb +0 -131
- data/test/mab_files/PAD01.000806191.PRIMO.xml +0 -216
- data/test/mab_files/PAD01.000978177.PRIMO.xml +0 -203
- data/test/mab_files/dsl_1.xml +0 -14
- data/test/test_helper.rb +0 -12
- data/test/test_mab2.rb +0 -12
@@ -0,0 +1,140 @@
|
|
1
|
+
describe Mab2::Document::Scope do
|
2
|
+
let(:doc) do
|
3
|
+
document.doc
|
4
|
+
end
|
5
|
+
|
6
|
+
let(:document) do
|
7
|
+
Mab2::Document.new(mab_xml)
|
8
|
+
end
|
9
|
+
|
10
|
+
let(:mab_xml) do
|
11
|
+
read_asset("mab_files/mab.xml")
|
12
|
+
end
|
13
|
+
|
14
|
+
let(:scope) do
|
15
|
+
document.field("100", ind1: "1", ind2: "2")
|
16
|
+
end
|
17
|
+
|
18
|
+
describe "#get" do
|
19
|
+
it "returns itself" do
|
20
|
+
expect(scope.get).to eq(scope)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe "#get_subfield" do
|
25
|
+
it "returns a subfield by it's code" do
|
26
|
+
expect(doc.field("PSW").fields.first.get_subfield("s")).to be_a(described_class::Subfield)
|
27
|
+
end
|
28
|
+
|
29
|
+
context "if the requested subfield does not exists" do
|
30
|
+
let(:subfield) { doc.field("PSW").fields.first.get_subfield("foo") }
|
31
|
+
|
32
|
+
it "returns an empty subfield" do
|
33
|
+
expect(subfield.code).to be(nil)
|
34
|
+
expect(subfield.value).to be(nil)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe "#fields" do
|
40
|
+
it "returns an array of scopes, one scope per datafield" do
|
41
|
+
fields = doc.field("PSW").fields
|
42
|
+
|
43
|
+
expect(fields).to be_an(Array)
|
44
|
+
fields.each { |field| expect(field).to be_a(Mab2::Document::Scope) }
|
45
|
+
expect(fields.length).to eq(doc.field("PSW").values.length)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe "#subfield" do
|
50
|
+
it "returns a document scope for the given parameters" do
|
51
|
+
expect(scope.subfield(subfield = ["a"]).instance_variable_get(:@subfield)).to eq(subfield)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe "#subfields" do
|
56
|
+
it "returns an array of subfields" do
|
57
|
+
subfields = doc.field("PSW").fields.first.subfields
|
58
|
+
|
59
|
+
expect(subfields).to be_an(Array)
|
60
|
+
expect(subfields).not_to be(:empty)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
describe "#value" do
|
65
|
+
it "returns all subfield values of the first datafield which matches the scope conditions" do
|
66
|
+
expect(doc.field("PSW").subfield("s").value).to eq("Politiktheorie")
|
67
|
+
expect(doc.field("PSW").subfield(["s", "9"]).value).to eq("Politiktheorie (DE-588)4046563-9")
|
68
|
+
end
|
69
|
+
|
70
|
+
context "if join_subfields option is given" do
|
71
|
+
it "joins the subfields by the given value" do
|
72
|
+
expect(doc.field("PSW").value(join_subfields: ": ")).to eq("Politiktheorie: (DE-588)4046563-9")
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
context "if there are more than one field" do
|
77
|
+
context "if the scope conditions do not match the first field" do
|
78
|
+
it "returns the subfield values of the first field which matches the scope conditions" do
|
79
|
+
expect(doc.field("PSW").subfield("x").value).to eq("Theorie")
|
80
|
+
end
|
81
|
+
|
82
|
+
context "if legacy_mabmapper_mode is requested" do
|
83
|
+
let(:document) do
|
84
|
+
Mab2::Document.new(mab_xml, legacy_mabmapper_mode: true)
|
85
|
+
end
|
86
|
+
|
87
|
+
it "returns an empty string" do
|
88
|
+
expect(doc.field("PSW").subfield("x").value).to eq("")
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
describe "#values" do
|
96
|
+
it "returns subfield values for the fields of the scope" do
|
97
|
+
expect(doc.field("PSW").get.values).to eq([
|
98
|
+
["Politiktheorie", "(DE-588)4046563-9"],
|
99
|
+
["Politik", "Theorie", "(DE-588)4046563-9"],
|
100
|
+
["Politische Theorien", "(DE-588)4046563-9"]
|
101
|
+
])
|
102
|
+
|
103
|
+
expect(doc.field("PSW", ind1: "-").values).to eq([
|
104
|
+
["Politik", "Theorie", "(DE-588)4046563-9"]
|
105
|
+
])
|
106
|
+
|
107
|
+
expect(doc.field("PSW", ind1: "1").values).to eq([
|
108
|
+
["Politiktheorie", "(DE-588)4046563-9"],
|
109
|
+
["Politische Theorien", "(DE-588)4046563-9"]
|
110
|
+
])
|
111
|
+
|
112
|
+
expect(doc.field("PSW", ind1: "1").subfield("s").values).to eq([
|
113
|
+
["Politiktheorie"],
|
114
|
+
["Politische Theorien"]
|
115
|
+
])
|
116
|
+
|
117
|
+
expect(doc.field("PSW", ind1: ["-", "1"], ind2: ["1", "2"]).subfield(["x","9"]).values).to eq([
|
118
|
+
["(DE-588)4046563-9"],
|
119
|
+
["Theorie", "(DE-588)4046563-9"],
|
120
|
+
["(DE-588)4046563-9"]
|
121
|
+
])
|
122
|
+
|
123
|
+
expect(doc.field("PSW", ind1: "1").subfield("y").values).to eq([
|
124
|
+
[],
|
125
|
+
[]
|
126
|
+
])
|
127
|
+
|
128
|
+
expect(doc.field("Foo", ind1: "1").subfield("y").values).to eq([])
|
129
|
+
expect(doc.field("PSW", ind1: "y").subfield("y").values).to eq([])
|
130
|
+
end
|
131
|
+
|
132
|
+
context "if join_subfields option is given" do
|
133
|
+
it "joins the subfields by the given separator" do
|
134
|
+
expect(doc.field("PSW", ind1: "-").values(join_subfields: "; ")).to eq([
|
135
|
+
"Politik; Theorie; (DE-588)4046563-9"
|
136
|
+
])
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
describe Mab2::Document do
|
2
|
+
let(:doc) do
|
3
|
+
document.doc
|
4
|
+
end
|
5
|
+
|
6
|
+
let(:document) do
|
7
|
+
described_class.new(mab_xml)
|
8
|
+
end
|
9
|
+
|
10
|
+
let(:mab_xml) do
|
11
|
+
read_asset("mab_files/mab.xml")
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "#initialize" do
|
15
|
+
context "if called with a mab xml string" do
|
16
|
+
it "returns a #{described_class} instance" do
|
17
|
+
expect(described_class.new(mab_xml)).to be_a(described_class)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "#controlfield" do
|
23
|
+
let(:controlfield_result) { doc.controlfield("SYS") }
|
24
|
+
|
25
|
+
it "returns the value of an controlfield as an array of chars" do
|
26
|
+
expect(controlfield_result).to be_an(Array)
|
27
|
+
expect(controlfield_result).not_to be(:empty)
|
28
|
+
end
|
29
|
+
|
30
|
+
it "replaces all \"|\" with nil" do
|
31
|
+
expect(doc.controlfield("050").at(0)).to eq("a")
|
32
|
+
expect(doc.controlfield("050").at(1)).to be(nil)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe "#doc" do
|
37
|
+
it "returns itself" do
|
38
|
+
expect(document.doc).to be(document)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe "#field" do
|
43
|
+
it "returns a document scope for the given parameters" do
|
44
|
+
scope = doc.field(tag = "100", ind1: (ind1 = ["1"]), ind2: (ind2 = ["2"]))
|
45
|
+
|
46
|
+
expect(scope).to be_a(described_class::Scope)
|
47
|
+
expect(scope.instance_variable_get(:@tag)).to eq(tag)
|
48
|
+
expect(scope.instance_variable_get(:@ind1)).to eq(ind1)
|
49
|
+
expect(scope.instance_variable_get(:@ind2)).to eq(ind2)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
data/spec/mab2_spec.rb
ADDED
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
if ENV["CODECLIMATE_REPO_TOKEN"]
|
2
|
+
require "codeclimate-test-reporter"
|
3
|
+
CodeClimate::TestReporter.start
|
4
|
+
else
|
5
|
+
require "simplecov"
|
6
|
+
SimpleCov.start
|
7
|
+
end
|
8
|
+
|
9
|
+
require "mab2"
|
10
|
+
|
11
|
+
begin
|
12
|
+
require "pry"
|
13
|
+
rescue LoadError
|
14
|
+
end
|
15
|
+
|
16
|
+
RSpec.configure do |config|
|
17
|
+
# begin --- rspec 3.1 generator
|
18
|
+
config.expect_with :rspec do |expectations|
|
19
|
+
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
20
|
+
end
|
21
|
+
|
22
|
+
config.mock_with :rspec do |mocks|
|
23
|
+
mocks.verify_partial_doubles = true
|
24
|
+
end
|
25
|
+
# end --- rspec 3.1 generator
|
26
|
+
end
|
27
|
+
|
28
|
+
def read_asset(path_to_file)
|
29
|
+
File.read(File.expand_path(File.join(File.dirname(__FILE__), "assets", path_to_file)))
|
30
|
+
end
|
metadata
CHANGED
@@ -1,148 +1,122 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mab2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Sievers
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-03-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: activesupport
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: badgerfish
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 3.2.0
|
34
|
-
- - <
|
31
|
+
- - ">="
|
35
32
|
- !ruby/object:Gem::Version
|
36
|
-
version:
|
37
|
-
type: :
|
33
|
+
version: 0.2.0
|
34
|
+
type: :runtime
|
38
35
|
prerelease: false
|
39
36
|
version_requirements: !ruby/object:Gem::Requirement
|
40
37
|
requirements:
|
41
|
-
- -
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version: 3.2.0
|
44
|
-
- - <
|
38
|
+
- - ">="
|
45
39
|
- !ruby/object:Gem::Version
|
46
|
-
version:
|
40
|
+
version: 0.2.0
|
47
41
|
- !ruby/object:Gem::Dependency
|
48
42
|
name: bundler
|
49
43
|
requirement: !ruby/object:Gem::Requirement
|
50
44
|
requirements:
|
51
|
-
- - ~>
|
45
|
+
- - "~>"
|
52
46
|
- !ruby/object:Gem::Version
|
53
|
-
version: '1.
|
47
|
+
version: '1.7'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
51
|
requirements:
|
58
|
-
- - ~>
|
52
|
+
- - "~>"
|
59
53
|
- !ruby/object:Gem::Version
|
60
|
-
version: '1.
|
54
|
+
version: '1.7'
|
61
55
|
- !ruby/object:Gem::Dependency
|
62
|
-
name:
|
63
|
-
requirement: !ruby/object:Gem::Requirement
|
64
|
-
requirements:
|
65
|
-
- - ~>
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
version: 5.0.6
|
68
|
-
type: :development
|
69
|
-
prerelease: false
|
70
|
-
version_requirements: !ruby/object:Gem::Requirement
|
71
|
-
requirements:
|
72
|
-
- - ~>
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
version: 5.0.6
|
75
|
-
- !ruby/object:Gem::Dependency
|
76
|
-
name: pry
|
56
|
+
name: rake
|
77
57
|
requirement: !ruby/object:Gem::Requirement
|
78
58
|
requirements:
|
79
|
-
- -
|
59
|
+
- - ">="
|
80
60
|
- !ruby/object:Gem::Version
|
81
|
-
version: 0
|
61
|
+
version: '0'
|
82
62
|
type: :development
|
83
63
|
prerelease: false
|
84
64
|
version_requirements: !ruby/object:Gem::Requirement
|
85
65
|
requirements:
|
86
|
-
- -
|
66
|
+
- - ">="
|
87
67
|
- !ruby/object:Gem::Version
|
88
|
-
version: 0
|
68
|
+
version: '0'
|
89
69
|
- !ruby/object:Gem::Dependency
|
90
|
-
name:
|
70
|
+
name: rspec
|
91
71
|
requirement: !ruby/object:Gem::Requirement
|
92
72
|
requirements:
|
93
|
-
- -
|
73
|
+
- - ">="
|
94
74
|
- !ruby/object:Gem::Version
|
95
|
-
version: 0.
|
75
|
+
version: 3.0.0
|
96
76
|
type: :development
|
97
77
|
prerelease: false
|
98
78
|
version_requirements: !ruby/object:Gem::Requirement
|
99
79
|
requirements:
|
100
|
-
- -
|
80
|
+
- - ">="
|
101
81
|
- !ruby/object:Gem::Version
|
102
|
-
version: 0.
|
82
|
+
version: 3.0.0
|
103
83
|
- !ruby/object:Gem::Dependency
|
104
|
-
name:
|
84
|
+
name: simplecov
|
105
85
|
requirement: !ruby/object:Gem::Requirement
|
106
86
|
requirements:
|
107
|
-
- -
|
87
|
+
- - ">="
|
108
88
|
- !ruby/object:Gem::Version
|
109
|
-
version:
|
89
|
+
version: 0.8.0
|
110
90
|
type: :development
|
111
91
|
prerelease: false
|
112
92
|
version_requirements: !ruby/object:Gem::Requirement
|
113
93
|
requirements:
|
114
|
-
- -
|
94
|
+
- - ">="
|
115
95
|
- !ruby/object:Gem::Version
|
116
|
-
version:
|
117
|
-
description: Simplifies access and handling of
|
118
|
-
email:
|
119
|
-
- michael_sievers@web.de
|
96
|
+
version: 0.8.0
|
97
|
+
description: Simplifies access and handling of Mab documents
|
98
|
+
email:
|
120
99
|
executables: []
|
121
100
|
extensions: []
|
122
101
|
extra_rdoc_files: []
|
123
102
|
files:
|
124
|
-
- .gitignore
|
103
|
+
- ".gitignore"
|
104
|
+
- ".rspec"
|
125
105
|
- Gemfile
|
126
106
|
- LICENSE.txt
|
127
107
|
- README.md
|
128
108
|
- Rakefile
|
129
109
|
- lib/mab2.rb
|
130
|
-
- lib/mab2/aleph_sequential_adapter.rb
|
131
110
|
- lib/mab2/document.rb
|
132
|
-
- lib/mab2/document/datafield.rb
|
133
111
|
- lib/mab2/document/scope.rb
|
134
|
-
- lib/mab2/document/subfield.rb
|
135
|
-
- lib/mab2/mab_xml_adapter.rb
|
136
112
|
- lib/mab2/version.rb
|
137
113
|
- mab2.gemspec
|
138
|
-
-
|
139
|
-
-
|
140
|
-
-
|
141
|
-
-
|
142
|
-
-
|
143
|
-
-
|
144
|
-
- test/test_helper.rb
|
145
|
-
- test/test_mab2.rb
|
114
|
+
- spec/assets/mab_files/mab.xml
|
115
|
+
- spec/mab2/document/scope/subfield_spec.rb
|
116
|
+
- spec/mab2/document/scope_spec.rb
|
117
|
+
- spec/mab2/document_spec.rb
|
118
|
+
- spec/mab2_spec.rb
|
119
|
+
- spec/spec_helper.rb
|
146
120
|
homepage: https://github.com/msievers/mab2
|
147
121
|
licenses:
|
148
122
|
- MIT
|
@@ -153,26 +127,24 @@ require_paths:
|
|
153
127
|
- lib
|
154
128
|
required_ruby_version: !ruby/object:Gem::Requirement
|
155
129
|
requirements:
|
156
|
-
- -
|
130
|
+
- - ">="
|
157
131
|
- !ruby/object:Gem::Version
|
158
132
|
version: '0'
|
159
133
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
160
134
|
requirements:
|
161
|
-
- -
|
135
|
+
- - ">="
|
162
136
|
- !ruby/object:Gem::Version
|
163
137
|
version: '0'
|
164
138
|
requirements: []
|
165
139
|
rubyforge_project:
|
166
|
-
rubygems_version: 2.
|
140
|
+
rubygems_version: 2.4.6
|
167
141
|
signing_key:
|
168
142
|
specification_version: 4
|
169
143
|
summary: Implementation if the mabmapper DSL
|
170
144
|
test_files:
|
171
|
-
-
|
172
|
-
-
|
173
|
-
-
|
174
|
-
-
|
175
|
-
-
|
176
|
-
-
|
177
|
-
- test/test_helper.rb
|
178
|
-
- test/test_mab2.rb
|
145
|
+
- spec/assets/mab_files/mab.xml
|
146
|
+
- spec/mab2/document/scope/subfield_spec.rb
|
147
|
+
- spec/mab2/document/scope_spec.rb
|
148
|
+
- spec/mab2/document_spec.rb
|
149
|
+
- spec/mab2_spec.rb
|
150
|
+
- spec/spec_helper.rb
|