Sha256: 40ff6d9fba345b0eef80a0921e3f13e9f74c02364751bfc8712bf65575e444a2

Contents?: true

Size: 1.34 KB

Versions: 1

Compression:

Stored size: 1.34 KB

Contents

# encoding: UTF-8
grammar ScientificNameCanonical
  include ScientificNameClean
  include ScientificNameDirty

  rule composite_scientific_name
    name_part_with_garbage
  end
    
  rule name_part_with_garbage
    a:species_name space b:latin_word space c:[^ш]+ {
      def value 
        a.value + " " + b.value
      end
      def canonical
        a.canonical + " " + b.value
      end
      
      def pos
        a.pos.merge({b.interval.begin => ['subspecies', b.interval.end]})
      end
      
      def details
        a.details.merge({:subspecies => {:rank => 'n/a', :value => b.value}}).merge(:name_part_verbatim => a.text_value, :auth_part_verbatim => c.text_value)
      end
    }
    /
    a:species_name space b:[^ш]+ {
      def value 
        a.value
      end
      def canonical
        a.canonical
      end
      
      def pos
        a.pos
      end
      
      def details
        a.details.merge(:name_part_verbatim => a.text_value, :auth_part_verbatim => b.text_value)
      end
    }
    /
    a:name_part space b:[^ш]+ {
      def value 
        a.value
      end
      def canonical
        a.canonical
      end
      
      def pos
        a.pos
      end
      
      def details
        a.details.merge(:name_part_verbatim => a.text_value, :auth_part_verbatim => b.text_value)
      end
    }
  end
  
  rule garbage
    [.]*
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dimus-biodiversity-0.0.18 lib/biodiversity/parser/scientific_name_canonical.treetop