<< | Index | >>
Confirm the current status
masa@masa ~/ywesee/oddb.org/ext/fiparse/test $ ruby test_fachinfo_doc_parser.rb 
...
  1) Failure:
test_composition10(TestFachinfoDocParser10) [test_fachinfo_doc_parser.rb:1089]:
<nil> expected to be an instance of
<ODDB::Text::Chapter> but was
<NilClass>.
  2) Failure:
test_galenic_form10(TestFachinfoDocParser10) [test_fachinfo_doc_parser.rb:1102]:
<"Galenische Form und Wirkstoffmengen pro Einheit"> expected but was
<"Tropfen. 1 ml enth\303\244lt: 25 mg Hamameliswasser, 5 mg Augentrosttinktur, 0,9 mg Dexpanthenol.">.
  3) Failure:
test_iksnrs10(TestFachinfoDocParser10) [test_fachinfo_doc_parser.rb:1120]:
<nil> expected to be an instance of
<ODDB::Text::Chapter> but was
<NilClass>.
  4) Failure:
test_indications10(TestFachinfoDocParser10) [test_fachinfo_doc_parser.rb:1113]:
<nil> expected to be an instance of
<ODDB::Text::Chapter> but was
<NilClass>.
  5) Failure:
test_name10(TestFachinfoDocParser10) [test_fachinfo_doc_parser.rb:1082]:
<"Tendro, Augentropfen\n"> expected but was
<"Tendro, Augentropfen\n\t\t\t\t\t\t\t\t\t\tTentan AG\n">.
  6) Failure:
test_registration_owner10(TestFachinfoDocParser10) [test_fachinfo_doc_parser.rb:1130]:
<nil> expected to be an instance of
<ODDB::Text::Chapter> but was
<NilClass>.
  7) Failure:
test_composition12(TestFachinfoDocParser12) [test_fachinfo_doc_parser.rb:1236]:
<nil> expected to be an instance of
<ODDB::Text::Chapter> but was
<NilClass>.
  8) Failure:
test_galenic_form12(TestFachinfoDocParser12) [test_fachinfo_doc_parser.rb:1249]:
<"Forme gal\351nique et quantit\351 de principe actif par unit\351"> expected but was
<"a       Principe actif : extrait de millepertuis (Hyperici herba extractum).">.
  9) Failure:
test_iksnrs12(TestFachinfoDocParser12) [test_fachinfo_doc_parser.rb:1267]:
<nil> expected to be an instance of
<ODDB::Text::Chapter> but was
<NilClass>.
 10) Failure:
test_indications12(TestFachinfoDocParser12) [test_fachinfo_doc_parser.rb:1260]:
<nil> expected to be an instance of
<ODDB::Text::Chapter> but was
<NilClass>.
 11) Failure:
test_name12(TestFachinfoDocParser12) [test_fachinfo_doc_parser.rb:1230]:
<"Yakona-Hypericum\n"> expected but was
<"Yakona-Hypericum\n\t\t\t\t\t\t\t\t\t\tTentan AG\n">.
 12) Failure:
test_registration_owner12(TestFachinfoDocParser12) [test_fachinfo_doc_parser.rb:1277]:
<nil> expected to be an instance of
<ODDB::Text::Chapter> but was
<NilClass>.
 13) Error:
test_date13(TestFachinfoDocParser13):
NoMethodError: undefined method `text' for nil:NilClass
    test_fachinfo_doc_parser.rb:1355:in `test_date13'
 14) Failure:
test_name13(TestFachinfoDocParser13) [test_fachinfo_doc_parser.rb:1303]:
<1> expected but was
<2>.
 15) Failure:
test_company5(TestFachinfoDocParser5) [test_fachinfo_doc_parser.rb:401]:
<"Salmon Pharma"> expected but was
<"Salmon Pharma\n\n\n\nZusammensetzung">.
 16) Failure:
test_composition5(TestFachinfoDocParser5) [test_fachinfo_doc_parser.rb:407]:
<nil> expected to be an instance of
<ODDB::Text::Chapter> but was
<NilClass>.
 17) Failure:
