athena 0.2.4 → 0.2.5
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/README +4 -4
- data/Rakefile +3 -6
- data/example/config.yaml +16 -0
- data/example/midos-ex.dbm +53 -0
- data/lib/athena.rb +2 -2
- data/lib/athena/cli.rb +5 -5
- data/lib/athena/formats.rb +0 -2
- data/lib/athena/formats/dbm.rb +55 -10
- data/lib/athena/formats/lingo.rb +0 -1
- data/lib/athena/formats/sql.rb +1 -1
- data/lib/athena/version.rb +1 -1
- metadata +8 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d32f444096ae3b9f0ecdd6c038ee9a1ab0c1e8ed
|
4
|
+
data.tar.gz: 2ada4ab199db9a4c877a0a332542d8f74897cb9f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 62845c8060a4e0df098029dbadb66606ae6fde1e721e821fb07126ceb43f4934eaa2ca18fcec3b0649ef44b4df0de450bbb289f72ae5ec7d005bcbc3b8aa1f88
|
7
|
+
data.tar.gz: 54cdbebac8a5b227f3433cdb3055a63ab8a22a28edf66c8a837225b086ac05dade548edf9c83cab5166dfec2e22b029fba270fbf3224b4215ab6c31757d347ba
|
data/README
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
== VERSION
|
4
4
|
|
5
|
-
This documentation refers to athena version 0.2.
|
5
|
+
This documentation refers to athena version 0.2.5
|
6
6
|
|
7
7
|
|
8
8
|
== DESCRIPTION
|
@@ -23,9 +23,9 @@ placed in <tt>$LOAD_PATH</tt>. See Athena::Formats on how to define custom forma
|
|
23
23
|
== LINKS
|
24
24
|
|
25
25
|
<b></b>
|
26
|
-
Documentation::
|
27
|
-
Source code::
|
28
|
-
|
26
|
+
Documentation:: http://blackwinter.github.com/athena
|
27
|
+
Source code:: http://github.com/blackwinter/athena
|
28
|
+
RubyGem:: http://rubygems.org/gems/athena
|
29
29
|
|
30
30
|
|
31
31
|
== AUTHORS
|
data/Rakefile
CHANGED
@@ -4,17 +4,14 @@ begin
|
|
4
4
|
require 'hen'
|
5
5
|
|
6
6
|
Hen.lay! {{
|
7
|
-
:rubyforge => {
|
8
|
-
:project => %q{prometheus},
|
9
|
-
:package => %q{athena}
|
10
|
-
},
|
11
|
-
|
12
7
|
:gem => {
|
8
|
+
:name => %q{athena},
|
13
9
|
:version => Athena::VERSION,
|
14
10
|
:summary => %q{Convert database files to various formats.},
|
15
11
|
:author => %q{Jens Wille},
|
16
12
|
:email => %q{jens.wille@gmail.com},
|
17
|
-
:
|
13
|
+
:homepage => :blackwinter,
|
14
|
+
:dependencies => %w[builder highline xmlstreamin] << ['ruby-nuggets', '>= 0.9.2']
|
18
15
|
}
|
19
16
|
}}
|
20
17
|
rescue LoadError => err
|
data/example/config.yaml
CHANGED
@@ -79,3 +79,19 @@
|
|
79
79
|
:attr3: [attr3ID, Val]
|
80
80
|
:attr4: [attr4ID, Val]
|
81
81
|
:dump-pg:
|
82
|
+
:midos-ex:
|
83
|
+
:__record_element: "000"
|
84
|
+
:language:
|
85
|
+
:elements: ["015"]
|
86
|
+
:separator: " / "
|
87
|
+
:title:
|
88
|
+
:elements:
|
89
|
+
- "331"
|
90
|
+
- "335"
|
91
|
+
:string: "%s: %s"
|
92
|
+
:empty: ">>n/a<<"
|
93
|
+
:date:
|
94
|
+
:elements:
|
95
|
+
- "424"
|
96
|
+
- "425"
|
97
|
+
:separator: ", "
|
@@ -0,0 +1,53 @@
|
|
1
|
+
000:3
|
2
|
+
001:000000003
|
3
|
+
002:02.05.2001
|
4
|
+
003:27.08.2002
|
5
|
+
015:ger | lat
|
6
|
+
036:m
|
7
|
+
125:Blattmaß 38 x 30 cm; Hinterklebt ; Klebereste | Blattmaß 30 x 31,5 cm; Fragment: unterer Textteil fehlt teilweise
|
8
|
+
331:Denckwürdiges Geheimnuß
|
9
|
+
335:Teutsche Erklärung des Kupfferstücks
|
10
|
+
370:Dum tua privato fessus das lumina somno | Einer/ oder gar drey müssen für das Volck sterben
|
11
|
+
424:1620
|
12
|
+
425:[ca. 1620]
|
13
|
+
433:1 Bl.
|
14
|
+
434:1 Ill.; Radierung 19,5 x 27,5 cm(nach einem Kupferstich von Gaspar Dooms)
|
15
|
+
435:Satzspiegel 38 x 30 cm
|
16
|
+
509:Verfasser ermittelt aus Nachweis
|
17
|
+
511:Erscheinungsjahr ermittelt aus Inhalt und Nachweis
|
18
|
+
720:Politisches Flugblatt | Prokaiserliches Flugblatt
|
19
|
+
&&&
|
20
|
+
|
21
|
+
000:4
|
22
|
+
001:000000004
|
23
|
+
002:03.05.2001
|
24
|
+
003:29.08.2002
|
25
|
+
015:ger
|
26
|
+
036:m
|
27
|
+
331:Machometische Zanck= und Haderkatzen
|
28
|
+
370:UNser Planet Ist Machomet, Saturnisch Thier Sind wir allhier
|
29
|
+
424:1621
|
30
|
+
425:1621
|
31
|
+
433:1 Bl.
|
32
|
+
434:1 Ill.; Kupferstich 14 x 24 cm
|
33
|
+
435:Satzspiegel 30,5 x 24,5 cm
|
34
|
+
720:Politische Flugblatt | Antiunionistisches Flugblatt
|
35
|
+
721:Dreissigjähriger Krieg | Böhmisch-Pfälzischer Krieg
|
36
|
+
&&&
|
37
|
+
|
38
|
+
000:5
|
39
|
+
001:000000005
|
40
|
+
002:03.05.2001
|
41
|
+
003:29.08.2002
|
42
|
+
015:ger
|
43
|
+
036:m
|
44
|
+
331:Alles hatt Sein Zeydt | -- Hää?
|
45
|
+
424:1621
|
46
|
+
425:[1621]
|
47
|
+
433:1 Bl.
|
48
|
+
434:1 Ill.; 16 x 27,5 cm
|
49
|
+
435:Satspiegel 16 x 27,5 cm
|
50
|
+
511:Erscheinungsjahr ermittelt aus Bildinhalt und Nachweis
|
51
|
+
527:Andere Ausgabe: Einbl. V,8 b-8; Deutsche illustrierte Flugblätter des 16. und 17. Jahrhunderts
|
52
|
+
&&&
|
53
|
+
|
data/lib/athena.rb
CHANGED
data/lib/athena/cli.rb
CHANGED
@@ -28,12 +28,12 @@
|
|
28
28
|
###############################################################################
|
29
29
|
#++
|
30
30
|
|
31
|
-
require 'nuggets/
|
31
|
+
require 'nuggets/cli'
|
32
32
|
require 'athena'
|
33
33
|
|
34
34
|
module Athena
|
35
35
|
|
36
|
-
class CLI < ::
|
36
|
+
class CLI < ::Nuggets::CLI
|
37
37
|
|
38
38
|
class << self
|
39
39
|
|
@@ -57,12 +57,12 @@ module Athena
|
|
57
57
|
abort "No output format specified and none could be inferred." unless format
|
58
58
|
abort "Invalid output format: #{format}. Use `-l' to get a list of available formats." unless Athena.valid_output_format?(format)
|
59
59
|
|
60
|
-
|
61
|
-
config[target = t.to_sym]
|
60
|
+
if t = options[:target]
|
61
|
+
target_config = config[target = t.to_sym]
|
62
62
|
else
|
63
63
|
[options[:target_fallback] || 'generic', ".#{spec}", ":#{format}"].inject([]) { |s, t|
|
64
64
|
s << (s.last ? s.last + t : t)
|
65
|
-
}.reverse.find { |t| config[target = t.to_sym] }
|
65
|
+
}.reverse.find { |t| target_config = config[target = t.to_sym] }
|
66
66
|
end or abort "Config not found for target: #{target}."
|
67
67
|
|
68
68
|
input = options[:input]
|
data/lib/athena/formats.rb
CHANGED
data/lib/athena/formats/dbm.rb
CHANGED
@@ -28,21 +28,58 @@
|
|
28
28
|
###############################################################################
|
29
29
|
#++
|
30
30
|
|
31
|
-
require 'iconv'
|
32
31
|
require 'athena'
|
32
|
+
require 'nuggets/midos'
|
33
33
|
|
34
34
|
module Athena::Formats
|
35
35
|
|
36
36
|
class DBM < Base
|
37
37
|
|
38
|
-
|
39
|
-
|
38
|
+
RECORD_SEPARATOR = Nuggets::Midos::Parser::DEFAULT_RS
|
39
|
+
FIELD_SEPARATOR = Nuggets::Midos::Parser::DEFAULT_FS
|
40
|
+
VALUE_SEPARATOR = Nuggets::Midos::Parser::DEFAULT_VS
|
41
|
+
|
42
|
+
TO_LATIN1 = begin
|
43
|
+
require 'iconv'
|
44
|
+
rescue LoadError
|
45
|
+
Object.new.tap { |x|
|
46
|
+
if ENV['ATHENA_DBM_NOCONV']
|
47
|
+
def x.iconv(s); s; end
|
48
|
+
else
|
49
|
+
def x.iconv(s); s.encode('iso-8859-1', 'utf-8'); end
|
50
|
+
end
|
51
|
+
}
|
52
|
+
else
|
53
|
+
iconv = Iconv.new('latin1//TRANSLIT//IGNORE', 'utf-8')
|
54
|
+
def iconv.iconv(s); s; end if ENV['ATHENA_DBM_NOCONV']
|
55
|
+
iconv
|
56
|
+
end
|
57
|
+
|
58
|
+
attr_reader :dbm_parser
|
59
|
+
|
60
|
+
def parse(input, &block)
|
61
|
+
num = 0
|
62
|
+
|
63
|
+
dbm_parser.parse(input) { |id, doc|
|
64
|
+
Athena::Record.new(id, block) { |record|
|
65
|
+
config.each { |element, field_config|
|
66
|
+
Array(doc[element]).each { |value|
|
67
|
+
record.update(element, value, field_config)
|
68
|
+
}
|
69
|
+
}
|
70
|
+
}
|
40
71
|
|
41
|
-
|
42
|
-
|
72
|
+
num += 1
|
73
|
+
}
|
74
|
+
|
75
|
+
num
|
76
|
+
end
|
43
77
|
|
44
78
|
def convert(record)
|
45
|
-
|
79
|
+
rs, fs, vs, crlf_re, iconv =
|
80
|
+
RECORD_SEPARATOR, FIELD_SEPARATOR, VALUE_SEPARATOR, CRLF_RE, TO_LATIN1
|
81
|
+
|
82
|
+
dbm = ["ID#{fs}#{record.id}"]
|
46
83
|
|
47
84
|
record.struct.each { |field, struct|
|
48
85
|
struct_values = struct[:values]
|
@@ -53,22 +90,30 @@ module Athena::Formats
|
|
53
90
|
|
54
91
|
struct_values[element].each { |value|
|
55
92
|
if value
|
56
|
-
value = value.strip.gsub(
|
93
|
+
value = value.strip.gsub(crlf_re, ' ')
|
57
94
|
values << value unless value.empty?
|
58
95
|
end
|
59
96
|
}
|
60
97
|
|
61
|
-
values.empty? ? struct[:empty] : values.join(
|
98
|
+
values.empty? ? struct[:empty] : values.join(vs)
|
62
99
|
}
|
63
100
|
|
64
|
-
dbm << "#{field.to_s.upcase}
|
101
|
+
dbm << "#{field.to_s.upcase}#{fs}#{iconv.iconv(struct[:string] % strings)}"
|
65
102
|
}
|
66
103
|
|
67
|
-
dbm <<
|
104
|
+
dbm << rs << CRLF
|
68
105
|
|
69
106
|
dbm.join(CRLF)
|
70
107
|
end
|
71
108
|
|
109
|
+
private
|
110
|
+
|
111
|
+
def init_in(*)
|
112
|
+
@__record_element_ok__ = [String, nil]
|
113
|
+
super
|
114
|
+
@dbm_parser = Nuggets::Midos::Parser.new(:key => record_element)
|
115
|
+
end
|
116
|
+
|
72
117
|
end
|
73
118
|
|
74
119
|
Midos = DBM
|
data/lib/athena/formats/lingo.rb
CHANGED
data/lib/athena/formats/sql.rb
CHANGED
data/lib/athena/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: athena
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jens Wille
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-04-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: builder
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - '>='
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.9.
|
61
|
+
version: 0.9.2
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - '>='
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0.9.
|
68
|
+
version: 0.9.2
|
69
69
|
description: Convert database files to various formats.
|
70
70
|
email: jens.wille@gmail.com
|
71
71
|
executables:
|
@@ -97,8 +97,9 @@ files:
|
|
97
97
|
- example/dump-my.sql
|
98
98
|
- example/dump-pg.sql
|
99
99
|
- example/example.xml
|
100
|
+
- example/midos-ex.dbm
|
100
101
|
- example/sisis-ex.txt
|
101
|
-
homepage: http://
|
102
|
+
homepage: http://github.com/blackwinter/athena
|
102
103
|
licenses: []
|
103
104
|
metadata: {}
|
104
105
|
post_install_message:
|
@@ -108,7 +109,7 @@ rdoc_options:
|
|
108
109
|
- --line-numbers
|
109
110
|
- --all
|
110
111
|
- --title
|
111
|
-
- athena Application documentation (v0.2.
|
112
|
+
- athena Application documentation (v0.2.5)
|
112
113
|
- --main
|
113
114
|
- README
|
114
115
|
require_paths:
|
@@ -124,7 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
124
125
|
- !ruby/object:Gem::Version
|
125
126
|
version: '0'
|
126
127
|
requirements: []
|
127
|
-
rubyforge_project:
|
128
|
+
rubyforge_project:
|
128
129
|
rubygems_version: 2.0.3
|
129
130
|
signing_key:
|
130
131
|
specification_version: 4
|