marcman 1.0.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 +7 -0
- data/.gitignore +15 -0
- data/.rspec +3 -0
- data/.travis.yml +5 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +12 -0
- data/LICENSE.txt +21 -0
- data/README.md +118 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/exe/marcman +71 -0
- data/exe/marcquiz +185 -0
- data/lib/marcman/constants.rb +60 -0
- data/lib/marcman/errors.rb +4 -0
- data/lib/marcman/fields.rb +4621 -0
- data/lib/marcman/version.rb +3 -0
- data/lib/marcman.rb +71 -0
- data/marcman.gemspec +27 -0
- metadata +106 -0
data/lib/marcman.rb
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require "marcman/constants"
|
3
|
+
require "marcman/errors"
|
4
|
+
require "marcman/fields"
|
5
|
+
require "marcman/version"
|
6
|
+
require "pp"
|
7
|
+
|
8
|
+
module Marcman
|
9
|
+
def self.getFieldFromCode(code)
|
10
|
+
unless code =~ /[0-9Xx]{3}/
|
11
|
+
raise BadMarcFieldFormatError.new(
|
12
|
+
"Sorry, \"%s\" is not a correct MARC field code format." % code)
|
13
|
+
end
|
14
|
+
|
15
|
+
code = code.upcase
|
16
|
+
if MARC[code].nil?
|
17
|
+
raise NoMarcFieldError.new("No MARC field with the code %s" % code)
|
18
|
+
end
|
19
|
+
return [code, MARC[code]]
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.formatRepeat(r, show)
|
23
|
+
return "" unless show
|
24
|
+
|
25
|
+
if r == false
|
26
|
+
return " (non-repeatable)"
|
27
|
+
end
|
28
|
+
|
29
|
+
return " (repeatable)"
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.formatIndicators(code, ind)
|
33
|
+
label = ind == 1 ? "First" : "Second"
|
34
|
+
indicator = MARC[code][:indicators][ind - 1]
|
35
|
+
if indicator == :undefined
|
36
|
+
return [" %s indicator is undefined" % label]
|
37
|
+
end
|
38
|
+
|
39
|
+
return [" %s indicator: %s" % [label, indicator[:definition]]] +
|
40
|
+
indicator[:values].map{|k, v| " %s - %s" % [k, v]}
|
41
|
+
end
|
42
|
+
|
43
|
+
def self.addLinkage(code)
|
44
|
+
linkage = (MARC[code][:linkage] != false)
|
45
|
+
fieldlink = (MARC[code][:fieldlink] != false)
|
46
|
+
|
47
|
+
if linkage and fieldlink
|
48
|
+
return MARC[code][:subfields].merge(LINKAGE).merge(FIELDLINK)
|
49
|
+
end
|
50
|
+
|
51
|
+
if fieldlink
|
52
|
+
return MARC[code][:subfields].merge(FIELDLINK)
|
53
|
+
end
|
54
|
+
|
55
|
+
if linkage
|
56
|
+
return MARC[code][:subfields].merge(LINKAGE)
|
57
|
+
end
|
58
|
+
|
59
|
+
return MARC[code][:subfields]
|
60
|
+
end
|
61
|
+
|
62
|
+
def self.formatSubfields(code, showrepeat)
|
63
|
+
sf = addLinkage(code)
|
64
|
+
# Sort characters before numbers
|
65
|
+
numkeys, charkeys = sf.partition{|a| a[0][1] >= "0" and a[0][1] <= "9"}
|
66
|
+
(charkeys.sort + numkeys.sort).
|
67
|
+
map{|k, v| " %s - %s%s" % [k, v[:definition],
|
68
|
+
formatRepeat(v[:repeat], showrepeat)]}
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
data/marcman.gemspec
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
|
2
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require "marcman/version"
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "marcman"
|
8
|
+
spec.version = Marcman::VERSION
|
9
|
+
spec.authors = ["Sean Redmond"]
|
10
|
+
spec.email = ["github-smr@sneakemail.com"]
|
11
|
+
|
12
|
+
spec.summary = %q{Little command line utility for looking up MARC field definitions.}
|
13
|
+
spec.description = %q{Little command line utility for looking up MARC field definitions.}
|
14
|
+
spec.homepage = "http://127.0.0.1"
|
15
|
+
spec.license = "MIT"
|
16
|
+
|
17
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
18
|
+
f.match(%r{^(test|spec|features)/})
|
19
|
+
end
|
20
|
+
spec.bindir = "exe"
|
21
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
22
|
+
spec.require_paths = ["lib"]
|
23
|
+
|
24
|
+
spec.add_development_dependency "bundler", "~> 1.16"
|
25
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
26
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
27
|
+
end
|
metadata
ADDED
@@ -0,0 +1,106 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: marcman
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Sean Redmond
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-05-21 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.16'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.16'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.0'
|
55
|
+
description: Little command line utility for looking up MARC field definitions.
|
56
|
+
email:
|
57
|
+
- github-smr@sneakemail.com
|
58
|
+
executables:
|
59
|
+
- marcman
|
60
|
+
- marcquiz
|
61
|
+
extensions: []
|
62
|
+
extra_rdoc_files: []
|
63
|
+
files:
|
64
|
+
- ".gitignore"
|
65
|
+
- ".rspec"
|
66
|
+
- ".travis.yml"
|
67
|
+
- CODE_OF_CONDUCT.md
|
68
|
+
- Gemfile
|
69
|
+
- LICENSE.txt
|
70
|
+
- README.md
|
71
|
+
- Rakefile
|
72
|
+
- bin/console
|
73
|
+
- bin/setup
|
74
|
+
- exe/marcman
|
75
|
+
- exe/marcquiz
|
76
|
+
- lib/marcman.rb
|
77
|
+
- lib/marcman/constants.rb
|
78
|
+
- lib/marcman/errors.rb
|
79
|
+
- lib/marcman/fields.rb
|
80
|
+
- lib/marcman/version.rb
|
81
|
+
- marcman.gemspec
|
82
|
+
homepage: http://127.0.0.1
|
83
|
+
licenses:
|
84
|
+
- MIT
|
85
|
+
metadata: {}
|
86
|
+
post_install_message:
|
87
|
+
rdoc_options: []
|
88
|
+
require_paths:
|
89
|
+
- lib
|
90
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
95
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - ">="
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '0'
|
100
|
+
requirements: []
|
101
|
+
rubyforge_project:
|
102
|
+
rubygems_version: 2.6.14
|
103
|
+
signing_key:
|
104
|
+
specification_version: 4
|
105
|
+
summary: Little command line utility for looking up MARC field definitions.
|
106
|
+
test_files: []
|