icalendar 2.12.2 → 2.12.3
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.
- checksums.yaml +4 -4
- data/.github/workflows/main.yml +2 -1
- data/CHANGELOG.md +4 -0
- data/benchmarks/memory_per_event_ical.rb +27 -0
- data/icalendar.gemspec +1 -1
- data/lib/icalendar/has_properties.rb +5 -7
- data/lib/icalendar/version.rb +1 -1
- metadata +7 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7c417db33a0e54ccf03627a5e966cf86206e55e032dc66ba4aaf3f5ac9ec690a
|
|
4
|
+
data.tar.gz: cebd6eb2f86f758e92b23fb0dc990032b866f0d1ccc825b05d823c4a56927e04
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e4674fc5afbca40a1852ffd90a8e7d4b13364c4b9c4a7c966ab4cc4bd1ec06abf3df9bf9651bd99fd6083710717ef72af2520c4dcc75a252bd84ce73e281096c
|
|
7
|
+
data.tar.gz: 835f7c88d1af3248ba9c57e7a68a8fc1198a3ed6cd73c540ca83f8e2fb831cebf364128f28d08384005df11f62c05d64462e60ced3a1cfbc799fee2effa7a0c7
|
data/.github/workflows/main.yml
CHANGED
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
## Unreleased
|
|
2
2
|
|
|
3
|
+
## 2.12.3 - 2026-05-13
|
|
4
|
+
- Memory use optimization - Jared Menard
|
|
5
|
+
- Run CI against Ruby 4.0 - Artem Chubchenko
|
|
6
|
+
|
|
3
7
|
## 2.12.2 - 2026-03-21
|
|
4
8
|
- Fix a potential property injection issue through escaping control characters in URI values - Wes Ring
|
|
5
9
|
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require 'memory_profiler'
|
|
2
|
+
require 'icalendar'
|
|
3
|
+
|
|
4
|
+
# Profiles the per-event calendar wrapping pattern:
|
|
5
|
+
# cal = Icalendar::Calendar.new
|
|
6
|
+
# ical_event.parent&.timezones&.each { |tz| cal.add_timezone tz }
|
|
7
|
+
# cal.add_event(ical_event)
|
|
8
|
+
# cal.to_ical
|
|
9
|
+
|
|
10
|
+
cal_string = File.read(File.join(__dir__, '..', 'spec/fixtures/timezone.ics'))
|
|
11
|
+
source_calendar = Icalendar::Calendar.parse(cal_string).first
|
|
12
|
+
events = source_calendar.events
|
|
13
|
+
|
|
14
|
+
ITERATIONS = 1000
|
|
15
|
+
|
|
16
|
+
report = MemoryProfiler.report do
|
|
17
|
+
ITERATIONS.times do
|
|
18
|
+
events.each do |ical_event|
|
|
19
|
+
cal = Icalendar::Calendar.new
|
|
20
|
+
ical_event.parent&.timezones&.each { |tz| cal.add_timezone tz }
|
|
21
|
+
cal.add_event(ical_event)
|
|
22
|
+
cal.to_ical
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
report.pretty_print(scale_bytes: true, top: 20)
|
data/icalendar.gemspec
CHANGED
|
@@ -37,7 +37,7 @@ ActiveSupport is required for TimeWithZone support, but not required for general
|
|
|
37
37
|
s.add_dependency 'ostruct'
|
|
38
38
|
|
|
39
39
|
s.add_development_dependency 'rake', '~> 13.0'
|
|
40
|
-
s.add_development_dependency 'bundler'
|
|
40
|
+
s.add_development_dependency 'bundler'
|
|
41
41
|
|
|
42
42
|
# test with all groups of tzinfo dependencies
|
|
43
43
|
# tzinfo 2.x
|
|
@@ -172,13 +172,11 @@ module Icalendar
|
|
|
172
172
|
private
|
|
173
173
|
|
|
174
174
|
def map_property_value(value, klass, multi_valued, new_property)
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
if value.
|
|
180
|
-
value
|
|
181
|
-
elsif value.is_a? ::Array
|
|
175
|
+
return value if value.nil? || value.is_a?(Icalendar::Value)
|
|
176
|
+
|
|
177
|
+
params = new_property ? {'VALUE': klass.value_type} : {}
|
|
178
|
+
|
|
179
|
+
if value.is_a? ::Array
|
|
182
180
|
Icalendar::Values::Helpers::Array.new value, klass, params, {delimiter: (multi_valued ? ',' : ';')}
|
|
183
181
|
else
|
|
184
182
|
klass.new value, params
|
data/lib/icalendar/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: icalendar
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.12.
|
|
4
|
+
version: 2.12.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ryan Ahearn
|
|
@@ -83,16 +83,16 @@ dependencies:
|
|
|
83
83
|
name: bundler
|
|
84
84
|
requirement: !ruby/object:Gem::Requirement
|
|
85
85
|
requirements:
|
|
86
|
-
- - "
|
|
86
|
+
- - ">="
|
|
87
87
|
- !ruby/object:Gem::Version
|
|
88
|
-
version: '
|
|
88
|
+
version: '0'
|
|
89
89
|
type: :development
|
|
90
90
|
prerelease: false
|
|
91
91
|
version_requirements: !ruby/object:Gem::Requirement
|
|
92
92
|
requirements:
|
|
93
|
-
- - "
|
|
93
|
+
- - ">="
|
|
94
94
|
- !ruby/object:Gem::Version
|
|
95
|
-
version: '
|
|
95
|
+
version: '0'
|
|
96
96
|
- !ruby/object:Gem::Dependency
|
|
97
97
|
name: activesupport
|
|
98
98
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -209,6 +209,7 @@ files:
|
|
|
209
209
|
- LICENSE
|
|
210
210
|
- README.md
|
|
211
211
|
- Rakefile
|
|
212
|
+
- benchmarks/memory_per_event_ical.rb
|
|
212
213
|
- icalendar.gemspec
|
|
213
214
|
- lib/icalendar.rb
|
|
214
215
|
- lib/icalendar/alarm.rb
|
|
@@ -319,7 +320,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
319
320
|
- !ruby/object:Gem::Version
|
|
320
321
|
version: '0'
|
|
321
322
|
requirements: []
|
|
322
|
-
rubygems_version:
|
|
323
|
+
rubygems_version: 4.0.6
|
|
323
324
|
specification_version: 4
|
|
324
325
|
summary: A ruby implementation of the iCalendar specification (RFC-5545).
|
|
325
326
|
test_files:
|