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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ad06e861392ab70f0e800ac4f2a6b81f019aaf3548a35e513f02bcc975968b86
4
- data.tar.gz: 16562bdeae817fc8afd4e0b6de7090a42c0b095cb56640d5b9183cfb3a07bb74
3
+ metadata.gz: 7c417db33a0e54ccf03627a5e966cf86206e55e032dc66ba4aaf3f5ac9ec690a
4
+ data.tar.gz: cebd6eb2f86f758e92b23fb0dc990032b866f0d1ccc825b05d823c4a56927e04
5
5
  SHA512:
6
- metadata.gz: 927cd1536b413039b75f4c2a100ca169bb17897c10754b4806762d341aaa4b7800fc93e7bc81566681a678a853fefc0d54fad5fdd0316c10f0245f91864d2faf
7
- data.tar.gz: 5d9c09347062a5dd73ad23cd75905c5508b8a72ce0447241ee282fa6bbcc7d259e4a26309fc90af718f14f14b18ca78403bc849898b42147c5368ae6edb21d13
6
+ metadata.gz: e4674fc5afbca40a1852ffd90a8e7d4b13364c4b9c4a7c966ab4cc4bd1ec06abf3df9bf9651bd99fd6083710717ef72af2520c4dcc75a252bd84ce73e281096c
7
+ data.tar.gz: 835f7c88d1af3248ba9c57e7a68a8fc1198a3ed6cd73c540ca83f8e2fb831cebf364128f28d08384005df11f62c05d64462e60ced3a1cfbc799fee2effa7a0c7
@@ -22,9 +22,10 @@ jobs:
22
22
  - 3.2
23
23
  - 3.3
24
24
  - 3.4
25
+ - "4.0"
25
26
 
26
27
  steps:
27
- - uses: actions/checkout@v4
28
+ - uses: actions/checkout@v6
28
29
  - name: Set up Ruby
29
30
  uses: ruby/setup-ruby@v1
30
31
  with:
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', '~> 2.0'
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
- params = {}
176
- if new_property
177
- params.merge!('VALUE': klass.value_type)
178
- end
179
- if value.nil? || value.is_a?(Icalendar::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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Icalendar
4
4
 
5
- VERSION = '2.12.2'
5
+ VERSION = '2.12.3'
6
6
 
7
7
  end
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.2
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: '2.0'
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: '2.0'
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: 3.6.9
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: