marc4j4r 1.4.1 → 1.4.2
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.
- metadata +43 -65
- data/CHANGES +0 -27
- data/Rakefile +0 -71
- data/VERSION +0 -1
- data/benchj.rb +0 -73
- data/lib/marc4j4r.rb +0 -70
- data/lib/marc4j4r/controlfield.rb +0 -32
- data/lib/marc4j4r/datafield.rb +0 -192
- data/lib/marc4j4r/reader.rb +0 -125
- data/lib/marc4j4r/record.rb +0 -259
- data/lib/marc4j4r/writer.rb +0 -31
- data/spec/alephsequentialreader_spec.rb +0 -112
- data/spec/bad.dat +0 -1
- data/spec/badbatch.dat +0 -1
- data/spec/badbatch.xml +0 -13
- data/spec/batch.dat +0 -1
- data/spec/batch.txt +0 -193
- data/spec/batch.xml +0 -13
- data/spec/chinese_utf8.dat +0 -1
- data/spec/controlfield_spec.rb +0 -42
- data/spec/datafield_spec.rb +0 -122
- data/spec/errors.seq +0 -118
- data/spec/one.dat +0 -1
- data/spec/one.txt +0 -17
- data/spec/one.xml +0 -4
- data/spec/reader_spec.rb +0 -110
- data/spec/record_spec.rb +0 -146
- data/spec/spec_helper.rb +0 -14
- data/spec/three.seq +0 -118
metadata
CHANGED
@@ -1,127 +1,105 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: marc4j4r
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
5
|
-
prerelease:
|
4
|
+
version: 1.4.2
|
5
|
+
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- BillDueber
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-11-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
15
|
+
version_requirements: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
17
|
- - ! '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: 0.0.4
|
22
|
-
type: :runtime
|
23
|
-
prerelease: false
|
24
|
-
version_requirements: !ruby/object:Gem::Requirement
|
25
20
|
none: false
|
21
|
+
prerelease: false
|
22
|
+
type: :runtime
|
23
|
+
requirement: !ruby/object:Gem::Requirement
|
26
24
|
requirements:
|
27
25
|
- - ! '>='
|
28
26
|
- !ruby/object:Gem::Version
|
29
27
|
version: 0.0.4
|
30
|
-
- !ruby/object:Gem::Dependency
|
31
|
-
name: bacon
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
33
28
|
none: false
|
29
|
+
name: jlogger
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
version_requirements: !ruby/object:Gem::Requirement
|
34
32
|
requirements:
|
35
33
|
- - ! '>='
|
36
34
|
- !ruby/object:Gem::Version
|
37
|
-
version:
|
38
|
-
|
39
|
-
prerelease: false
|
40
|
-
version_requirements: !ruby/object:Gem::Requirement
|
35
|
+
version: !binary |-
|
36
|
+
MA==
|
41
37
|
none: false
|
38
|
+
prerelease: false
|
39
|
+
type: :development
|
40
|
+
requirement: !ruby/object:Gem::Requirement
|
42
41
|
requirements:
|
43
42
|
- - ! '>='
|
44
43
|
- !ruby/object:Gem::Version
|
45
|
-
version:
|
46
|
-
|
47
|
-
name: yard
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
+
version: !binary |-
|
45
|
+
MA==
|
49
46
|
none: false
|
47
|
+
name: bacon
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
51
|
- - ! '>='
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
54
|
-
|
55
|
-
prerelease: false
|
56
|
-
version_requirements: !ruby/object:Gem::Requirement
|
53
|
+
version: !binary |-
|
54
|
+
MA==
|
57
55
|
none: false
|
56
|
+
prerelease: false
|
57
|
+
type: :development
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
58
59
|
requirements:
|
59
60
|
- - ! '>='
|
60
61
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
62
|
-
|
63
|
-
|
62
|
+
version: !binary |-
|
63
|
+
MA==
|
64
|
+
none: false
|
65
|
+
name: yard
|
66
|
+
description: Syntactic sugar and some extra methods to deal with MARC data using the java .jar marc4j
|
64
67
|
email: bill@dueber.com
|
65
68
|
executables: []
|
66
69
|
extensions: []
|
67
70
|
extra_rdoc_files:
|
68
|
-
- README.rdoc
|
69
|
-
files:
|
70
|
-
- CHANGES
|
71
71
|
- LICENSE
|
72
72
|
- README.rdoc
|
73
|
-
|
74
|
-
- VERSION
|
75
|
-
- benchj.rb
|
73
|
+
files:
|
76
74
|
- jars/jackson-all-1.6.0.jar
|
77
75
|
- jars/javamarc.jar
|
78
76
|
- jars/marc4j-extra-readers-writers.jar
|
79
|
-
-
|
80
|
-
-
|
81
|
-
- lib/marc4j4r/datafield.rb
|
82
|
-
- lib/marc4j4r/reader.rb
|
83
|
-
- lib/marc4j4r/record.rb
|
84
|
-
- lib/marc4j4r/writer.rb
|
85
|
-
- spec/alephsequentialreader_spec.rb
|
86
|
-
- spec/bad.dat
|
87
|
-
- spec/badbatch.dat
|
88
|
-
- spec/badbatch.xml
|
89
|
-
- spec/batch.dat
|
90
|
-
- spec/batch.txt
|
91
|
-
- spec/batch.xml
|
92
|
-
- spec/chinese_utf8.dat
|
93
|
-
- spec/controlfield_spec.rb
|
94
|
-
- spec/datafield_spec.rb
|
95
|
-
- spec/errors.seq
|
96
|
-
- spec/one.dat
|
97
|
-
- spec/one.txt
|
98
|
-
- spec/one.xml
|
99
|
-
- spec/reader_spec.rb
|
100
|
-
- spec/record_spec.rb
|
101
|
-
- spec/spec_helper.rb
|
102
|
-
- spec/three.seq
|
77
|
+
- LICENSE
|
78
|
+
- README.rdoc
|
103
79
|
homepage: http://github.com/billdueber/javamarc/tree/master/ruby/marc4j4r/
|
104
80
|
licenses: []
|
105
|
-
post_install_message:
|
81
|
+
post_install_message:
|
106
82
|
rdoc_options: []
|
107
83
|
require_paths:
|
108
84
|
- lib
|
109
85
|
required_ruby_version: !ruby/object:Gem::Requirement
|
110
|
-
none: false
|
111
86
|
requirements:
|
112
87
|
- - ! '>='
|
113
88
|
- !ruby/object:Gem::Version
|
114
|
-
version:
|
115
|
-
|
89
|
+
version: !binary |-
|
90
|
+
MA==
|
116
91
|
none: false
|
92
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
117
93
|
requirements:
|
118
94
|
- - ! '>='
|
119
95
|
- !ruby/object:Gem::Version
|
120
|
-
version:
|
96
|
+
version: !binary |-
|
97
|
+
MA==
|
98
|
+
none: false
|
121
99
|
requirements: []
|
122
|
-
rubyforge_project:
|
100
|
+
rubyforge_project:
|
123
101
|
rubygems_version: 1.8.24
|
124
|
-
signing_key:
|
102
|
+
signing_key:
|
125
103
|
specification_version: 3
|
126
104
|
summary: Use marc4j java library in JRuby in a more ruby-ish way
|
127
105
|
test_files: []
|
data/CHANGES
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
1.4.0
|
2
|
-
Update to use newest version of marc4j_extra_readers_writers.jar; before I wasn't
|
3
|
-
correctly turning '^' into ' ' in leaders and control fields.
|
4
|
-
|
5
|
-
1.3.0
|
6
|
-
Updated to use jlogger; added logging #nextRecord (also used by #each) to
|
7
|
-
AlephSequentialReader and PermissiveStreamReader
|
8
|
-
|
9
|
-
1.2.0
|
10
|
-
Fixed encoding problem with to_marc and from_string roundtrip
|
11
|
-
Added to_hash/to_marc_in_json and from_hash/from_marc_in_json (see
|
12
|
-
http://dilettantes.code4lib.org/blog/2010/09/a-proposal-to-serialize-marc-in-json/)
|
13
|
-
|
14
|
-
1.1
|
15
|
-
Added native java method to turn a record into XML (20% speedup or so)
|
16
|
-
1.0
|
17
|
-
Arbitrary decision that this is 1.0
|
18
|
-
Using javamarc.jar (fork of marc4j) from http://github.com/billdueber/javamarc
|
19
|
-
Including alephsequential reader (but not writer) and specs
|
20
|
-
Added code to Reader#each to deal with #errors object if provided by the
|
21
|
-
specific reader (right now, :permissivemarc and :alephsequential) and specs
|
22
|
-
to test
|
23
|
-
0.9.1
|
24
|
-
Updated to latest marc4j; changes involve character conversion
|
25
|
-
|
26
|
-
0.9.0
|
27
|
-
First real public release
|
data/Rakefile
DELETED
@@ -1,71 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'rake'
|
3
|
-
|
4
|
-
begin
|
5
|
-
require 'jeweler'
|
6
|
-
Jeweler::Tasks.new do |gem|
|
7
|
-
gem.name = "marc4j4r"
|
8
|
-
gem.summary = %Q{Use marc4j java library in JRuby in a more ruby-ish way}
|
9
|
-
gem.description = %Q{Syntactic sugar and some extra methods to deal with MARC data using the java .jar marc4j}
|
10
|
-
gem.email = "bill@dueber.com"
|
11
|
-
gem.homepage = "http://github.com/billdueber/javamarc/tree/master/ruby/marc4j4r/"
|
12
|
-
gem.authors = ["BillDueber"]
|
13
|
-
|
14
|
-
gem.add_dependency "jlogger", ">= 0.0.4"
|
15
|
-
gem.add_development_dependency "bacon", ">= 0"
|
16
|
-
gem.add_development_dependency "yard", ">= 0"
|
17
|
-
|
18
|
-
gem.files.include 'jars/*.jar'
|
19
|
-
|
20
|
-
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
21
|
-
end
|
22
|
-
Jeweler::GemcutterTasks.new
|
23
|
-
rescue LoadError
|
24
|
-
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
25
|
-
end
|
26
|
-
|
27
|
-
|
28
|
-
# Make sure we've got the right .jar
|
29
|
-
LOCALJAR = 'jars/javamarc.jar'
|
30
|
-
JAVAJAR = '../../javamarc.jar'
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
file LOCALJAR => JAVAJAR do |t|
|
35
|
-
FileUtils.cp(JAVAJAR, LOCALJAR)
|
36
|
-
end
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
require 'rake/testtask'
|
41
|
-
Rake::TestTask.new(:spec) do |spec|
|
42
|
-
spec.libs << 'lib' << 'spec'
|
43
|
-
spec.pattern = 'spec/**/*_spec.rb'
|
44
|
-
spec.verbose = true
|
45
|
-
end
|
46
|
-
|
47
|
-
begin
|
48
|
-
require 'rcov/rcovtask'
|
49
|
-
Rcov::RcovTask.new do |spec|
|
50
|
-
spec.libs << 'spec'
|
51
|
-
spec.pattern = 'spec/**/*_spec.rb'
|
52
|
-
spec.verbose = true
|
53
|
-
end
|
54
|
-
rescue LoadError
|
55
|
-
task :rcov do
|
56
|
-
abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
task :spec => [:check_dependencies, LOCALJAR]
|
61
|
-
|
62
|
-
task :default => :spec
|
63
|
-
|
64
|
-
begin
|
65
|
-
require 'yard'
|
66
|
-
YARD::Rake::YardocTask.new
|
67
|
-
rescue LoadError
|
68
|
-
task :yardoc do
|
69
|
-
abort "YARD is not available. In order to run yardoc, you must: sudo gem install yard"
|
70
|
-
end
|
71
|
-
end
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
1.4.1
|
data/benchj.rb
DELETED
@@ -1,73 +0,0 @@
|
|
1
|
-
$:.unshift 'lib'
|
2
|
-
require 'marc4j4r'
|
3
|
-
|
4
|
-
require 'benchmark'
|
5
|
-
|
6
|
-
# require 'yajl'
|
7
|
-
# require 'json/pure'
|
8
|
-
# require 'msgpack'
|
9
|
-
|
10
|
-
|
11
|
-
jsonsize = 0.0
|
12
|
-
marcsize = 0.0
|
13
|
-
mpsize = 0.0
|
14
|
-
|
15
|
-
|
16
|
-
# Use Benchmark.measure
|
17
|
-
# sjptime = Benchmark::Tms.new(0,0,0,0,0, "JSON Pure")
|
18
|
-
smtime = Benchmark::Tms.new(0,0,0,0,0, "MARC")
|
19
|
-
smptime = Benchmark::Tms.new(0,0,0,0,0, "Msgpack")
|
20
|
-
sjptime = Benchmark::Tms.new(0,0,0,0,0, "JSON")
|
21
|
-
|
22
|
-
djptime = Benchmark::Tms.new(0,0,0,0,0, "JSON")
|
23
|
-
dmtime = Benchmark::Tms.new(0,0,0,0,0, "MARC")
|
24
|
-
dmptime = Benchmark::Tms.new(0,0,0,0,0, "Msgpack")
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
i = 0
|
29
|
-
iterations = 1
|
30
|
-
|
31
|
-
iterations.times do
|
32
|
-
reader = MARC4J4R::Reader.new('topics.xml', :marcxml)
|
33
|
-
|
34
|
-
reader.each_with_index do |r, i|
|
35
|
-
marc = nil
|
36
|
-
json = nil
|
37
|
-
mp = nil
|
38
|
-
copy = nil
|
39
|
-
|
40
|
-
|
41
|
-
smtime += Benchmark.measure {marc = r.to_marc}
|
42
|
-
dmtime += Benchmark.measure {copy = MARC4J4R::Record.from_string(marc)}
|
43
|
-
|
44
|
-
|
45
|
-
sjptime += Benchmark.measure {json = r.to_marc_in_json}
|
46
|
-
djptime += Benchmark.measure {copy = MARC4J4R::Record.new_from_marc_in_json(json)}
|
47
|
-
|
48
|
-
# break if i > 1000
|
49
|
-
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
puts "Total of #{i} records run #{iterations} times"
|
54
|
-
|
55
|
-
puts "\nSERIALIZING"
|
56
|
-
|
57
|
-
base = smtime.total
|
58
|
-
puts ' %-15s %8.2f s (%3.0f%%)' % ['MARC', smtime.total, smtime.total / base * 100]
|
59
|
-
puts ' %-15s %8.2f s (%3.0f%%)' % ['Json', sjptime.total, sjptime.total / base * 100]
|
60
|
-
# puts ' %-15s %8.2f s (%3.0f%%)' % ['Msgpack', smptime.total, smptime.total / base * 100]
|
61
|
-
|
62
|
-
base = dmtime.total
|
63
|
-
puts "\nDESERIALIZING"
|
64
|
-
puts ' %-15s %8.2f s (%3.0f%%)' % ['MARC', dmtime.total, dmtime.total / base * 100]
|
65
|
-
puts ' %-15s %8.2f s (%3.0f%%)' % ['Json', djptime.total, djptime.total / base * 100]
|
66
|
-
# puts ' %-15s %8.2f s (%3.0f%%)' % ['Msgpack', dmptime.total, dmptime.total / base * 100]
|
67
|
-
|
68
|
-
base = dmtime.total + smtime.total
|
69
|
-
puts "\nSERIALIZE + DESERIALIZE"
|
70
|
-
puts ' %-15s %8.2f s (%3.0f%%)' % ['MARC', dmtime.total + smtime.total, (dmtime.total + smtime.total) / base * 100]
|
71
|
-
puts ' %-15s %8.2f s (%3.0f%%)' % ['Json', djptime.total + sjptime.total, (djptime.total + sjptime.total) / base * 100]
|
72
|
-
# puts ' %-15s %8.2f s (%3.0f%%)' % ['Msgpack', dmptime.total + smptime.total, (dmptime.total + smptime.total) / base * 100]
|
73
|
-
|
data/lib/marc4j4r.rb
DELETED
@@ -1,70 +0,0 @@
|
|
1
|
-
unless defined? JRUBY_VERSION
|
2
|
-
raise "Only works under JRUBY"
|
3
|
-
end
|
4
|
-
|
5
|
-
jardir = File.join(File.dirname(__FILE__), '..', 'jars')
|
6
|
-
|
7
|
-
# For each jar, check for a representative class in each
|
8
|
-
# and include the jar if it's not defined
|
9
|
-
|
10
|
-
begin
|
11
|
-
include_class Java::org.marc4j.marc.impl.RecordImpl
|
12
|
-
rescue NameError => e
|
13
|
-
require "#{jardir}/javamarc.jar"
|
14
|
-
end
|
15
|
-
|
16
|
-
begin
|
17
|
-
include_class Java::org.marc4j.MarcAlephSequentialReader
|
18
|
-
rescue
|
19
|
-
require "#{jardir}/marc4j-extra-readers-writers.jar"
|
20
|
-
end
|
21
|
-
|
22
|
-
begin
|
23
|
-
include_class Java::org.codehaus.jackson.map.ObjectMapper
|
24
|
-
rescue
|
25
|
-
require "#{jardir}/jackson-all-1.6.0.jar"
|
26
|
-
end
|
27
|
-
|
28
|
-
|
29
|
-
# Define a method that will take a string (filename), IO object, or StringIO object,
|
30
|
-
# and return an inputstream/outputstream
|
31
|
-
|
32
|
-
module IOConvert
|
33
|
-
|
34
|
-
def byteinstream(fromwhere)
|
35
|
-
stream = nil
|
36
|
-
if fromwhere.is_a? Java::JavaIO::InputStream
|
37
|
-
stream = fromwhere
|
38
|
-
elsif fromwhere.is_a? String
|
39
|
-
stream = java.io.FileInputStream.new(fromwhere.to_java_string)
|
40
|
-
elsif fromwhere.respond_to? :to_inputstream
|
41
|
-
stream = fromwhere.to_inputstream
|
42
|
-
end
|
43
|
-
return stream
|
44
|
-
end
|
45
|
-
|
46
|
-
def byteoutstream towhere
|
47
|
-
stream = nil
|
48
|
-
if towhere.is_a? Java::JavaIO::OutputStream
|
49
|
-
stream = towhere
|
50
|
-
elsif towhere.is_a? String
|
51
|
-
stream = java.io.FileOutputStream.new(towhere.to_java_string)
|
52
|
-
elsif towhere.respond_to? :to_outputstream
|
53
|
-
stream = towhere.to_outputstream
|
54
|
-
end
|
55
|
-
return stream
|
56
|
-
end
|
57
|
-
|
58
|
-
|
59
|
-
module_function :byteinstream, :byteoutstream
|
60
|
-
|
61
|
-
end
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
require 'marc4j4r/record.rb'
|
68
|
-
require 'marc4j4r/controlfield.rb'
|
69
|
-
require 'marc4j4r/reader.rb'
|
70
|
-
require 'marc4j4r/datafield.rb'
|
@@ -1,32 +0,0 @@
|
|
1
|
-
module MARC4J4R
|
2
|
-
ControlField = Java::org.marc4j.marc.impl::ControlFieldImpl
|
3
|
-
class ControlField
|
4
|
-
def value
|
5
|
-
return self.data
|
6
|
-
end
|
7
|
-
|
8
|
-
def value= str
|
9
|
-
self.data = str
|
10
|
-
end
|
11
|
-
|
12
|
-
def controlField?
|
13
|
-
return true
|
14
|
-
end
|
15
|
-
|
16
|
-
def self.control_tag? tag
|
17
|
-
return Java::org.marc4j.marc.impl.Verifier.isControlField tag
|
18
|
-
end
|
19
|
-
|
20
|
-
# Pretty-print
|
21
|
-
# @param [String] joiner What string to use to join the subfields
|
22
|
-
# @param [String] The pretty string
|
23
|
-
def to_s
|
24
|
-
return self.tag + " " + self.value
|
25
|
-
end
|
26
|
-
|
27
|
-
def == other
|
28
|
-
self.tag == other.tag && self.value == other.value
|
29
|
-
end
|
30
|
-
|
31
|
-
end
|
32
|
-
end
|