| author | Stephen Paul Weber
<singpolyma@singpolyma.net> 2025-11-07 18:09:57 UTC |
| committer | Stephen Paul Weber
<singpolyma@singpolyma.net> 2025-11-07 18:09:57 UTC |
| parent | 19edc78d5de2c8417953036ada42218922b0030b |
| borogove/DataForm.hx | +31 | -0 |
diff --git a/borogove/DataForm.hx b/borogove/DataForm.hx new file mode 100644 index 0000000..ffad925 --- /dev/null +++ b/borogove/DataForm.hx @@ -0,0 +1,31 @@ +package borogove; + +import borogove.Stanza; + +@:forward(toString) +abstract DataForm(Stanza) from Stanza to Stanza { + inline public function fields(): Array<Field> { + return this.allTags("field"); + } + + public function field(name: String): Null<Field> { + final matches = fields().filter(f -> f.name == name); + if (matches.length > 1) { + trace('Multiple fields matching ${name}'); + } + return matches[0]; + } +} + +abstract Field(Stanza) from Stanza to Stanza { + public var name(get, never): String; + public var value(get, never): Array<String>; + + inline public function get_name() { + return this.attr.get("var"); + } + + public function get_value() { + return this.allTags("value").map(v -> v.getText()); + } +}