createDeclareId method

void createDeclareId(
  1. String id
)

Given a fully specified id, like XXXScreenID.myScreen, creates an entry for it in the id file.

Implementation

void createDeclareId(String id) {
  final splitVals = id.split(".");
  if(splitVals.length != 2) {
    throw AFException("Expected IDClass.idName, found $id");
  }
  final clz = splitVals[0];
  final identifier = splitVals[1];

  final idFile = generator.modifyFile(this, generator.pathIdFile);
  final regexClz = RegExp("class\\s+$clz");
  final idxOpenClass = idFile.findFirstLineContaining(this, regexClz);
  if(idxOpenClass < 0) {
    throw AFException("Could not find $regexClz in id file");
  }

  final lineOpen = idFile.buffer.lines[idxOpenClass];
  final isClassDecl = lineOpen.contains("extends");
  var lines = <String>[];
  if(isClassDecl) {
    // finally, add the id we are using.
    final declareTestID = SnippetDeclareClassTestIDT().toBuffer(this, insertions: {
      SnippetDeclareClassTestIDT.insertTestId: identifier,
      SnippetDeclareClassTestIDT.insertClassId: clz,
    });
    lines = declareTestID.lines;
  } else {
    final declareTestID = SnippetDeclareStringTestIDT().toBuffer(this, insertions: {
      SnippetDeclareStringTestIDT.insertTestId: identifier,
    });
    lines = declareTestID.lines;
  }

  idFile.addLinesAfterIdx(this, idxOpenClass, lines);
}