oddb2xml 1.7.3 → 1.7.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +13 -5
- data/.travis.yml +7 -1
- data/Gemfile +1 -15
- data/Gemfile.lock +40 -33
- data/History.txt +15 -7
- data/Rakefile +9 -32
- data/bin/oddb2xml +10 -0
- data/lib/oddb2xml/builder.rb +43 -15
- data/lib/oddb2xml/cli.rb +2 -1
- data/lib/oddb2xml/compressor.rb +2 -2
- data/lib/oddb2xml/downloader.rb +3 -3
- data/lib/oddb2xml/extractor.rb +41 -6
- data/lib/oddb2xml/version.rb +1 -1
- data/oddb2xml.gemspec +35 -0
- data/spec/extractor_spec.rb +33 -6
- metadata +99 -45
- data/.gemtest +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
NjdkN2Q1MWNlY2EzMmNmNTZiNWJmYWM3N2Q1ZWM5N2NlNjU5MDhkMw==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
OTRiMzM1OTUyN2ZhYjhiNTg2NzQ3Mzg3MzhkMjk5NDgxNzNmZmJmMQ==
|
5
7
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
ZmU3MzM1ZDY3M2VlZGRiMjJmNDQ3OTBkM2FhNmMwOTZiNDkyODY2ODgzNTEx
|
10
|
+
NDlkNTc1OTc2MzZhZTY2YTc3NzZhZWNlNjMyYzk1Njg4NmI1N2EyZjE2MTkz
|
11
|
+
NWVlMDhkYjBkMDQ3ZmNhNmVkZjViMzhkMDZkYzM2NzUzZmQxM2U=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
YTk3ZGY1M2MyZWMyODBmNmYyOGNiNGUyNmU0MWExMDA2ODMyZGNhNzAwYmM2
|
14
|
+
OTRiN2UwOTM3NDU4ZjAzNWZmYjI0MmU4NGM5NzcxNDA2YjQzMjNmMTRkMjc2
|
15
|
+
MTcyM2MzNjcyMGYwYzkxNGQwYzQzMWZhNjFhYWFhZjgzOTFiOWY=
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
@@ -1,20 +1,6 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
|
-
|
4
|
-
gem 'archive-tar-minitar'
|
5
|
-
gem 'mechanize', '~> 2.5.1'
|
6
|
-
gem 'nokogiri', '~> 1.5.10'
|
7
|
-
gem 'savon', '>= 2.0'
|
8
|
-
gem 'spreadsheet'
|
9
|
-
gem 'rubyXL', '1.2.10'
|
10
|
-
|
11
|
-
group :development do
|
12
|
-
gem 'rspec'
|
13
|
-
gem 'webmock'
|
14
|
-
|
15
|
-
gem 'hoe', '>= 3.4'
|
16
|
-
gem 'rdoc'
|
17
|
-
end
|
3
|
+
gemspec
|
18
4
|
|
19
5
|
group :debugger do
|
20
6
|
gem 'pry-debugger'
|
data/Gemfile.lock
CHANGED
@@ -1,29 +1,39 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
oddb2xml (1.7.4)
|
5
|
+
archive-tar-minitar
|
6
|
+
mechanize (~> 2.5.1)
|
7
|
+
nokogiri (~> 1.5.10)
|
8
|
+
rubyXL (~> 2.5)
|
9
|
+
rubyzip (~> 1.0)
|
10
|
+
savon (~> 2.0)
|
11
|
+
spreadsheet
|
12
|
+
|
1
13
|
GEM
|
2
14
|
remote: https://rubygems.org/
|
3
15
|
specs:
|
4
|
-
addressable (2.3.
|
5
|
-
akami (1.2.
|
16
|
+
addressable (2.3.6)
|
17
|
+
akami (1.2.1)
|
6
18
|
gyoku (>= 0.4.0)
|
7
|
-
nokogiri
|
19
|
+
nokogiri
|
8
20
|
archive-tar-minitar (0.5.2)
|
9
21
|
builder (3.2.2)
|
10
22
|
coderay (1.1.0)
|
11
23
|
columnize (0.3.6)
|
12
|
-
crack (0.4.
|
13
|
-
safe_yaml (~> 0.
|
14
|
-
debugger (1.6.
|
24
|
+
crack (0.4.2)
|
25
|
+
safe_yaml (~> 1.0.0)
|
26
|
+
debugger (1.6.6)
|
15
27
|
columnize (>= 0.3.1)
|
16
28
|
debugger-linecache (~> 1.2.0)
|
17
|
-
debugger-ruby_core_source (~> 1.3.
|
29
|
+
debugger-ruby_core_source (~> 1.3.2)
|
18
30
|
debugger-linecache (1.2.0)
|
19
|
-
debugger-ruby_core_source (1.3.
|
31
|
+
debugger-ruby_core_source (1.3.2)
|
20
32
|
diff-lcs (1.2.5)
|
21
|
-
domain_name (0.5.
|
33
|
+
domain_name (0.5.18)
|
22
34
|
unf (>= 0.0.5, < 1.0.0)
|
23
35
|
gyoku (1.1.1)
|
24
36
|
builder (>= 2.1.2)
|
25
|
-
hoe (3.7.4)
|
26
|
-
rake (>= 0.8, < 11.0)
|
27
37
|
httpi (2.1.0)
|
28
38
|
rack
|
29
39
|
rubyntlm (~> 0.3.2)
|
@@ -39,11 +49,11 @@ GEM
|
|
39
49
|
method_source (0.8.2)
|
40
50
|
mime-types (1.25.1)
|
41
51
|
net-http-digest_auth (1.4)
|
42
|
-
net-http-persistent (2.9)
|
52
|
+
net-http-persistent (2.9.4)
|
43
53
|
nokogiri (1.5.11)
|
44
54
|
nori (2.3.0)
|
45
55
|
ntlm-http (0.1.1)
|
46
|
-
pry (0.9.12.
|
56
|
+
pry (0.9.12.6)
|
47
57
|
coderay (~> 1.0)
|
48
58
|
method_source (~> 0.8)
|
49
59
|
slop (~> 3.4)
|
@@ -51,23 +61,25 @@ GEM
|
|
51
61
|
debugger (~> 1.3)
|
52
62
|
pry (~> 0.9.10)
|
53
63
|
rack (1.5.2)
|
54
|
-
rake (10.
|
55
|
-
rdoc (4.1.
|
64
|
+
rake (10.2.2)
|
65
|
+
rdoc (4.1.1)
|
56
66
|
json (~> 1.4)
|
57
67
|
rspec (2.14.1)
|
58
68
|
rspec-core (~> 2.14.0)
|
59
69
|
rspec-expectations (~> 2.14.0)
|
60
70
|
rspec-mocks (~> 2.14.0)
|
61
|
-
rspec-core (2.14.
|
62
|
-
rspec-expectations (2.14.
|
71
|
+
rspec-core (2.14.8)
|
72
|
+
rspec-expectations (2.14.5)
|
63
73
|
diff-lcs (>= 1.1.3, < 2.0)
|
64
|
-
rspec-mocks (2.14.
|
74
|
+
rspec-mocks (2.14.6)
|
65
75
|
ruby-ole (1.2.11.7)
|
66
|
-
rubyXL (
|
76
|
+
rubyXL (2.5.0)
|
77
|
+
nokogiri (>= 1.4.4)
|
78
|
+
rubyzip (>= 1.0.0)
|
67
79
|
rubyntlm (0.3.4)
|
68
|
-
rubyzip (1.
|
69
|
-
safe_yaml (0.
|
70
|
-
savon (2.
|
80
|
+
rubyzip (1.1.2)
|
81
|
+
safe_yaml (1.0.1)
|
82
|
+
savon (2.4.0)
|
71
83
|
akami (~> 1.2.0)
|
72
84
|
builder (>= 2.1.2)
|
73
85
|
gyoku (~> 1.1.0)
|
@@ -75,8 +87,8 @@ GEM
|
|
75
87
|
nokogiri (>= 1.4.0)
|
76
88
|
nori (~> 2.3.0)
|
77
89
|
wasabi (~> 3.2.2)
|
78
|
-
slop (3.
|
79
|
-
spreadsheet (0.9.
|
90
|
+
slop (3.5.0)
|
91
|
+
spreadsheet (0.9.7)
|
80
92
|
ruby-ole (>= 1.0)
|
81
93
|
unf (0.1.3)
|
82
94
|
unf_ext
|
@@ -85,7 +97,7 @@ GEM
|
|
85
97
|
httpi (~> 2.0)
|
86
98
|
mime-types (< 2.0.0)
|
87
99
|
nokogiri (>= 1.4.0)
|
88
|
-
webmock (1.
|
100
|
+
webmock (1.17.4)
|
89
101
|
addressable (>= 2.2.7)
|
90
102
|
crack (>= 0.3.2)
|
91
103
|
webrobots (0.1.1)
|
@@ -94,15 +106,10 @@ PLATFORMS
|
|
94
106
|
ruby
|
95
107
|
|
96
108
|
DEPENDENCIES
|
97
|
-
|
98
|
-
|
99
|
-
mechanize (~> 2.5.1)
|
100
|
-
nokogiri (~> 1.5.10)
|
109
|
+
bundler
|
110
|
+
oddb2xml!
|
101
111
|
pry-debugger
|
112
|
+
rake
|
102
113
|
rdoc
|
103
114
|
rspec
|
104
|
-
rubyXL
|
105
|
-
rubyzip (= 1.0.0)
|
106
|
-
savon (>= 2.0)
|
107
|
-
spreadsheet
|
108
115
|
webmock
|
data/History.txt
CHANGED
@@ -1,29 +1,37 @@
|
|
1
|
-
=== 1.7.
|
1
|
+
=== 1.7.5 / 01.04.2014
|
2
|
+
|
3
|
+
* Added option -ae
|
4
|
+
|
5
|
+
=== 1.7.4 / 01.04.2014
|
6
|
+
|
7
|
+
* Added option --extended
|
8
|
+
|
9
|
+
=== 1.7.3 / 27.02.2014
|
2
10
|
|
3
11
|
* Added rubyzip 1.0.0 as dependency for RubyXL in Rakefile ;/
|
4
12
|
|
5
|
-
=== 1.7.2 / 27.02.
|
13
|
+
=== 1.7.2 / 27.02.2014
|
6
14
|
|
7
15
|
* Added rubyzip 1.0.0 as dependency for RubyXL in Gemfile.lock ;/
|
8
16
|
|
9
|
-
=== 1.7.1 / 27.02.
|
17
|
+
=== 1.7.1 / 27.02.2014
|
10
18
|
|
11
19
|
* Added rubyzip 1.0.0 as dependency for RubyXL ;/
|
12
20
|
|
13
|
-
=== 1.7.0 / 27.02.
|
21
|
+
=== 1.7.0 / 27.02.2014
|
14
22
|
|
15
23
|
* Added rubyXL 1.2.10 as dependency version
|
16
24
|
|
17
|
-
=== 1.6.9 / 07.01.
|
25
|
+
=== 1.6.9 / 07.01.2014
|
18
26
|
|
19
27
|
* Updated Rakefile for rubyzip ~> 0.9.9
|
20
28
|
* Remove *.xls/x-Files after extraction
|
21
29
|
|
22
|
-
=== 1.6.8 / 07.01.
|
30
|
+
=== 1.6.8 / 07.01.2014
|
23
31
|
|
24
32
|
* Updated Rakefile to include rubyXL
|
25
33
|
|
26
|
-
=== 1.6.7 / 07.01.
|
34
|
+
=== 1.6.7 / 07.01.2014
|
27
35
|
|
28
36
|
* Adapted to swissmedic xlsx files
|
29
37
|
|
data/Rakefile
CHANGED
@@ -1,36 +1,13 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# encoding: utf-8
|
3
|
+
lib = File.expand_path('../lib', __FILE__)
|
4
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
+
require 'oddb2xml/version'
|
6
|
+
require "bundler/gem_tasks"
|
3
7
|
|
4
|
-
|
5
|
-
require 'hoe'
|
8
|
+
# dependencies are now declared in oddb2xml.gemspec
|
6
9
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
# Hoe.plugin :racc
|
12
|
-
# Hoe.plugin :rubyforge
|
13
|
-
|
14
|
-
Hoe.spec 'oddb2xml' do
|
15
|
-
self.author = "Yasuhiro Asaka, Zeno R.R. Davatz" # gem.authors
|
16
|
-
self.email = "yasaka@ywesee.com, zdavatz@ywesee.com"
|
17
|
-
self.description = "oddb2xml creates xml files using swissINDEX, BAG-XML and Swissmedic."
|
18
|
-
self.summary = "oddb2xml creates xml files."
|
19
|
-
self.urls = ["https://github.com/zdavatz/oddb2xml"] # gem.homepage
|
20
|
-
|
21
|
-
# gem.add_runtime_dependency
|
22
|
-
self.extra_deps << ['rubyzip', '~> 1.0.0']
|
23
|
-
self.extra_deps << ['archive-tar-minitar']
|
24
|
-
self.extra_deps << ['mechanize', '~> 2.5.1']
|
25
|
-
self.extra_deps << ['nokogiri']
|
26
|
-
self.extra_deps << ['savon', '>= 2.0']
|
27
|
-
self.extra_deps << ['spreadsheet']
|
28
|
-
self.extra_deps << ['rubyXL', '~> 1.2.10']
|
29
|
-
|
30
|
-
# gem.add_development_dependency
|
31
|
-
self.extra_dev_deps << ['rspec']
|
32
|
-
self.extra_dev_deps << ['webmock']
|
33
|
-
|
34
|
-
self.extra_dev_deps << ['hoe', '>= 3.4']
|
35
|
-
self.extra_dev_deps << ['rdoc']
|
36
|
-
end
|
10
|
+
desc 'Offer a gem task like hoe'
|
11
|
+
task :gem => :build do
|
12
|
+
Rake::Task[:build].invoke
|
13
|
+
end
|
data/bin/oddb2xml
CHANGED
@@ -15,7 +15,10 @@ Usage:
|
|
15
15
|
oddb2xml [option]
|
16
16
|
produced files are found under data
|
17
17
|
-a T, --append=T Additional target. T, only 'nonpharma' is available.
|
18
|
+
-ae Combine options nonpharma, extended, prices from ZurRose to create a oddb_with_migel.dat file.
|
18
19
|
-c F, --compress=F Compress format F. {tar.gz|zip}
|
20
|
+
-e --extended Get also all articles (including prices) from zurrose which have an EAN13 code.
|
21
|
+
(only valid if -p zurrose given)
|
19
22
|
-f F, --format=F File format F, default is xml. {xml|dat}
|
20
23
|
If F is given, -o option is ignored.
|
21
24
|
-i I, --include=I Include target option for 'dat' format. only 'ean14' is available.
|
@@ -38,6 +41,7 @@ opts = {
|
|
38
41
|
:fi => false,
|
39
42
|
:adr => false,
|
40
43
|
:nonpharma => false,
|
44
|
+
:extended => false,
|
41
45
|
:compress_ext => nil,
|
42
46
|
:format => :xml,
|
43
47
|
:tag_suffix => nil,
|
@@ -47,7 +51,13 @@ opts = {
|
|
47
51
|
}
|
48
52
|
|
49
53
|
parser.on('-a v', '--append v', /^nonpharma$/) {|v| opts[:nonpharma] = true }
|
54
|
+
parser.on('-ae') {|v| opts[:nonpharma] = true;
|
55
|
+
opts[:extended] = true;
|
56
|
+
opts[:format] = :dat;
|
57
|
+
opts[:price] = :zurrose;
|
58
|
+
}
|
50
59
|
parser.on('-c v', '--compress v', /^tar\.gz|zip$/){|v| opts[:compress_ext] = v }
|
60
|
+
parser.on('-e', '--extended') {|v| opts[:extended] = true }
|
51
61
|
parser.on('-f v', '--format v', /^xml|dat$/) {|v| opts[:format] = v.intern }
|
52
62
|
parser.on('-o v', '--option v', /^fi$/) {|v| opts[:fi] = true }
|
53
63
|
parser.on('-i v', '--include v', /^ean14$/) {|v| opts[:ean14] = true }
|
data/lib/oddb2xml/builder.rb
CHANGED
@@ -99,12 +99,37 @@ module Oddb2xml
|
|
99
99
|
end
|
100
100
|
@articles << obj
|
101
101
|
end
|
102
|
+
if @options[:extended]
|
103
|
+
nrAdded = 0
|
104
|
+
@prices.each{
|
105
|
+
|ean13, info|
|
106
|
+
obj = {}
|
107
|
+
%w[de fr].each do |lang|
|
108
|
+
next if @index[lang] and @index[lang][ean13]
|
109
|
+
entry = {
|
110
|
+
:desc => info[:description],
|
111
|
+
:status => 'I', # or it will not be emitted in the dat
|
112
|
+
:atc_code => '',
|
113
|
+
:ean => ean13,
|
114
|
+
:lang => lang.capitalize,
|
115
|
+
:pharmacode => info[:pharmacode],
|
116
|
+
:price => info[:price],
|
117
|
+
:pub_price => info[:pub_price],
|
118
|
+
:type => info[:type],
|
119
|
+
}
|
120
|
+
obj[lang.intern] = [entry]
|
121
|
+
end
|
122
|
+
nrAdded += 1
|
123
|
+
@articles << obj
|
124
|
+
}
|
125
|
+
end
|
102
126
|
end
|
103
127
|
end
|
104
128
|
def prepare_substances
|
105
129
|
unless @substances
|
106
130
|
@substances = []
|
107
131
|
@items.values.uniq.each do |seq|
|
132
|
+
next unless seq[:substances]
|
108
133
|
seq[:substances].each do |sub|
|
109
134
|
@substances << sub[:name]
|
110
135
|
end
|
@@ -117,6 +142,7 @@ module Oddb2xml
|
|
117
142
|
unless @limitations
|
118
143
|
limitations = []
|
119
144
|
@items.values.uniq.each do |seq|
|
145
|
+
next unless seq[:packages]
|
120
146
|
seq[:packages].each_value do |pac|
|
121
147
|
limitations += pac[:limitations]
|
122
148
|
end
|
@@ -539,7 +565,7 @@ module Oddb2xml
|
|
539
565
|
) {
|
540
566
|
@articles.each do |obj|
|
541
567
|
obj[:de].each_with_index do |de_idx, i|
|
542
|
-
|
568
|
+
fr_idx = obj[:fr][i] # swissindex FR
|
543
569
|
pac,no8 = nil,de_idx[:ean][4..11] # BAG-XML(SL/LS)
|
544
570
|
ppac = nil # Packungen
|
545
571
|
ean = de_idx[:ean]
|
@@ -547,7 +573,7 @@ module Oddb2xml
|
|
547
573
|
pac = obj[:seq][:packages][de_idx[:pharmacode]]
|
548
574
|
pac = obj[:seq][:packages][ean] unless pac
|
549
575
|
else
|
550
|
-
pac = @items[ean][:packages][ean] if @items and @items[ean]
|
576
|
+
pac = @items[ean][:packages][ean] if @items and @items[ean] and @items[ean][:packages]
|
551
577
|
end
|
552
578
|
if no8
|
553
579
|
ppac = ((_ppac = @packs[no8.intern] and !_ppac[:is_tier]) ? _ppac : nil)
|
@@ -599,11 +625,11 @@ module Oddb2xml
|
|
599
625
|
xml.BG(flag ? 'Y' : 'N')
|
600
626
|
end
|
601
627
|
#xml.EXP
|
602
|
-
xml.QTY de_idx[:additional_desc]
|
603
|
-
xml.DSCRD de_idx[:desc]
|
604
|
-
xml.DSCRF fr_idx[:desc]
|
605
|
-
xml.SORTD de_idx[:desc].upcase
|
606
|
-
xml.SORTF fr_idx[:desc].upcase
|
628
|
+
xml.QTY de_idx[:additional_desc] if de_idx[:additional_desc] and not de_idx[:additional_desc].empty?
|
629
|
+
xml.DSCRD de_idx[:desc] if de_idx[:desc] and not de_idx[:desc].empty?
|
630
|
+
xml.DSCRF fr_idx[:desc] if fr_idx[:desc] and not fr_idx[:desc].empty?
|
631
|
+
xml.SORTD de_idx[:desc].upcase if de_idx[:desc] and not de_idx[:desc].empty?
|
632
|
+
xml.SORTF fr_idx[:desc].upcase if fr_idx[:desc] and not fr_idx[:desc].empty?
|
607
633
|
#xml.QTYUD
|
608
634
|
#xml.QTYUF
|
609
635
|
#xml.IMG
|
@@ -630,8 +656,8 @@ module Oddb2xml
|
|
630
656
|
#xml.BAGSL
|
631
657
|
#xml.BAGSLC
|
632
658
|
#xml.LOACD
|
633
|
-
if de_idx[:status] ==
|
634
|
-
xml.OUTSAL de_idx[:stat_date]
|
659
|
+
if de_idx[:status] == 'I'
|
660
|
+
xml.OUTSAL de_idx[:stat_date] if de_idx[:stat_date] and not de_idx[:stat_date].empty?
|
635
661
|
end
|
636
662
|
#xml.STTOX
|
637
663
|
#xml.NOTI
|
@@ -647,7 +673,7 @@ module Oddb2xml
|
|
647
673
|
#xml.DEL
|
648
674
|
xml.ARTCOMP {
|
649
675
|
# use ean13(gln) as COMPNO
|
650
|
-
xml.COMPNO de_idx[:company_ean]
|
676
|
+
xml.COMPNO de_idx[:company_ean] if de_idx[:company_ean] and not de_idx[:company_ean].empty?
|
651
677
|
#xml.ROLE
|
652
678
|
#xml.ARTNO1
|
653
679
|
#xml.ARTNO2
|
@@ -889,6 +915,7 @@ module Oddb2xml
|
|
889
915
|
else
|
890
916
|
# fallback via EAN
|
891
917
|
bag_entry_via_ean = @items.values.select do |i|
|
918
|
+
next unless i[:packages]
|
892
919
|
i[:packages].values.select {|_pac| _pac[:ean] == de_idx[:ean] }.length != 0
|
893
920
|
end.length
|
894
921
|
if bag_entry_via_ean > 0
|
@@ -960,15 +987,16 @@ module Oddb2xml
|
|
960
987
|
obj[:de].each_with_index do |idx, i|
|
961
988
|
ean = idx[:ean]
|
962
989
|
next if ((ean.to_s.length != 13) and !ean14)
|
990
|
+
next if idx[:type] == :nonpharma
|
963
991
|
row = ''
|
964
992
|
# Oddb2tdat.parse
|
965
993
|
if idx[:status] =~ /A|I/
|
966
994
|
pac,no8 = nil,nil
|
967
|
-
if obj[:seq]
|
995
|
+
if obj[:seq] and obj[:seq][:packages]
|
968
996
|
pac = obj[:seq][:packages][idx[:pharmacode]]
|
969
997
|
pac = obj[:seq][:packages][ean] unless pac
|
970
998
|
else
|
971
|
-
pac = @items[ean][:packages][ean] if @items and @items[ean]
|
999
|
+
pac = @items[ean][:packages][ean] if @items and @items[ean] and @items[ean][:packages]
|
972
1000
|
end
|
973
1001
|
# :swissmedic_numbers
|
974
1002
|
if pac
|
@@ -980,7 +1008,7 @@ module Oddb2xml
|
|
980
1008
|
end
|
981
1009
|
row << "%#{DAT_LEN[:RECA]}s" % '11'
|
982
1010
|
row << "%#{DAT_LEN[:CMUT]}s" % if (phar = idx[:pharmacode] and phar.size > 3) # does not check expiration_date
|
983
|
-
idx[:status] ==
|
1011
|
+
idx[:status] == 'I' ? '3' : '1'
|
984
1012
|
else
|
985
1013
|
'3'
|
986
1014
|
end
|
@@ -988,7 +1016,7 @@ module Oddb2xml
|
|
988
1016
|
abez = ( # de name
|
989
1017
|
idx[:desc].to_s + " " +
|
990
1018
|
(pac ? pac[:name_de].to_s : '') +
|
991
|
-
idx[:additional_desc]
|
1019
|
+
(idx[:additional_desc] ? idx[:additional_desc] : '')
|
992
1020
|
).gsub(/"/, '')
|
993
1021
|
row << format_name(abez)
|
994
1022
|
row << "%#{DAT_LEN[:PRMO]}s" % (pac ? format_price(pac[:prices][:exf_price][:price].to_s) : ('0' * DAT_LEN[:PRMO]))
|
@@ -1048,7 +1076,7 @@ module Oddb2xml
|
|
1048
1076
|
row << "%0#{DAT_LEN[:PHAR]}d" % idx[:pharmacode].to_i
|
1049
1077
|
abez = ( # de name
|
1050
1078
|
idx[:desc].to_s + " " +
|
1051
|
-
|
1079
|
+
(idx[:additional_desc] ? idx[:additional_desc] : '')
|
1052
1080
|
).gsub(/"/, '')
|
1053
1081
|
row << format_name(abez)
|
1054
1082
|
row << "%#{DAT_LEN[:PRMO]}s" % ('0' * DAT_LEN[:PRMO])
|
data/lib/oddb2xml/cli.rb
CHANGED
@@ -237,7 +237,8 @@ module Oddb2xml
|
|
237
237
|
downloader = ZurroseDownloader.new(@options, @options[:transfer_dat])
|
238
238
|
xml = downloader.download
|
239
239
|
@mutex.synchronize do
|
240
|
-
hsh = ZurroseExtractor.new(xml).to_hash
|
240
|
+
hsh = ZurroseExtractor.new(xml, @options[:extended]).to_hash
|
241
|
+
@items = hsh if @options[:extended]
|
241
242
|
@prices = hsh
|
242
243
|
end
|
243
244
|
end
|
data/lib/oddb2xml/compressor.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'zlib'
|
4
4
|
require 'archive/tar/minitar'
|
5
|
-
require 'zip
|
5
|
+
require 'zip'
|
6
6
|
|
7
7
|
module Oddb2xml
|
8
8
|
class Compressor
|
@@ -27,7 +27,7 @@ module Oddb2xml
|
|
27
27
|
tgz = Zlib::GzipWriter.new(File.open(@compress_file, 'wb'))
|
28
28
|
Minitar.pack(@contents, tgz)
|
29
29
|
when /\.zip$/
|
30
|
-
Zip::
|
30
|
+
Zip::File.open(@compress_file, Zip::File::CREATE) do |zip|
|
31
31
|
@contents.each do |file|
|
32
32
|
filename = File.basename(file)
|
33
33
|
zip.add(filename, file)
|
data/lib/oddb2xml/downloader.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
require 'mechanize'
|
4
|
-
require 'zip
|
4
|
+
require 'zip'
|
5
5
|
require 'savon'
|
6
6
|
|
7
7
|
module Oddb2xml
|
@@ -64,7 +64,7 @@ module Oddb2xml
|
|
64
64
|
def read_xml_form_zip(target, zipfile)
|
65
65
|
xml = ''
|
66
66
|
if RUBY_PLATFORM =~ /mswin|mingw|bccwin|cygwin/i
|
67
|
-
Zip::
|
67
|
+
Zip::File.open(zipfile) do |zipFile|
|
68
68
|
zipFile.each do |entry|
|
69
69
|
if entry.name =~ target
|
70
70
|
io = entry.get_input_stream
|
@@ -78,7 +78,7 @@ module Oddb2xml
|
|
78
78
|
end
|
79
79
|
end
|
80
80
|
else
|
81
|
-
Zip::
|
81
|
+
Zip::File.foreach(zipfile) do |entry|
|
82
82
|
if entry.name =~ target
|
83
83
|
entry.get_input_stream { |io| xml = io.read }
|
84
84
|
end
|
data/lib/oddb2xml/extractor.rb
CHANGED
@@ -415,20 +415,55 @@ module Oddb2xml
|
|
415
415
|
end
|
416
416
|
end
|
417
417
|
class ZurroseExtractor < Extractor
|
418
|
-
|
418
|
+
# see http://dev.ywesee.com/Bbmb/TransferDat
|
419
|
+
def initialize(dat, extended = false)
|
420
|
+
@@extended = extended
|
421
|
+
@@items_without_ean13s ||= 0
|
422
|
+
@@duplicated_ean13s ||= 0
|
423
|
+
@@zur_rose_items ||= 0
|
419
424
|
@io = StringIO.new(dat) if dat
|
420
425
|
end
|
421
426
|
def to_hash
|
422
427
|
data = {}
|
423
428
|
while line = @io.gets
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
+
if @@extended
|
430
|
+
next unless line =~ /(\d{13})(\d{1})\r\n$/
|
431
|
+
else
|
432
|
+
next unless line =~ /(7680\d{9})(\d{1})\r\n$/
|
433
|
+
end
|
434
|
+
pharma_code = line[3..9]
|
435
|
+
if $1.to_s == '0000000000000'
|
436
|
+
@@items_without_ean13s += 1
|
437
|
+
ean13 = '000000' + pharma_code # dummy ean13
|
438
|
+
else
|
439
|
+
ean13 = $1.to_s
|
440
|
+
end
|
441
|
+
if data[ean13]
|
442
|
+
puts "Duplicate ean13 #{ean13} in line \nact: #{line.chomp}\norg: #{data[ean13][:line]}"
|
443
|
+
@@items_without_ean13s -= 1
|
444
|
+
@@duplicated_ean13s += 1
|
445
|
+
next
|
446
|
+
end
|
447
|
+
data[ean13] = {
|
448
|
+
:line => line.chomp,
|
449
|
+
:ean => ean13,
|
450
|
+
:vat => $2.to_s,
|
451
|
+
:description => line[10..59], # .sub(/\s+$/, ''),
|
452
|
+
:additional_desc => '',
|
453
|
+
:pharmacode => pharma_code,
|
454
|
+
:price => sprintf("%.2f", line[60,6].gsub(/(\d{2})$/, '.\1').to_f),
|
455
|
+
:pub_price => sprintf("%.2f", line[66,6].gsub(/(\d{2})$/, '.\1').to_f),
|
456
|
+
:type => :nonpharma,
|
429
457
|
}
|
458
|
+
@@zur_rose_items += 1
|
430
459
|
end if @io
|
431
460
|
data
|
432
461
|
end
|
462
|
+
at_exit do
|
463
|
+
if defined?(@@extended) and @@extended
|
464
|
+
puts "Added #{@@items_without_ean13s} via pharmacodes of #{@@zur_rose_items} items when extracting the transfer.dat from \"Zur Rose\""
|
465
|
+
puts " found #{@@duplicated_ean13s} lines with duplicated ean13" if @@duplicated_ean13s > 0
|
466
|
+
end
|
467
|
+
end
|
433
468
|
end
|
434
469
|
end
|
data/lib/oddb2xml/version.rb
CHANGED
data/oddb2xml.gemspec
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'oddb2xml/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "oddb2xml"
|
8
|
+
spec.version = Oddb2xml::VERSION
|
9
|
+
spec.author = "Yasuhiro Asaka, Zeno R.R. Davatz"
|
10
|
+
spec.email = "yasaka@ywesee.com, zdavatz@ywesee.com"
|
11
|
+
spec.description = "oddb2xml creates xml files using swissINDEX, BAG-XML and Swissmedic."
|
12
|
+
spec.summary = "oddb2xml creates xml files."
|
13
|
+
spec.homepage = "https://github.com/zdavatz/oddb2xml"
|
14
|
+
spec.license = "GPL-v2"
|
15
|
+
spec.files = `git ls-files -z`.split("\x0")
|
16
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
17
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
|
+
spec.require_paths = ["lib"]
|
19
|
+
|
20
|
+
spec.add_dependency 'rubyzip', '~> 1.0'
|
21
|
+
spec.add_dependency 'archive-tar-minitar'
|
22
|
+
spec.add_dependency 'mechanize', '~> 2.5.1'
|
23
|
+
spec.add_dependency 'nokogiri', '~> 1.5.10'
|
24
|
+
spec.add_dependency 'savon', '~> 2.0'
|
25
|
+
spec.add_dependency 'spreadsheet'
|
26
|
+
spec.add_dependency 'rubyXL', '~> 2.5'
|
27
|
+
|
28
|
+
|
29
|
+
spec.add_development_dependency "bundler"
|
30
|
+
spec.add_development_dependency "rake"
|
31
|
+
spec.add_development_dependency "rspec"
|
32
|
+
spec.add_development_dependency "webmock"
|
33
|
+
spec.add_development_dependency "rdoc"
|
34
|
+
end
|
35
|
+
|
data/spec/extractor_spec.rb
CHANGED
@@ -133,27 +133,54 @@ describe Oddb2xml::ZurroseExtractor do
|
|
133
133
|
end
|
134
134
|
it { expect(subject.to_hash).to be_empty }
|
135
135
|
end
|
136
|
-
context 'when
|
136
|
+
context 'when expected line is given' do
|
137
137
|
subject do
|
138
138
|
dat = <<-DAT
|
139
|
-
1120020209ERYTRHOCIN I.V. Trockensub Fl 1g 001518002010300B080160000000000000002\r\n
|
140
139
|
1120020244FERRO-GRADUMET Depottabl 30 Stk 000895001090300C060710076803164401152\r\n
|
141
140
|
DAT
|
142
141
|
Oddb2xml::ZurroseExtractor.new(dat)
|
143
142
|
end
|
144
143
|
it { expect(subject.to_hash.keys.length).to eq(1) }
|
145
144
|
it { expect(subject.to_hash.keys.first).to eq("7680316440115") }
|
145
|
+
it { expect(subject.to_hash.values.first[:vat]).to eq("2") }
|
146
|
+
it { expect(subject.to_hash.values.first[:price]).to eq("8.95") }
|
146
147
|
end
|
147
|
-
context 'when
|
148
|
+
context 'when Estradiol Creme is given' do
|
148
149
|
subject do
|
149
150
|
dat = <<-DAT
|
150
|
-
|
151
|
+
1130921929OESTRADIOL Inj L�s 5 mg 10 Amp 1 ml 000940001630300B070820076802840708402\r\n
|
151
152
|
DAT
|
152
153
|
Oddb2xml::ZurroseExtractor.new(dat)
|
153
154
|
end
|
155
|
+
#it { expect(pp subject.to_hash) }
|
154
156
|
it { expect(subject.to_hash.keys.length).to eq(1) }
|
155
|
-
it { expect(subject.to_hash.keys.first).to eq("
|
157
|
+
it { expect(subject.to_hash.keys.first).to eq("7680284070840") }
|
156
158
|
it { expect(subject.to_hash.values.first[:vat]).to eq("2") }
|
157
|
-
it { expect(subject.to_hash.values.first[:price]).to eq("
|
159
|
+
it { expect(subject.to_hash.values.first[:price]).to eq("9.40") }
|
160
|
+
it { expect(subject.to_hash.values.first[:pub_price]).to eq("16.30") }
|
161
|
+
it { expect(subject.to_hash.values.first[:pharmacode]).to eq("0921929") }
|
162
|
+
end
|
163
|
+
context 'when SELSUN Shampoo is given' do
|
164
|
+
subject do
|
165
|
+
dat = <<-DAT
|
166
|
+
1120020652SELSUN Shampoo Susp 120 ml 001576002430300D100400076801723306812\r\n
|
167
|
+
DAT
|
168
|
+
Oddb2xml::ZurroseExtractor.new(dat)
|
169
|
+
end
|
170
|
+
it { expect(subject.to_hash.keys.length).to eq(1) }
|
171
|
+
it { expect(subject.to_hash.keys.first).to eq("7680172330681") }
|
172
|
+
it { expect(subject.to_hash.values.first[:vat]).to eq("2") }
|
173
|
+
it { expect(subject.to_hash.values.first[:price]).to eq("15.76") }
|
174
|
+
it { expect(subject.to_hash.values.first[:pub_price]).to eq("24.30") }
|
175
|
+
it { expect(subject.to_hash.values.first[:pharmacode]).to eq("0020652") }
|
176
|
+
|
158
177
|
end
|
178
|
+
|
179
|
+
x =%(
|
180
|
+
Record-Art 1 Länge 97
|
181
|
+
:vat => $2.to_s,
|
182
|
+
:price => sprintf("%.2f", line[60,6].gsub(/(\d{2})$/, '.\1').to_f),
|
183
|
+
:pub_price => sprintf("%.2f", line[66,6].gsub(/(\d{2})$/, '.\1').to_f),
|
184
|
+
=
|
185
|
+
)
|
159
186
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: oddb2xml
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.7.
|
4
|
+
version: 1.7.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yasuhiro Asaka, Zeno R.R. Davatz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-04-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubyzip
|
@@ -16,26 +16,26 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.0
|
19
|
+
version: '1.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.0
|
26
|
+
version: '1.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: archive-tar-minitar
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - '>='
|
31
|
+
- - ! '>='
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - '>='
|
38
|
+
- - ! '>='
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
@@ -56,42 +56,42 @@ dependencies:
|
|
56
56
|
name: nokogiri
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 1.5.10
|
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:
|
68
|
+
version: 1.5.10
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: savon
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ~>
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '2.0'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ~>
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '2.0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: spreadsheet
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - '>='
|
87
|
+
- - ! '>='
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0'
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - '>='
|
94
|
+
- - ! '>='
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
@@ -100,80 +100,90 @@ dependencies:
|
|
100
100
|
requirements:
|
101
101
|
- - ~>
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
103
|
+
version: '2.5'
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - ~>
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
110
|
+
version: '2.5'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: bundler
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- -
|
115
|
+
- - ! '>='
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: '
|
117
|
+
version: '0'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- -
|
122
|
+
- - ! '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rake
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ! '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ! '>='
|
123
137
|
- !ruby/object:Gem::Version
|
124
|
-
version: '
|
138
|
+
version: '0'
|
125
139
|
- !ruby/object:Gem::Dependency
|
126
140
|
name: rspec
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
128
142
|
requirements:
|
129
|
-
- - '>='
|
143
|
+
- - ! '>='
|
130
144
|
- !ruby/object:Gem::Version
|
131
145
|
version: '0'
|
132
146
|
type: :development
|
133
147
|
prerelease: false
|
134
148
|
version_requirements: !ruby/object:Gem::Requirement
|
135
149
|
requirements:
|
136
|
-
- - '>='
|
150
|
+
- - ! '>='
|
137
151
|
- !ruby/object:Gem::Version
|
138
152
|
version: '0'
|
139
153
|
- !ruby/object:Gem::Dependency
|
140
154
|
name: webmock
|
141
155
|
requirement: !ruby/object:Gem::Requirement
|
142
156
|
requirements:
|
143
|
-
- - '>='
|
157
|
+
- - ! '>='
|
144
158
|
- !ruby/object:Gem::Version
|
145
159
|
version: '0'
|
146
160
|
type: :development
|
147
161
|
prerelease: false
|
148
162
|
version_requirements: !ruby/object:Gem::Requirement
|
149
163
|
requirements:
|
150
|
-
- - '>='
|
164
|
+
- - ! '>='
|
151
165
|
- !ruby/object:Gem::Version
|
152
166
|
version: '0'
|
153
167
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
168
|
+
name: rdoc
|
155
169
|
requirement: !ruby/object:Gem::Requirement
|
156
170
|
requirements:
|
157
|
-
- - '>='
|
171
|
+
- - ! '>='
|
158
172
|
- !ruby/object:Gem::Version
|
159
|
-
version: '
|
173
|
+
version: '0'
|
160
174
|
type: :development
|
161
175
|
prerelease: false
|
162
176
|
version_requirements: !ruby/object:Gem::Requirement
|
163
177
|
requirements:
|
164
|
-
- - '>='
|
178
|
+
- - ! '>='
|
165
179
|
- !ruby/object:Gem::Version
|
166
|
-
version: '
|
180
|
+
version: '0'
|
167
181
|
description: oddb2xml creates xml files using swissINDEX, BAG-XML and Swissmedic.
|
168
182
|
email: yasaka@ywesee.com, zdavatz@ywesee.com
|
169
183
|
executables:
|
170
184
|
- oddb2xml
|
171
185
|
extensions: []
|
172
|
-
extra_rdoc_files:
|
173
|
-
- History.txt
|
174
|
-
- Manifest.txt
|
175
|
-
- QA.md
|
176
|
-
- README.md
|
186
|
+
extra_rdoc_files: []
|
177
187
|
files:
|
178
188
|
- .gitignore
|
179
189
|
- .rspec
|
@@ -195,6 +205,7 @@ files:
|
|
195
205
|
- lib/oddb2xml/extractor.rb
|
196
206
|
- lib/oddb2xml/util.rb
|
197
207
|
- lib/oddb2xml/version.rb
|
208
|
+
- oddb2xml.gemspec
|
198
209
|
- spec/builder_spec.rb
|
199
210
|
- spec/cli_spec.rb
|
200
211
|
- spec/compressor_spec.rb
|
@@ -243,30 +254,73 @@ files:
|
|
243
254
|
- tools/cacert.pem
|
244
255
|
- tools/set.bat
|
245
256
|
- tools/win_fetch_cacerts.rb
|
246
|
-
- .gemtest
|
247
257
|
homepage: https://github.com/zdavatz/oddb2xml
|
248
|
-
licenses:
|
258
|
+
licenses:
|
259
|
+
- GPL-v2
|
249
260
|
metadata: {}
|
250
261
|
post_install_message:
|
251
|
-
rdoc_options:
|
252
|
-
- --main
|
253
|
-
- README.md
|
262
|
+
rdoc_options: []
|
254
263
|
require_paths:
|
255
264
|
- lib
|
256
265
|
required_ruby_version: !ruby/object:Gem::Requirement
|
257
266
|
requirements:
|
258
|
-
- - '>='
|
267
|
+
- - ! '>='
|
259
268
|
- !ruby/object:Gem::Version
|
260
269
|
version: '0'
|
261
270
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
262
271
|
requirements:
|
263
|
-
- - '>='
|
272
|
+
- - ! '>='
|
264
273
|
- !ruby/object:Gem::Version
|
265
274
|
version: '0'
|
266
275
|
requirements: []
|
267
|
-
rubyforge_project:
|
268
|
-
rubygems_version: 2.
|
276
|
+
rubyforge_project:
|
277
|
+
rubygems_version: 2.2.1
|
269
278
|
signing_key:
|
270
279
|
specification_version: 4
|
271
280
|
summary: oddb2xml creates xml files.
|
272
|
-
test_files:
|
281
|
+
test_files:
|
282
|
+
- spec/builder_spec.rb
|
283
|
+
- spec/cli_spec.rb
|
284
|
+
- spec/compressor_spec.rb
|
285
|
+
- spec/data/GL_Diff_SB.xml
|
286
|
+
- spec/data/Gestrichene_Packungen_Emballages_radies.xls
|
287
|
+
- spec/data/ItCodes.xml
|
288
|
+
- spec/data/PR121001.txt
|
289
|
+
- spec/data/PR121002.txt
|
290
|
+
- spec/data/Preparation.xml
|
291
|
+
- spec/data/Preparations.xml
|
292
|
+
- spec/data/Publications.xls
|
293
|
+
- spec/data/XMLPublications.zip
|
294
|
+
- spec/data/epha_interactions.csv
|
295
|
+
- spec/data/medregbm_betrieb.txt
|
296
|
+
- spec/data/medregbm_person.txt
|
297
|
+
- spec/data/oddb2xml_files_bm_update.txt
|
298
|
+
- spec/data/oddb2xml_files_lppv.txt
|
299
|
+
- spec/data/oddb2xml_files_nonpharma.xls
|
300
|
+
- spec/data/oddb_article.xml
|
301
|
+
- spec/data/oddb_fi.xml
|
302
|
+
- spec/data/oddb_fi_product.xml
|
303
|
+
- spec/data/oddb_limitation.xml
|
304
|
+
- spec/data/oddb_product.xml
|
305
|
+
- spec/data/oddb_substance.xml
|
306
|
+
- spec/data/swissindex.xml
|
307
|
+
- spec/data/swissindex_nonpharma.xml
|
308
|
+
- spec/data/swissindex_pharma.xml
|
309
|
+
- spec/data/swissmedic_fridges.html
|
310
|
+
- spec/data/swissmedic_fridges.xls
|
311
|
+
- spec/data/swissmedic_fridges.xlsx
|
312
|
+
- spec/data/swissmedic_info.html
|
313
|
+
- spec/data/swissmedic_info.zip
|
314
|
+
- spec/data/swissmedic_info_2.html
|
315
|
+
- spec/data/swissmedic_orphans.html
|
316
|
+
- spec/data/swissmedic_orphans.xls
|
317
|
+
- spec/data/swissmedic_packages.html
|
318
|
+
- spec/data/swissmedic_packages.xls
|
319
|
+
- spec/data/swissmedic_packages.xlsx
|
320
|
+
- spec/data/wsdl.xml
|
321
|
+
- spec/data/wsdl_nonpharma.xml
|
322
|
+
- spec/data/wsdl_pharma.xml
|
323
|
+
- spec/data/zurrose_transfer.dat
|
324
|
+
- spec/downloader_spec.rb
|
325
|
+
- spec/extractor_spec.rb
|
326
|
+
- spec/spec_helper.rb
|
data/.gemtest
DELETED
File without changes
|