bismas 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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"
|