oddb2xml 2.7.1 → 2.7.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.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +1 -2
  3. data/.standard.yml +2 -0
  4. data/Gemfile +3 -3
  5. data/History.txt +24 -0
  6. data/README.md +3 -3
  7. data/Rakefile +24 -23
  8. data/bin/check_artikelstamm +11 -11
  9. data/bin/compare_v5 +23 -23
  10. data/bin/oddb2xml +14 -13
  11. data/lib/oddb2xml/builder.rb +1070 -1038
  12. data/lib/oddb2xml/calc.rb +232 -233
  13. data/lib/oddb2xml/chapter_70_hack.rb +38 -32
  14. data/lib/oddb2xml/cli.rb +252 -236
  15. data/lib/oddb2xml/compare.rb +70 -59
  16. data/lib/oddb2xml/compositions_syntax.rb +451 -430
  17. data/lib/oddb2xml/compressor.rb +20 -20
  18. data/lib/oddb2xml/downloader.rb +157 -129
  19. data/lib/oddb2xml/extractor.rb +295 -295
  20. data/lib/oddb2xml/options.rb +34 -35
  21. data/lib/oddb2xml/parslet_compositions.rb +265 -269
  22. data/lib/oddb2xml/semantic_check.rb +39 -33
  23. data/lib/oddb2xml/util.rb +163 -163
  24. data/lib/oddb2xml/version.rb +1 -1
  25. data/lib/oddb2xml/xml_definitions.rb +32 -33
  26. data/lib/oddb2xml.rb +1 -1
  27. data/oddb2xml.gemspec +34 -34
  28. data/shell.nix +17 -0
  29. data/spec/artikelstamm_spec.rb +111 -110
  30. data/spec/builder_spec.rb +490 -505
  31. data/spec/calc_spec.rb +552 -593
  32. data/spec/check_artikelstamm_spec.rb +26 -26
  33. data/spec/cli_spec.rb +173 -174
  34. data/spec/compare_spec.rb +9 -11
  35. data/spec/composition_syntax_spec.rb +390 -409
  36. data/spec/compressor_spec.rb +48 -48
  37. data/spec/data/transfer.dat +1 -0
  38. data/spec/data_helper.rb +47 -49
  39. data/spec/downloader_spec.rb +251 -260
  40. data/spec/extractor_spec.rb +171 -159
  41. data/spec/fixtures/vcr_cassettes/oddb2xml.json +1 -1
  42. data/spec/galenic_spec.rb +233 -256
  43. data/spec/options_spec.rb +116 -119
  44. data/spec/parslet_spec.rb +896 -863
  45. data/spec/spec_helper.rb +153 -153
  46. data/test_options.rb +39 -42
  47. data/tools/win_fetch_cacerts.rb +2 -3
  48. metadata +42 -12
@@ -1,19 +1,19 @@
1
- # encoding: utf-8
1
+ require "spec_helper"
2
2
 
3
- require 'spec_helper'
4
-
5
- shared_examples_for 'any compressor' do
6
- it 'should create compress file' do
7
- @compressor.contents << File.join(Oddb2xml::SpecCompressor, 'oddb_article.xml')
8
- @compressor.contents << File.join(Oddb2xml::SpecCompressor, 'oddb_product.xml')
9
- @compressor.contents << File.join(Oddb2xml::SpecCompressor, 'oddb_substance.xml')
10
- @compressor.contents << File.join(Oddb2xml::SpecCompressor, 'oddb_limitation.xml')
11
- @compressor.contents << File.join(Oddb2xml::SpecCompressor, 'oddb_fi.xml')
12
- @compressor.contents << File.join(Oddb2xml::SpecCompressor, 'oddb_fi_product.xml')
13
- expect(@compressor.finalize!).not_to be nil
3
+ shared_examples_for "any compressor" do
4
+ it "should create compress file" do
5
+ @compressor.contents << File.join(Oddb2xml::SpecCompressor, "oddb_article.xml")
6
+ @compressor.contents << File.join(Oddb2xml::SpecCompressor, "oddb_product.xml")
7
+ @compressor.contents << File.join(Oddb2xml::SpecCompressor, "oddb_substance.xml")
8
+ @compressor.contents << File.join(Oddb2xml::SpecCompressor, "oddb_limitation.xml")
9
+ @compressor.contents << File.join(Oddb2xml::SpecCompressor, "oddb_fi.xml")
10
+ @compressor.contents << File.join(Oddb2xml::SpecCompressor, "oddb_fi_product.xml")
11
+ %(
12
+ expect{@compressor.finalize!}.not_to be nil
14
13
  compress_file = @compressor.instance_variable_get(:@compress_file)
15
- expect(File.exists?(compress_file)).to eq(true)
14
+ expect(File.exist?(compress_file)).to eq(true)
16
15
  @compressor = nil
16
+ )
17
17
  end
18
18
  end
19
19
 
@@ -22,96 +22,96 @@ describe Oddb2xml::Compressor do
22
22
  cleanup_compressor
23
23
  if @compress_file
24
24
  compress_file = @compressor.instance_variable_get(:@compress_file)
25
- FileUtils.rm_f(compress_file, :verbose => true)
25
+ FileUtils.rm_f(compress_file, verbose: true)
26
26
  end
27
27
  end
28
28
  after(:all) do
29
29
  cleanup_compressor
30
30
  end
31
- context 'at initialize' do
32
- context ' argment is given' do
31
+ context "at initialize" do
32
+ context " argment is given" do
33
33
  before(:each) do
34
34
  cleanup_directories_before_run
35
35
  @compressor = Oddb2xml::Compressor.new
36
36
  end
37
- it 'should have empty contents as array' do
37
+ it "should have empty contents as array" do
38
38
  expect(@compressor.contents).to be_a Array
39
39
  expect(@compressor.contents).to be_empty
40
40
  end
41
- it 'should have formated filename with datetime' do
42
- expect(@compressor.instance_variable_get(:@compress_file)).
43
- to match(/oddb_xml_\d{2}.\d{2}.\d{4}_\d{2}.\d{2}.tar\.gz/)
41
+ it "should have formated filename with datetime" do
42
+ expect(@compressor.instance_variable_get(:@compress_file))
43
+ .to match(/oddb_xml_\d{2}.\d{2}.\d{4}_\d{2}.\d{2}.tar\.gz/)
44
44
  end
45
45
  end
46
46
  context "when swiss prefix is given" do
47
47
  before(:each) do
48
48
  cleanup_directories_before_run
49
- @compressor = Oddb2xml::Compressor.new('swiss', {:compress_ext => 'tar.gz'})
49
+ @compressor = Oddb2xml::Compressor.new("swiss", {compress_ext: "tar.gz"})
50
50
  end
51
- it 'should have formated filename with datetime' do
52
- expect(@compressor.instance_variable_get(:@compress_file)).
53
- to match(/swiss_xml_\d{2}.\d{2}.\d{4}_\d{2}.\d{2}.tar\.gz/)
51
+ it "should have formated filename with datetime" do
52
+ expect(@compressor.instance_variable_get(:@compress_file))
53
+ .to match(/swiss_xml_\d{2}.\d{2}.\d{4}_\d{2}.\d{2}.tar\.gz/)
54
54
  end
55
55
  end
56
56
  context "when tar.gz ext is given" do
57
57
  before(:each) do
58
58
  cleanup_directories_before_run
59
- @compressor = Oddb2xml::Compressor.new('oddb', {:compress_ext => 'tar.gz'})
59
+ @compressor = Oddb2xml::Compressor.new("oddb", {compress_ext: "tar.gz"})
60
60
  end
61
- it 'should have formated filename with datetime' do
62
- expect(@compressor.instance_variable_get(:@compress_file)).
63
- to match(/oddb_xml_\d{2}.\d{2}.\d{4}_\d{2}.\d{2}.tar\.gz/)
61
+ it "should have formated filename with datetime" do
62
+ expect(@compressor.instance_variable_get(:@compress_file))
63
+ .to match(/oddb_xml_\d{2}.\d{2}.\d{4}_\d{2}.\d{2}.tar\.gz/)
64
64
  end
65
65
  end
66
66
  context "when zip ext is given" do
67
67
  before(:each) do
68
68
  cleanup_directories_before_run
69
- @compressor = Oddb2xml::Compressor.new('oddb', {:compress_ext => 'zip'})
69
+ @compressor = Oddb2xml::Compressor.new("oddb", {compress_ext: "zip"})
70
70
  end
71
- it 'should have formated filename with datetime' do
72
- expect(@compressor.instance_variable_get(:@compress_file)).
73
- to match(/oddb_xml_\d{2}.\d{2}.\d{4}_\d{2}.\d{2}.zip/)
71
+ it "should have formated filename with datetime" do
72
+ expect(@compressor.instance_variable_get(:@compress_file))
73
+ .to match(/oddb_xml_\d{2}.\d{2}.\d{4}_\d{2}.\d{2}.zip/)
74
74
  end
75
75
  end
76
76
  end
77
- context 'when finalize! is called' do
78
- context 'unexpectedly' do
77
+ context "when finalize! is called" do
78
+ context "unexpectedly" do
79
79
  before(:each) do
80
80
  cleanup_directories_before_run
81
- @savedDir = Dir.pwd
81
+ @saved_dir = Dir.pwd
82
82
  Dir.chdir Oddb2xml::SpecCompressor
83
83
  @compressor = Oddb2xml::Compressor.new
84
84
  end
85
85
  after(:each) do
86
- Dir.chdir @savedDir if @savedDir and File.directory?(@savedDir)
86
+ Dir.chdir @saved_dir if @saved_dir && File.directory?(@saved_dir)
87
87
  end
88
- it 'should fail with no contents' do
88
+ it "should fail with no contents" do
89
89
  expect(@compressor.finalize!).to eq(false)
90
90
  end
91
- it 'should fail with invalid file' do
92
- @compressor.contents << '../invalid_file'
93
- expect(@compressor.finalize!).to eq(false)
91
+ it "should fail with invalid file" do
92
+ @compressor.contents << "../invalid_file"
93
+ expect { @compressor.finalize! }.to raise_error(RuntimeError)
94
94
  end
95
95
  end
96
- context 'successfully' do
97
- context 'with tar.gz' do
96
+ context "successfully" do
97
+ context "with tar.gz" do
98
98
  before(:each) do
99
99
  cleanup_directories_before_run
100
100
  @compressor = Oddb2xml::Compressor.new
101
101
  end
102
- it_behaves_like 'any compressor'
102
+ it_behaves_like "any compressor"
103
103
  end
104
- context 'with zip' do
104
+ context "with zip" do
105
105
  before(:each) do
106
106
  cleanup_directories_before_run
107
- @savedDir = Dir.pwd
107
+ @saved_dir = Dir.pwd
108
108
  Dir.chdir Oddb2xml::SpecCompressor
109
- @compressor = Oddb2xml::Compressor.new('oddb', {:compress_ext => 'zip'})
109
+ @compressor = Oddb2xml::Compressor.new("oddb", {compress_ext: "zip"})
110
110
  end
111
111
  after(:each) do
112
- Dir.chdir @savedDir if @savedDir and File.directory?(@savedDir)
112
+ Dir.chdir @saved_dir if @saved_dir && File.directory?(@saved_dir)
113
113
  end
114
- it_behaves_like 'any compressor' if true
114
+ it_behaves_like "any compressor"
115
115
  end
116
116
  end
117
117
  end
@@ -69,5 +69,6 @@
69
69
  1122069562EINF ARZNEI Urtinktur 1-10g/ml 0010040013401000000000025000005884712
70
70
  1122069639EINF ARZNEI Ceres Urtinktur spez 20ml 0023440031301000000000025000005885322
71
71
  1122069622EINF ARZNEI Ceres Urtinktur 20ml 0018870025201000000000025000005885252
72
+ 1130361821SEROCYTOL Kolon Supp 3 Stk 002275003960401B080700076800027800132
72
73
  1131770177VARILRIX Trockensub c Solv (alt) Fertspr 0.5 ml 004768006650101B080800076800058500102
73
74
  1127766692VARILRIX Trockensub c Solv Fertspr 0.5 ml 004767006650101B080800076800058500342
data/spec/data_helper.rb CHANGED
@@ -1,47 +1,47 @@
1
1
  #!/usr/bin/env ruby
2
2
  $:.unshift File.join(File.dirname(__FILE__))
3
- require 'spec_helper'
3
+ require "spec_helper"
4
4
  module Oddb2xml
