opening_hours_converter 1.13.17 → 1.14.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f84de92905d530dba2e826eea1a88045fb521cf5a24803f9f0b040574ae05ea4
4
- data.tar.gz: a464fcc26ebe69fcd7cf8f88cfa992eea87c2c35453710e6f32b407a101c567b
3
+ metadata.gz: 5a2ed9352795f7d666eb4869913debe946bf716477736bce0a692656de42adb4
4
+ data.tar.gz: ac9cc5e9c97d5a34752d4eb9a87b400de4fa79f345ed3feaf342d2eb79e4ba9d
5
5
  SHA512:
6
- metadata.gz: f287f0439e502deeac6fc574085526fdf83fb188412287ba025a87b948902ceaeaba3191e3300f866e76baa8530e9ca80150561e4f3ec3cab11c1de930f9b7d4
7
- data.tar.gz: 28548d677e6e763fa1dbf676b8b7f5fd4f6e2c0f045276a8594231b51ecf7665dfebd7b4ff9683e414ca1d41ad180bdc8548b981b91262b1dc7faf7a12a913c5
6
+ metadata.gz: e101cbe8cca800b452a573349b9058f5569a2a94c7bbbf46f9beb49223b6a5f9655bbe05510f0a2f3be5a87e1d84e948d67d6a433829879e89f3e05e9806fc46
7
+ data.tar.gz: 268214fc3bb1c51242ba19441ab5772c7bf8ae1f16f7d8855aa477acac568984aca9b097ca39da3326c8d90cdf95aa8416aeab76d6b7a05e5f4318bf16f6af18
@@ -67,7 +67,7 @@ module OpeningHoursConverter
67
67
  rule_index = 0
68
68
 
69
69
  while !oh_rule_added && rule_index < rules.length
70
- if rules[rule_index].same_time?(oh_rule) && !rules[rule_index].equals(oh_rule) && rules[rule_index].comment == oh_rule.comment
70
+ if rules[rule_index].mergeable?(oh_rule) && rules[rule_index].same_time?(oh_rule) && !rules[rule_index].equals(oh_rule) && rules[rule_index].comment == oh_rule.comment && rules[rule_index].comment != "off" && oh_rule.comment != "off"
71
71
  begin
72
72
  for date_id in 0...oh_rule.date.length
73
73
  rules[rule_index].add_date(oh_rule.date[date_id])
@@ -403,11 +403,11 @@ module OpeningHoursConverter
403
403
 
404
404
  def get_month(wrs)
405
405
  single_month = wrs.gsub(/\:$/, '').split('-')
406
- month_from = OSM_MONTHS.find_index(single_month[0]) + 1
406
+ month_from = OSM_MONTHS.find_index(single_month[0].capitalize) + 1
407
407
  raise ArgumentError, "Invalid month : #{single_month[0]}" if month_from < 1
408
408
 
409
409
  if single_month.length > 1
410
- month_to = OSM_MONTHS.find_index(single_month[1]) + 1
410
+ month_to = OSM_MONTHS.find_index(single_month[1].capitalize) + 1
411
411
  raise ArgumentError, "Invalid month : #{single_month[1]}" if month_to < 1
412
412
  else
413
413
  month_to = month_from
@@ -435,13 +435,13 @@ module OpeningHoursConverter
435
435
  single_month = wrs.gsub(/\:$/, '').split('-')
436
436
 
437
437
  month_from = single_month[0].split(' ')
438
- month_from = { day: month_from[1].to_i, month: OSM_MONTHS.find_index(month_from[0]) + 1 }
438
+ month_from = { day: month_from[1].to_i, month: OSM_MONTHS.find_index(month_from[0].capitalize) + 1 }
439
439
  raise ArgumentError, "Invalid month : #{month_from.inspect}" if month_from[:month] < 1
440
440
 
441
441
  if single_month.length > 1
442
442
  month_to = single_month[1].split(' ')
443
443
  month_to = if month_to.length > 1
444
- { day: month_to[1].to_i, month: OSM_MONTHS.find_index(month_to[0]) + 1 }
444
+ { day: month_to[1].to_i, month: OSM_MONTHS.find_index(month_to[0].capitalize) + 1 }
445
445
  else
446
446
  { day: month_to[0].to_i, month: month_from[:month] }
447
447
  end
@@ -456,16 +456,16 @@ module OpeningHoursConverter
456
456
  def get_year_month(wrs)
457
457
  single_year_month = wrs.gsub(/\:$/, '').split('-')
458
458
  year_month_from = single_year_month[0].split(' ')
459
- year_month_from = { month: OSM_MONTHS.find_index(year_month_from[1]) + 1, year: year_month_from[0].to_i }
459
+ year_month_from = { month: OSM_MONTHS.find_index(year_month_from[1].capitalize) + 1, year: year_month_from[0].to_i }
460
460
  if year_month_from.empty?
461
461
  raise ArgumentError, "Invalid year_month : #{year_month_from.inspect}"
462
462
  end
463
463
  if single_year_month.length > 1
464
464
  year_month_to = single_year_month[1].split(' ')
