getHints method
Generate a list of hints for the DartBlock program.
The types of hints which can be generated (examples):
- "4 custom functions are expected."
- "2 variables are expected."
- "2 for-loops are expected."
Implementation
List<String> getHints() {
final List<String> hints = [];
if (customFunctions.isNotEmpty) {
final isSingular = customFunctions.length == 1;
hints.add(
"${customFunctions.length} custom function${isSingular ? "" : "s"} ${isSingular ? "is" : "are"} expected.",
);
}
final variableDefinitions = buildTree()
.findAllVariableDefinitions()
.where((element) => !element.name.startsWith('_'))
.toList();
if (variableDefinitions.isNotEmpty) {
final isSingular = variableDefinitions.length == 1;
hints.add(
"""${variableDefinitions.length} variable${isSingular ? "" : "s"} ${isSingular ? "is" : "are"} expected.
Types: ${variableDefinitions.map((e) => e.dataType.toString()).toSet().join(', ')}""",
);
}
final statementTypeUsageCount = getStatementTypeUsageCount();
if (statementTypeUsageCount.isNotEmpty) {
for (final entry in statementTypeUsageCount.entries) {
switch (entry.key) {
case StatementType.statementBlockStatement:
case StatementType.whileLoopStatement:
break;
default:
final isSingular = entry.value == 1;
hints.add(
"${entry.value} '${entry.key.toString()}' statement${isSingular ? "" : "s"} ${isSingular ? "is" : "are"} expected.",
);
break;
}
}
}
return hints;
}