generateBuilder method

  1. @override
String generateBuilder(
  1. String expression, {
  2. String builder = 'builder',
})
override

Generates code that builds a representation of the type from an expression as an XML attribute / XML element / XML text using a builder.

An implementation to build a representation of the type as an XML text could be as simple as:

String generateBuilder(String expression, {String builder = 'builder'}) => '$builder.text($expression);';

Implementation

@override
String generateBuilder(String expression, {String builder = 'builder'}) {
  final buffer = StringBuffer();

  if (_isNullable) {
    buffer.write('if ($expression != null) { ');
  }

  buffer.write('$builder.element(\'$_name\'');

  if (_namespace != null) {
    buffer.write(', namespace: \'$_namespace\'');
  }

  buffer.write(', namespaces: namespaces');

  if (_isSelfClosing != null) {
    buffer.write(', isSelfClosing: $_isSelfClosing');
  }

  buffer.write(', nest: () { ');

  buffer.write(
    '$expression.buildXmlChildren($builder, namespaces: namespaces);',
  );

  buffer.write(' });');

  if (_isNullable) {
    buffer.write(' }');
  }

  return buffer.toString();
}