Mon, 10 Sep 2018 09:52:08 +0100
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 | }; |