LanguageTag.parse constructor

LanguageTag.parse(
  1. String languageTag
)

Implementation

factory LanguageTag.parse(String languageTag) {
  if (unfilled(languageTag)) {
    throw ArgumentError('Invalid language tag to be parsed (null or blank)');
  }
  var subtags = languageTag.split(RegExp(r'[-_]'));
  var language = '';
  var extlang = '';
  var script = '';
  var region = '';
  var variant = '';
  var insertionIndex = 0;

  for (var subtag in subtags) {
    if (insertionIndex == 0) {
      if (_isCorrectLanguage(subtag)) {
        language = subtag;
        insertionIndex++;
        continue;
      } else {
        throw ArgumentError('Incorrect language subtag $subtag');
      }
    }
    if (insertionIndex == 1) {
      insertionIndex++;
      if (_isCorrectExtlang(subtag)) {
        extlang = subtag;
        continue;
      }
    }
    if (insertionIndex == 2) {
      insertionIndex++;
      if (_isCorrectScript(subtag)) {
        script = subtag;
        continue;
      }
    }
    if (insertionIndex == 3) {
      insertionIndex++;
      if (_isCorrectRegion(subtag)) {
        region = subtag;
        continue;
      }
    }
    if (insertionIndex == 4) {
      insertionIndex++;
      if (_isCorrectVariant(subtag)) {
        variant = subtag;
        continue;
      }
    }
    throw ArgumentError('Incorrect subtag $subtag');
  }

  return LanguageTag(language,
      extlang: extlang, script: script, region: region, variant: variant);
}