mab2 0.0.4 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|