Top Level Namespace

Defined Under Namespace

Modules: PreProcessor Classes: LsidResolver, ScientificNameParser

Constant Summary collapse

BIODIVERSITY_ROOT =
File.join(dir, 'biodiversity')
DEFAULT_PORT =
4334
RUBY_VERSION_INT =
RUBY_VERSION.split(".")[0..1].join('').to_i
OPTIONS =
{
  :output => "json",
  :port => DEFAULT_PORT
}

Instance Method Summary collapse

Instance Method Details

#get_output(name_string, parser) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'bin/parserver', line 49

def get_output(name_string, parser)
  begin
    if RUBY_VERSION_INT < 19
      old_kcode = $KCODE
      $KCODE = 'NONE'
    end
    parsed = parser.parse(name_string)
    if RUBY_VERSION_INT < 19
      $KCODE = old_kcode
    end
  rescue
    parsed = parser_error(name_string)
  end
  output =  OPTIONS[:output]
  return parsed.to_json if output == 'json'
  canonical = parsed[:scientificName][:canonical]
  return canonical.to_s if output == 'canonical' || canonical == nil || parsed[:scientificName][:hybrid] || !parsed[:scientificName][:parsed]
  parts = parsed[:scientificName][:canonical].split(" ")

  if parts.size > 2 && parsed[:scientificName][:details][0][:infraspecies]
    name_ary = parts[0..1]
    parsed[:scientificName][:details][0][:infraspecies].each do |data|
      name_ary << (data[:rank] && data[:rank] != 'n/a'? "#{data[:rank]} #{data[:string]}" : data[:string])
    end
    canonical = name_ary.join(" ")
  end
  canonical
end

#parser_error(name_string) ⇒ Object



16
17
18
# File 'bin/nnparse', line 16

def parser_error(name)
  {'scientificName' => {'parsed' => false, 'verbatim' => name,  'error' => 'Parser error'}}.to_json
end