Sha256: c714a75cca8a5b9622f7baf591ac44f7c83d8f0db7d93fac50f247d5f047cb58

Contents?: true

Size: 1.81 KB

Versions: 1

Compression:

Stored size: 1.81 KB

Contents

# encoding: UTF-8
grammar ScientificNameCanonical
  include ScientificNameDirty

  rule root
    multinomial_with_garbage {
      def hybrid
        false
      end

      def details
        [super]
      end

      def parser_run
        3
      end
    }
    /
    uninomial_with_garbage {
      def hybrid
        false
      end
      
      def details
        [super]
      end

      def parser_run
        3
      end
    }
  end
  
  rule multinomial_with_garbage
  
    a:genus space b:infragenus space c:species garbage {
      def value
        a.value + " " + b.value + " " + c.value
      end
      
      def canonical
        a.canonical + " " + c.canonical
      end
      
      def pos
        a.pos.merge(b.pos).merge(c.pos)
      end
      
      def details
        a.details.merge(b.details).merge(c.details)
      end
    }
    /
    a:genus space b:infragenus garbage {
      def value
        a.value + " " + b.value
      end
      
      def canonical
        a.canonical
      end
      
      def pos
        a.pos.merge(b.pos)
      end
      
      def details
        a.details.merge(b.details)
      end
    }
    /
    a:genus space b:species garbage {
      def value
        a.value + " " + b.value
      end
      
      def canonical
        a.canonical + " " + b.canonical
      end
      
      def pos
        a.pos.merge(b.pos)
      end
      
      def details
        a.details.merge(b.details)
      end
    }
  end
  
  rule uninomial_with_garbage
    a:uninomial_string b:garbage {
      def value
        a.value
      end
      
      def canonical
        a.canonical
      end
      
      def pos
        a.pos
      end
      
      def details
        {:uninomial => a.details[:uninomial]}
      end
    }
  end
  
  rule garbage
    space (["',.]) space [^щ]*
    /
    space_hard [^ш]+
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
biodiversity19-1.0.22 lib/biodiversity/parser/scientific_name_canonical.treetop