1.1 --- a/vCalendar.py Thu Apr 25 22:14:56 2013 +0200
1.2 +++ b/vCalendar.py Thu Apr 25 22:43:38 2013 +0200
1.3 @@ -49,7 +49,7 @@
1.4 ])
1.5 QUOTED_TYPES = set(["URI"])
1.6
1.7 -unquoted_comma_regexp = re.compile(r"(?<!\\),")
1.8 +unquoted_separator_regexp = re.compile(r"(?<!\\)([,;])")
1.9
1.10 # Parser classes.
1.11
1.12 @@ -74,7 +74,22 @@
1.13 values), replacing quoted separator characters.
1.14 """
1.15
1.16 - return [self.decode_content_value(v) for v in unquoted_comma_regexp.split(value)]
1.17 + sep = None
1.18 + values = []
1.19 +
1.20 + for i, s in enumerate(unquoted_separator_regexp.split(value)):
1.21 + if i % 2 != 0:
1.22 + if not sep:
1.23 + sep = s
1.24 + continue
1.25 + values.append(self.decode_content_value(s))
1.26 +
1.27 + if sep == ",":
1.28 + return values
1.29 + elif sep == ";":
1.30 + return tuple(values)
1.31 + else:
1.32 + return values[0]
1.33
1.34 def decode_content_value(self, value):
1.35
1.36 @@ -158,10 +173,15 @@
1.37 values), quoting characters and separating collections of values.
1.38 """
1.39
1.40 - if not isinstance(value, (list, tuple)):
1.41 + if isinstance(value, list):
1.42 + sep = ","
1.43 + elif isinstance(value, tuple):
1.44 + sep = ";"
1.45 + else:
1.46 value = [value]
1.47 + sep = ""
1.48
1.49 - return ",".join([self.encode_content_value(v) for v in value])
1.50 + return sep.join([self.encode_content_value(v) for v in value])
1.51
1.52 def encode_content_value(self, value):
1.53