test_company8(TestFachinfoDocParser8) [test_fachinfo_doc_parser.rb:1001]:
<"ARS VITAE"> expected but was
<"ARS VITAE\n\n\n\nComposition">.
 18) Failure:
test_composition8(TestFachinfoDocParser8) [test_fachinfo_doc_parser.rb:898]:
<nil> expected to be an instance of
<ODDB::Text::Chapter> but was
<NilClass>.
87 tests, 359 assertions, 17 failures, 1 errors
Note
Next
18) Failure: test_composition8(TestFachinfoDocParser8) [test_fachinfo_doc_parser.rb:898]: <nil> expected to be an instance of <ODDB::Text::Chapter> but was <NilClass>.
Experiment
ext/fiparse/src/fachinfo_doc.rb#run_of_text
      def run_of_text(text, char_props)
        text = @iconv.iconv(text)
if writer = @writers[0] and writer.composition
print "@writers[0].composition.class="
p @writers[0].composition.class
end
        text.split(/\v/u).each_with_index { |run, idx|
          if(idx > 0 && @writer)
            @writer.send_line_break
          end
          _run_of_text(run, char_props)
        }
      end
Result
masa@masa ~/ywesee/oddb.org/ext/fiparse/test $ ruby test_fachinfo_doc_parser.rb |more Loaded suite test_fachinfo_doc_parser Started F Finished in 0.055343 seconds. 1) Failure: test_composition8(TestFachinfoDocParser8) [test_fachinfo_doc_parser.rb:898]: <nil> expected to be an instance of <ODDB::Text::Chapter> but was <NilClass>. 1 tests, 1 assertions, 1 failures, 0 errors
Note
Consideration
Memo
ext/fiparse/src/fachinfo_writer.rb#set_templates
      private
      def set_templates(chapter)
        if(@amzv.nil?)
          case chapter.heading
          when /9\.11\.2001/u, /AMZV/u, /OEM.d/u
            @amzv = chapter
            @templates = named_chapters [
              :composition, :galenic_form, :indications,
              :usage, :contra_indications, :restrictions,
              :interactions, :pregnancy, :driving_ability,
              :unwanted_effects, :overdose, :effects, :switch,
            ]
          when /Galenische\s*Form/iu, /Forme\s*gal.nique/iu
            ## this is an amzv-FI without Declaration, switch to amzv-mode.
            @galenic_form = chapter
            named_chapter(:amzv)
            @templates = named_chapters [
              :indications, :usage, :contra_indications, :restrictions,
              :interactions, :pregnancy, :driving_ability, :unwanted_effects,
              :overdose, :effects, :switch,
            ]
          when /Zusammensetzung/u, /Composition/u, /Principes\s*actifs/u
            @composition = chapter
            @templates = named_chapters [
              :switch,
            ]
Next
Answer
ext/fiparse/fachinfo_doc.rb#new_font
      def new_font(char_props, text=nil)
        if(@chapter_flag)
          @chapter_flag = nil
          if(@chapter == @switch)
            # switch between old and new (2001) FI-Schema
            set_templates(@chapter)
Note
Experiment
ext/fiparse/fachinfo_doc.rb#new_font
      def new_font(char_props, text=nil)
        if(@chapter_flag)
