parse method
({bool hasFirebasePods, bool hasRunnerTarget, double? iosVersion, List<String> pods})?
parse(
- String content
Implementation
({
double? iosVersion,
bool hasFirebasePods,
List<String> pods,
bool hasRunnerTarget,
})?
parse(String content) {
if (content.trim().isEmpty) return null;
final stripped = _stripComments(content);
double? iosVersion;
final versionMatch = RegExp(
r'''platform\s+:\w+\s*,\s*['"]([\d.]+)['"]''',
).firstMatch(stripped);
if (versionMatch != null) {
final versionStr = versionMatch.group(1)!;
final parts = versionStr.split('.');
if (parts.length >= 2) {
iosVersion = double.tryParse('${parts[0]}.${parts[1]}');
} else {
iosVersion = double.tryParse(versionStr);
}
}
final hasRunnerTarget = RegExp(
r'''target\s+['"]Runner['"]''',
).hasMatch(stripped);
final pods = <String>[];
for (final match in RegExp(
r'''pod\s+['"]([^'"]*)['"]''',
).allMatches(stripped)) {
pods.add(match.group(1)!);
}
final hasFirebasePods = pods.any(
(p) => p == 'Firebase' || p.startsWith('Firebase/'),
);
if (versionMatch == null && !hasRunnerTarget && pods.isEmpty) {
return null;
}
return (
iosVersion: iosVersion,
hasFirebasePods: hasFirebasePods,
pods: pods,
hasRunnerTarget: hasRunnerTarget,
);
}