From e01e14218945cd60977bed410988d5f6d461a2fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Zru=CC=8Ast?= Date: Mon, 24 Sep 2018 03:58:38 +0200 Subject: [PATCH 1/2] Fix param-value parsing RFC 5545 (iCalendar) allows parameter value to be empty. This raised "Invalid parameter value" previously. --- lib/ri_cal/parser.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ri_cal/parser.rb b/lib/ri_cal/parser.rb index 99d3dd10..6adeefeb 100644 --- a/lib/ri_cal/parser.rb +++ b/lib/ri_cal/parser.rb @@ -23,7 +23,7 @@ def next_line #:nodoc: def self.parse_params(string) #:nodoc: if string string.split(";").inject({}) { |result, val| - m = /^(.+)=(.+)$/.match(val) + m = /^(.+)=(.*)$/.match(val) raise "Invalid parameter value #{val.inspect}" unless m #TODO - The gsub below is a simplest fix for http://rick_denatale.lighthouseapp.com/projects/30941/tickets/19 # it may need further examination if more pathological cases show up. From 5a50a240f10ec3e9cd9f9804f5652db62cc2b4ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Zru=CC=8Ast?= Date: Mon, 24 Sep 2018 04:53:10 +0200 Subject: [PATCH 2/2] Add spec for empty x-parameter value --- spec/ri_cal/parser_spec.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/spec/ri_cal/parser_spec.rb b/spec/ri_cal/parser_spec.rb index dd8656d3..cc3b216a 100644 --- a/spec/ri_cal/parser_spec.rb +++ b/spec/ri_cal/parser_spec.rb @@ -22,6 +22,11 @@ it "should strip surrounding quotes" do RiCal::Parser.params_and_value(";TZID=\"(GMT-05.00) Eastern Time (US & Canada)\":20090804T120000").should == [{"TZID" => "(GMT-05.00) Eastern Time (US & Canada)"}, "20090804T120000"] end + + it "should allow empty x-parameter value" do + # Example from publicly shared iCloud calendar + RiCal::Parser.params_and_value(";X-ADDRESS=:geo:37.334722,-122.008889").should == [{"X-ADDRESS" => ""}, "geo:37.334722,-122.008889"] + end end def self.describe_property(entity_name, prop_name, params, value, type = RiCal::PropertyValue::Text)