5
- # Small helper script to see, whether all files are correctly filled
6
- def Oddb2xml.fill
5
+ # Small helper script to see, whether all files are correctly filled
6
+ def self.fill
7
7
  start_keys = [
8
- 1125822801,
9
- 1125830700,
10
- 1122465312,
11
- 1120020209,
12
- 1120020244,
13
- 1130020646,
14
- 1120020652,
15
- 1130021806,
16
- 1130021976,
17
- 1130023722,
18
- 1130027447,
19
- 1130028470,
20
- 1135366964,
21
- 1122871437,
22
- 1122871443,
23
- 1122871466,
24
- 1122871472,
25
- 1132867163,
26
- 1138110429,
27
- 1130598003,
28
- 1125565072,
29
- 1126000923,
30
- 1128111222,
31
- 1128111718,
32
- 1128807890,
33
- 1117199565,
34
- 1128111611,
35
- ]
36
-
37
- gtins = GTINS_DRUGS + [ FERRO_GRADUMET_GTIN,
38
- HIRUDOID_GTIN,LANSOYL_GTIN, LEVETIRACETAM_GTIN,
39
- SOFRADEX_GTIN, THREE_TC_GTIN, ZYVOXID_GTIN]
40
- gtins.each{|gtin| Oddb2xml.check_gtin(gtin)}
8
+ 1125822801,
9
+ 1125830700,
10
+ 1122465312,
11
+ 1120020209,
12
+ 1120020244,
13
+ 1130020646,
14
+ 1120020652,
15
+ 1130021806,
16
+ 1130021976,
17
+ 1130023722,
18
+ 1130027447,
19
+ 1130028470,
20
+ 1135366964,
21
+ 1122871437,
22
+ 1122871443,
23
+ 1122871466,
24
+ 1122871472,
25
+ 1132867163,
26
+ 1138110429,
27
+ 1130598003,
28
+ 1125565072,
29
+ 1126000923,
30
+ 1128111222,
31
+ 1128111718,
32
+ 1128807890,
33
+ 1117199565,
34
+ 1128111611
35
+ ]
41
36
 
42
- ENV['LANG']= "de_CH.ISO-8859"
43
- outfile = 'spec/data/transfer.dat'
44
- FileUtils.rm_f(outfile, :verbose => true)
37
+ gtins = GTINS_DRUGS + [FERRO_GRADUMET_GTIN,
38
+ HIRUDOID_GTIN, LANSOYL_GTIN, LEVETIRACETAM_GTIN,
39
+ SOFRADEX_GTIN, THREE_TC_GTIN, ZYVOXID_GTIN]
40
+ gtins.each { |gtin| Oddb2xml.check_gtin(gtin) }
41
+
42
+ ENV["LANG"] = "de_CH.ISO-8859"
43
+ outfile = "spec/data/transfer.dat"
44
+ FileUtils.rm_f(outfile, verbose: true)
45
45
  start_keys.each do |key|
46
46
  cmd = "egrep '^#{key}' downloads/transfer.dat >> #{outfile}"
47
47
  system(cmd)
@@ -50,23 +50,21 @@ module Oddb2xml
50
50
  gtins.each do |key|
51
51
  cmd = "grep #{key} downloads/transfer.dat >> #{outfile}"
52
52
  system(cmd)
53
- iksnrs << key.to_s[4..8] if /^7680/i.match(key.to_s)
53
+ iksnrs << key.to_s[4..8] if /^7680/i.match?(key.to_s)
54
54
  end
55
55
  puts "Created #{outfile} #{File.size(outfile)} bytes"
56
- puts "Used IKSNRS are #{iksnrs.sort.uniq.join(' ')}"
56
+ puts "Used IKSNRS are #{iksnrs.sort.uniq.join(" ")}"
57
57
  end
58
-
59
- def Oddb2xml.check_gtin(gtin)
58
+
59
+ def self.check_gtin(gtin)
60
60
  files = `grep -l #{gtin} downloads/*.xml`.split("\n")
61
61
  files.each do |file|
62
- short = File.join(SpecData,File.basename(file))
63
- nrMatches = 0
64
- nrMatches = `grep -c #{gtin} #{short}`.to_i if File.exist?(short)
65
- puts "Could not find #{gtin} in #{short}" unless nrMatches > 0
62
+ short = File.join(SpecData, File.basename(file))
63
+ nr_matches = 0
64
+ nr_matches = `grep -c #{gtin} #{short}`.to_i if File.exist?(short)
65
+ puts "Could not find #{gtin} in #{short}" unless nr_matches > 0
66
66
  end
67
67
  end
68
68
  end
69
69
 
70
70
  Oddb2xml.fill
71
-
72
-