add_to_calendar 0.1.0 → 0.2.4

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: 1424db1a7b175365602cda45a451d53eabaf14e67058003ef7b024d6984d93bd
4
- data.tar.gz: 9e050f1eaf3fb403493000f1487bff404636c5f778b59b72f421caaf5dc00379
3
+ metadata.gz: 9ccdbe13aa98bd8e94caba7b5ab6b270a7d180f29d4b45229275c1d58a4da0c7
4
+ data.tar.gz: c75a18bf0b11590e57ecf129f5b5b4a9abbbc665e50ef8017ca2b66a2d81e872
5
5
  SHA512:
6
- metadata.gz: 175b9b699feba0968eb11516e95b84f894bc4a4f7c721d7e65b0af084bd005436a8e6655bf71e50d77fb48ae930cb0ab788ba0cbce4d2c8b23aec1c05fb7e91b
7
- data.tar.gz: e98fcbb260cd9ff707d227df4f37113860592af5397932ce2d356e8bd928a3f219827d5e7e48f6e446feb0fdd2349f7e8fa94383b2dc29b13d6088a94e64eb33
6
+ metadata.gz: b15f499801d1d934d6903ac75f43122d60e38023600591b4a4e7d8286bee3a610c26f52b8b968bdc4a257216334c4bf300201ee3137f5cd8a0871ddafb31ce9f
7
+ data.tar.gz: 4a6fa0af927ff0676b0248ec869627c77c12e60feca22e884d62e83545e6f0d5e04ec4b3d69a05be5ae60f221c3cc537f50b342ad3d58d68dc166c367213dff6
@@ -0,0 +1,12 @@
1
+ # These are supported funding model platforms
2
+
3
+ github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4
+ patreon: # Replace with a single Patreon username
5
+ open_collective: # Replace with a single Open Collective username
6
+ ko_fi: jaredlt
7
+ tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8
+ community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9
+ liberapay: # Replace with a single Liberapay username
10
+ issuehunt: # Replace with a single IssueHunt username
11
+ otechie: # Replace with a single Otechie username
12
+ custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
data/.gitignore CHANGED
@@ -6,3 +6,4 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ *.gem
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- add_to_calendar (0.1.0)
5
- tzinfo (~> 2.0.2)
6
- tzinfo-data (~> 1.2020.1)
4
+ add_to_calendar (0.2.4)
5
+ tzinfo (>= 1.1, < 3)
6
+ tzinfo-data (~> 1.2020)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
@@ -15,7 +15,7 @@ GEM
15
15
  pry (0.13.1)
16
16
  coderay (~> 1.1)
17
17
  method_source (~> 1.0)
18
- rake (12.3.3)
18
+ rake (13.0.1)
19
19
  tzinfo (2.0.2)
20
20
  concurrent-ruby (~> 1.0)
21
21
  tzinfo-data (1.2020.1)
@@ -29,7 +29,7 @@ DEPENDENCIES
29
29
  bundler (~> 2.0)
30
30
  minitest (~> 5.0)
31
31
  pry (~> 0.13.1)
32
- rake (~> 12.3.3)
32
+ rake (~> 13.0.1)
33
33
 
34
34
  BUNDLED WITH
35
35
  2.0.2
data/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # AddToCalendar
2
2
 
3
- A ruby gem to generate 'Add To Calendar' URLs for Google, Apple, Office 365*, Outlook and Yahoo calendars.
3
+ A ruby gem to generate 'Add To Calendar' URLs for Apple, Google, Office 365, Outlook, Outlook.com and Yahoo calendars.
4
4
 
