Commit b0b05166 authored by twanvl's avatar twanvl

pass package to ScriptLocalFileName

parent 4719029f
...@@ -851,11 +851,11 @@ void parseCallArguments(TokenIterator& input, Script& script, vector<Variable>& ...@@ -851,11 +851,11 @@ void parseCallArguments(TokenIterator& input, Script& script, vector<Variable>&
// ----------------------------------------------------------------------------- : Parsing values // ----------------------------------------------------------------------------- : Parsing values
ScriptValueP parse_value(TokenIterator& input) { ScriptValueP parse_value(TokenIterator& input, Packaged* package) {
Token token = input.read(); Token token = input.read();
if (token == _("(")) { if (token == _("(")) {
// Parentheses = grouping, i.e. ignore it // Parentheses = grouping, i.e. ignore it
ScriptValueP a = parse_value(input); ScriptValueP a = parse_value(input, package);
expectToken(input, _(")"), &token); expectToken(input, _(")"), &token);
return a; return a;
} else if (token == _("[")) { } else if (token == _("[")) {
...@@ -868,11 +868,11 @@ ScriptValueP parse_value(TokenIterator& input) { ...@@ -868,11 +868,11 @@ ScriptValueP parse_value(TokenIterator& input) {
String key = t.value; String key = t.value;
input.read(); // skip the name input.read(); // skip the name
input.read(); // and the : input.read(); // and the :
ScriptValueP v = parse_value(input); ScriptValueP v = parse_value(input, package);
if (v) col->key_value[key] = v; if (v) col->key_value[key] = v;
} else { } else {
// implicit numbered element // implicit numbered element
ScriptValueP v = parse_value(input); ScriptValueP v = parse_value(input, package);
if (v) col->value.push_back(v); if (v) col->value.push_back(v);
} }
t = input.peek(); t = input.peek();
...@@ -897,40 +897,39 @@ ScriptValueP parse_value(TokenIterator& input) { ...@@ -897,40 +897,39 @@ ScriptValueP parse_value(TokenIterator& input) {
} else if (token == _("rgb")) { } else if (token == _("rgb")) {
// rgb(r, g, b) // rgb(r, g, b)
expectToken(input, _("(")); expectToken(input, _("("));
ScriptValueP r = parse_value(input); ScriptValueP r = parse_value(input, package);
expectToken(input, _(",")); expectToken(input, _(","));
ScriptValueP g = parse_value(input); ScriptValueP g = parse_value(input, package);
expectToken(input, _(",")); expectToken(input, _(","));
ScriptValueP b = parse_value(input); ScriptValueP b = parse_value(input, package);
expectToken(input, _(")")); expectToken(input, _(")"));
if (!r || !g || !b) return ScriptValueP(); if (!r || !g || !b) return ScriptValueP();
return to_script(wxColour(r->toInt(),g->toInt(),b->toInt())); return to_script(wxColour(r->toInt(),g->toInt(),b->toInt()));
} else if (token == _("rgba")) { } else if (token == _("rgba")) {
// rgba(r, g, b, a) // rgba(r, g, b, a)
expectToken(input, _("(")); expectToken(input, _("("));
ScriptValueP r = parse_value(input); ScriptValueP r = parse_value(input, package);
expectToken(input, _(",")); expectToken(input, _(","));
ScriptValueP g = parse_value(input); ScriptValueP g = parse_value(input, package);
expectToken(input, _(",")); expectToken(input, _(","));
ScriptValueP b = parse_value(input); ScriptValueP b = parse_value(input, package);
expectToken(input, _(",")); expectToken(input, _(","));
ScriptValueP a = parse_value(input); ScriptValueP a = parse_value(input, package);
expectToken(input, _(")")); expectToken(input, _(")"));
if (!r || !g || !b) return ScriptValueP(); if (!r || !g || !b) return ScriptValueP();
return to_script(AColor(r->toInt(),g->toInt(),b->toInt(),a->toInt())); return to_script(AColor(r->toInt(),g->toInt(),b->toInt(),a->toInt()));
} else if (token == _("mark_default")) { } else if (token == _("mark_default")) {
expectToken(input, _("(")); expectToken(input, _("("));
ScriptValueP a = parse_value(input); ScriptValueP a = parse_value(input, package);
expectToken(input, _(")")); expectToken(input, _(")"));
if (!a) return ScriptValueP(); if (!a) return ScriptValueP();
return intrusive(new ScriptDefault(a)); return intrusive(new ScriptDefault(a));
} else if (token == _("local_filename")) { } else if (token == _("local_filename")) {
expectToken(input, _("(")); expectToken(input, _("("));
ScriptValueP a = parse_value(input); ScriptValueP a = parse_value(input, package);
expectToken(input, _(")")); expectToken(input, _(")"));
if (!a) return ScriptValueP(); if (!a) return ScriptValueP();
//return intrusive(new ScriptLocalFileName(input.package,a->toString())); return intrusive(new ScriptLocalFileName(package,a->toString()));
return intrusive(new ScriptLocalFileName(nullptr,a->toString()));
} }
} else if (token == TOK_INT) { } else if (token == TOK_INT) {
long l = 0; long l = 0;
...@@ -944,7 +943,7 @@ ScriptValueP parse_value(TokenIterator& input) { ...@@ -944,7 +943,7 @@ ScriptValueP parse_value(TokenIterator& input) {
return to_script(token.value); return to_script(token.value);
} }
// parse error // parse error
input.expected(_("expression")); input.expected(_("value (string/number/boolean/color/list)"));
return ScriptValueP(); return ScriptValueP();
} }
...@@ -952,7 +951,7 @@ ScriptValueP parse_value(const String& s, Packaged* package, vector<ScriptParseE ...@@ -952,7 +951,7 @@ ScriptValueP parse_value(const String& s, Packaged* package, vector<ScriptParseE
errors_out.clear(); errors_out.clear();
// parse // parse
TokenIterator input(s, package, false, errors_out); TokenIterator input(s, package, false, errors_out);
ScriptValueP value = parse_value(input); ScriptValueP value = parse_value(input, package);
if (input.read() != TOK_EOF) { if (input.read() != TOK_EOF) {
input.expected(_("end of input")); input.expected(_("end of input"));
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment