bismas 0.1.0 → 0.2.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 +4 -4
- data/ChangeLog +5 -0
- data/README +1 -1
- data/lib/bismas.rb +5 -2
- data/lib/bismas/categories.rb +75 -0
- data/lib/bismas/version.rb +1 -1
- data/spec/bismas/reader_spec.rb +8 -0
- metadata +7 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b7b1bf402b54716f33ab4776f2a152f9245d178a
|
4
|
+
data.tar.gz: 0bc6073adeaa2182c8c181a8c440ac01501c9254
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 39d7e051dd26e865533325f22a7dd19ef4d33998a7b35a3ee31a38c4099fd5495ac0bb9657cce20b4f430941a7346cb088ee74befb85742a7c4f92971c3fefea
|
7
|
+
data.tar.gz: 8e0b39dbc62b974df0f692bc271b5b902e3603acf34c42befab1029686a96dbac192537d7b80b18f560ff138660943dd4edfc567c56e436eede8f25b50ef561a
|
data/ChangeLog
CHANGED
data/README
CHANGED
data/lib/bismas.rb
CHANGED
@@ -131,8 +131,10 @@ module Bismas
|
|
131
131
|
end
|
132
132
|
|
133
133
|
def amend_encoding(options, default_encoding = DEFAULT_ENCODING)
|
134
|
-
(
|
135
|
-
|
134
|
+
encoding = options.fetch(:encoding, default_encoding).to_s
|
135
|
+
|
136
|
+
options[:encoding] = encoding.start_with?(':') ?
|
137
|
+
default_encoding.to_s + encoding : encoding
|
136
138
|
end
|
137
139
|
|
138
140
|
end
|
@@ -143,4 +145,5 @@ require_relative 'bismas/base'
|
|
143
145
|
require_relative 'bismas/reader'
|
144
146
|
require_relative 'bismas/writer'
|
145
147
|
require_relative 'bismas/mapping'
|
148
|
+
require_relative 'bismas/categories'
|
146
149
|
require_relative 'bismas/version'
|
@@ -0,0 +1,75 @@
|
|
1
|
+
#--
|
2
|
+
###############################################################################
|
3
|
+
# #
|
4
|
+
# bismas -- A Ruby client for BISMAS databases #
|
5
|
+
# #
|
6
|
+
# Copyright (C) 2015 Jens Wille #
|
7
|
+
# #
|
8
|
+
# Authors: #
|
9
|
+
# Jens Wille <jens.wille@gmail.com> #
|
10
|
+
# #
|
11
|
+
# bismas is free software; you can redistribute it and/or modify it #
|
12
|
+
# under the terms of the GNU Affero General Public License as published by #
|
13
|
+
# the Free Software Foundation; either version 3 of the License, or (at your #
|
14
|
+
# option) any later version. #
|
15
|
+
# #
|
16
|
+
# bismas is distributed in the hope that it will be useful, but #
|
17
|
+
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY #
|
18
|
+
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public #
|
19
|
+
# License for more details. #
|
20
|
+
# #
|
21
|
+
# You should have received a copy of the GNU Affero General Public License #
|
22
|
+
# along with bismas. If not, see <http://www.gnu.org/licenses/>. #
|
23
|
+
# #
|
24
|
+
###############################################################################
|
25
|
+
#++
|
26
|
+
|
27
|
+
module Bismas
|
28
|
+
|
29
|
+
class Categories
|
30
|
+
|
31
|
+
FIELD_RE = %r{\Afeld\s+=\s+(\d+)}i
|
32
|
+
|
33
|
+
CATEGORY_RE = lambda { |category_length|
|
34
|
+
%r{\A(.{#{category_length}})"(.+?)"} }
|
35
|
+
|
36
|
+
def self.parse_file(file, options = {})
|
37
|
+
Bismas.amend_encoding(options)
|
38
|
+
|
39
|
+
categories, category_re = new, nil
|
40
|
+
|
41
|
+
File.foreach(file, options) { |line|
|
42
|
+
case line
|
43
|
+
when FIELD_RE
|
44
|
+
category_re = CATEGORY_RE[$1.to_i]
|
45
|
+
when category_re
|
46
|
+
categories[$1.strip] = $2.strip
|
47
|
+
end
|
48
|
+
}
|
49
|
+
|
50
|
+
categories
|
51
|
+
end
|
52
|
+
|
53
|
+
def initialize
|
54
|
+
@categories = {}
|
55
|
+
end
|
56
|
+
|
57
|
+
def categories
|
58
|
+
@categories.keys
|
59
|
+
end
|
60
|
+
|
61
|
+
def [](key)
|
62
|
+
@categories[key]
|
63
|
+
end
|
64
|
+
|
65
|
+
def []=(key, value)
|
66
|
+
@categories[key] = value
|
67
|
+
end
|
68
|
+
|
69
|
+
def to_h
|
70
|
+
@categories
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
data/lib/bismas/version.rb
CHANGED
data/spec/bismas/reader_spec.rb
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
describe Bismas::Reader do
|
2
2
|
|
3
|
+
example do
|
4
|
+
expect(described_class.parse_file(data('test.dat')).size).to eq(14)
|
5
|
+
end
|
6
|
+
|
7
|
+
example do
|
8
|
+
expect(described_class.parse_file(data('test.dat'), encoding: Encoding::CP850).size).to eq(14)
|
9
|
+
end
|
10
|
+
|
3
11
|
example do
|
4
12
|
expect(described_class.parse_file(data('test.dat'), strict: true)).to eq({
|
5
13
|
1 => { "005" => ["Bock, F."], "020" => ["Zur Geschichte des Schlagwortkatalogs in Praxis und Theorie"], "030" => ["Zentralblatt f\x81r Bibliothekswesen. 40(1923), S.494-502."], "055" => ["1923"], "060" => ["Geschichte des Schlagwortkataloges"], "059" => ["d"], "053" => ["a"], "120" => ["D"] },
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bismas
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jens Wille
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-12-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cyclops
|
@@ -103,6 +103,7 @@ files:
|
|
103
103
|
- bin/bismas
|
104
104
|
- lib/bismas.rb
|
105
105
|
- lib/bismas/base.rb
|
106
|
+
- lib/bismas/categories.rb
|
106
107
|
- lib/bismas/cli.rb
|
107
108
|
- lib/bismas/mapping.rb
|
108
109
|
- lib/bismas/parser.rb
|
@@ -119,13 +120,14 @@ licenses:
|
|
119
120
|
metadata: {}
|
120
121
|
post_install_message: |2+
|
121
122
|
|
122
|
-
bismas-0.
|
123
|
+
bismas-0.2.0 [2015-12-03]:
|
123
124
|
|
124
|
-
*
|
125
|
+
* Added <tt>.CAT</tt> parser.
|
126
|
+
* Fixed Bismas.amend_encoding to accept encoding object.
|
125
127
|
|
126
128
|
rdoc_options:
|
127
129
|
- "--title"
|
128
|
-
- bismas Application documentation (v0.
|
130
|
+
- bismas Application documentation (v0.2.0)
|
129
131
|
- "--charset"
|
130
132
|
- UTF-8
|
131
133
|
- "--line-numbers"
|