git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7479 c06c8d41-db1a-0410-9941-cceddc491573
77MES6I23O3FEVX45F5L7LGABFIDYZA2CLESQBXALSVIHS5E2G6AC
3UKFCWWS5BLFQWZRB5FUA46CE2XGX5VRCEWC3K3XH5RCGQK64N2AC
RZHJQU3Y6KKMNJKGL6P4IXBJTKWFO4YARAQSWYCETXXNSZG4BN7QC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
7Y5HSDFKA5TPLS2TWTRFMQVX6UXUDHXU5MUMXQSDFAIY4THQ3BIQC
ED62QWGKBPORWVKDFOQRKJXEIWZVNGR3O4KWQBDSRNPT36AYOQYAC
NVSFIV2ZKP44XHCSCXG6OZVGL67OIFINC34J2EMKTA4KULCERUEAC
IVVTHLTTLOP5TSULXJWUSSXHOKYWVU3OWKYVK45A7RIB6V34MYQAC
AUYQDKLMOG4FGH2T3LACX4TH632DPKVXBNV5VU6PIVUEWSIO4LQQC
34C4U6EQWERY75GZJKUCM5KVGU2OUICETS5LGZF6RMKMZT4R5SQAC
ZWYVZW5QFM5I2F6BLMNDDTV7FROJUHOO3O2BCBG7WSCKMKXUEMTQC
BW72LH6NR2NBFFKPM3YZSQEDAFNI6AQIJJ6DV4WYCOXW5JZS5Z2QC
Y5GWVQ5SM7DJEAPFOBPMMJH4D3NXBB2MPONSJUMG3KIQMBVGEE6AC
GQL5SIGBHLU3FMCE54XVGLRY5AZHRM6DUEB722REA2DPLGJSN6EQC
NCDWWDJQLAU5ORSAQGZKJJ5E22VTDGGPJMVVBWQFHQ2B3U3UFHDQC
DKRSOHZXL6EPSLKOKHF7GJXSZEJVY7CXGACSHWLM5B5FTRETWWCAC
W52PCSHX72WAMWKG6L4BPUBVMO6E72KYYBNKAA7554KNOTY6V7WQC
JDM27QE4HR52AYFSQE763BFF57ANOTF5MXKMO377PP5EXMN7SAOAC
2ZZD6EYMSPVCXZTICL4VGYGGQRRWDLZ24KBCDBVIYC54OZ4C6GGAC
JT672SIJK4BOIUAGL2WQ6NR2NF4PSWP3BT6Q4HMNRF25UN6JQ2MAC
JQFQX7IWSJ4TYWVUVXAFMCPSAN67PRMNECDQI5WMON2JFMQVVUEQC
AUXHSGS4EFOPZ6TVZYWNVOUDO7NYKUKE3HBKGQQWTALSVFOE3HAAC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
YE7M665QKDGI7Y5WMERCWJNDZ4FUZ6GRUCK4E6GZH4SWCUM6RWLAC
mspec_segment : STRING
{
lc_map.main.add(
yylineno,
make_stringf(
"%s\"%s\"",
start_marker_segment? "" : " .. ",
quote_lua_string($1).c_str()));
start_marker_segment = false;
// Special treatment for Lua markers.
if (arg.find("lua:") == 0)
{
arg = arg.substr(4);
lc_map.main.add(
yylineno,
make_stringf("lua_marker(\"%s\", function () "
" return %s "
"end)",
quote_lua_string(key).c_str(),
arg.c_str()));
}
else
{
lc_map.main.add(
yylineno,
make_stringf("marker(\"%s\")",
quote_lua_string($2).c_str()));
}
<TOEOL>.*\\[ \t\r]*$ {
settext(true, 1);
return STRING;
}
<TOEOL>.+$ {
BEGIN(INITIAL);
settext(true);
return STRING;
}
<TOEOL>\r?\n ;
if (!err.empty())
luaL_error(ls, err.c_str());
return (0);
}
static int dgn_lua_marker(lua_State *ls)
{
MAP(ls, 1, map);
if (lua_gettop(ls) != 3 || !lua_isstring(ls, 2) || !lua_isfunction(ls, 3))
luaL_error(ls, "Expected marker key and marker function.");
CLua &lvm(CLua::get_vm(ls));
std::string key = lua_tostring(ls, 2);
lua_datum function(lvm, 3, false);
const std::string err = map->map.add_lua_marker(key, function);