1
0
Fork 0
mirror of https://github.com/zplug/zplug synced 2024-06-09 00:06:15 +02:00
zplug/misc/contrib/parser.awk
2016-08-07 17:34:29 +09:00

64 lines
1.3 KiB
Awk

BEGIN {
KEY_SEP = ":";
TAGS_SEP = ", ";
}
{
arr[NR] = $0;
}
END {
if (get_tag(arr, package) != 0)
exit 1;
}
function get_name(arr, tag, n, tags, i, name) {
n = split(tag, tags, "#");
for (i in tags) {
if (tags[i] ~ /\//) {
name = tags[i];
break;
}
}
return name;
}
function get_tag(line, tag, name, i, j, n, tags, line_tags, ret, key_and_value, key, value) {
name = get_name(line, tag);
if (name == "") {
return 1;
}
n = split(tag, tags, "#");
for (i in line) {
if (line[i] ~ "name" KEY_SEP name TAGS_SEP) {
m = split(line[i], line_tags, TAGS_SEP);
for (j in line_tags) {
split(line_tags[j], key_and_value, KEY_SEP);
key = key_and_value[1];
value = key_and_value[2];
if (n == 1) {
ret[key] = value;
}
if (in_array(key, tags) == 0) {
ret[key] = value;
}
}
}
}
if (length(ret) == 0)
return 1;
for (key in ret)
print key KEY_SEP ret[key];
}
function in_array(e, arr, i) {
for (i in arr) {
if (arr[i] == e)
return 0;
}
return 1;
}