print "@chapter.heading="
p @chapter.heading
Result
masa@masa ~/ywesee/oddb.org/ext/fiparse/test $ ruby test_fachinfo_doc_parser.rb |more Loaded suite test_fachinfo_doc_parser Started @chapter.heading="ARS VITAE\n\n\n\n" @chapter.heading="Forme gal\303\251nique et quantit\303\251 de principe actif par unit\303\251\n\n" @chapter.heading="Indications/Possibilit\303\251s d\342\200\231emploi\n\n" @chapter.heading="Posologie/Mode d\342\200\231emploi\n\n" @chapter.heading="Contre-indications\n\n" @chapter.heading="Mises en garde et pr\303\251cautions\n\n" @chapter.heading="Interactions\n\n" @chapter.heading="Grossesse/Allaitement\n\n" @chapter.heading="Effet sur l\342\200\231aptitude \303\240 la conduite et \303\240 l\342\200\231utilisation de machines\n\n" @chapter.heading="Effets ind\303\251sirables\n\n" @chapter.heading="Surdosage\n\n" @chapter.heading="Propri\303\251t\303\251s/Effets\n\n" @chapter.heading="Pharmacocin\303\251tique\n\n" @chapter.heading="Donn\303\251es pr\303\251cliniques\n\n" @chapter.heading="Autres remarques\n\n" @chapter.heading="Estampille\n\n" @chapter.heading="Titulaire de l\342\200\231autorisation\n\n" @chapter.heading="Mise \303\240 jour de l\342\200\231information\n\n" F Finished in 0.056092 seconds. 1) Failure: test_composition8(TestFachinfoDocParser8) [test_fachinfo_doc_parser.rb:898]: <nil> expected to be an instance of <ODDB::Text::Chapter> but was <NilClass>. 1 tests, 1 assertions, 1 failures, 0 errors
Note
Question
Memo
Experiment
ext/fiparse/src/fachinfo_doc.rb#new_font
      def new_font(char_props, text=nil)
if @chapter
  print "@chapter.heading="
  p @chapter.heading
end
ext/fiparse/src/fachinfo_doc.rb#_run_of_text
      def _run_of_text(text, char_props)
        #puts sprintf("%2i %s -> %s",char_props.fontsize, same_font?(@current_char_props, char_props), text[0,10])
p text[0..20]
        if(!same_font?(@current_char_props, char_props))
          if(char_props.fontsize >= @cutoff_fontsize \
             && (@writer.nil? || @writer.complete?))
p "FachinfoDocWriter.new"
Result
masa@masa ~/ywesee/oddb.org/ext/fiparse/test $ ruby test_fachinfo_doc_parser.rb ... "FachinfoDocWriter.new" text="\302\256" text=" ASS 300/500" text="ARS VITAE" text="Composition" @chapter.heading="ARS VITAE\n\n\n\n" text="Principe actif\302\240:" @chapter.heading="ARS VITAE\n\n\n\nComposition\n\n" text=" " text="Acidum acetylsalicyli" @chapter.heading="" ...
Note
Memo
Experiment
ext/fiparse/src/fachinfo_doc.rb#new_font
          elsif(@chapter && @chapter.sections.size == 1 \
                && @chapter.sections.first.empty?)
            # stay with the previous heading
# Composition
if(text == "Composition")
p "===== Composition"
@chapter_flag = true
@chapter = next_chapter
@section = @chapter.next_section
set_target(@chapter.heading)
end
Result
masa@masa ~/ywesee/oddb.org/ext/fiparse/test $ ruby test_fachinfo_doc_parser.rb ... Loaded suite test_fachinfo_doc_parser Started "===== FachinfoDocWriter.new =====" @chapter.heading="ARS VITAE\n\n\n\n" "===== Composition" @chapter.heading="Composition\n" ... Finished in 0.057219 seconds. 1 tests, 1 assertions, 0 failures, 0 errors
Note
Consideration
Experiment
ext/fiparse/src/fachinfo_doc.rb#new_font
          elsif(@chapter && @chapter.sections.size == 1 \
                && @chapter.sections.first.empty? && check_exception?(text))
                #&& @chapter.sections.first.empty?)
            # stay with the previous heading
...
      def check_exception?(text)
        case text.strip
        when /Composition/u
          false
        else
          true
        end
      end
