use of org.intellij.plugins.xsltDebugger.rt.engine.local.VariableImpl in project intellij-community by JetBrains.
the class XalanStyleFrame method addVariable.
private void addVariable(ElemVariable variable, boolean global, Collection<Debugger.Variable> variables) {
final Debugger.Variable.Kind kind = variable instanceof ElemParam ? Debugger.Variable.Kind.PARAMETER : Debugger.Variable.Kind.VARIABLE;
assert global == variable.getIsTopLevel() : global + " vs. " + variable.getIsTopLevel() + " (" + variable.getName() + ")";
final String name = variable.getName().getLocalName();
try {
final Value value = kind == Debugger.Variable.Kind.PARAMETER ? // http://youtrack.jetbrains.net/issue/IDEA-78638
eval("$" + variable.getName().toString()) : new XObjectValue(variable.getValue(myTransformer, myCurrentNode));
variables.add(new VariableImpl(name, value, global, kind, variable.getSystemId(), variable.getLineNumber()));
} catch (TransformerException e) {
debug(e);
} catch (Debugger.EvaluationException e) {
debug(e);
}
}
use of org.intellij.plugins.xsltDebugger.rt.engine.local.VariableImpl in project intellij-community by JetBrains.
the class SaxonFrameImpl method addVariables.
void addVariables(StyleElement element, ArrayList<Debugger.Variable> variables, Enumeration enumeration, boolean isGlobal) {
final Context context = myContext;
final StaticContext ctx = context.getStaticContext();
final NamePool pool = element.getNamePool();
final Bindery bindery = context.getBindery();
while (enumeration.hasMoreElements()) {
String name = (String) enumeration.nextElement();
try {
final String[] parts = name.split("\\^");
final String realname = parts[1];
final int fingerprint = ctx != null ? ctx.getFingerprint(realname, false) : pool.getFingerprint(parts[0], realname);
final Binding binding = element.getVariableBinding(fingerprint);
final Debugger.Variable.Kind kind = binding instanceof XSLParam ? Debugger.Variable.Kind.PARAMETER : Debugger.Variable.Kind.VARIABLE;
final com.icl.saxon.expr.Value value = bindery.getValue(binding, myFrameId);
if (binding instanceof XSLGeneralVariable) {
final XSLGeneralVariable v = (XSLGeneralVariable) binding;
final String id = v.getSystemId();
variables.add(new VariableImpl(realname, convertValue(value), isGlobal, kind, id != null ? id.replaceAll(" ", "%20") : null, v.getLineNumber()));
} else {
variables.add(new VariableImpl(realname, convertValue(value), isGlobal, kind, null, -1));
}
} catch (XPathException e) {
// this should never happen I guess...
e.printStackTrace();
}
}
}
use of org.intellij.plugins.xsltDebugger.rt.engine.local.VariableImpl in project intellij-community by JetBrains.
the class Saxon9StyleFrame method collectVariables.
private ArrayList<Debugger.Variable> collectVariables() {
final ArrayList<Debugger.Variable> variables = new ArrayList<Debugger.Variable>();
final HashMap<StructuredQName, GlobalVariable> globalVariables = myXPathContext.getController().getExecutable().getCompiledGlobalVariables();
if (globalVariables != null) {
for (StructuredQName name : globalVariables.keySet()) {
final GlobalVariable globalVariable = globalVariables.get(name);
final Value value = createVariableValue(new GlobalVariableFacade(globalVariable));
final int lineNumber = globalVariable.getLineNumber();
final String systemId = globalVariable.getSourceLocator().getSystemId();
variables.add(new VariableImpl(globalVariable.getVariableQName().getDisplayName(), value, true, Debugger.Variable.Kind.VARIABLE, systemId, lineNumber));
}
}
XPathContext context = myXPathContext;
while (context != null) {
final StackFrame frame = context.getStackFrame();
final SlotManager map = frame.getStackFrameMap();
final ValueRepresentation[] values = frame.getStackFrameValues();
outer: for (int i = 0, valuesLength = values.length; i < valuesLength; i++) {
final ValueRepresentation value = values[i];
if (value != null) {
final String name = map.getVariableMap().get(i).getDisplayName();
for (Debugger.Variable variable : variables) {
if (name.equals(variable.getName())) {
continue outer;
}
}
final Value localValue = createVariableValue(new LocalVariableFacade(value));
variables.add(new VariableImpl(name, localValue, false, Debugger.Variable.Kind.VARIABLE, "", -1));
}
}
context = context.getCaller();
}
return variables;
}
Aggregations