opening_hours_converter 1.13.15 → 1.14.0

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: '0285111a830dec3522015740cb47bd369ae2b380e98d61cdf7b1cb5f28bc63ee'
4
- data.tar.gz: c5a861db86278d886e244b48079eaf1e82cac515a96adffc1585c7b5df380c2a
3
+ metadata.gz: 1840d4011474e210bb2248979afc8850829c4eab62b0cb2036a670a70ded1265
4
+ data.tar.gz: 0710a806e7ac90d3b61d83bd9281acb1c56546aabb504d8b4961f5eeb05ca1b4
5
5
  SHA512:
6
- metadata.gz: 45727f1c510fd1411d3731a0dee6dc7e20cb352b35aeaafe4caea3293f23dbb29d7e3e83263f41e75f4d7621aaddc7e00179da6986379398b96f3730d64844c5
7
- data.tar.gz: 70d2591cf15c348db93be5fb90fc6362c6ed4c6373918af3dbfd680cab23b8e8a301dbaaeb6caec8727c9fd256498fc0b8428822d00aa44747d96c27f411a6eb
6
+ metadata.gz: 5160c41e2242e1489b1daddecef9068c3218d9726b7f6c0871176d323796035df2b1d491018b13506e88bbf33212df6549063a5ed81559ad645ac5e59a579962
7
+ data.tar.gz: 6e3c009bfb86cfda6a516ee4c86b49cc165211ee323981b20d74b778938249cb88a436601517659a4b17c8d4bc26119dec0e171ef94c6685094a9d8ee407ba6f
@@ -48,7 +48,7 @@ module OpeningHoursConverter
48
48
  end
49
49
 
50
50
  # get state and time associated with weekdays
51
- while @current_token >= 0 && (is_rule_modifier?(tokens[@current_token]) || is_time?(tokens[@current_token]))
51
+ while @current_token >= 0 && (is_rule_modifier?(tokens[@current_token]) || is_time?(tokens[@current_token])) || is_weekday?(tokens[@current_token])
52
52
  if is_rule_modifier?(tokens[@current_token])
53
53
  local_modifier = tokens[@current_token].downcase
54
54
  @current_token -= 1
@@ -72,6 +72,11 @@ module OpeningHoursConverter
72
72
  local_times.concat get_times(time_selector)
73
73
  @current_token -= 1
74
74
  end
75
+
76
+ if local_times.empty?
77
+ local_times.concat get_times("00:00-23:59")
78
+ end
79
+
75
80
  begin
76
81
  weekday_selector = tokens[@current_token]
77
82
  weekdays_and_holidays = get_weekdays(weekday_selector)
@@ -125,13 +130,12 @@ module OpeningHoursConverter
125
130
  elsif !(@regex_handler.week_regex =~ wide_range_selector).nil?
126
131
  weeks << get_week(wide_range_selector)
127
132
  else
133
+
128
134
  raise ParseError, "Unsupported selector #{wide_range_selector}"
129
135
  end
130
136
  end
131
137
  end
132
138
 
133
- raise ParseError, 'Unreadable string' if @current_token == tokens.length - 1
134
-
135
139
  # puts "weekdays : #{weekdays}"
136
140
  # puts "weeks : #{weeks}"
137
141
  # puts "months : #{months}"
@@ -399,11 +403,11 @@ module OpeningHoursConverter
399
403
 
400
404
  def get_month(wrs)
401
405
  single_month = wrs.gsub(/\:$/, '').split('-')
402
- month_from = OSM_MONTHS.find_index(single_month[0]) + 1
406
+ month_from = OSM_MONTHS.find_index(single_month[0].capitalize) + 1
403
407
  raise ArgumentError, "Invalid month : #{single_month[0]}" if month_from < 1
404
408
 
405
409
  if single_month.length > 1
406
- month_to = OSM_MONTHS.find_index(single_month[1]) + 1
410
+ month_to = OSM_MONTHS.find_index(single_month[1].capitalize) + 1
407
411
  raise ArgumentError, "Invalid month : #{single_month[1]}" if month_to < 1
