icalPal 3.2.0 → 3.4.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.
data/lib/rdt.rb CHANGED
@@ -1,9 +1,22 @@
1
- require 'date'
2
-
3
1
  module ICalPal
4
2
  # Child class of DateTime that adds support for relative dates (<em><b>R</b>elative<b>D</b>ate<b>T</b>ime</em>).
5
3
  class RDT < DateTime
6
4
 
5
+ # Create a new RDT from a Time object
6
+ def self.from_time(t)
7
+ new(*t.to_a[0..5].reverse)
8
+ end
9
+
10
+ # Create a new RDT from seconds since epoch
11
+ def self.from_epoch(s)
12
+ from_time(Time.at(s))
13
+ end
14
+
15
+ # Create a new RDT from seconds since iCal epoch
16
+ def self.from_itime(s)
17
+ from_epoch(s + ITIME)
18
+ end
19
+
7
20
  # Convert a String to an RDT
8
21
  #
9
22
  # @param str [String] can be +yesterday+, +today+, +tomorrow+,
@@ -28,7 +41,7 @@ module ICalPal
28
41
  # @return [String] A string representation of self relative to
29
42
  # today.
30
43
  def to_s
31
- return strftime($opts[:df]) if $opts[:nrd] && $opts[:df]
44
+ return strftime($opts[:df]) if $opts && $opts[:nrd] && $opts[:df]
32
45
 
33
46
  case Integer(RDT.new(year, month, day) - $today)
34
47
  when -2 then 'day before yesterday'
@@ -36,7 +49,7 @@ module ICalPal
36
49
  when 0 then 'today'
37
50
  when 1 then 'tomorrow'
38
51
  when 2 then 'day after tomorrow'
39
- else strftime($opts[:df]) if $opts[:df]
52
+ else strftime($opts[:df]) if $opts && $opts[:df]
40
53
  end
41
54
  end
42
55
 
@@ -54,6 +67,11 @@ module ICalPal
54
67
  to_time.to_i
55
68
  end
56
69
 
70
+ # @return [Array] Only the year, month and day of self
71
+ def ymd
72
+ [ year, month, day ]
73
+ end
74
+
57
75
  # @see ICalPal::RDT.to_s
58
76
  #
59
77
  # @return [Boolean]
data/lib/utils.rb ADDED
@@ -0,0 +1,38 @@
1
+ # Convert a key/value pair to XML. The value should be +nil+, +String+,
2
+ # +Integer+, +Array+, or +ICalPal::RDT+
3
+ #
4
+ # @param key The key
5
+ # @param value The value
6
+ # @return [String] The key/value pair in a simple XML format
7
+ def xmlify(key, value)
8
+ case value
9
+ # Nil
10
+ when NilClass then "<#{key}/>"
11
+
12
+ # Array
13
+ when Array
14
+ # Treat empty arrays as nil values
15
+ xmlify(key, nil) if value[0].nil?
16
+
17
+ retval = ''
18
+ value.each { |x| retval += xmlify("#{key}0", x) }
19
+ "<#{key}>#{retval}</#{key}>"
20
+
21
+ # Unknown
22
+ else "<#{key}>#{value}</#{key}>"
23
+ end
24
+ end
25
+
26
+ # Get the application icalPal is most likely running in
27
+ #
28
+ # @return [Integer] The basename of the program whose parent process id is 1 (launchd)
29
+ def ancestor
30
+ ppid = Process.ppid
31
+
32
+ while (ppid != 1)
33
+ ps = `ps -p #{ppid} -o ppid,command | tail -1`
34
+ ppid = ps[/^[0-9 ]+ /].to_i
35
+ end
36
+
37
+ ps[ps.rindex('/') + 1..].chop
38
+ end
data/lib/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module ICalPal
2
2
  NAME = 'icalPal'.freeze
3
- VERSION = '3.2.0'.freeze
3
+ VERSION = '3.4.0'.freeze
4
4
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: icalPal
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.0
4
+ version: 3.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Rosen
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-02-19 00:00:00.000000000 Z
10
+ date: 2025-04-08 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: nokogiri-plist
@@ -29,14 +29,34 @@ dependencies:
29
29
  requirements:
30
30
  - - "~>"
31
31
  - !ruby/object:Gem::Version
32
- version: '2'
32
+ version: 2.6.0
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '2'
39
+ version: 2.6.0
40
+ - !ruby/object:Gem::Dependency
41
+ name: timezone
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0.99'
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: 1.3.0
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: '0.99'
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: 1.3.0
40
60
  description: |
41
61
  Inspired by icalBuddy and maintains close compatability. Includes
42
62
  many additional features for querying, filtering, and formatting.
@@ -49,6 +69,7 @@ extra_rdoc_files:
49
69
  files:
50
70
  - README.md
51
71
  - bin/icalPal
72
+ - bin/icalpal
52
73
  - icalPal.gemspec
53
74
  - lib/EventKit.rb
54
75
  - lib/ToICalPal.rb
@@ -60,11 +81,19 @@ files:
60
81
  - lib/rdt.rb
61
82
  - lib/reminder.rb
62
83
  - lib/store.rb
84
+ - lib/utils.rb
63
85
  - lib/version.rb
64
86
  homepage: https://github.com/ajrosen/icalPal
65
87
  licenses:
66
88
  - GPL-3.0-or-later
67
- metadata: {}
89
+ metadata:
90
+ bug_tracker_uri: https://github.com/ajrosen/icalPal/issues
91
+ rubygems_mfa_required: 'true'
92
+ post_install_message: |2+
93
+
94
+ Note: icalPal requires "Full Disk Access" in System Settings to access your calendar.
95
+ Make sure the program that runs icalPal, not icalPal itself, has these permissions.
96
+
68
97
  rdoc_options: []
69
98
  require_paths:
70
99
  - lib
@@ -79,7 +108,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
79
108
  - !ruby/object:Gem::Version
80
109
  version: '0'
81
110
  requirements: []
82
- rubygems_version: 3.6.3
111
+ rubygems_version: 3.6.6
83
112
  specification_version: 4
84
113
  summary: Command-line tool to query the macOS Calendar
85
114
  test_files: []
115
+ ...