public void BugFromForumTopic3355446() { var ical = new iCalendar(); var evt = ical.Create<Event>(); var altDescProp = new CalendarProperty("X-ALT-DESC"); altDescProp.AddParameter("FMTTYPE", "text/html"); altDescProp.Value = "<a href=\"http://test.com\">some html</a>"; evt.AddProperty(altDescProp); evt.Summary = "Test"; evt.Description = "Test"; evt.Start = new iCalDateTime(2012, 7, 30, 8, 0, 0); evt.Duration = TimeSpan.FromHours(1); var serializer = new iCalendarSerializer(); var serializedString = serializer.SerializeToString(ical); Assert.IsTrue(serializedString.Contains("FMTTYPE=text/html")); }
private void MapReminder1To2(TaskItemWrapper source, ITodo target) { if (_configuration.MapReminder == ReminderMapping.@false) { return; } if (source.Inner.ReminderSet) { if (_configuration.MapReminder == ReminderMapping.JustUpcoming && source.Inner.ReminderTime <= DateTime.Now) { return; } var trigger = new Trigger(); if (source.Inner.StartDate != _dateNull) { trigger.Duration = source.Inner.ReminderTime - source.Inner.StartDate; trigger.Parameters.Add("RELATED", "START"); trigger.Parameters.Add("VALUE", "DURATION"); target.Alarms.Add( new Alarm() { Description = "This is a task reminder" } ); // Fix DDay.iCal TimeSpan 0 serialization if (trigger.Duration.Value == TimeSpan.Zero) { target.Alarms[0].Properties.Add(new CalendarProperty("TRIGGER", "-P0D")); } else { target.Alarms[0].Trigger = trigger; } var actionProperty = new CalendarProperty("ACTION", "DISPLAY"); target.Alarms[0].Properties.Add(actionProperty); } else if (source.Inner.DueDate != _dateNull) { trigger.Duration = source.Inner.ReminderTime - source.Inner.DueDate; trigger.Parameters.Add("RELATED", "END"); trigger.Parameters.Add("VALUE", "DURATION"); target.Alarms.Add( new Alarm() { Description = "This is a task reminder" } ); // Fix DDay.iCal TimeSpan 0 serialization if (trigger.Duration.Value == TimeSpan.Zero) { target.Alarms[0].Properties.Add(new CalendarProperty("TRIGGER", "P0D")); } else { target.Alarms[0].Trigger = trigger; } var actionProperty = new CalendarProperty("ACTION", "DISPLAY"); target.Alarms[0].Properties.Add(actionProperty); } } }
public void XProperty3() { iCalendar iCal = new iCalendar(); Event evt = iCal.Create<Event>(); StringBuilder htmlBuilder = new StringBuilder(); htmlBuilder.Append("<HTML><HEAD><META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html;charset=iso-8859-1\"></HEAD><BODY>"); htmlBuilder.Append("<B>Test</B>"); htmlBuilder.Append("</BODY></HTML>"); ICalendarProperty p = new CalendarProperty("X-ALT-DESC", htmlBuilder.ToString()); p.Parameters.Add(new CalendarParameter("FMTTYPE", "text/html")); evt.Properties.Add(p); iCalendarSerializer serializer = new iCalendarSerializer(); serializer.Serialize(iCal, @"Calendars/Serialization/XProperty3.ics"); SerializeTest("XProperty3.ics", typeof(iCalendarSerializer)); }
public ICalendarProperty property(SerializationContext ctx, ICalendarPropertyListContainer c) //throws RecognitionException, TokenStreamException { ICalendarProperty p; { switch (LA(1)) { case IANA_TOKEN: { var n = LT(1); match(IANA_TOKEN); p = new CalendarProperty(n.getLine(), n.getColumn()) { Name = n.getText().ToUpper() }; break; } case X_NAME: { var m = LT(1); match(X_NAME); p = new CalendarProperty(m.getLine(), m.getColumn()) { Name = m.getText().ToUpper() }; break; } default: { throw new NoViableAltException(LT(1), getFilename()); } } } var processor = ctx.GetService(typeof(CompositeProcessor <ICalendarProperty>)) as CompositeProcessor <ICalendarProperty>; // Do some pre-processing on the property processor?.PreDeserialization(p); // Add the property to the container, as the parent object(s) // may be needed during deserialization. c?.Properties.Add(p); // Push the property onto the serialization context stack ctx.Push(p); IStringSerializer dataMapSerializer = new DataMapSerializer(ctx); { // ( ... )* for (;;) { if ((LA(1) == SEMICOLON)) { match(SEMICOLON); parameter(ctx, p); } else { goto _loop24_breakloop; } } _loop24_breakloop: ; } // ( ... )* match(COLON); var v = value(); // Deserialize the value of the property // into a concrete iCalendar data type, // a list of concrete iCalendar data types, // or string value. var deserialized = dataMapSerializer.Deserialize(new StringReader(v)); if (deserialized != null) { // Try to determine if this is was deserialized as a *list* // of concrete types. var targetType = dataMapSerializer.TargetType; var listOfTargetType = typeof(IList <>).MakeGenericType(targetType); if (listOfTargetType.IsInstanceOfType(deserialized)) { // We deserialized a list - add each value to the // resulting object. foreach (var item in (IEnumerable)deserialized) { p.AddValue(item); } } else { // We deserialized a single value - add it to the object. p.AddValue(deserialized); } } { // ( ... )* for (;;) { if ((LA(1) == CRLF)) { match(CRLF); } else { goto _loop26_breakloop; } } _loop26_breakloop: ; } // ( ... )* // Do some final processing on the property: processor?.PostDeserialization(p); // Notify that the property has been loaded p.OnLoaded(); // Pop the property off the serialization context stack ctx.Pop(); return(p); }