keytab.dart 871 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. import 'package:meta/meta.dart';
  2. import 'package:xterm/input/keytab/keytab_default.dart';
  3. import 'package:xterm/input/keytab/keytab_parse.dart';
  4. import 'package:xterm/input/keytab/keytab_record.dart';
  5. import 'package:xterm/input/keytab/keytab_token.dart';
  6. class Keytab {
  7. Keytab({
  8. @required this.name,
  9. @required this.records,
  10. });
  11. factory Keytab.parse(String source) {
  12. final tokens = tokenize(source).toList();
  13. final parser = KeytabParser()..addTokens(tokens);
  14. return parser.result;
  15. }
  16. factory Keytab.defaultKeytab() {
  17. return Keytab.parse(kDefaultKeytab);
  18. }
  19. final String name;
  20. final List<KeytabRecord> records;
  21. @override
  22. String toString() {
  23. final buffer = StringBuffer();
  24. buffer.writeln('keyboard "$name"');
  25. for (var record in records) {
  26. buffer.writeln(record);
  27. }
  28. return buffer.toString();
  29. }
  30. }