commit 0320de84a7c53bb482bd71756467b1e62e5b8d92
parent 3c2f362b69688911b90b25c698b65713b544ae0f
Author: Jan Pobrislo <ccx@webprojekty.cz>
Date: Thu, 7 Jan 2016 16:19:29 +0100
unified function for reporting lookup errors, tests
Diffstat:
2 files changed, 48 insertions(+), 19 deletions(-)
diff --git a/aat_data.test b/aat_data.test
@@ -54,7 +54,7 @@ Hello {<name>}!
|}
---
>>> /Makefile:.*failed/
->>>2 /error: undefined variable 'name'/
+>>>2 /error: undefined scalar 'name'/
>>>= 2
./aattest tests/data6
@@ -132,3 +132,36 @@ role-scriptsetup
]
>>>2
>>>= 0
+
+./aattest tests/data8
+<<<
+@awk ../../data.awk
+|END{
+@for n in names
+Hello {<n.name>}!
+@endfor
+|}
+---
+names=[
+name
+X
+Y
+]
+>>>
+Hello X!
+Hello Y!
+>>>2
+>>>= 0
+
+./aattest tests/data9
+<<<
+@awk ../../data.awk
+|END{
+@for n in names
+Hello {<n.name>}!
+@endfor
+|}
+---
+>>> /Makefile:.*failed/
+>>>2 /error: undefined table 'names'/
+>>>= 2
diff --git a/data.awk b/data.awk
@@ -74,17 +74,20 @@ state == 1 {
exit 1
}
+function data_not_found_error(varname, type) {
+ if(ENVIRON["DATA_AWK_EMPTY_GET"]) {
+ if(DEBUG) {
+ print type" not found: " varname >"/dev/stderr"
+ }
+ } else {
+ print "error: undefined "type" '"varname"'" >"/dev/stderr"
+ exit 1
+ }
+}
+
function loop_start(varname, prefix, depth) {
if(!((varname, "fields") in V)) {
- if(ENVIRON["DATA_AWK_EMPTY_GET"]) {
- if(DEBUG) {
- print "table not found: " varname >"/dev/stderr"
- }
- found = ""
- } else {
- print "error: undefined table '"varname"'" >"/dev/stderr"
- exit 1
- }
+ data_not_found_error(varname, "table")
}
depth = ++loop_stack["depth"]
loop_stack[depth,"row"] = 0
@@ -159,15 +162,8 @@ function find(varname, i, n, names, values, loopvar, looprow, prefix) {
function get(varname) {
if(!find(varname)) {
- if(ENVIRON["DATA_AWK_EMPTY_GET"]) {
- if(DEBUG) {
- print "variable not found: " varname >"/dev/stderr"
- }
- found = ""
- } else {
- print "error: undefined variable '"varname"'" >"/dev/stderr"
- exit 1
- }
+ data_not_found_error(varname, "scalar")
+ found = ""
}
if(DEBUG) {
print "get →" varname "← = →"found"←" >"/dev/stderr"