scansion/error.lua

Mon, 10 Sep 2018 09:52:08 +0100

author
Matthew Wild <mwild1@gmail.com>
date
Mon, 10 Sep 2018 09:52:08 +0100
changeset 104
fb915f3a9c89
parent 64
f0a1f82b8e04
child 111
25530dccf696
permissions
-rw-r--r--

scansion.error: Add __name and is() for identifying scansion errors

64
f0a1f82b8e04 scansion.error: Util for creating error objects
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
1 local error_mt = {
f0a1f82b8e04 scansion.error: Util for creating error objects
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2 __tostring = function (e)
f0a1f82b8e04 scansion.error: Util for creating error objects
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3 return tostring(e.message or ("<Scansion error: "..tostring(self)..">"));
f0a1f82b8e04 scansion.error: Util for creating error objects
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4 end;
104
fb915f3a9c89 scansion.error: Add __name and is() for identifying scansion errors
Matthew Wild <mwild1@gmail.com>
parents: 64
diff changeset
5 __name = "scansion error";
64
f0a1f82b8e04 scansion.error: Util for creating error objects
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6 };
f0a1f82b8e04 scansion.error: Util for creating error objects
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7
f0a1f82b8e04 scansion.error: Util for creating error objects
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8 return {
f0a1f82b8e04 scansion.error: Util for creating error objects
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9 new_error = function (message, data)
f0a1f82b8e04 scansion.error: Util for creating error objects
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10 return setmetatable({ message = message, data = data }, error_mt);
f0a1f82b8e04 scansion.error: Util for creating error objects
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11 end;
104
fb915f3a9c89 scansion.error: Add __name and is() for identifying scansion errors
Matthew Wild <mwild1@gmail.com>
parents: 64
diff changeset
12 is = function (err)
fb915f3a9c89 scansion.error: Add __name and is() for identifying scansion errors
Matthew Wild <mwild1@gmail.com>
parents: 64
diff changeset
13 return getmetatable(err) == error_mt;
fb915f3a9c89 scansion.error: Add __name and is() for identifying scansion errors
Matthew Wild <mwild1@gmail.com>
parents: 64
diff changeset
14 end;
64
f0a1f82b8e04 scansion.error: Util for creating error objects
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
15 };

mercurial