summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/database.cc
diff options
context:
space:
mode:
authorRaphael Langella <raphael.langella@gmail.com>2012-05-15 00:31:01 +0200
committerRaphael Langella <raphael.langella@gmail.com>2012-05-15 00:31:01 +0200
commitd52d0508f811bf4613de55db0f9e30e44558b43e (patch)
tree620897226938a764c811f8d5a5a6ea13332b84f4 /crawl-ref/source/database.cc
parent5729a0d575f660a9b7b98980c921bdfc47b14302 (diff)
downloadcrawl-ref-d52d0508f811bf4613de55db0f9e30e44558b43e.tar.gz
crawl-ref-d52d0508f811bf4613de55db0f9e30e44558b43e.zip
Add an alias functionality to database lookups.
Putting <foo> in a database entry redirects to key foo.
Diffstat (limited to 'crawl-ref/source/database.cc')
-rw-r--r--crawl-ref/source/database.cc7
1 files changed, 7 insertions, 0 deletions
diff --git a/crawl-ref/source/database.cc b/crawl-ref/source/database.cc
index 7c10aab816..140329aa86 100644
--- a/crawl-ref/source/database.cc
+++ b/crawl-ref/source/database.cc
@@ -731,6 +731,13 @@ static std::string _query_database(TextDB &db, std::string key,
std::string str((const char *)result.dptr, result.dsize);
+ // <foo> is an alias to key foo
+ if (str[0] == '<' and str[str.size() - 2] == '>')
+ {
+ return _query_database(db, str.substr(1, str.size() - 3),
+ canonicalise_key, run_lua, untranslated);
+ }
+
if (run_lua)
_execute_embedded_lua(str);