blob: 5fc3d5fc748d660d8846688bb9e49022c9250784 [file] [log] [blame]
start =
top
top
= "state" "(" p:params ")" { return { state: p } }
/ "selector" "(" p:params ")" { return { selector: p } }
/ "state=" v:value { return { state: v } }
/ "selector=" v:value { return { selector: v } }
params
= k1: key_value_pair k2:("," key_value_pair)*
{
return k2.reduce((acc, cur) => Object.assign(acc, cur[1]), k1);
}
key_value_pair
= "refinedBy=selector(" p:params ")"
{
return { refinedBy: p }
}
/ "refinedBy=state(" p:params ")"
{
return { refinedBy: p }
}
/ "startSelector=selector(" p:params ")"
{
return { startSelector: p };
}
/ "endSelector=selector(" p:params ")"
{
return { endSelector: p };
}
/ key:key "=" value:value
{
var f = {};
var num = Number(value);
f[key] = isNaN(num) ? decodeURIComponent(value): num;
return f;
}
key
= atom
value
= atom
atom
= chars:validchar+ { return chars.join(""); }
validchar
= [a-zA-Z0-9\<\>\/\[\]\:%+@.\-!\$\&\;*_]