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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e58083a8b10b6796906050c64d31ed1e3b565b92
4
- data.tar.gz: e76670a16196f8c9ab0d1ed7aa4be9592f6fe79d
3
+ metadata.gz: 3d18a21ab3c3dbd48cacdeb4385d022cff0a2f2a
4
+ data.tar.gz: bfb0dd9ee58c7c2e8bc9ca47381dc8ce729b71f2
5
5
  SHA512:
6
- metadata.gz: 6facef45723b7ae6d4c7af8f6e32ddbc4ec9a34fa81e5b80e253556fe9b4ccfe2a2058c82f3874ba945c2fea59f8ef1188c8c6785460c93fec11356d77e7b801
7
- data.tar.gz: 22a9eb459fd762b0a597bdb6472e3484dd8c5ec96fd28465ac07ec5907d0461aa1f49800f985fb68ed2fdc05fbc7a9466feeadb9125bfbb18a3c9f5ae6d6edd7
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 |_datafield|
83
- (!ind1 || _datafield.ind1 == ind1) && (!ind2 || _datafield.ind2 == ind2)
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
@@ -1,5 +1,5 @@
1
1
  module Metacrunch
2
2
  module Mab2
3
- VERSION = "1.0.0"
3
+ VERSION = "1.0.1"
4
4
  end
5
5
  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(2)
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.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-05-07 00:00:00.000000000 Z
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: