1.1 --- a/EventAggregatorSupport.py Sun Nov 18 00:15:57 2012 +0100
1.2 +++ b/EventAggregatorSupport.py Sun Nov 18 00:17:20 2012 +0100
1.3 @@ -149,7 +149,8 @@
1.4
1.5 details = {}
1.6 details.update(template_details)
1.7 - events = [Event(event_page, details)]
1.8 + raw_details = {}
1.9 + events = [Event(event_page, details, raw_details)]
1.10
1.11 for match in definition_list_regexp.finditer(text):
1.12
1.13 @@ -161,25 +162,25 @@
1.14 # Permit case-insensitive list terms.
1.15
1.16 term = match.group("term").lower()
1.17 - desc = match.group("desc")
1.18 + raw_desc = match.group("desc")
1.19
1.20 # Special value type handling.
1.21
1.22 # Dates.
1.23
1.24 if term in Event.date_terms:
1.25 - desc = getDateTime(desc)
1.26 + desc = getDateTime(raw_desc)
1.27
1.28 # Lists (whose elements may be quoted).
1.29
1.30 elif term in Event.list_terms:
1.31 - desc = map(getSimpleWikiText, to_list(desc, ","))
1.32 + desc = map(getSimpleWikiText, to_list(raw_desc, ","))
1.33
1.34 # Position details.
1.35
1.36 elif term == "geo":
1.37 try:
1.38 - desc = map(getMapReference, to_list(desc, None))
1.39 + desc = map(getMapReference, to_list(raw_desc, None))
1.40 if len(desc) != 2:
1.41 continue
1.42 except (KeyError, ValueError):
1.43 @@ -188,12 +189,15 @@
1.44 # Labels which may well be quoted.
1.45
1.46 elif term in Event.title_terms:
1.47 - desc = getSimpleWikiText(desc.strip())
1.48 + desc = getSimpleWikiText(raw_desc.strip())
1.49
1.50 # Plain Wiki text terms.
1.51
1.52 elif term in Event.other_terms:
1.53 - desc = desc.strip()
1.54 + desc = raw_desc.strip()
1.55 +
1.56 + else:
1.57 + desc = raw_desc
1.58
1.59 if desc is not None:
1.60
1.61 @@ -206,9 +210,11 @@
1.62
1.63 details = {}
1.64 details.update(template_details)
1.65 - events.append(Event(event_page, details))
1.66 + raw_details = {}
1.67 + events.append(Event(event_page, details, raw_details))
1.68
1.69 details[term] = desc
1.70 + raw_details[term] = raw_desc
1.71
1.72 return events
1.73
1.74 @@ -610,9 +616,10 @@
1.75 geo_terms = "geo",
1.76 all_terms = title_terms + date_terms + list_terms + other_terms + geo_terms
1.77
1.78 - def __init__(self, page, details):
1.79 + def __init__(self, page, details, raw_details=None):
1.80 self.page = page
1.81 self.details = details
1.82 + self.raw_details = raw_details
1.83
1.84 # Permit omission of the end of the event by duplicating the start.
1.85
1.86 @@ -719,6 +726,12 @@
1.87
1.88 self.details = event_details
1.89
1.90 + def getRawDetails(self):
1.91 +
1.92 + "Return the details for this event as they were written in a page."
1.93 +
1.94 + return self.raw_details
1.95 +
1.96 # Timespan-related methods.
1.97
1.98 def __contains__(self, other):
1.99 @@ -3216,27 +3229,40 @@
1.100 'write' parameter is specified, use it to write output.
1.101 """
1.102
1.103 - event_details = event.getDetails()
1.104 + details = event.getDetails()
1.105 + raw_details = event.getRawDetails()
1.106 write = write or request.write
1.107
1.108 - if event_details.has_key("fragment"):
1.109 - write(fmt.anchordef(event_details["fragment"]))
1.110 + if details.has_key("fragment"):
1.111 + write(fmt.anchordef(details["fragment"]))
1.112
1.113 write(fmt.definition_list(on=1))
1.114
1.115 for term in event.all_terms:
1.116 - if event_details.has_key(term):
1.117 - value = event_details[term]
1.118 - if value:
1.119 - write(fmt.definition_term(on=1))
1.120 - write(fmt.text(term))
1.121 - write(fmt.definition_term(on=0))
1.122 - write(fmt.definition_desc(on=1))
1.123 +
1.124 + raw_value = raw_details.get(term)
1.125 + value = details.get(term)
1.126 +
1.127 + if raw_value or value:
1.128 + write(fmt.definition_term(on=1))
1.129 + write(fmt.text(term))
1.130 + write(fmt.definition_term(on=0))
1.131 + write(fmt.definition_desc(on=1))
1.132 +
1.133 + # Try and use the raw details, if available.
1.134 +
1.135 + if raw_value:
1.136 + write(formatText(raw_value, request, fmt))
1.137 +
1.138 + # Otherwise, format the processed details.
1.139 +
1.140 + else:
1.141 if term in event.list_terms:
1.142 write(", ".join([formatText(str(v), request, fmt) for v in value]))
1.143 else:
1.144 - write(formatText(str(value), request, fmt))
1.145 - write(fmt.definition_desc(on=0))
1.146 + write(fmt.text(str(value)))
1.147 +
1.148 + write(fmt.definition_desc(on=0))
1.149
1.150 write(fmt.definition_list(on=0))
1.151