module plist.types.integer; import plist.types.element; class PlistElementInteger : 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 integer\n"); import std.conv : to; _value = to!long(entity.children[0].text); } } @property long value() { return _value; } @property long value(long val) { _value = val; return _value; } override string toString() { import std.format : format; return format!"<PlistElementInteger value: %d>"(_value); } string type() { return PlistElementType.PLIST_ELEMENT_INTEGER; } void write(ref XMLWriter!(Appender!string) writer) { writer.openStartTag("integer"); writer.closeStartTag(); import std.conv : to; writer.writeText(to!string(_value), Newline.no); writer.writeEndTag("integer", Newline.no); } private { DOMEntity!string _entity; long _value; } }