load static method

Future<DefaultResourceLoader> load([
  1. DefaultResourceLoaderLanguage lang = DefaultResourceLoaderLanguage.enUs
])

Implementation

static Future<DefaultResourceLoader> load([
  DefaultResourceLoaderLanguage lang = DefaultResourceLoaderLanguage.enUs,
]) async {
  return await rootBundle.loadStructuredData(
    'packages/hyphenator_impure/hyphenate_patterns/${lang._fileName}',
    (value) async {
      final lines = value
          .split('\n')
          .where(
            (e) => e.isNotEmpty && !e.startsWith('%'),
          )
          .map(
            (e) => e.trim(),
          );

      final pat = <String>[];
      final exc = <String>[];

      bool isNextPattern = false;
      bool isNextException = false;

      for (final line in lines) {
        if (line.startsWith('}')) {
          isNextPattern = false;
          isNextException = false;
        } else if (!isNextPattern && line.startsWith('\\patterns')) {
          isNextPattern = true;
        } else if (!isNextException && line.startsWith('\\hyphenation')) {
          isNextException = true;
        } else if (isNextPattern && !isNextException) {
          pat.add(line);
        } else if (isNextException) {
          exc.add(line);
        }
      }
      return DefaultResourceLoader._(
        pat,
        exc,
      );
    },
  );
}