public InputReferences transform(Closure<?> closure) { InputReferences inputs = new InputReferences(); RuleMetadata ruleMetadata = getRuleMetadata(closure); inputs.absolutePaths( ruleMetadata.absoluteInputPaths(), ruleMetadata.absoluteInputLineNumbers()); return inputs; }
/** * Update metaData element if it exists or add it otherwise * * @param target * @return true on update of existing element false on added of element */ public boolean updateMetadata(final RuleMetadata target) { RuleMetadata metaData = getMetaData(target.getAttributeName()); if (metaData != null) { metaData.setValue(target.getValue()); return true; } addMetadata(target); return false; }
// TODO given that all the closures are from the same file, we should do the relativising once. // that would entail adding location information to the model {} outer closure. @Override public SourceLocation transform(Closure<?> closure) { RuleMetadata ruleMetadata = getRuleMetadata(closure); URI uri = URI.create(ruleMetadata.absoluteScriptSourceLocation()); String scheme = uri.getScheme(); String description; if ("file".equalsIgnoreCase(scheme)) { description = relativeFilePathResolver.resolveAsRelativePath( ruleMetadata.absoluteScriptSourceLocation()); } else { description = uri.toString(); } return new SourceLocation( uri.toString(), description, ruleMetadata.lineNumber(), ruleMetadata.columnNumber()); }