Class: Bukovina::Parsers::Event

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

Constant Summary collapse

Parsers =
Bukovina::Parsers
RE =
/\A([#{Parsers::UPCHAR}#{Parsers::CHAR}#{Parsers::ACCENT}0-9\s‑;:'"«»\,()\.\-\?\/]+)\z/
SUBPARSERS =

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

{
   'год' => :year,
   'дата' => :date,
   'время' => :time,
   'описание' => :type,
   'предмет' => :item,
   'место' => :place,
   'образ' => :icon,
   'бытие' => :link,
   'ссылка' => :link,
   'описание_' => :desc,
   'вики' => :wiki,
   'супруг' => :person,
   'муж' => :person,
   'жена' => :person,
   'кем' => :person,
   'кому' => :person,
   'чадо' => :person,
#      'служба' => :service,
   'о' => :about,
   'собор' => :council,
   'чин' => :order,
   'тез' => :tezo,
   'координаты' => :coord,
}
ITEMS =
[
   'частица',
   'глава',
   'глава.часть',
   'челюсть',
   'десница',
   'шуйца',
   'рука',
   'позвонок',
   'глезно',
   'длань',
   'длань шуя',
   'длань.часть',
   'кожа',
   'плечо',
   'цепь',
   'вериги',
   'оковы',
   'часть',
   'часть веляя',
   'посох',
   'покров',
   'деснога',
   'шуйнога',
   'стопа',
   'тело',
   'зуб',
   'предплечье',
   'список',
   'оковы',
   'цепь',
   'решётка',
]
EVENTS =
{
   'бесе' => 'Tale',              # от(чел)-ко(чел) # Беседа/Благовещение
   'битва' => 'Battle',           # ч(место)
   'блгдр' => 'Thanksgiving',     # ко(лич) ЧИНИ какое событие, или просто добвить поле норов (характер) в помин, а событие поставить иное?
   'блслв' => 'Benediction',      # от(стын:self)-ко(чел:person)
   'бвщ' => 'Annunciation',       # кого
   'брак' => 'Marriage',          # от(чел:self)-ко(чел:person)
   'вздв' => 'Exaltation',        # ч(стын:self),кем(чел:person)
   'вид' => 'Apparation',         # ч(стын:self)-ко(чел:person)
   'вознс' => 'Ascension',        # кого(чел:self)
   'вопл' => 'Incarnation',       # кого
   'воин' => 'SoldierMemory',     # ч(поместо) память павших воинов
   'восст' => 'Restoration',      # к(чел:self)
   'вскрс' => 'Resurrection',     # к(чел:само)
   'вход' => 'Entrance',          # от(чел)
   'дияк' => 'Deaconry',          # к(чел:само)-кем(чел:person)
   'ересь' => 'Enheresment',      # к(чел:само)
   'заржд' => 'Conception',       # кого(чел:само)
   'застп' => 'Protection',       # от(стын:сало)-к(чел:лично) # покров?
   'зач' => 'Conceiving',         # кем(чел:само)-кого(чел:лично)
   'знам' => 'Portent',           # ч(стын) # ЧИНИ? может быть ттоже что и (по)явление?
   'избав' => 'Deliverance',      # ч(стын) # ЧИНИ? может быть победа над кем-то?
   'изме' => 'Betraial',          # ко(чел)
   'изнес' => 'Procession',       # ч(стын)-кем(чел:person)
   'иноч' => 'Monasticry',        # ко(чел)-кем(чел:person)
   'ипод' => 'Hypodeaconry',      # ко(чел)-кем(чел:person)
   'крещ' => 'Baptism',           # ко(чел)-кем(чел:person)
   'надст' => 'Superstructure',   # ч(стын)-кем(собор:person)
   'напис' => 'Writing',          # ч(обр)-кем(чел:person)
   'науч' => 'Learning',          # от(чел)
   'нем' => 'Numbness',           # ко(чел) # ЧИНИ может чудо?
   'низл' => 'Deposition',        # ко(чел)-кем(собор:person)
   'обн' => 'Sanctification',     # ч(храм)-кем(собор:person)
   'обр' => 'Uncovering',         # ч(стын)-кем(чел:person)
   'обрез' => 'Circumcision',     # ко(чел)
   'ожив' => 'Revival',           # от(чел)-ко(чел)
   'освоб' => 'Liberation',       # ко(чел)
   'отр' => 'Renunciation',       # от(чел)
   'пад' => 'Fall',               # ч(место)
   'пгрб' => 'Burial',            # ко(чел)
   'пожар' => 'GreatFire',        # ч(место)
   'покая' => 'Repentance',       # от(чел)-кто прнимал(чел:person)
   'покой' => 'Rest',             # от(чел)-ко(собор:person)
   'полож' => 'Placing',          # ч(стын)
   'почит' => 'Veneration',       # ч(стын)
   'прдст' => 'Primacy',          # от(чел)
   'прел' => 'PuttingInAgain',    # ч(стын)
   'прем' => 'Teleportation',     # ч(стын)
   'прен' => 'Translation',       # ч(стын)
   'призв' => 'Calling',          # ко(чел)
   'плен' => 'Captivity',         # ч(предм)
   'покл' => 'Adoration',         # ко(чел)-от(собор:person)       # приношение, поклонение (волхвов)
   'преоб' => 'Transfiguration',  # ко(чел)
   'прок' => 'Curse',             # от(чел)
   'проп' => 'Preach',            # от(чел)
   'пррч' => 'Prophecy',          # от(чел)-кем(person)
   'просл' => 'Canonization',     # от(чел)-кем(собор:person)
   'прств' => 'Repose',           # от(чел)
   'прстл' => 'Throne',           # ч(храм)
   'разр' => 'Destruction',       # ч(храм)
   'раск' => 'Schism',            # от(чел)
   'распп' => 'Defrocking',       # ко(чел)
   'рассл' => 'Decanonization',   # от(чел)
   'ржд' => 'Nativity',           # от(чел)
   'рясф' => 'Frockbearing',      # ко(чел)-кем(чел:person)
   'сбр' => 'Council',            # ч(место)
   'свят' => 'Bishopry',          # ко(чел)-кем(собор:person)
   'свящ' => 'Priestship',        # ко(чел)-кем(чел:person)
   'созд' => 'Founding',          # ч(храм)
   'сокр' => 'Hiddening',         # ч(стын)
   'соявл' => 'Phenomenon',       # ко(чел)-от(чел:person)
   'срет' => 'Meeting',           # от(чел)-ко(чел)
   'стрст' => 'Passion',          # ко(чел)
   'схим' => 'Schima',            # ко(чел)
   'тайн' => 'Supper',            # от(чел)-ко(собор:person)
   'трез' => 'Sobriety',          # ч(поместо) память трезвения
   'труд' => 'Labor',             # от(чел) # ЧИНИ что это?
   'тряс' => 'Earthquake',        # ч(место)
   'увер' => 'Assurance',         # от(чел)-ко(чел)
   'утр' => 'Loss',               # ч(стын)
   'чинпр' => 'Glorification',    # ко(чел)-от(собор:person)
   'чтец' => 'Reader',            # ко(чел)-кем(чел:person)
   'чудо' => 'Miracle',           # ч(стын)
   'явл' => 'Appearance',         # ч(обр)
}
COUNSILS =

само - feast

%w(рус греч иерс аме фин болг серб груз пол рум чсл виз алкс антх
карф рим англ
мск киев черн сузд верн нов нпск влдв
молд кит укр клвн блр русз герм
пнаф печ)
ORDERS =
%w(нмр нмч нмк 17мг нмм нмс нмз 1рс нмб
сщмч сщмчч вмц вмч мч мцц мчч прмч прмц мц прп прав свт прпж стцц стц блж сщисп присп присц исп исц блгв блгвв рап
сбр
кит
мск спб вят перм ниж сиб каз влад тавр уф тул ряр врнж сарн вуст кстр нов твер мурм клзн ека крсн кур влгд нсиб
    сам тамб кар ряз влгр рнд пск ива омск верн астр кург симб
опт пнаф пппр мсвт смнк бпеч рднж нмнд валм сол див
укр киев елсг неж жит вол карп гал вин черк одес херс полт крмч мрпл хуст черн кнтп глин
молд
блр нгрд
мхп
серб шбцв)
ABOUT_PRES =
%w(нд.по нд.до сб.по сб.до)
ABOUTS =
[ 'пт.вел', 'сб.по рх', 'нд.7.по пасхе', 'вс.8.по пасхе', 'ср.1.по пасхе', 'вт.1.по пасхе', 'сб.5.поста', 'сб.по отд.вздв',
'вт.1.по пасхе', 'чт.по всех', 'чт.9.по пасхе' ]

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#errorsObject (readonly)

Returns the value of attribute errors.



2
3
4
# File 'lib/bukovina/parsers/event.rb', line 2

def errors
  @errors
end

#targetObject (readonly)

Returns the value of attribute target.



2
3
4
# File 'lib/bukovina/parsers/event.rb', line 2

def target
  @target
end

Instance Method Details

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



182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
# File 'lib/bukovina/parsers/event.rb', line 182

def parse events, options = {}
# TODO skip return if errors found
#
@target = options[:target]

res =
case events
when Hash
   event = parse_hash( events )
   events = post_hash_proc( event )

   { event: events }
when Array
   if events.blank?
      @errors << Parsers::BukovinaInvalidValueError.new( "Value of event " +
         "array is empty" ) ;end

   event_list = events.map do |event|
      parse_hash( event )
   end.compact
   events = post_hash_proc( event_list )

   { event: events }
when NilClass
   @errors << Parsers::BukovinaInvalidValueError.new( "Event list" +
      "can't be blank" )
else
   raise Parsers::BukovinaInvalidClass, "Invalid class #{name.class} " +
      "for Event line '#{name}'" ; end

@errors.empty? && res || nil

   rescue Parsers::BukovinaError => e
@errors << e
nil ; end

#post_hash_proc(in_event) ⇒ Object



218
219
220
221
222
223
224
225
226
227
228
# File 'lib/bukovina/parsers/event.rb', line 218

def post_hash_proc in_event
events = [ in_event ].flatten
   
if !events.find { |e| e[:type] == 'Veneration' }
   happened_at = events.last[:happened_at]
   events << {
      happened_at: happened_at.is_a?(Array) && happened_at.first || happened_at,
      type: 'Veneration',
   } ;end

events ;end