flags property

  1. @override
NatrixBlock get flags
override

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())],
    ),
  );
}