fieldhand 0.2.0 → 0.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c1ca08a8fb6ab7682f308d7cb2ffe4ac3cc0829d
4
- data.tar.gz: dea8d65de365fb51ef9788e4cfd4c34dd11af2b4
3
+ metadata.gz: fe77387e599f04fe11981420174c0c53c6f1b3ce
4
+ data.tar.gz: f3bc88686b42bca448c52a06988273dcae890b8f
5
5
  SHA512:
6
- metadata.gz: e797e8d9625730ac9bed36bbeaae6fb8d490695e6b165a94f7e48ea0b743d8c4f95322bbd3c119533a2a446a5014a1e90fd1adcc96a003bceba83cc61a8a9fa1
7
- data.tar.gz: '0295cc11eb9ad3f6c6782022cf1f06953aa4675ef608a32c9dc9cb363f1733750f08bedd3e69870d1973d031e8ed6366a1ff509a951818bcb3985fe72d1db6c6'
6
+ metadata.gz: aac19ca6cdda6acc837c4d8f2e33874fccaa30ee91b3e78e9f0e0a5948b93712785507e960a3c13cfa55da963695b7ce695ddd86333358041335868ee6dca6bd
7
+ data.tar.gz: e1dfdb2adf541cf2a4dc2c3cfbe39da2b5843595b484ff6a7fcf31f22694431a38b09dcbbbc855d6ee3426ad789ce3fcea45f4263f215b62001be4cf076c8f48
data/README.md CHANGED
@@ -2,19 +2,19 @@
2
2
 
