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. 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)