parseOS method

OS? parseOS(
  1. String userAgent
)

Parse an OS from the userAgent string.

Returns null if no match.

Implementation

OS? parseOS(String userAgent) {
  for (OSParser osParser in osParsers) {
    for (String regex in osParser.regexes) {
      RegExp regExp = RegExp(regex, caseSensitive: false);

      if (regExp.hasMatch(userAgent)) {
        Iterable<RegExpMatch> matches = regExp.allMatches(userAgent);
        RegExpMatch match = matches.first;
        String version = match.groupCount > 0 ? match.group(1)! : '';

        return OS(
          name: osParser.name,
          unformattedName: osParser.name.toLowerCase(),
          version: version,
          parsedWithRegex: regex,
        );
      }
    }
  }

  return null;
}