module plist.types.date; import plist.types.element; import std.datetime; class PlistElementDate : PlistElement { void instantiate(DOMEntity!string entity) { _entity = entity; if (entity.type == EntityType.elementEmpty) return; if (entity.children.length == 1) { if (entity.children[0].type != EntityType.text) throw new PlistParsingException("Expected a text element after date\n"); _date = SysTime.fromISOExtString(entity.children[0].text); } } @property SysTime value() { return _date; } @property SysTime value(SysTime newDate) { _date = newDate; return _date; } override string toString() { import std.format : format; return format!"<PlistElementDate date: %s"(_date.toISOExtString()); } string type() { return PlistElementType.PLIST_ELEMENT_DATE; } void write(ref XMLWriter!(Appender!string) writer) { writer.openStartTag("date"); writer.closeStartTag(); writer.writeText(_date.toISOExtString(), Newline.no); writer.writeEndTag("date", Newline.no); } private { DOMEntity!string _entity; SysTime _date; } }