465
465
  if year_month_to.length == 2
466
- year_month_to = { month: OSM_MONTHS.find_index(year_month_to[1]) + 1, year: year_month_to[0].to_i }
466
+ year_month_to = { month: OSM_MONTHS.find_index(year_month_to[1].capitalize) + 1, year: year_month_to[0].to_i }
467
467
  elsif year_month_to.length == 1
468
- year_month_to = { month: OSM_MONTHS.find_index(year_month_to[0]) + 1, year: year_month_from[:year] }
468
+ year_month_to = { month: OSM_MONTHS.find_index(year_month_to[0].capitalize) + 1, year: year_month_from[:year] }
469
469
  end
470
470
  raise ArgumentError, "Invalid year_month : #{year_month_to.inspect}" if year_month_to.empty?
471
471
  else
@@ -489,7 +489,7 @@ module OpeningHoursConverter
489
489
  single_year_month_day = wrs.gsub(/\:$/, '').split('-')
490
490
  year_month_day_from = single_year_month_day[0].split(' ')
491
491
  year_month_day_from = { day: year_month_day_from[2].to_i,
492
- month: OSM_MONTHS.find_index(year_month_day_from[1]) + 1,
492
+ month: OSM_MONTHS.find_index(year_month_day_from[1].capitalize) + 1,
493
493
  year: year_month_day_from[0].to_i }
494
494
  if year_month_day_from.empty?
495
495
  raise ArgumentError, "Invalid year_month_day : #{year_month_day_from.inspect}"
@@ -498,11 +498,11 @@ module OpeningHoursConverter
498
498
  year_month_day_to = single_year_month_day[1].split(' ')
499
499
  if year_month_day_to.length == 3
500
500
  year_month_day_to = { day: year_month_day_to[2].to_i,
501
- month: OSM_MONTHS.find_index(year_month_day_to[1]) + 1,
501
+ month: OSM_MONTHS.find_index(year_month_day_to[1].capitalize) + 1,
502
502
  year: year_month_day_to[0].to_i }
503
503
  elsif year_month_day_to.length == 2
504
504
  year_month_day_to = { day: year_month_day_to[1].to_i,
505
- month: OSM_MONTHS.find_index(year_month_day_to[0]) + 1,
505
+ month: OSM_MONTHS.find_index(year_month_day_to[0].capitalize) + 1,
506
506
  year: year_month_day_from[:year] }
507
507
  elsif year_month_day_to.length == 1
