metacrunch-mab2 1.0.0 → 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.
- checksums.yaml +4 -4
- data/lib/metacrunch/mab2/document/controlfield.rb +8 -0
- data/lib/metacrunch/mab2/document/datafield.rb +12 -0
- data/lib/metacrunch/mab2/document/datafield_set.rb +10 -0
- data/lib/metacrunch/mab2/document/subfield.rb +8 -0
- data/lib/metacrunch/mab2/document/subfield_set.rb +14 -0
- data/lib/metacrunch/mab2/document.rb +22 -3
- data/lib/metacrunch/mab2/version.rb +1 -1
- data/spec/document/document_spec.rb +14 -1
- metadata +2 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3d18a21ab3c3dbd48cacdeb4385d022cff0a2f2a
|
4
|
+
data.tar.gz: bfb0dd9ee58c7c2e8bc9ca47381dc8ce729b71f2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d9791c95b98fba1533bf925363fe6508e985ce6edad30ca744834a281ad4bd199aa5e8f565f0b307242c635ee33cc4735fd959079b3756d4f66a23c55f03a1c1
|
7
|
+
data.tar.gz: ea69883558fa5b81adce0b51cbdc52ca2c928579174981ab6349b4fc4abd73767ba0f1517c9f04c0add14ebc0449fe82620aa01388973c0e35da6bb5506555cd
|
@@ -55,6 +55,14 @@ module Metacrunch
|
|
55
55
|
@values.at(index)
|
56
56
|
end
|
57
57
|
|
58
|
+
# ------------------------------------------------------------------------------
|
59
|
+
# Serialization
|
60
|
+
# ------------------------------------------------------------------------------
|
61
|
+
|
62
|
+
def to_xml(builder)
|
63
|
+
builder.controlfield(values.join("|"), tag: tag)
|
64
|
+
end
|
65
|
+
|
58
66
|
private
|
59
67
|
|
60
68
|
def string2values(string)
|
@@ -48,6 +48,18 @@ module Metacrunch
|
|
48
48
|
subfields_struct[subfield.code] = subfield_set
|
49
49
|
end
|
50
50
|
|
51
|
+
# ------------------------------------------------------------------------------
|
52
|
+
# Serialization
|
53
|
+
# ------------------------------------------------------------------------------
|
54
|
+
|
55
|
+
def to_xml(builder)
|
56
|
+
builder.datafield(tag: tag, ind1: ind1, ind2: ind2) do
|
57
|
+
subfields_struct.values.each do |_subfield_set|
|
58
|
+
_subfield_set.to_xml(builder)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
51
63
|
end
|
52
64
|
end
|
53
65
|
end
|
@@ -40,6 +40,16 @@ module Metacrunch
|
|
40
40
|
set
|
41
41
|
end
|
42
42
|
|
43
|
+
# ------------------------------------------------------------------------------
|
44
|
+
# Serialization
|
45
|
+
# ------------------------------------------------------------------------------
|
46
|
+
|
47
|
+
def to_xml(builder)
|
48
|
+
self.each do |_datafield|
|
49
|
+
_datafield.to_xml(builder)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
43
53
|
end
|
44
54
|
end
|
45
55
|
end
|
@@ -12,6 +12,14 @@ module Metacrunch
|
|
12
12
|
@value = value
|
13
13
|
end
|
14
14
|
|
15
|
+
# ------------------------------------------------------------------------------
|
16
|
+
# Serialization
|
17
|
+
# ------------------------------------------------------------------------------
|
18
|
+
|
19
|
+
def to_xml(builder)
|
20
|
+
builder.subfield(code: code, value: value)
|
21
|
+
end
|
22
|
+
|
15
23
|
end
|
16
24
|
end
|
17
25
|
end
|
@@ -34,6 +34,20 @@ module Metacrunch
|
|
34
34
|
@subfields.map{ |subfield| subfield.value }
|
35
35
|
end
|
36
36
|
|
37
|
+
def first_value
|
38
|
+
values.find{ |v| v.present? }
|
39
|
+
end
|
40
|
+
|
41
|
+
# ------------------------------------------------------------------------------
|
42
|
+
# Serialization
|
43
|
+
# ------------------------------------------------------------------------------
|
44
|
+
|
45
|
+
def to_xml(builder)
|
46
|
+
self.each do |_subfield|
|
47
|
+
_subfield.to_xml(builder)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
37
51
|
end
|
38
52
|
end
|
39
53
|
end
|
@@ -79,10 +79,11 @@ module Metacrunch
|
|
79
79
|
return set if set.empty?
|
80
80
|
|
81
81
|
if ind1 || ind2
|
82
|
-
filtered_datafields = set.select do |
|
83
|
-
(!ind1 ||
|
82
|
+
filtered_datafields = set.select do |datafield|
|
83
|
+
(!ind1 || (ind1 == :blank ? datafield.ind1 == " " || datafield.ind1 == "-" : datafield.ind1 == ind1)) &&
|
84
|
+
(!ind2 || (ind2 == :blank ? datafield.ind2 == " " || datafield.ind2 == "-" : datafield.ind2 == ind2))
|
84
85
|
end
|
85
|
-
|
86
|
+
|
86
87
|
Datafield::Set.new(filtered_datafields)
|
87
88
|
else
|
88
89
|
set
|
@@ -101,6 +102,24 @@ module Metacrunch
|
|
101
102
|
datafields_struct[datafield.tag] = datafield_set
|
102
103
|
end
|
103
104
|
|
105
|
+
# ------------------------------------------------------------------------------
|
106
|
+
# Serialization
|
107
|
+
# ------------------------------------------------------------------------------
|
108
|
+
|
109
|
+
def to_xml
|
110
|
+
builder = Builder::XmlMarkup.new(indent: 2)
|
111
|
+
builder.instruct!(:xml, :encoding => "UTF-8")
|
112
|
+
builder.mab_xml do
|
113
|
+
controlfields_struct.values.each do |_controlfield|
|
114
|
+
_controlfield.to_xml(builder)
|
115
|
+
end
|
116
|
+
|
117
|
+
datafields_struct.values.each do |_datafield_set|
|
118
|
+
_datafield_set.to_xml(builder)
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
104
123
|
end
|
105
124
|
end
|
106
125
|
end
|
@@ -37,7 +37,7 @@ describe Metacrunch::Mab2::Document do
|
|
37
37
|
subject { document.datafields("100") }
|
38
38
|
|
39
39
|
it "returns only datafields with tag=100" do
|
40
|
-
expect(subject.count).to eq(
|
40
|
+
expect(subject.count).to eq(3)
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
@@ -64,6 +64,14 @@ describe Metacrunch::Mab2::Document do
|
|
64
64
|
expect(subject.count).to eq(1)
|
65
65
|
end
|
66
66
|
end
|
67
|
+
|
68
|
+
context "given tag=100 and ind1=:blank" do
|
69
|
+
subject { document.datafields("100", ind1: :blank) }
|
70
|
+
|
71
|
+
it "returns only datafields with tag=100 and ind1=' ' or ind1=-" do
|
72
|
+
expect(subject.count).to eq(2)
|
73
|
+
end
|
74
|
+
end
|
67
75
|
end
|
68
76
|
|
69
77
|
private
|
@@ -88,6 +96,11 @@ private
|
|
88
96
|
datafield.add_subfield(create_subfield("9", "123456789"))
|
89
97
|
document.add_datafield(datafield)
|
90
98
|
|
99
|
+
datafield = create_datafield("100", ind1: " ", ind2: "1")
|
100
|
+
datafield.add_subfield(create_subfield("p", "Sievers, Michael"))
|
101
|
+
datafield.add_subfield(create_subfield("9", "123456789"))
|
102
|
+
document.add_datafield(datafield)
|
103
|
+
|
91
104
|
datafield = create_datafield("331", ind1: "-", ind2: "1")
|
92
105
|
datafield.add_subfield(create_subfield("a", "<<The>> art of MAB processing"))
|
93
106
|
document.add_datafield(datafield)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metacrunch-mab2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- René Sprotte
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2015-
|
13
|
+
date: 2015-06-15 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: metacrunch
|
@@ -116,4 +116,3 @@ test_files:
|
|
116
116
|
- spec/document/control_field_spec.rb
|
117
117
|
- spec/document/document_spec.rb
|
118
118
|
- spec/spec_helper.rb
|
119
|
-
has_rdoc:
|