diff options
Diffstat (limited to 'lib/ref2bib.awk')
| -rw-r--r-- | lib/ref2bib.awk | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/lib/ref2bib.awk b/lib/ref2bib.awk index 422fdd7..9384677 100644 --- a/lib/ref2bib.awk +++ b/lib/ref2bib.awk @@ -19,6 +19,14 @@ function r_emit(name, v) { printf " %s = {%s},\n", name, v } +# join arr[1..n] with " and ", as bibtex name lists expect +function r_join(arr, n, s, i) { + s = arr[1] + for (i = 2; i <= n; i++) + s = s " and " arr[i] + return s +} + { split("", val) na = 0 @@ -65,14 +73,10 @@ function r_emit(name, v) { print "" printf "@%s{FIXME,\n", type - authors = "" - for (i = 1; i <= na; i++) - authors = (i == 1) ? A[i] : authors " and " A[i] - r_emit("author", authors) - editors = "" - for (i = 1; i <= ne; i++) - editors = (i == 1) ? E[i] : editors " and " E[i] - r_emit("editor", editors) + if (na > 0) + r_emit("author", r_join(A, na)) + if (ne > 0) + r_emit("editor", r_join(E, ne)) r_emit("title", val["T"]) r_emit("journal", val["J"]) |