Note
Result
masa@masa ~/ywesee/oddb.org/ext/fiparse/test $ ruby test_fachinfo_doc_parser.rb Loaded suite test_fachinfo_doc_parser Started . Finished in 0.054611 seconds. 1 tests, 7 assertions, 0 failures, 0 errors
Note
Next
To begin with,
History test_fachinfo_doc_parser.rb
/ext/fiparse/test/test_fachinfo_doc_parser.rb 2008-02-28 Improved FI-Doc-Parser can deal with slightly different... 2008-02-25 Beta-0 Version of the Table-Parser. Still has some... 2008-02-21 Further improvements on the FI-Doc-Parser, less depende... 2008-02-21 Better results when parsing Word-Documents - recognize... 2008-02-20 Activate Word-FI-Parser. This is only a partial commit... 2005-05-26 ywesee ChangeSet 1.2: Import changeset
2009-03-17 Migration of ch.oddb.org to UTF-8 encoding 2008-07-18 Ignore Bold table-titles in French doc-files when parsi... 2008-07-18 Add support for fachinfo-doc-files with inconsistent... 2008-07-17 Minor changes to accommodate the structure of some... 2008-02-28 Remove fake AMZV-Heading 2008-02-28 Improved FI-Doc-Parser can deal with slightly different... 2008-02-28 Minor fixes in the Word-Fachinfo-Parser: recognize... 2008-02-25 Beta-0 Version of the Table-Parser. Still has some... 2008-02-21 Further improvements on the FI-Doc-Parser, less depende... 2008-02-21 Better results when parsing Word-Documents - recognize...
The following commit is the update of the chapter heading
So
Add support for fachinfo-doc-files with inconsistent chapter headings (nonbold-zerolength parts)
IMPORTANT
We should update BOTH source code and the corresponding test-case at the same time
Otherwise, a test-case will be useless, rather a hindrance
Confirmation

The temporary update
          elsif(@chapter && @chapter.sections.size == 1 \
                && @chapter.sections.first.empty? && check_exception?(text))
                #&& @chapter.sections.first.empty?)
            # stay with the previous heading
...
      def check_exception?(text)
        case text.strip
        when /Composition/u
          false
        else
          true
        end
      end
Note
Next
masa@masa ~/ywesee/oddb.org/ext/fiparse/test $ ruby test_fachinfo_doc_parser.rb Loaded suite test_fachinfo_doc_parser Started F Finished in 0.058998 seconds. 1) Failure: test_kinetic3(TestFachinfoDocParser3) [test_fachinfo_doc_parser.rb:282]: <nil> expected to be an instance of <ODDB::Text::Chapter> but was <NilClass>. 1 tests, 1 assertions, 1 failures, 0 errors
ext/fiparse/test/test_fachinfo_doc_parser.rb#test_kinetic3
  def test_kinetic3
    writer = @text_handler.writers.first
    chapter = writer.kinetic
    assert_instance_of(ODDB::Text::Chapter, chapter)
    assert_equal('Pharmakokinetik', chapter.heading)
    assert_equal(4, chapter.sections.size)
    section = chapter.sections.first
    assert_equal("Absorption\n", section.subheading)
  end
Note
Experiment
ext/fiparse/src/fachinfo_doc.rb#new_font
      def new_font(char_props, text=nil)
if @kinetic
  print "@kinetic="
  p @kinetic
end
Result
masa@masa ~/ywesee/oddb.org/ext/fiparse/test $ ruby test_fachinfo_doc_parser.rb Loaded suite test_fachinfo_doc_parser Started F Finished in 0.059392 seconds. 1) Failure: test_kinetic3(TestFachinfoDocParser3) [test_fachinfo_doc_parser.rb:282]: <nil> expected to be an instance of <ODDB::Text::Chapter> but was <NilClass>. 1 tests, 1 assertions, 1 failures, 0 errors
Note
Question
Answer
Memo
Next
ext/fiparse/src/fachinfo_doc.rb#new_font
      def new_font(char_props, text=nil)
        if(@chapter_flag)
          @chapter_flag = nil
          if(@chapter == @switch)
            # switch between old and new (2001) FI-Schema
            set_templates(@chapter)