508
508
  year_month_day_to = { day: year_month_day_to[0].to_i,
@@ -532,12 +532,12 @@ module OpeningHoursConverter
532
532
  if days.length == 2
533
533
  from = {
534
534
  year: year.to_i,
535
- month: OSM_MONTHS.find_index(wr[0...3]) + 1,
535
+ month: OSM_MONTHS.find_index(wr[0...3].capitalize) + 1,
536
536
  day: days[0]
537
537
  }
538
538
  to = {
539
539
  year: year.to_i,
540
- month: OSM_MONTHS.find_index(wr[0...3]) + 1,
540
+ month: OSM_MONTHS.find_index(wr[0...3].capitalize) + 1,
541
541
  day: days[1]
542
542
  }
543
543
  { from_day: from, to_day: to }
@@ -564,24 +564,24 @@ module OpeningHoursConverter
564
564
  end_day = end_month_day[4...end_month_day.length]&.to_i
565
565
 
566
566
  from = {
567
- month: OSM_MONTHS.find_index(start_month) + 1,
567
+ month: OSM_MONTHS.find_index(start_month.capitalize) + 1,
568
568
  day: start_day || 1
569
569
  }
570
570
  to = {
571
- month: OSM_MONTHS.find_index(end_month) + 1,
572
- day: end_day || MONTH_END_DAY[OSM_MONTHS.find_index(end_month)]
571
+ month: OSM_MONTHS.find_index(end_month.capitalize) + 1,
572
+ day: end_day || MONTH_END_DAY[OSM_MONTHS.find_index(end_month.capitalize)]
573
573
  }
574
574
  else
575
575
  month = wr[0...3]
576
576
  day = wr[4...wr.length]&.to_i
577
577
 
578
578
  from = {
579
- month: OSM_MONTHS.find_index(month) + 1,
579
+ month: OSM_MONTHS.find_index(month.capitalize) + 1,
580
580
  day: day || 1
581
581
  }
582
582
  to = {
583
- month: OSM_MONTHS.find_index(month) + 1,
584
- day: day || MONTH_END_DAY[OSM_MONTHS.find_index(month)]
583
+ month: OSM_MONTHS.find_index(month.capitalize) + 1,
584
+ day: day || MONTH_END_DAY[OSM_MONTHS.find_index(month.capitalize)]
585
585
  }
586
586
  end
587
587
 
@@ -598,24 +598,24 @@ module OpeningHoursConverter
598
598
  start_month, end_month = wr.split('-')
599
599
  from = {
600
600
  year: year.to_i,
601
- month: OSM_MONTHS.find_index(start_month) + 1,
601
+ month: OSM_MONTHS.find_index(start_month.capitalize) + 1,
602
602
  day: 1
603
603
  }
604
604
  to = {
605
605
  year: year.to_i,
606
- month: OSM_MONTHS.find_index(end_month) + 1,
607
- day: MONTH_END_DAY[OSM_MONTHS.find_index(end_month)]
606
+ month: OSM_MONTHS.find_index(end_month.capitalize) + 1,
607
+ day: MONTH_END_DAY[OSM_MONTHS.find_index(end_month.capitalize)]
608
608
  }
609
609
  else
610
610
  from = {
611
611
  year: year.to_i,
612
- month: OSM_MONTHS.find_index(wr[0...3]) + 1,
612
+ month: OSM_MONTHS.find_index(wr[0...3].capitalize) + 1,
613
613
  day: 1
614
614
  }
615
615
  to = {
616
616
  year: year.to_i,
617
- month: OSM_MONTHS.find_index(wr[0...3]) + 1,
618
- day: MONTH_END_DAY[OSM_MONTHS.find_index(wr[0...3])]
617
+ month: OSM_MONTHS.find_index(wr[0...3].capitalize) + 1,
618
+ day: MONTH_END_DAY[OSM_MONTHS.find_index(wr[0...3].capitalize)]
619
619
  }
620
620
  end
621
621
  { from_day: from, to_day: to }
@@ -657,9 +657,9 @@ module OpeningHoursConverter
657
657
  elsif !(@regex_handler.week_day_regex =~ wd).nil?
658
658
  single_weekday = wd.split('-')
659
659
 
660
- wd_from = OSM_DAYS.find_index(single_weekday[0])
660
+ wd_from = OSM_DAYS.find_index(single_weekday[0].capitalize)
661
661
  wd_to = if single_weekday.length > 1
662
- OSM_DAYS.find_index(single_weekday[1])
662
+ OSM_DAYS.find_index(single_weekday[1].capitalize)
663
663
  else
664
664
  wd_from
665
665
  end
@@ -670,8 +670,8 @@ module OpeningHoursConverter
670
670
  from, to = wd[0...wd.index('[')].split('-')
671
671
  index = wd[wd.index('[') + 1...wd.index(']')]
672
672
 
673
- wd_from = OSM_DAYS.find_index(from)
674
- wd_to = OSM_DAYS.find_index(to)
673
+ wd_from = OSM_DAYS.find_index(from.capitalize)
674
+ wd_to = OSM_DAYS.find_index(to.capitalize)
675
675
 
676
676
  weekdays << { from: wd_from, to: wd_from, index: index.to_i }
677
677
  else
@@ -294,6 +294,17 @@ module OpeningHoursConverter
294
294
  end
295
295
  end
296
296
 
297
+ def mergeable?(o)
298
+ if o.nil? || o.date.length != @date.length
299
+ true
300
+ else
301
+ @date.each_with_index do |d, i|
302
+ return false if (d.wide_interval.start&.dig(:year) != o.date[i].wide_interval.start&.dig(:year)) && d.wide_interval.type != o.date[i].wide_interval.type
303
+ end
304
+ true
305
+ end
306
+ end
307
+
297
308
  def equals(o)
298
309
  return false unless o.instance_of?(OpeningHoursConverter::OpeningHoursRule)
299
310
  (same_time?(o) && same_date?(o))
@@ -317,7 +317,7 @@ module OpeningHoursConverter
317
317
 
318
318
  def compile(string)
319
319
  @compile ||= {}
320
- @compile[string] ||= Regexp.compile(string)
320
+ @compile[string] ||= Regexp.compile(string, Regexp::IGNORECASE)
321
321
  end
322
322
 
323
323
  def escape(string)
@@ -23,15 +23,15 @@ module OpeningHoursConverter
23
23
  end
24
24
 
25
25
  def weekday?
26
- string? && OSM_DAYS.any? { |day| day == @value }
26
+ string? && OSM_DAYS.any? { |day| day.downcase == @value.downcase }
27
27
  end
28
28
 
29
29
  def month?
30
- string? && OSM_MONTHS.any? { |day| day == @value }
30
+ string? && OSM_MONTHS.any? { |day| day.downcase == @value.downcase }
31
31
  end
32
32
 
33
33
  def week?
34
- string? && @value == 'week'
34
+ string? && @value.downcase == 'week'
35
35
  end
36
36
 
37
37
  def week_index?
@@ -519,7 +519,7 @@ module OpeningHoursConverter
519
519
  if self_to_day.is_a?(Array)
520
520
  if o_to_day.is_a?(Array)
521
521
  return false unless o_to_day.length == self_to_day.length
522
- return self_to_day.all? do |self_day|
522
+ return self.start == o.start && self_to_day.all? do |self_day|
523
523
  o_to_day.any? do |o_day|
524
524
  self_day.equals(o_day)
525
525
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opening_hours_converter
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.13.17
4
+ version: 1.14.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ziserman Martin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-06-27 00:00:00.000000000 Z
11
+ date: 2022-10-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json