flags property
flags is a section that lists applicable NatrixFlags.
Implementation
@override
NatrixBlock get flags {
final List<NatrixFlag> flags = context.parserOutput.flags
.where((e) => !context.globalFlags.map((g) => g.id).contains(e.id))
.toList();
if (flags.isEmpty) {
return NatrixBlock.empty();
}
final List<NatrixText> lines = [];
_add(Iterable<NatrixFlag> flags) => flags.forEach((flag) {
String name = "";
if (flag.hasAcronym) {
name += "-${flag.acronym!.c}, ";
} else {
name += " " * 4;
}
name += "--${flag.id}";
name += " " * (maxFlagLength - name.length);
final List<NatrixText> tooltip = NatrixText(
flag.tooltip,
).wrap(lineLength - name.length - 1);
bool first = true;
tooltip.forEach((tip) {
if (first) {
lines.add(NatrixText(name + tip.text));
first = !first;
return;
}
lines.add(NatrixText(NatrixChar(' ') * (name.length) + tip.text));
});
});
_add(flags.where((e) => e.hasAcronym));
_add(flags.where((e) => !e.hasAcronym));
return NatrixBlock(
heading: NatrixText("Flags:", style: NatrixStyle.bold),
content: NatrixStructure(
spacePrefix: 1,
sections: [NatrixColumn(lines: lines.toList())],
),
);
}