Support for optionally-rendered prefix and suffix labels on fields

Stephen Paul Weber created

Change summary

forms/top_up.rb      |  1 +
lib/form_template.rb | 16 +++++++++++++++-
2 files changed, 16 insertions(+), 1 deletion(-)

Detailed changes

forms/top_up.rb 🔗

@@ -14,5 +14,6 @@ field(
 	range: @range,
 	var: "amount",
 	label: "Amount of credit to buy",
+	prefix: "$",
 	required: true
 )

lib/form_template.rb 🔗

@@ -91,11 +91,25 @@ class FormTemplate
 			).add_to_form(@__form)
 		end
 
-		def field(datatype: nil, open: false, regex: nil, range: nil, **kwargs)
+		def simple_child(field, name, xmlns, content)
+			return unless content
+
+			Nokogiri::XML::Builder.with(field) do |xml|
+				xml.public_send(name, content, xmlns: xmlns)
+			end
+		end
+
+		def field(
+			datatype: nil, open: false, regex: nil, range: nil,
+			suffix: nil, prefix: nil,
+			**kwargs
+		)
 			f = Blather::Stanza::X::Field.new(kwargs)
 			if datatype || open || regex || range
 				validate(f, datatype: datatype, open: open, regex: regex, range: range)
 			end
+			simple_child(f, :x, "https://ns.cheogram.com/suffix-label", suffix)
+			simple_child(f, :x, "https://ns.cheogram.com/prefix-label", prefix)
 			@__form.fields += [f]
 		end