5
- *Office 365 not yet available
5
+ If this gem brings you some value feel free to buy me a coffee :) [![ko-fi](https://www.ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/P5P71PK9T)
6
6
 
7
7
  ## Installation
8
8
 
@@ -41,16 +41,23 @@ Or install it yourself as:
41
41
  @cal.yahoo_url
42
42
  #=> "https://calendar.yahoo.com/?v=60&view=d&type=20&title=Christmas%20party%21&st=20201212T133000Z&dur=0100"
43
43
 
44
+ @cal.office365_url
45
+ #=> "https://outlook.office.com/calendar/0/deeplink/compose?path=/calendar/action/compose&rru=addevent&subject=Christmas%20party%21&startdt=2020-12-12T13:30:00Z&enddt=2020-12-12T14:30:00Z"
46
+
47
+ # For outlook.com, different to Outlook the desktop application below
48
+ @cal.outlook_com_url
49
+ #=> "https://outlook.live.com/calendar/0/deeplink/compose?path=/calendar/action/compose&rru=addevent&subject=Christmas%20party%21&startdt=2020-12-12T13:30:00Z&enddt=2020-12-12T14:30:00Z"
50
+
44
51
  # ical provides a data-uri which will download a properly formatted *.ics file (see 'Creating HTML links' section)
45
52
  @cal.ical_url
46
- #=> "data:text/calendar;charset=utf8,BEGIN:VCALENDAR%0AVERSION:2.0%0ABEGIN:VEVENT%0ADTSTART=20201212T133000Z%0ADTEND=20201212T143000Z%0ASUMMARY=Christmas%20party%21%0AUID=-20201212T133000Z-Christmas%20party%21%0AEND:VEVENT%0AEND:VCALENDAR"
53
+ #=> "data:text/calendar;charset=utf8,BEGIN:VCALENDAR%0AVERSION:2.0%0ABEGIN:VEVENT%0ADTSTART:20201212T133000Z%0ADTEND:20201212T143000Z%0ASUMMARY:Christmas%20party%21%0AUID:-20201212T133000Z-Christmas%20party%21%0AEND:VEVENT%0AEND:VCALENDAR"
47
54
 
48
55
  # apple_url and outlook_url are simply helper methods that call ical_url
49
56
  @cal.apple_url
50
- #=> "data:text/calendar;charset=utf8,BEGIN:VCALENDAR%0AVERSION:2.0%0ABEGIN:VEVENT%0ADTSTART=20201212T133000Z%0ADTEND=20201212T143000Z%0ASUMMARY=Christmas%20party%21%0AUID=-20201212T133000Z-Christmas%20party%21%0AEND:VEVENT%0AEND:VCALENDAR"
57
+ #=> "data:text/calendar;charset=utf8,BEGIN:VCALENDAR%0AVERSION:2.0%0ABEGIN:VEVENT%0ADTSTART:20201212T133000Z%0ADTEND:20201212T143000Z%0ASUMMARY:Christmas%20party%21%0AUID:-20201212T133000Z-Christmas%20party%21%0AEND:VEVENT%0AEND:VCALENDAR"
51
58
 
52
59
  @cal.outlook_url
53
- #=> "data:text/calendar;charset=utf8,BEGIN:VCALENDAR%0AVERSION:2.0%0ABEGIN:VEVENT%0ADTSTART=20201212T133000Z%0ADTEND=20201212T143000Z%0ASUMMARY=Christmas%20party%21%0AUID=-20201212T133000Z-Christmas%20party%21%0AEND:VEVENT%0AEND:VCALENDAR"
60
+ #=> "data:text/calendar;charset=utf8,BEGIN:VCALENDAR%0AVERSION:2.0%0ABEGIN:VEVENT%0ADTSTART:20201212T133000Z%0ADTEND:20201212T143000Z%0ASUMMARY:Christmas%20party%21%0AUID:-20201212T133000Z-Christmas%20party%21%0AEND:VEVENT%0AEND:VCALENDAR"
54
61
  ```
55
62
 
56
63
  ### Creating HTML links
@@ -97,16 +104,25 @@ cal = AddToCalendar::URLs.new(event_attributes)
97
104
 
98
105
  - Offset values eg. "2020-05-13 15:31:00 **+05:00**" are ignored. It is only important that you have the correct date and time numbers set. The timezone is set directly using its own attribute `timezone`.
99
106
  - You must set a timezone so that when users add the event to their calendar it shows at their correct local time.
100
- - Eg. London event @ `2020-05-13 13:30:00` will save in a New Yorkers calendar as local time `2020-05-13 17:30:00`
107
+ - Eg. London event @ `2020-05-13 13:30:00` will save in a New Yorker's calendar as local time `2020-05-13 17:30:00`
101
108
 
102
109
  ### Browser support
103
110
 
104
- - IE11 and lower will not work for `ical_url`, `apple_url` and `outlook_url` (IE does not properly support [data-uri links](https://caniuse.com/#feat=datauri). See [#16](https://github.com/jaredlt/add_to_calendar/issues/16)).
111
+ - IE11 and lower will not work for `ical_url`, `apple_url` and `outlook_url` (IE does not properly support [data-uri links](https://caniuse.com/#feat=datauri). See [#16](https://github.com/jaredlt/add_to_calendar/issues/16)).
112
+ - IE11 will also not work with `Yahoo`, but this is because Yahoo only offers a simplified interface for IE11 which does not work with the add event URL.
105
113
 
106
114
  ### More details
107
115
 
108
116
  - Read the [Wiki](https://github.com/jaredlt/add_to_calendar/wiki) for more specific details
109
117
 
118
+ ## Why build this?
119
+
120
+ I couldn't find an approriate gem or javascript library that did exactly what I wanted. So I decided to scratch my own itch to solve a problem for a startup I'm working on: https://www.littlefutures.org
121
+
122
+ ## Releases
123
+
124
+ - https://rubygems.org/gems/add_to_calendar
125
+
110
126
  ## Development
111
127
 
112
128
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
8
8
  spec.authors = ["Jared Turner"]
9
9
  spec.email = ["jaredlt01@gmail.com"]
10
10
 
11
- spec.summary = "Generate 'Add To Calendar' URLs for Google, Apple, Office 365, Outlook, Yahoo calendars"
11
+ spec.summary = "Generate 'Add To Calendar' URLs for Apple, Google, Office 365, Outlook, Outlook.com and Yahoo calendars"
12
12
  # spec.description = %q{TODO: Write a longer description or delete this line.}
13
13
  spec.homepage = "https://github.com/jaredlt/add_to_calendar"
14
14
  spec.license = "MIT"
@@ -26,11 +26,13 @@ Gem::Specification.new do |spec|
26
26
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
27
27
  spec.require_paths = ["lib"]
28
28
 
29
- spec.add_dependency "tzinfo", "~> 2.0.2"
30
- spec.add_dependency "tzinfo-data", "~> 1.2020.1"
29
+ spec.required_ruby_version = '>= 2.0'
30
+
31
+ spec.add_dependency "tzinfo", ">= 1.1", "< 3"
32
+ spec.add_dependency "tzinfo-data", "~> 1.2020"
31
33
 
32
34
  spec.add_development_dependency "bundler", "~> 2.0"
33
- spec.add_development_dependency "rake", "~> 12.3.3"
35
+ spec.add_development_dependency "rake", "~> 13.0.1"
34
36
  spec.add_development_dependency "minitest", "~> 5.0"
35
37
  spec.add_development_dependency "pry", "~> 0.13.1"
36
38
  end
@@ -1,6 +1,7 @@
1
1
  require "add_to_calendar/version"
2
2
 
3
- # needed for url_encode method
3
+ # erb util needed for url_encode method
4
+ # CGI::escape uses + instead of %20 which doesn't work for ical files
4
5
  require "erb"
5
6
  include ERB::Util
6
7
  require 'tzinfo'
@@ -32,9 +33,9 @@ module AddToCalendar
32
33
  params = {}
33
34
  params[:text] = url_encode(title)
34
35
  if end_datetime
35
- params[:dates] = "#{format_date(start_datetime)}/#{format_date(end_datetime)}"
36
+ params[:dates] = "#{format_date_google(start_datetime)}/#{format_date_google(end_datetime)}"
36
37
  else
37
- params[:dates] = "#{format_date(start_datetime)}/#{format_date(start_datetime + 60*60)}" # end time is 1 hour later
38
+ params[:dates] = "#{format_date_google(start_datetime)}/#{format_date_google(start_datetime + 60*60)}" # end time is 1 hour later
38
39
  end
39
40
  params[:ctz] = timezone.identifier
40
41
  params[:location] = url_encode(location) if location
@@ -54,10 +55,6 @@ module AddToCalendar
54
55
  return calendar_url
55
56
  end
56
57
 
57
- # def office_365_url
58
-
59
- # end
60
-
61
58
  def yahoo_url
62
59
  # Eg. https://calendar.yahoo.com/?v=60&view=d&type=20&title=Holly%27s%208th%20Birthday!&st=20200615T170000Z&dur=0100&desc=Join%20us%20to%20celebrate%20with%20lots%20of%20games%20and%20cake!&in_loc=7%20Apartments,%20London
63
60
  calendar_url = "https://calendar.yahoo.com/?v=60&view=d&type=20"
@@ -87,9 +84,19 @@ module AddToCalendar
87
84
  return calendar_url
88
85
  end
89
86
 
87
+ def office365_url
88
+ # Eg. https://outlook.live.com/calendar/0/deeplink/compose?path=/calendar/action/compose&rru=addevent&subject=Holly%27s%208th%20Birthday%21&startdt=2020-05-12T12:30:00Z&enddt=2020-05-12T16:00:00Z&body=Come%20join%20us%20for%20lots%20of%20fun%20%26%20cake%21%0A%0Ahttps%3A%2F%2Fwww.example.com%2Fevent-details&location=Flat%204%2C%20The%20Edge%2C%2038%20Smith-Dorrien%20St%2C%20London%2C%20N1%207GU
89
+ microsoft("office365")
90
+ end
91
+
92
+ def outlook_com_url
93
+ # Eg. https://outlook.live.com/calendar/0/deeplink/compose?path=/calendar/action/compose&rru=addevent&subject=Holly%27s%208th%20Birthday%21&startdt=2020-05-12T12:30:00Z&enddt=2020-05-12T16:00:00Z&body=Come%20join%20us%20for%20lots%20of%20fun%20%26%20cake%21%0A%0Ahttps%3A%2F%2Fwww.example.com%2Fevent-details&location=Flat%204%2C%20The%20Edge%2C%2038%20Smith-Dorrien%20St%2C%20London%2C%20N1%207GU
94
+ microsoft("outlook.com")
95
+ end
96
+
90
97
  def ical_url
91
- # Downloads a *.ics file provided as a data:text href
92
- # Eg. data:text/calendar;charset=utf8,BEGIN:VCALENDAR%0AVERSION:2.0%0ABEGIN:VEVENT%0ADTSTART=20200610T123000Z%0ADTEND=20200610T133000Z%0ASUMMARY=Holly%27s%208th%20Birthday%21%0AURL=https%3A%2F%2Fwww.example.com%2Fevent-details%0ADESCRIPTION=Come%20join%20us%20for%20lots%20of%20fun%20%26%20cake%21\n\nhttps%3A%2F%2Fwww.example.com%2Fevent-details%0ALOCATION=Flat%204%2C%20The%20Edge%2C%2038%20Smith-Dorrien%20St%2C%20London%2C%20N1%207GU%0AUID=-https%3A%2F%2Fwww.example.com%2Fevent-details%0AEND:VEVENT%0AEND:VCALENDAR
98
+ # Downloads a *.ics file provided as a data-uri
99
+ # Eg. "data:text/calendar;charset=utf8,BEGIN:VCALENDAR%0AVERSION:2.0%0ABEGIN:VEVENT%0ADTSTART:20200512T123000Z%0ADTEND:20200512T160000Z%0ASUMMARY:Holly%27s%208th%20Birthday%21%0AURL:https%3A%2F%2Fwww.example.com%2Fevent-details%0ADESCRIPTION:Come%20join%20us%20for%20lots%20of%20fun%20%26%20cake%21\\n\\nhttps%3A%2F%2Fwww.example.com%2Fevent-details%0ALOCATION:Flat%204%5C%2C%20The%20Edge%5C%2C%2038%20Smith-Dorrien%20St%5C%2C%20London%5C%2C%20N1%207GU%0AUID:-https%3A%2F%2Fwww.example.com%2Fevent-details%0AEND:VEVENT%0AEND:VCALENDAR"
93
100
  calendar_url = "data:text/calendar;charset=utf8,BEGIN:VCALENDAR%0AVERSION:2.0%0ABEGIN:VEVENT"
94
101
  params = {}
95
102
  params[:DTSTART] = utc_datetime(start_datetime)
@@ -98,23 +105,23 @@ module AddToCalendar
98
105
  else
99
106
  params[:DTEND] = utc_datetime(start_datetime + 60*60) # 1 hour later
100
107
  end
101
- params[:SUMMARY] = url_encode(title)
108
+ params[:SUMMARY] = url_encode_ical(title)
102
109
  params[:URL] = url_encode(url) if url
103
- params[:DESCRIPTION] = url_encode(description) if description
110
+ params[:DESCRIPTION] = url_encode_ical(description) if description
104
111
  if add_url_to_description && url
105
112
  if params[:DESCRIPTION]
106
- params[:DESCRIPTION] << "\n\n#{url_encode(url)}"
113
+ params[:DESCRIPTION] << "\\n\\n#{url_encode(url)}"
107
114
  else
108
115
  params[:DESCRIPTION] = url_encode(url)
109
116
  end
110
117
  end
111
- params[:LOCATION] = url_encode(location) if location
118
+ params[:LOCATION] = url_encode_ical(location) if location
112
119
  params[:UID] = "-#{url_encode(url)}" if url
113
- params[:UID] = "-#{utc_datetime(start_datetime)}-#{url_encode(title)}" unless params[:UID] # set uid based on starttime and title only if url is unavailable
114
-
120
+ params[:UID] = "-#{utc_datetime(start_datetime)}-#{url_encode_ical(title)}" unless params[:UID] # set uid based on starttime and title only if url is unavailable
121
+
115
122
  new_line = "%0A"
116
123
  params.each do |key, value|
117
- calendar_url << "#{new_line}#{key}=#{value}"
124
+ calendar_url << "#{new_line}#{key}:#{value}"
118
125
  end
119
126
 
120
127
  calendar_url << "%0AEND:VEVENT%0AEND:VCALENDAR"
@@ -152,21 +159,71 @@ module AddToCalendar
152
159
  end
153
160
  end
154
161
 
162
+ def microsoft(service)
163
+ # Eg.
164
+ if service == "outlook.com"
165
+ calendar_url = "https://outlook.live.com/calendar/0/deeplink/compose?path=/calendar/action/compose&rru=addevent"
166
+ elsif service == "office365"
167
+ calendar_url = "https://outlook.office.com/calendar/0/deeplink/compose?path=/calendar/action/compose&rru=addevent"
168
+ else
169
+ raise MicrosoftServiceError, ":service must be 'outlook.com' or 'office365'. '#{service}' given"
170
+ end
171
+ params = {}
172
+ params[:subject] = url_encode(title)
173
+ params[:startdt] = utc_datetime_microsoft(start_datetime)
174
+ if end_datetime
175
+ params[:enddt] = utc_datetime_microsoft(end_datetime)
176
+ else
177
+ params[:enddt] = utc_datetime_microsoft(start_datetime + 60*60) # 1 hour later
178
+ end
179
+ params[:body] = url_encode(newlines_to_html_br(description)) if description
180
+ if add_url_to_description && url
181
+ if params[:body]
182
+ params[:body] << url_encode(newlines_to_html_br("\n\n#{url}"))
183
+ else
184
+ params[:body] = url_encode(url)
185
+ end
186
+ end
187
+ params[:location] = url_encode(location) if location
188
+
189
+ params.each do |key, value|
190
+ calendar_url << "&#{key}=#{value}"
191
+ end
192
+
193
+ return calendar_url
194
+ end
195
+
155
196
  def utc_datetime(datetime)
156
- t = timezone.local_time(
157
- datetime.strftime("%Y").to_i,
158
- datetime.strftime("%m").to_i,
159
- datetime.strftime("%d").to_i,
160
- datetime.strftime("%H").to_i,
161
- datetime.strftime("%M").to_i,
162
- datetime.strftime("%S").to_i
163
- ).utc
197
+ t = timezone.local_to_utc(
198
+ Time.new(
199
+ datetime.strftime("%Y").to_i,
200
+ datetime.strftime("%m").to_i,
201
+ datetime.strftime("%d").to_i,
202
+ datetime.strftime("%H").to_i,
203
+ datetime.strftime("%M").to_i,
204
+ datetime.strftime("%S").to_i
205
+ )
206
+ )
164
207
 
165
- formatted = t.strftime('%Y%m%dT%H%M%SZ')
208
+ return t.strftime('%Y%m%dT%H%M%SZ')
209
+ end
210
+
211
+ def utc_datetime_microsoft(datetime)
212
+ t = timezone.local_to_utc(
213
+ Time.new(
214
+ datetime.strftime("%Y").to_i,
215
+ datetime.strftime("%m").to_i,
216
+ datetime.strftime("%d").to_i,
217
+ datetime.strftime("%H").to_i,
218
+ datetime.strftime("%M").to_i,
219
+ datetime.strftime("%S").to_i
220
+ )
221
+ )
222
+
223
+ return t.strftime('%Y-%m-%dT%H:%M:%SZ')
166
224
  end
167
225
 
168
- # Google Calendar format (rename method?)
169
- def format_date(start_datetime)
226
+ def format_date_google(start_datetime)
170
227
  start_datetime.strftime('%Y%m%dT%H%M%S')
171
228
  end
172
229
 
@@ -177,5 +234,25 @@ module AddToCalendar
177
234
  def seconds_to_hours_minutes(sec)
178
235
  "%02d%02d" % [sec / 3600, sec / 60 % 60]
179
236
  end
237
+
238
+ def newlines_to_html_br(string)
239
+ string.gsub(/(?:\n\r?|\r\n?)/, '<br>')
240
+ end
241
+
242
+ def url_encode_ical(s)
243
+ # per https://tools.ietf.org/html/rfc5545#section-3.3.11
244
+ string = s.dup # don't modify original input
245
+ string.gsub!("\\", "\\\\\\") # \ >> \\ --yes, really: https://stackoverflow.com/questions/6209480/how-to-replace-backslash-with-double-backslash
246
+ string.gsub!(",", "\\,")
247
+ string.gsub!(";", "\\;")
248
+ string.gsub!("\r\n", "\n") # so can handle all newlines the same
249
+ string.split("\n").map { |e|
250
+ if e.empty?
251
+ e
252
+ else
253
+ url_encode(e)
254
+ end
255
+ }.join("\\n")
256
+ end
180
257
  end
181
258
  end
@@ -1,3 +1,3 @@
1
1
  module AddToCalendar
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.4"
3
3
  end
metadata CHANGED
@@ -1,43 +1,49 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: add_to_calendar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jared Turner
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-05-13 00:00:00.000000000 Z
11
+ date: 2020-06-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tzinfo
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '1.1'
20
+ - - "<"
18
21
  - !ruby/object:Gem::Version
19
- version: 2.0.2
22
+ version: '3'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">="
25
28
  - !ruby/object:Gem::Version
26
- version: 2.0.2
29
+ version: '1.1'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '3'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: tzinfo-data
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
31
37
  - - "~>"
32
38
  - !ruby/object:Gem::Version
33
- version: 1.2020.1
39
+ version: '1.2020'
34
40
  type: :runtime
35
41
  prerelease: false
36
42
  version_requirements: !ruby/object:Gem::Requirement
37
43
  requirements:
38
44
  - - "~>"
39
45
  - !ruby/object:Gem::Version
40
- version: 1.2020.1
46
+ version: '1.2020'
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: bundler
43
49
  requirement: !ruby/object:Gem::Requirement
@@ -58,14 +64,14 @@ dependencies:
58
64
  requirements:
59
65
  - - "~>"
60
66
  - !ruby/object:Gem::Version
61
- version: 12.3.3
67
+ version: 13.0.1
62
68
  type: :development
63
69
  prerelease: false
64
70
  version_requirements: !ruby/object:Gem::Requirement
65
71
  requirements:
66
72
  - - "~>"
67
73
  - !ruby/object:Gem::Version
68
- version: 12.3.3
74
+ version: 13.0.1
69
75
  - !ruby/object:Gem::Dependency
70
76
  name: minitest
71
77
  requirement: !ruby/object:Gem::Requirement
@@ -101,6 +107,7 @@ executables: []
101
107
  extensions: []
102
108
  extra_rdoc_files: []
103
109
  files:
110
+ - ".github/FUNDING.yml"
104
111
  - ".gitignore"
105
112
  - ".travis.yml"
106
113
  - Gemfile
@@ -128,7 +135,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
128
135
  requirements:
129
136
  - - ">="
130
137
  - !ruby/object:Gem::Version
131
- version: '0'
138
+ version: '2.0'
132
139
  required_rubygems_version: !ruby/object:Gem::Requirement
133
140
  requirements:
134
141
  - - ">="
@@ -138,6 +145,6 @@ requirements: []
138
145
  rubygems_version: 3.0.6
139
146
  signing_key:
140
147
  specification_version: 4
141
- summary: Generate 'Add To Calendar' URLs for Google, Apple, Office 365, Outlook, Yahoo
142
- calendars
148
+ summary: Generate 'Add To Calendar' URLs for Apple, Google, Office 365, Outlook, Outlook.com
149
+ and Yahoo calendars
143
150
  test_files: []