Class: Bukovina::Parsers::ServiceLink

Inherits:
Object
  • Object
show all
Defined in:
lib/bukovina/parsers/service_link.rb

Constant Summary collapse

ALPHABETHS =
{
   'hip' => :цр, #церковнославянская разметка hip
   'рп' => :рп,
   'ро' => :ру,
   'ру' => :ру,
   'ан' => :ра,
   'en' => :ра,
   'гр' => :гр,
   'ив' => :ив,
   'рм' => :рм,
   'ук' => :ук,
   'ср' => :ср,
   'gr' => :гр,
   'fr' => :фр,
   're' => :ра,
}
LANGUAGES =
{
   'цс' => :цс,
   'ро' => :ру,
   'ру' => :ру,
   'ан' => :ан,
   'en' => :ан,
   're' => :ан,
   'гр' => :гр,
   'ив' => :ив,
   'рм' => :рм,
   'ук' => :ук,
   'ср' => :сх,
   'gr' => :гр,
   'fr' => :фр,
}
Parsers =
Bukovina::Parsers
RE =
/\A([#{Parsers::UPCHAR}#{Parsers::CHAR}#{Parsers::ACCENT}0-9\s‑;:'"«»\,()\.\-\?\/]+)\z/

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#errorsObject (readonly)

Returns the value of attribute errors.



5
6
7
# File 'lib/bukovina/parsers/service_link.rb', line 5

def errors
  @errors
end

Instance Method Details

#parse(line, options = {}) ⇒ Object

вход: значение поля “имя” включая словарь разных языков выход: обработанный словарь данных



48
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
# File 'lib/bukovina/parsers/service_link.rb', line 48

def parse line, options = {}
      tres =
      case line
      when Array
(links, aservices) = line.map do |url|
   if url.is_a?( Array )
      url.map do |u|
         parse_line( u, options ) ; end.compact
   else
      parse_line( url, options ) ; end ; end
.compact.flatten
      when String
parse_line( line, options )
      when NilClass
[]
      else
@errors << Parsers::BukovinaInvalidClass.new( "Invalid class " +
   "#{line.class} for Name line '#{line}'" )
[] ; end

      if @errors.any?
nil
      else
(links, services) = tres.split_by do |value|
   value.has_key?( :url ) ;end

{ link: links, service: services } ;end ;end