408
412
  else
409
413
  month_to = month_from
@@ -431,13 +435,13 @@ module OpeningHoursConverter
431
435
  single_month = wrs.gsub(/\:$/, '').split('-')
432
436
 
433
437
  month_from = single_month[0].split(' ')
434
- 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 }
435
439
  raise ArgumentError, "Invalid month : #{month_from.inspect}" if month_from[:month] < 1
436
440
 
437
441
  if single_month.length > 1
438
442
  month_to = single_month[1].split(' ')
439
443
  month_to = if month_to.length > 1
440
- { 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 }
441
445
  else
442
446
  { day: month_to[0].to_i, month: month_from[:month] }
443
447
  end
@@ -452,16 +456,16 @@ module OpeningHoursConverter
452
456
  def get_year_month(wrs)
453
457
  single_year_month = wrs.gsub(/\:$/, '').split('-')
454
458
  year_month_from = single_year_month[0].split(' ')
455
- 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 }
456
460
  if year_month_from.empty?
457
461
  raise ArgumentError, "Invalid year_month : #{year_month_from.inspect}"
458
462
  end
459
463
  if single_year_month.length > 1
460
464
  year_month_to = single_year_month[1].split(' ')
461
465
  if year_month_to.length == 2
462
- 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 }
463
467
  elsif year_month_to.length == 1
464
- 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] }
465
469
  end
466
470
  raise ArgumentError, "Invalid year_month : #{year_month_to.inspect}" if year_month_to.empty?
467
471
  else
@@ -485,7 +489,7 @@ module OpeningHoursConverter
485
489
  single_year_month_day = wrs.gsub(/\:$/, '').split('-')
486
490
  year_month_day_from = single_year_month_day[0].split(' ')
487
491
  year_month_day_from = { day: year_month_day_from[2].to_i,
488
- month: OSM_MONTHS.find_index(year_month_day_from[1]) + 1,
492
+ month: OSM_MONTHS.find_index(year_month_day_from[1].capitalize) + 1,
489
493
  year: year_month_day_from[0].to_i }
490
494
  if year_month_day_from.empty?
491
495
  raise ArgumentError, "Invalid year_month_day : #{year_month_day_from.inspect}"
@@ -494,11 +498,11 @@ module OpeningHoursConverter
494
498
  year_month_day_to = single_year_month_day[1].split(' ')
495
499
  if year_month_day_to.length == 3
496
500
  year_month_day_to = { day: year_month_day_to[2].to_i,
497
- month: OSM_MONTHS.find_index(year_month_day_to[1]) + 1,
501
+ month: OSM_MONTHS.find_index(year_month_day_to[1].capitalize) + 1,
498
502
  year: year_month_day_to[0].to_i }
499
503
  elsif year_month_day_to.length == 2
500
504
  year_month_day_to = { day: year_month_day_to[1].to_i,
501
- month: OSM_MONTHS.find_index(year_month_day_to[0]) + 1,
505
+ month: OSM_MONTHS.find_index(year_month_day_to[0].capitalize) + 1,
502
506
  year: year_month_day_from[:year] }
503
507
  elsif year_month_day_to.length == 1
504
508
  year_month_day_to = { day: year_month_day_to[0].to_i,
@@ -528,12 +532,12 @@ module OpeningHoursConverter
528
532
  if days.length == 2
529
533
  from = {
530
534
  year: year.to_i,
531
- month: OSM_MONTHS.find_index(wr[0...3]) + 1,
535
+ month: OSM_MONTHS.find_index(wr[0...3].capitalize) + 1,
532
536
  day: days[0]
533
537
  }
534
538
  to = {
535
539
  year: year.to_i,
536
- month: OSM_MONTHS.find_index(wr[0...3]) + 1,
540
+ month: OSM_MONTHS.find_index(wr[0...3].capitalize) + 1,
537
541
  day: days[1]
538
542
  }
539
543
  { from_day: from, to_day: to }
@@ -560,24 +564,24 @@ module OpeningHoursConverter
560
564
  end_day = end_month_day[4...end_month_day.length]&.to_i
561
565
 
562
566
  from = {
563
- month: OSM_MONTHS.find_index(start_month) + 1,
567
+ month: OSM_MONTHS.find_index(start_month.capitalize) + 1,
564
568
  day: start_day || 1
565
569
  }
566
570
  to = {
567
- month: OSM_MONTHS.find_index(end_month) + 1,
568
- 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)]
569
573
  }
