interpret method

  1. @override
String interpret(
  1. EditorContext context
)
override

Implementation

@override
String interpret(EditorContext context) {
  var buffer = StringBuffer();
  buffer.write(context.indent());

  if (isAbstract ?? false) {
    buffer.write('abstract ');
  }

  buffer.write('class $className');

  /// [extends] $baseClass
  if (baseClass != null) {
    buffer.write(' extends $baseClass');
  }

  /// [with] $mixins[0], $mixins[1]
  if (mixins != null) {
    buffer.write(' with ');
    mixins!.forEach((element) {
      buffer.write(element);
      if (element != mixins!.last) {
        buffer.write(', ');
      }
    });
  }

  /// [implements] $interfaces[0], $interfaces[1]
  if (interfaces != null) {
    buffer.write(' implements ');
    interfaces!.forEach((element) {
      buffer.write(element);
      if (element != interfaces!.last) {
        buffer.write(', ');
      }
    });
  }

  buffer.writeln(context.openScope(Scope.CLASS));

  if (attributes != null) {
    attributes!.forEach((element) {
      buffer.write(element.interpret(context));
    });
    buffer.writeln();
  }

  if (constructors != null) {
    constructors!.forEach((element) {
      buffer.write(element.interpret(context));
    });
    buffer.writeln();
  }

  if (methods != null) {
    methods!.forEach((element) {
      buffer.write(element.interpret(context));
    });
  }

  buffer.write(context.closeScope());

  return buffer.toString();
}