gtin2atc 0.1.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 +22 -0
- data/.travis.yml +27 -0
- data/Gemfile +11 -0
- data/Gemfile.lock +115 -0
- data/History.txt +3 -0
- data/LICENSE +675 -0
- data/Rakefile +43 -0
- data/bin/gtin2atc +34 -0
- data/gtin2atc.gemspec +38 -0
- data/lib/gtin2atc/builder.rb +376 -0
- data/lib/gtin2atc/downloader.rb +252 -0
- data/lib/gtin2atc/options.rb +39 -0
- data/lib/gtin2atc/util.rb +47 -0
- data/lib/gtin2atc/version.rb +3 -0
- data/lib/gtin2atc/xml_definitions.rb +250 -0
- data/lib/gtin2atc.rb +9 -0
- data/readme.textile +19 -0
- data/spec/builder_spec.rb +147 -0
- data/spec/data/XMLPublications.zip +0 -0
- data/spec/data/swissindex_Pharma_DE.xml +179 -0
- data/spec/data/swissmedic_package.xlsx +0 -0
- data/spec/data/swissmedic_packages.html +12 -0
- data/spec/spec_helper.rb +69 -0
- metadata +227 -0
@@ -0,0 +1,147 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require "rexml/document"
|
5
|
+
include REXML
|
6
|
+
|
7
|
+
module Kernel
|
8
|
+
def buildr_capture(stream)
|
9
|
+
begin
|
10
|
+
stream = stream.to_s
|
11
|
+
eval "$#{stream} = StringIO.new"
|
12
|
+
yield
|
13
|
+
result = eval("$#{stream}").string
|
14
|
+
ensure
|
15
|
+
eval "$#{stream} = #{stream.upcase}"
|
16
|
+
end
|
17
|
+
result
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe Gtin2atc::Builder do
|
22
|
+
include ServerMockHelper
|
23
|
+
CSV_NAME = 'gtin2atc.csv'
|
24
|
+
before(:each) do
|
25
|
+
@savedDir = Dir.pwd
|
26
|
+
FileUtils.makedirs Gtin2atc::WorkDir
|
27
|
+
Dir.chdir Gtin2atc::WorkDir
|
28
|
+
Gtin2atc::Util.set_archive_dir(Gtin2atc::WorkDir)
|
29
|
+
cleanup_directories_before_run
|
30
|
+
setup_server_mocks
|
31
|
+
{ 'XMLPublications' => '.zip',
|
32
|
+
'swissindex_Pharma_DE' => '.xml',
|
33
|
+
'swissmedic_package' => '.xlsx',
|
34
|
+
}.each {
|
35
|
+
|name, extension|
|
36
|
+
use4test = File.expand_path(File.join( __FILE__, '../data/'+name + extension))
|
37
|
+
latest, dated = Gtin2atc::Util.get_latest_and_dated_name(name, extension)
|
38
|
+
FileUtils.cp(use4test, latest, :verbose => false)
|
39
|
+
}
|
40
|
+
end
|
41
|
+
after(:each) do
|
42
|
+
Dir.chdir @savedDir if @savedDir and File.directory?(@savedDir)
|
43
|
+
end
|
44
|
+
after(:all) do
|
45
|
+
Dir.chdir @savedDir if @savedDir and File.directory?(@savedDir)
|
46
|
+
end
|
47
|
+
|
48
|
+
context 'when --log is given' do
|
49
|
+
let(:cli) do
|
50
|
+
options = Gtin2atc::Options.new
|
51
|
+
options.parser.parse!('--log'.split(' '))
|
52
|
+
Gtin2atc::Builder.new(options.opts)
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'should produce a correct csv' do
|
56
|
+
@res = buildr_capture(:stdout){ cli.run }
|
57
|
+
check_csv(CSV_NAME)
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'should produce more log output' do
|
61
|
+
@res = buildr_capture(:stdout){ cli.run }
|
62
|
+
@res.match(/swissindex_xml_extractor/).should_not == nil
|
63
|
+
@res.match(/SwissIndex: Extracted/).should_not == nil
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
context 'when 20273 41803 (Pharmacodes) is given' do
|
70
|
+
let(:cli) do
|
71
|
+
options = Gtin2atc::Options.new
|
72
|
+
options.parser.parse!('20273 41803'.split(' '))
|
73
|
+
Gtin2atc::Builder.new(options.opts)
|
74
|
+
end
|
75
|
+
|
76
|
+
it 'should produce a csv with a two GTIN' do
|
77
|
+
@res = buildr_capture(:stdout){ cli.run(["20273", "41803"]) }
|
78
|
+
check_csv(CSV_NAME)
|
79
|
+
inhalt = IO.readlines(CSV_NAME)
|
80
|
+
inhalt.size.should eq 2+1 # one header lines + two items
|
81
|
+
inhalt[1].chomp.should eq '7680147690482,N07BC02,41803,KETALGIN Inj Lös 10 mg/ml'
|
82
|
+
inhalt[2].chomp.should eq '7680353660163,B03AE10,20273,KENDURAL Depottabl'
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
context 'when 7680147690482 7680353660163 is given' do
|
87
|
+
let(:cli) do
|
88
|
+
options = Gtin2atc::Options.new
|
89
|
+
options.parser.parse!('7680147690482 7680353660163'.split(' '))
|
90
|
+
Gtin2atc::Builder.new(options.opts)
|
91
|
+
end
|
92
|
+
|
93
|
+
it 'should produce a csv with a two GTIN' do
|
94
|
+
@res = buildr_capture(:stdout){ cli.run(["7680147690482", "7680353660163"]) }
|
95
|
+
check_csv(CSV_NAME)
|
96
|
+
inhalt = IO.readlines(CSV_NAME)
|
97
|
+
inhalt.size.should eq 2+1 # one header lines + two items
|
98
|
+
/7680147690482/.match(inhalt[1]).should_not == nil
|
99
|
+
/7680353660163/.match(inhalt[1]).should == nil
|
100
|
+
/7680147690482/.match(inhalt[2]).should == nil
|
101
|
+
/7680353660163/.match(inhalt[2]).should_not == nil
|
102
|
+
/7680353660163,B03AE10,20273,KENDURAL Depottabl/.match(inhalt[2]).should_not == nil
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
def check_csv(filename)
|
107
|
+
File.exists?(filename).should eq true
|
108
|
+
inhalt = IO.readlines(filename)
|
109
|
+
/^gtin,ATC/.match(inhalt.first).should_not == nil
|
110
|
+
/^\d{13},\w{4}/.match(inhalt[1]).should_not == nil
|
111
|
+
end
|
112
|
+
|
113
|
+
context 'when --compare is given' do
|
114
|
+
let(:cli) do
|
115
|
+
options = Gtin2atc::Options.new
|
116
|
+
options.parser.parse!('--compare'.split(' '))
|
117
|
+
Gtin2atc::Builder.new(options.opts)
|
118
|
+
end
|
119
|
+
|
120
|
+
it 'should produce three correct csv' do
|
121
|
+
@res = buildr_capture(:stdout){ cli.run }
|
122
|
+
check_csv('gtin2atc_bag.csv')
|
123
|
+
check_csv('gtin2atc_swissindex.csv')
|
124
|
+
check_csv('gtin2atc_swissmedic.csv')
|
125
|
+
end
|
126
|
+
|
127
|
+
it 'should produce a good logging output' do
|
128
|
+
@res = buildr_capture(:stdout){ cli.run }
|
129
|
+
[ /Found infos/,
|
130
|
+
/Fetched from/,
|
131
|
+
/Matching/,
|
132
|
+
/not in BAG/,
|
133
|
+
/not in SwissMedic/,
|
134
|
+
/not in SwissIndex/,
|
135
|
+
/ATC-Codes diff/,
|
136
|
+
].each {
|
137
|
+
|pattern|
|
138
|
+
unless pattern.match(@res)
|
139
|
+
puts "Looking for #{pattern} in #{@res}"
|
140
|
+
end
|
141
|
+
pattern.match(@res).should_not == nil
|
142
|
+
}
|
143
|
+
end
|
144
|
+
|
145
|
+
end
|
146
|
+
|
147
|
+
end
|
Binary file
|
@@ -0,0 +1,179 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
3
|
+
<soap:Body>
|
4
|
+
<PHARMA xmlns="http://swissindex.e-mediat.net/SwissindexPharma_out_V101" CREATION_DATETIME="2015-01-19T12:10:17.3152785+01:00">
|
5
|
+
<ITEM DT="2014-10-17T00:00:00">
|
6
|
+
<GTIN>7680202580475</GTIN>
|
7
|
+
<PHAR>20209</PHAR>
|
8
|
+
<STATUS>A</STATUS>
|
9
|
+
<STDATE>2002-05-23T00:00:00</STDATE>
|
10
|
+
<LANG>DE</LANG>
|
11
|
+
<DSCR>ERYTHROCIN i.v. Trockensub 1000 mg</DSCR>
|
12
|
+
<ADDSCR>Ampulle 1 Stk</ADDSCR>
|
13
|
+
<ATC>J01FA01</ATC>
|
14
|
+
<COMP>
|
15
|
+
<NAME>Pro Concepta Zug AG</NAME>
|
16
|
+
<GLN>7640111540007</GLN>
|
17
|
+
</COMP>
|
18
|
+
</ITEM>
|
19
|
+
<ITEM DT="2014-10-17T00:00:00">
|
20
|
+
<GTIN>7680316440115</GTIN>
|
21
|
+
<PHAR>20244</PHAR>
|
22
|
+
<STATUS>A</STATUS>
|
23
|
+
<STDATE>2002-05-23T00:00:00</STDATE>
|
24
|
+
<LANG>DE</LANG>
|
25
|
+
<DSCR>FERRO-GRADUMET Depottabl</DSCR>
|
26
|
+
<ADDSCR>30 Stk</ADDSCR>
|
27
|
+
<ATC>B03AA07</ATC>
|
28
|
+
<COMP>
|
29
|
+
<NAME>Farmaceutica Teofarma Suisse SA (c/o Bernasconi Peter Gaggin</NAME>
|
30
|
+
<GLN>7601001374539</GLN>
|
31
|
+
</COMP>
|
32
|
+
</ITEM>
|
33
|
+
<ITEM DT="2014-10-17T00:00:00">
|
34
|
+
<GTIN>7680353660163</GTIN>
|
35
|
+
<PHAR>20273</PHAR>
|
36
|
+
<STATUS>A</STATUS>
|
37
|
+
<STDATE>2002-05-23T00:00:00</STDATE>
|
38
|
+
<LANG>DE</LANG>
|
39
|
+
<DSCR>KENDURAL Depottabl</DSCR>
|
40
|
+
<ADDSCR>30 Stk</ADDSCR>
|
41
|
+
<ATC>B03AE10</ATC>
|
42
|
+
<COMP>
|
43
|
+
<NAME>Farmaceutica Teofarma Suisse SA (c/o Bernasconi Peter Gaggin</NAME>
|
44
|
+
<GLN>7601001374539</GLN>
|
45
|
+
</COMP>
|
46
|
+
</ITEM>
|
47
|
+
<ITEM DT="2014-10-17T00:00:00">
|
48
|
+
<GTIN>7680172330681</GTIN>
|
49
|
+
<PHAR>20652</PHAR>
|
50
|
+
<STATUS>A</STATUS>
|
51
|
+
<STDATE>2002-05-23T00:00:00</STDATE>
|
52
|
+
<LANG>DE</LANG>
|
53
|
+
<DSCR>SELSUN Shampoo Susp</DSCR>
|
54
|
+
<ADDSCR>120 ml</ADDSCR>
|
55
|
+
<ATC>D11AC03</ATC>
|
56
|
+
<COMP>
|
57
|
+
<NAME>Doetsch Grether AG</NAME>
|
58
|
+
<GLN>7614700999989</GLN>
|
59
|
+
</COMP>
|
60
|
+
</ITEM>
|
61
|
+
<ITEM DT="2014-10-17T00:00:00">
|
62
|
+
<GTIN>7680324750190</GTIN>
|
63
|
+
<PHAR>23722</PHAR>
|
64
|
+
<STATUS>A</STATUS>
|
65
|
+
<STDATE>2002-06-05T00:00:00</STDATE>
|
66
|
+
<LANG>DE</LANG>
|
67
|
+
<DSCR>LANSOYL Gel</DSCR>
|
68
|
+
<ADDSCR>225 g</ADDSCR>
|
69
|
+
<ATC>A06AA01</ATC>
|
70
|
+
<COMP>
|
71
|
+
<NAME>Actipharm SA</NAME>
|
72
|
+
<GLN>7601001002012</GLN>
|
73
|
+
</COMP>
|
74
|
+
</ITEM>
|
75
|
+
<ITEM DT="2014-10-17T00:00:00">
|
76
|
+
<GTIN>7680291520390</GTIN>
|
77
|
+
<PHAR>31532</PHAR>
|
78
|
+
<STATUS>A</STATUS>
|
79
|
+
<STDATE>1995-08-05T00:00:00</STDATE>
|
80
|
+
<LANG>DE</LANG>
|
81
|
+
<DSCR>BEN-U-RON Supp 250 mg Kind</DSCR>
|
82
|
+
<ADDSCR>10 Stk</ADDSCR>
|
83
|
+
<ATC>N02BE01</ATC>
|
84
|
+
<COMP>
|
85
|
+
<NAME>Nutrimedis SA</NAME>
|
86
|
+
<GLN>7640110770009</GLN>
|
87
|
+
</COMP>
|
88
|
+
</ITEM>
|
89
|
+
<ITEM DT="2014-10-17T00:00:00">
|
90
|
+
<GTIN>4009077073203</GTIN>
|
91
|
+
<PHAR>41499</PHAR>
|
92
|
+
<STATUS>A</STATUS>
|
93
|
+
<STDATE>2001-02-05T00:00:00</STDATE>
|
94
|
+
<LANG>DE</LANG>
|
95
|
+
<DSCR>SOLDAN EM EUKAL Bronchial Bonbons</DSCR>
|
96
|
+
<ADDSCR>Beutel 75 g</ADDSCR>
|
97
|
+
<ATC>R05X</ATC>
|
98
|
+
<COMP>
|
99
|
+
<NAME>Vifor SA</NAME>
|
100
|
+
<GLN>7601001001862</GLN>
|
101
|
+
</COMP>
|
102
|
+
</ITEM>
|
103
|
+
<ITEM DT="2014-10-17T00:00:00">
|
104
|
+
<GTIN>7680147690482</GTIN>
|
105
|
+
<PHAR>41803</PHAR>
|
106
|
+
<STATUS>A</STATUS>
|
107
|
+
<STDATE>1995-08-05T00:00:00</STDATE>
|
108
|
+
<LANG>DE</LANG>
|
109
|
+
<DSCR>KETALGIN Inj Lös 10 mg/ml</DSCR>
|
110
|
+
<ADDSCR>100 Ampullen 1 ml</ADDSCR>
|
111
|
+
<ATC>N07BC02</ATC>
|
112
|
+
<COMP>
|
113
|
+
<NAME>Amino AG</NAME>
|
114
|
+
<GLN>7601001392571</GLN>
|
115
|
+
</COMP>
|
116
|
+
</ITEM>
|
117
|
+
<ITEM DT="2014-10-17T00:00:00">
|
118
|
+
<GTIN>7680147700112</GTIN>
|
119
|
+
<PHAR>41826</PHAR>
|
120
|
+
<STATUS>A</STATUS>
|
121
|
+
<STDATE>1995-08-05T00:00:00</STDATE>
|
122
|
+
<LANG>DE</LANG>
|
123
|
+
<DSCR>KETALGIN Tabl 5 mg</DSCR>
|
124
|
+
<ADDSCR>20 Stk</ADDSCR>
|
125
|
+
<ATC>N07BC02</ATC>
|
126
|
+
<COMP>
|
127
|
+
<NAME>Amino AG</NAME>
|
128
|
+
<GLN>7601001392571</GLN>
|
129
|
+
</COMP>
|
130
|
+
</ITEM>
|
131
|
+
<ITEM DT="2014-10-17T00:00:00">
|
132
|
+
<GTIN>7680147700389</GTIN>
|
133
|
+
<PHAR>41832</PHAR>
|
134
|
+
<STATUS>A</STATUS>
|
135
|
+
<STDATE>1995-08-05T00:00:00</STDATE>
|
136
|
+
<LANG>DE</LANG>
|
137
|
+
<DSCR>KETALGIN Tabl 5 mg</DSCR>
|
138
|
+
<ADDSCR>200 Stk</ADDSCR>
|
139
|
+
<ATC>N07BC02</ATC>
|
140
|
+
<COMP>
|
141
|
+
<NAME>Amino AG</NAME>
|
142
|
+
<GLN>7601001392571</GLN>
|
143
|
+
</COMP>
|
144
|
+
</ITEM>
|
145
|
+
<ITEM DT="2014-10-17T00:00:00">
|
146
|
+
<GTIN>7680199320283</GTIN>
|
147
|
+
<PHAR>41855</PHAR>
|
148
|
+
<STATUS>A</STATUS>
|
149
|
+
<STDATE>1995-08-05T00:00:00</STDATE>
|
150
|
+
<LANG>DE</LANG>
|
151
|
+
<DSCR>KETALGIN Supp 10 mg</DSCR>
|
152
|
+
<ADDSCR>5 Stk</ADDSCR>
|
153
|
+
<ATC>N07BC02</ATC>
|
154
|
+
<COMP>
|
155
|
+
<NAME>Amino AG</NAME>
|
156
|
+
<GLN>7601001392571</GLN>
|
157
|
+
</COMP>
|
158
|
+
</ITEM>
|
159
|
+
<ITEM DT="2014-10-17T00:00:00">
|
160
|
+
<GTIN>7680331590215</GTIN>
|
161
|
+
<PHAR>47852</PHAR>
|
162
|
+
<STATUS>A</STATUS>
|
163
|
+
<STDATE>2013-07-04T00:00:00</STDATE>
|
164
|
+
<LANG>DE</LANG>
|
165
|
+
<DSCR>DEAFTOL Tabl m Lidocain</DSCR>
|
166
|
+
<ADDSCR>30 Stk</ADDSCR>
|
167
|
+
<ATC>A01AD11</ATC>
|
168
|
+
<COMP>
|
169
|
+
<NAME>Dr. Wild & Co. AG</NAME>
|
170
|
+
<GLN>7601001002456</GLN>
|
171
|
+
</COMP>
|
172
|
+
</ITEM>
|
173
|
+
<RESULT>
|
174
|
+
<OK_ERROR>OK</OK_ERROR>
|
175
|
+
<NBR_RECORD>15775</NBR_RECORD>
|
176
|
+
</RESULT>
|
177
|
+
</PHARMA>
|
178
|
+
</soap:Body>
|
179
|
+
</soap:Envelope>
|
Binary file
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<!DOCTYPE HTML>
|
2
|
+
<html lang="utf-8">
|
3
|
+
<head>
|
4
|
+
<meta charset="UTF-8">
|
5
|
+
<title></title>
|
6
|
+
</head>
|
7
|
+
<body>
|
8
|
+
<div id="sprungmarke0_7">
|
9
|
+
<a title="Excel-Version Zugelassene Verpackungen*" href="/download/swissmedic_packages.xls"></a>
|
10
|
+
</div>
|
11
|
+
</body>
|
12
|
+
</html>
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
# This file was generated by the `rspec --init` command. Conventionally, all
|
2
|
+
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
3
|
+
# Require this file using `require "spec_helper"` to ensure that it is only
|
4
|
+
# loaded once.
|
5
|
+
#
|
6
|
+
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
7
|
+
#
|
8
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
|
9
|
+
$:.unshift File.dirname(__FILE__)
|
10
|
+
|
11
|
+
require 'bundler/setup'
|
12
|
+
Bundler.require
|
13
|
+
|
14
|
+
require 'rspec'
|
15
|
+
require 'webmock/rspec'
|
16
|
+
require "gtin2atc/builder"
|
17
|
+
|
18
|
+
|
19
|
+
module Gtin2atc
|
20
|
+
# we override here a few directories to make input/output when running specs to
|
21
|
+
# be in different places compared when running
|
22
|
+
SpecData = File.join(File.dirname(__FILE__), 'data')
|
23
|
+
WorkDir = File.join(File.dirname(__FILE__), 'run')
|
24
|
+
end
|
25
|
+
|
26
|
+
require 'gtin2atc'
|
27
|
+
|
28
|
+
module ServerMockHelper
|
29
|
+
def cleanup_directories_before_run
|
30
|
+
dirs = [ Gtin2atc::WorkDir]
|
31
|
+
dirs.each{ |dir| FileUtils.rm_rf(Dir.glob(File.join(dir, '*')), :verbose => false) }
|
32
|
+
dirs.each{ |dir| FileUtils.makedirs(dir, :verbose => false) }
|
33
|
+
end
|
34
|
+
|
35
|
+
def setup_server_mocks
|
36
|
+
setup_bag_xml_server_mock
|
37
|
+
end
|
38
|
+
def setup_bag_xml_server_mock
|
39
|
+
# zip
|
40
|
+
stub_zip_url = 'http://bag.e-mediat.net/SL2007.Web.External/File.axd?file=XMLPublications.zip'
|
41
|
+
stub_response = File.read(File.join(Gtin2atc::SpecData, 'XMLPublications.zip'))
|
42
|
+
stub_request(:get, stub_zip_url).
|
43
|
+
with(:headers => {
|
44
|
+
'Accept' => '*/*',
|
45
|
+
'Accept-Encoding' => 'gzip,deflate,identity',
|
46
|
+
'Host' => 'bag.e-mediat.net',
|
47
|
+
}).
|
48
|
+
to_return(
|
49
|
+
:status => 200,
|
50
|
+
:headers => {'Content-Type' => 'application/zip; charset=utf-8'},
|
51
|
+
:body => stub_response)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
RSpec.configure do |config|
|
56
|
+
config.run_all_when_everything_filtered = true
|
57
|
+
config.filter_run :focus
|
58
|
+
config.filter_run_excluding :slow
|
59
|
+
#config.exclusion_filter = {:slow => true}
|
60
|
+
|
61
|
+
# Run specs in random order to surface order dependencies. If you find an
|
62
|
+
# order dependency and want to debug it, you can fix the order by providing
|
63
|
+
# the seed, which is printed after each run.
|
64
|
+
# --seed 1234
|
65
|
+
config.order = 'random'
|
66
|
+
|
67
|
+
# Helper
|
68
|
+
config.include(ServerMockHelper)
|
69
|
+
end
|
metadata
ADDED
@@ -0,0 +1,227 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: gtin2atc
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Niklaus Giger, Zeno R.R. Davatz
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-01-27 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rubyzip
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.1.3
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.1.3
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: mechanize
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 2.5.1
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 2.5.1
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: nokogiri
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.5.10
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.5.10
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: savon
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rubyXL
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: sax-machine
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: bundler
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rake
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rspec
|
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
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: webmock
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: rdoc
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
description: gtin2atc file with gtin, atc_code, pharmanr from input file with gtin
|
168
|
+
email: ngiger@ywesee.com, zdavatz@ywesee.com
|
169
|
+
executables:
|
170
|
+
- gtin2atc
|
171
|
+
extensions: []
|
172
|
+
extra_rdoc_files: []
|
173
|
+
files:
|
174
|
+
- ".gitignore"
|
175
|
+
- ".travis.yml"
|
176
|
+
- Gemfile
|
177
|
+
- Gemfile.lock
|
178
|
+
- History.txt
|
179
|
+
- LICENSE
|
180
|
+
- Rakefile
|
181
|
+
- bin/gtin2atc
|
182
|
+
- gtin2atc.gemspec
|
183
|
+
- lib/gtin2atc.rb
|
184
|
+
- lib/gtin2atc/builder.rb
|
185
|
+
- lib/gtin2atc/downloader.rb
|
186
|
+
- lib/gtin2atc/options.rb
|
187
|
+
- lib/gtin2atc/util.rb
|
188
|
+
- lib/gtin2atc/version.rb
|
189
|
+
- lib/gtin2atc/xml_definitions.rb
|
190
|
+
- readme.textile
|
191
|
+
- spec/builder_spec.rb
|
192
|
+
- spec/data/XMLPublications.zip
|
193
|
+
- spec/data/swissindex_Pharma_DE.xml
|
194
|
+
- spec/data/swissmedic_package.xlsx
|
195
|
+
- spec/data/swissmedic_packages.html
|
196
|
+
- spec/spec_helper.rb
|
197
|
+
homepage: https://github.com/zdavatz/gtin2atc
|
198
|
+
licenses:
|
199
|
+
- GPL-v2
|
200
|
+
metadata: {}
|
201
|
+
post_install_message:
|
202
|
+
rdoc_options: []
|
203
|
+
require_paths:
|
204
|
+
- lib
|
205
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
206
|
+
requirements:
|
207
|
+
- - ">="
|
208
|
+
- !ruby/object:Gem::Version
|
209
|
+
version: '0'
|
210
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
211
|
+
requirements:
|
212
|
+
- - ">="
|
213
|
+
- !ruby/object:Gem::Version
|
214
|
+
version: '0'
|
215
|
+
requirements: []
|
216
|
+
rubyforge_project:
|
217
|
+
rubygems_version: 2.1.11
|
218
|
+
signing_key:
|
219
|
+
specification_version: 4
|
220
|
+
summary: gtin2atc creates csv files with GTIN and ATC.
|
221
|
+
test_files:
|
222
|
+
- spec/builder_spec.rb
|
223
|
+
- spec/data/XMLPublications.zip
|
224
|
+
- spec/data/swissindex_Pharma_DE.xml
|
225
|
+
- spec/data/swissmedic_package.xlsx
|
226
|
+
- spec/data/swissmedic_packages.html
|
227
|
+
- spec/spec_helper.rb
|