calview 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/bin/calview.rb +10 -5
  3. data/lib/calview.rb +13 -0
  4. metadata +3 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d2f77c86874981a696b27cb95c9deade07b24f769d0ce6e793b9bac01ca17aec
4
- data.tar.gz: fc2282ea3930cc787b3fca553562fcbb67edd90710c9d85e76acc2e5ea478bde
3
+ metadata.gz: fdd5d34b7916bb770bb9b932a0b01179a3812582392fe06d105129f0ffe18249
4
+ data.tar.gz: 515d096f5e97916ceaf70d0939d95e75dbef9d30c91601695ace02a0465957a3
5
5
  SHA512:
6
- metadata.gz: 9c9da13224b12982dfb824f3a1739c912f4be59794cd2d1f357975c7adf17eac4d420f38d3c3c99e5319a2b1b3b155e8a15fd31978b590e7dafd128684f6b4e8
7
- data.tar.gz: 15e6d4182ee4098ae112e2e183638552318af2683501c52bc6afcbca81614c82e8a094943fda8f26ce91ded6cc70185ee9b6c8d1d1389a3bb7a3b1bd6dde7713
6
+ metadata.gz: 6326acb5dc34356cd0b1d47582891e8b32e3db2ed56b23f04788e6e1e7f0be302c9e7d336d84058e8a55b654a7cc400ab9cef5d0dedc4cf091d66a1f0f3a1a8e
7
+ data.tar.gz: cbcf64b343d84acddeb64d23d8487c52e4ce79dbbfe83d0535e4a29ca005b12aa598cbe53320f35b0142672335381bebf14303be834a6db3bb279d5a1fe3d0b5
data/bin/calview.rb CHANGED
@@ -15,12 +15,12 @@ class VcalParser
15
15
  # Precompile all regex patterns for better performance
16
16
  PATTERNS = {
17
17
  multiline_attendee: /(^ATTENDEE.*)\n^ (.*)/,
18
- dtstart_tzid: /^DTSTART;TZID=(.*?):(.*?)(?:T(\d{4}))?$/,
19
- dtend_tzid: /^DTEND;TZID=(.*?):(.*?)(?:T(\d{4}))?$/,
18
+ dtstart_tzid: /^DTSTART;TZID=(.*?):(.*?)(?:T(\d{6}))?$/,
19
+ dtend_tzid: /^DTEND;TZID=(.*?):(.*?)(?:T(\d{6}))?$/,
20
20
  dtstart_date: /^DTSTART;VALUE=DATE:(.*)$/,
21
21
  dtend_date: /^DTEND;VALUE=DATE:(.*)$/,
22
- dtstart_utc: /^DTSTART:(.*?)(?:T(\d{4}))?$/,
23
- dtend_utc: /^DTEND:(.*?)(?:T(\d{4}))?$/,
22
+ dtstart_utc: /^DTSTART:(.*?)(?:T(\d{6}))?$/,
23
+ dtend_utc: /^DTEND:(.*?)(?:T(\d{6}))?$/,
24
24
  organizer_cn: /^ORGANIZER;CN=(.*)$/,
25
25
  organizer: /^ORGANIZER:(.*)$/,
26
26
  attendee: /^ATTENDEE.*CN=([\s\S]*?@.*)\n/,
@@ -284,6 +284,7 @@ class VcalParser
284
284
  def extract_time(time_str)
285
285
  return nil unless time_str
286
286
  # Direct string manipulation is faster than regex for fixed format
287
+ # Handle both 4-digit (HHMM) and 6-digit (HHMMSS) formats
287
288
  "#{time_str[0,2]}:#{time_str[2,2]}"
288
289
  end
289
290
 
@@ -388,7 +389,11 @@ class VcalParser
388
389
  end
389
390
 
390
391
  def parse_recurrence
391
- match = @vcal.match(PATTERNS[:rrule])
392
+ # Only look for RRULE within the VEVENT section
393
+ vevent_section = @vcal[/BEGIN:VEVENT.*?END:VEVENT/m]
394
+ return unless vevent_section
395
+
396
+ match = vevent_section.match(PATTERNS[:rrule])
392
397
  @event[:recurrence] = parse_rrule(match[1]) if match
393
398
  end
394
399
 
data/lib/calview.rb ADDED
@@ -0,0 +1,13 @@
1
+ # CalView - VCAL/ICS parser and viewer library
2
+ #
3
+ # Usage:
4
+ # require 'calview'
5
+ # parser = VcalParser.new(ics_string)
6
+ # event = parser.parse
7
+ # # event is a Hash with :summary, :dates, :times, :organizer, etc.
8
+ #
9
+ # For formatted output:
10
+ # viewer = CalendarViewer.new(format: :text)
11
+ # viewer.display(event)
12
+
13
+ require_relative '../bin/calview.rb'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: calview
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Geir Isene
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-08-10 00:00:00.000000000 Z
11
+ date: 2026-03-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tzinfo
@@ -64,6 +64,7 @@ extensions: []
64
64
  extra_rdoc_files: []
65
65
  files:
66
66
  - bin/calview.rb
67
+ - lib/calview.rb
67
68
  homepage: https://isene.com/
68
69
  licenses:
69
70
  - Unlicense