3
3
  A Ruby library for harvesting metadata from [OAI-PMH](https://www.openarchives.org/OAI/openarchivesprotocol.html) repositories.
4
4
 
5
- **Current version:** 0.2.0
5
+ **Current version:** 0.3.0
6
6
  **Supported Ruby versions:** 1.8.7, 1.9.2, 1.9.3, 2.0, 2.1, 2.2
7
7
 
8
8
  ## Installation
9
9
 
10
10
  ```
11
- gem install fieldhand -v '~> 0.2'
11
+ gem install fieldhand -v '~> 0.3'
12
12
  ```
13
13
 
14
14
  Or, in your `Gemfile`:
15
15
 
16
16
  ```ruby
17
- gem 'fieldhand', '~> 0.2'
17
+ gem 'fieldhand', '~> 0.3'
18
18
  ```
19
19
 
20
20
  ## Usage
@@ -286,10 +286,10 @@ Returns the compression encodings supported by the repository as an `Array` of `
286
286
 
287
287
  ```ruby
288
288
  repository.identify.descriptions
289
- #=> [#<Ox::Element...>]
289
+ #=> ["<description>..."]
290
290
  ```
291
291
 
292
- Returns XML elements describing this repository as an `Array` of [`Ox::Element`][Element]s.
292
+ Returns descriptions of this repository as an `Array` of `String`s.
293
293
 
294
294
  As descriptions can be in any format, Fieldhand doesn't attempt to parse descriptions but leaves parsing to the client.
295
295
 
@@ -368,10 +368,10 @@ Return a short human-readable `String` naming the set.
368
368
 
369
369
  ```ruby
370
370
  repository.sets.first.descriptions
371
- #=> [#<Ox::Element: ...>]
371
+ #=> ["<setDescription>..."]
372
372
  ```
373
373
 
374
- Return an `Array` of [`Ox::Element`][Element]s of any optional and repeatable containers that may hold community-specific XML-encoded data about the set.
374
+ Return an `Array` of `String`s of any optional and repeatable containers that may hold community-specific XML-encoded data about the set.
375
375
 
376
376
  #### `Fieldhand::Set#response_date`
377
377
 
@@ -439,10 +439,10 @@ Return an `Array` of `String` [set specs](#fieldhandsetspec) indicating set memb
439
439
 
440
440
  ```ruby
441
441
  repository.records.first.metadata
442
- #=> #<Ox::Element: ...>
442
+ #=> "<metadata>..."
443
443
  ```
444
444
 
445
- Return a single manifestation of the metadata from a record as [`Ox::Element`][Element]s or `nil` if this is a deleted record.
445
+ Return a single manifestation of the metadata from a record as a `String` or `nil` if this is a deleted record.
446
446
 
447
447
  As the metadata can be in [any format supported by the repository](#fieldhandrepositorymetadata_formatsidentifier), Fieldhand doesn't attempt to parse the metadata but leaves parsing to the client.
448
448
 
@@ -450,10 +450,10 @@ As the metadata can be in [any format supported by the repository](#fieldhandrep
450
450
 
451
451
  ```ruby
452
452
  repository.records.first.about
453
- #=> [#<Ox::Element: ...>]
453
+ #=> ["<about>..."]
454
454
  ```
455
455
 
456
- Return an `Array` of [`Ox::Element`][Element]s of any optional and repeatable containers holding data about the metadata part of the record.
456
+ Return an `Array` of `String`s of any optional and repeatable containers holding data about the metadata part of the record.
457
457
 
458
458
  #### `Fieldhand::Record#response_date`
459
459
 
@@ -585,7 +585,6 @@ This can be used to rescue all the following child error types.
585
585
  [Enumerator]: https://ruby-doc.org/core/Enumerator.html
586
586
  [Time]: https://ruby-doc.org/core/Time.html
587
587
  [URI]: https://ruby-doc.org/stdlib/libdoc/uri/rdoc/URI.html
588
- [Element]: http://www.rubydoc.info/github/ohler55/ox/Ox/Element
589
588
 
590
589
  ## Acknowledgements
591
590
 
@@ -1,4 +1,5 @@
1
1
  require 'fieldhand/header'
2
+ require 'ox'
2
3
 
3
4
  module Fieldhand
4
5
  # A record is metadata expressed in a single format.
@@ -33,11 +34,11 @@ module Fieldhand
33
34
  end
34
35
 
35
36
  def metadata
36
- @metadata ||= element.locate('metadata[0]').first
37
+ @metadata ||= element.locate('metadata[0]').map { |metadata| Ox.dump(metadata) }.first
37
38
  end
38
39
 
39
40
  def about
40
- @about ||= element.locate('about')
41
+ @about ||= element.locate('about').map { |about| Ox.dump(about) }
41
42
  end
42
43
 
43
44
  def header
data/lib/fieldhand/set.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require 'ox'
2
+
1
3
  module Fieldhand
2
4
  # A set is an optional construct for grouping items for the purpose of selective harvesting.
3
5
  #
@@ -23,7 +25,7 @@ module Fieldhand
23
25
  end
24
26
 
25
27
  def descriptions
26
- @descriptions ||= element.locate('setDescription')
28
+ @descriptions ||= element.locate('setDescription').map { |description| Ox.dump(description) }
27
29
  end
28
30
  end
29
31
  end
@@ -19,6 +19,22 @@ module Fieldhand
19
19
  end
20
20
  end
21
21
 
22
+ describe '#metadata' do
23
+ it 'returns nil if there is no metadata' do
24
+ element = ::Ox.parse('<record/>')
25
+ record = described_class.new(element)
26
+
27
+ expect(record.metadata).to be_nil
28
+ end
29
+
30
+ it 'returns the metadata as a string' do
31
+ element = ::Ox.parse('<record><metadata>Foo</metadata></record>')
32
+ record = described_class.new(element)
33
+
34
+ expect(record.metadata).to eq("\n<metadata>Foo</metadata>\n")
35
+ end
36
+ end
37
+
22
38
  describe '#about' do
23
39
  it 'returns an empty array if there are no about elements' do
24
40
  element = ::Ox.parse('<record/>')
@@ -33,6 +49,13 @@ module Fieldhand
33
49
 
34
50
  expect(record.about.size).to eq(2)
35
51
  end
52
+
53
+ it 'returns about sections as strings' do
54
+ element = ::Ox.parse('<record><about>Foo</about><about>Bar</about></record>')
55
+ record = described_class.new(element)
56
+
57
+ expect(record.about).to contain_exactly("\n<about>Foo</about>\n", "\n<about>Bar</about>\n")
58
+ end
36
59
  end
37
60
 
38
61
  describe '#response_date' do
@@ -17,6 +17,14 @@ module Fieldhand
17
17
 
18
18
  expect(set.descriptions.size).to eq(2)
19
19
  end
20
+
21
+ it 'returns descriptions as strings' do
22
+ element = ::Ox.parse('<set><setDescription>Foo</setDescription><setDescription>Bar</setDescription></set>')
23
+ set = described_class.new(element)
24
+
25
+ expect(set.descriptions).
26
+ to contain_exactly("\n<setDescription>Foo</setDescription>\n", "\n<setDescription>Bar</setDescription>\n")
27
+ end
20
28
  end
21
29
 
22
30
  describe '#to_s' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fieldhand
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul Mucur