parseWithReload method
Future<(TreeElement, TreeElement Function())>
parseWithReload(
- ResourceResolver resolver,
- String instanceId,
- String instanceSrc, {
- bool partial = false,
Like parse, also returning a synchronous function that produces
the complete instance (used to fill in partial elements, as
JavaRosa's ExternalDataInstance.parseExternalFile(false) does). File
instances are re-parsed from the bytes already read.
Implementation
Future<(TreeElement, TreeElement Function())> parseWithReload(
ResourceResolver resolver,
String instanceId,
String instanceSrc, {
bool partial = false,
}) async {
final provider = providerFor(instanceId, instanceSrc);
if (provider != null) {
return (
provider.get(instanceId, instanceSrc, partial: partial),
() => provider.get(instanceId, instanceSrc),
);
}
final bytes = await resolver.read(instanceSrc);
for (final parser in _fileParsers) {
if (parser.isSupported(instanceId, instanceSrc)) {
return (
parser.parse(instanceId, bytes, partial: partial),
() => parser.parse(instanceId, bytes),
);
}
}
return (
parseXmlExternalInstance(instanceId, bytes),
() => parseXmlExternalInstance(instanceId, bytes),
);
}