Note
Conclusion
Next
masa@masa ~/ywesee/oddb.org/ext/fiparse/test $ ruby test_fachinfo_doc_parser.rb Loaded suite test_fachinfo_doc_parser Started F Finished in 0.058547 seconds. 1) Failure: test_usage3(TestFachinfoDocParser3) [test_fachinfo_doc_parser.rb:266]: <"Dosierung/Anwendung"> expected but was <"Indikationen/Anwendungsm\303\266glichkeiten">. 1 tests, 2 assertions, 1 failures, 0 errors
Note
Interim summary
Result
masa@masa ~/ywesee/oddb.org/ext/fiparse/test $ ruby test_fachinfo_doc_parser.rb 
Loaded suite test_fachinfo_doc_parser
Started
...........FFFFFF......FFFFFF.E..F..
>------------------------------------------------------------------------
                   Disktest (10 �g<
>------------------------------------------------------------------------
                   Disktest (10 µ<
.................................................
Finished in 14.857685 seconds.
  1) Failure:
test_composition10(TestFachinfoDocParser10) [test_fachinfo_doc_parser.rb:1041]:
<nil> expected to be an instance of
<ODDB::Text::Chapter> but was
<NilClass>.
  2) Failure:
test_galenic_form10(TestFachinfoDocParser10) [test_fachinfo_doc_parser.rb:1054]:
<"Galenische Form und Wirkstoffmengen pro Einheit"> expected but was
<"Tropfen. 1 ml enth\303\244lt: 25 mg Hamameliswasser, 5 mg Augentrosttinktur, 0,9 mg Dexpanthenol.">.
  3) Failure:
test_iksnrs10(TestFachinfoDocParser10) [test_fachinfo_doc_parser.rb:1072]:
<nil> expected to be an instance of
<ODDB::Text::Chapter> but was
<NilClass>.
  4) Failure:
test_indications10(TestFachinfoDocParser10) [test_fachinfo_doc_parser.rb:1065]:
<nil> expected to be an instance of
<ODDB::Text::Chapter> but was
<NilClass>.
  5) Failure:
test_name10(TestFachinfoDocParser10) [test_fachinfo_doc_parser.rb:1034]:
<"Tendro, Augentropfen\n"> expected but was
<"Tendro, Augentropfen\n\t\t\t\t\t\t\t\t\t\tTentan AG\n">.
  6) Failure:
test_registration_owner10(TestFachinfoDocParser10) [test_fachinfo_doc_parser.rb:1082]:
<nil> expected to be an instance of
<ODDB::Text::Chapter> but was
<NilClass>.
  7) Failure:
test_composition12(TestFachinfoDocParser12) [test_fachinfo_doc_parser.rb:1185]:
<nil> expected to be an instance of
<ODDB::Text::Chapter> but was
<NilClass>.
  8) Failure:
test_galenic_form12(TestFachinfoDocParser12) [test_fachinfo_doc_parser.rb:1198]:
<"Forme gal\351nique et quantit\351 de principe actif par unit\351"> expected but was
<"a       Principe actif : extrait de millepertuis (Hyperici herba extractum).">.
  9) Failure:
test_iksnrs12(TestFachinfoDocParser12) [test_fachinfo_doc_parser.rb:1216]:
<nil> expected to be an instance of
<ODDB::Text::Chapter> but was
<NilClass>.
 10) Failure:
test_indications12(TestFachinfoDocParser12) [test_fachinfo_doc_parser.rb:1209]:
<nil> expected to be an instance of
<ODDB::Text::Chapter> but was
<NilClass>.
 11) Failure:
test_name12(TestFachinfoDocParser12) [test_fachinfo_doc_parser.rb:1180]:
<"Yakona-Hypericum\n"> expected but was
<"Yakona-Hypericum\n\t\t\t\t\t\t\t\t\t\tTentan AG\n">.
 12) Failure:
test_registration_owner12(TestFachinfoDocParser12) [test_fachinfo_doc_parser.rb:1226]:
<nil> expected to be an instance of
<ODDB::Text::Chapter> but was
<NilClass>.
 13) Error:
test_date13(TestFachinfoDocParser13):
NoMethodError: undefined method `text' for nil:NilClass
    test_fachinfo_doc_parser.rb:1303:in `test_date13'
 14) Failure:
test_name13(TestFachinfoDocParser13) [test_fachinfo_doc_parser.rb:1251]:
<1> expected but was
<2>.
85 tests, 360 assertions, 13 failures, 1 errors