static O loadVariableDefinition(S varName) { ret loadVariableDefinition(getProgramID(), varName); } // currently works with string lists ("= litlist(...)"), // strings, longs and ints. static O loadVariableDefinition(S progIDOrSrc, S varName) { if (isSnippetID(progIDOrSrc)) progIDOrSrc = loadSnippet(progIDOrSrc); ret loadVariableDefinition(progIDOrSrc, javaTok(progIDOrSrc), varName); } static O loadVariableDefinition(S src, L tok, S varName) { int i = findCodeTokens(tok, varName, "="); if (i < 0) ret null; i += 4; S t = tok.get(i); if (isQuoted(t)) ret unquote(t); if (isLongConstant(t)) ret parseLong(t); if (isInteger(t)) ret parseInt(t); if (eqOneOf(t, "litlist", "ll") && eq(get(tok, i+2), "(")) { int opening = i+2; int closing = findEndOfBracketPart(tok, opening)-1; new L l; for (i = opening+2; i < closing; i += 4) l.add(unquote(tok.get(i))); ret l; } throw fail("Unknown variable type or no definition in source: " + shorten(src, 100) + "/" + varName); }