Sha256: 073f0095bd432f01c35245f58aa2a9a8274a7dd00eb756932d906b4b8054162b

Contents?: true

Size: 1.8 KB

Versions: 1

Compression:

Stored size: 1.8 KB

Contents

# encoding: UTF-8
grammar ScientificNameDirty
  include ScientificNameClean

  rule root
    super
  end
  
  rule species
    a:species_epitheton space b:year {
       def value
         a.value + " " + b.value
       end
     
       def canonical
         a.canonical
       end
     
       def pos
         a.pos.merge(b.pos)
       end
     
       def details
         {:species => a.details[:species].merge(b.details)}
       end
     }
     /
     super
  end

  rule right_paren
   ")" space ")"
   /
   super
  end
    
  
  
  rule left_paren
   "(" space "("
   /
   super
  end
  
  rule year
    a:year_number space b:approximate_year {
      def value
        a.value + " " + b.value
      end
      
      def pos
        a.pos.merge(b.pos)
      end
      
      def details
        {:year => a.value, :approximate_year => b.value}
      end
    }
    /
    a:year_number space page_number {
      def value
        a.text_value
      end
      
      def pos
        {a.interval.begin => ['year', a.interval.end]}
      end
      
      def details
        {:year => value}
      end
    }
    /
    approximate_year
    /
    double_year
    /
    super
  end
  
  rule approximate_year
    "[" space a:year_number space "]"+ {
      def value
       "(" + a.text_value + ")"
      end
      
      def pos
        {a.interval.begin => ['year', a.interval.end]}
      end
      
      def details
        {:approximate_year => value}
      end
    }
  end
  
  
  rule double_year
    year_number "-" [0-9]+ [A-Za-z]? [\?]? {
      def value
        text_value
      end
      
      def pos
        {interval.begin => ['year', interval.end]}
      end
      
      def details
        {:year => value}
      end
    }
  end
  
  rule page_number
    ":" space [\d]+
    {
      def value
      end
    }
  end
  
  
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dimus-biodiversity-0.5.1 lib/biodiversity/parser/scientific_name_dirty.treetop