570
574
  else
571
575
  month = wr[0...3]
572
576
  day = wr[4...wr.length]&.to_i
573
577
 
574
578
  from = {
575
- month: OSM_MONTHS.find_index(month) + 1,
579
+ month: OSM_MONTHS.find_index(month.capitalize) + 1,
576
580
  day: day || 1
577
581
  }
578
582
  to = {
579
- month: OSM_MONTHS.find_index(month) + 1,
580
- 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)]
581
585
  }
582
586
  end
583
587
 
@@ -594,24 +598,24 @@ module OpeningHoursConverter
594
598
  start_month, end_month = wr.split('-')
595
599
  from = {
596
600
  year: year.to_i,
597
- month: OSM_MONTHS.find_index(start_month) + 1,
601
+ month: OSM_MONTHS.find_index(start_month.capitalize) + 1,
598
602
  day: 1
599
603
  }
600
604
  to = {
601
605
  year: year.to_i,
602
- month: OSM_MONTHS.find_index(end_month) + 1,
603
- 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)]
604
608
  }
605
609
  else
606
610
  from = {
607
611
  year: year.to_i,
608
- month: OSM_MONTHS.find_index(wr[0...3]) + 1,
612
+ month: OSM_MONTHS.find_index(wr[0...3].capitalize) + 1,
609
613
  day: 1
610
614
  }
611
615
  to = {
612
616
  year: year.to_i,
613
- month: OSM_MONTHS.find_index(wr[0...3]) + 1,
614
- 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)]
615
619
  }
616
620
  end
617
621
  { from_day: from, to_day: to }
@@ -653,9 +657,9 @@ module OpeningHoursConverter
653
657
  elsif !(@regex_handler.week_day_regex =~ wd).nil?
654
658
  single_weekday = wd.split('-')
655
659
 
656
- wd_from = OSM_DAYS.find_index(single_weekday[0])
660
+ wd_from = OSM_DAYS.find_index(single_weekday[0].capitalize)
657
661
  wd_to = if single_weekday.length > 1
658
- OSM_DAYS.find_index(single_weekday[1])
662
+ OSM_DAYS.find_index(single_weekday[1].capitalize)
659
663
  else
660
664
  wd_from
661
665
  end
@@ -666,8 +670,8 @@ module OpeningHoursConverter
666
670
  from, to = wd[0...wd.index('[')].split('-')
667
671
  index = wd[wd.index('[') + 1...wd.index(']')]
668
672
 
669
- wd_from = OSM_DAYS.find_index(from)
670
- 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)
671
675
 
672
676
  weekdays << { from: wd_from, to: wd_from, index: index.to_i }
673
677
  else
@@ -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?
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.15
4
+ version: 1.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ziserman Martin
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-21 00:00:00.000000000 Z
11
+ date: 2022-07-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -100,7 +100,7 @@ homepage: https://github.com/Publidata/opening_hours_converter
100
100
  licenses:
101
101
  - AGPL-3.0
102
102
  metadata: {}
103
- post_install_message:
103
+ post_install_message:
104
104
  rdoc_options: []
105
105
  require_paths:
106
106
  - lib
@@ -116,7 +116,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
116
116
  version: '0'
117
117
  requirements: []
118
118
  rubygems_version: 3.1.2
119
- signing_key:
119
+ signing_key:
120
120
  specification_version: 4
121
121
  summary: Datetime range to opening hours, opening hours to datetime range
122
122
  test_files: []