From 2136ba3f69da0efe0eb2c8c960fc15d02331e358 Mon Sep 17 00:00:00 2001 From: Ian Jauslin Date: Wed, 13 Nov 2019 11:22:41 -0500 Subject: [PATCH] Update to v2.1.4: New: Allow for comma separated list of references in aux_cmd. --- Changelog | 5 ++ bin/BBlog | 29 ++++++----- engines/sqlite.sh | 130 ++++++++++++++++++++++++---------------------- man/man1/BBlog.1 | 4 +- 4 files changed, 92 insertions(+), 76 deletions(-) diff --git a/Changelog b/Changelog index 792c411..801ccc6 100644 --- a/Changelog +++ b/Changelog @@ -1,3 +1,8 @@ +2.1.4: + + * New: Allow for comma separated list of references in aux_cmd. + + 2.1.3: * Fixed: entries that contain a '%' do not cause a failure. diff --git a/bin/BBlog b/bin/BBlog index 141b8a5..9d63581 100755 --- a/bin/BBlog +++ b/bin/BBlog @@ -15,10 +15,10 @@ ## limitations under the License. # directory containing the engine files -enginedir=/home/ian/Programs/BBlog2/src/engines +enginedir=/usr/share/BBlog/engines # version -version=2.1.3 +version=2.1.4 function print_config { echo "engine: $engine" @@ -272,17 +272,20 @@ function inverse_map_citeref { foundref=0 # sift through aux file - grep -h "$aux_cmd" $aux | while read -r ref; do - eval "ref=\${ref#$aux_cmd}" - ref="${ref%\}}" - # replace the ref via the ref_map - possibleref=$(map_citeref "$ref") - # check whether the ref is the right one - if [ "$possibleref" = "$newref" ]; then - echo "$ref" - foundref=1 - return 1 - fi + grep -h "$aux_cmd" $aux | while read -r refs; do + eval "refs=\${refs#$aux_cmd}" + refs="${ref%\}}" + # can be a comma separated list + for ref in $(echo -n "$refs" | tr ',' '\n'); do + # replace the ref via the ref_map + possibleref=$(map_citeref "$ref") + # check whether the ref is the right one + if [ "$possibleref" = "$newref" ]; then + echo "$ref" + foundref=1 + return 1 + fi + done done && echo "$foundref$newref" } diff --git a/engines/sqlite.sh b/engines/sqlite.sh index af7afdd..b10d6c3 100644 --- a/engines/sqlite.sh +++ b/engines/sqlite.sh @@ -1,5 +1,5 @@ -base_SQL="SELECT title,author,journal,year,token,doi,arxiv,citeref,prauth FROM bibliography" -base_SQL_noprauth="SELECT title,author,journal,year,token,doi,arxiv,citeref FROM bibliography" +base_SQL="SELECT title,author,journal,year,token,doi,arxiv,citeref,prauth,bibtex FROM bibliography" +base_SQL_noprauth="SELECT title,author,journal,year,token,doi,arxiv,citeref,bibtex FROM bibliography" # add quotes function SQL_addquotes { @@ -23,32 +23,36 @@ function generate_SQL_alpha { exists_citeref=0 # sift through aux file - grep -h "$aux_cmd" $aux | while read -r citeref; do - eval "citeref=\${citeref#$aux_cmd}" - citeref="${citeref%\}}" + grep -h "$aux_cmd" $aux | while read -r citerefs; do + eval "citerefs=\${citerefs#$aux_cmd}" + citerefs="${citerefs%\}}" - # replace the citeref with a ref_map if there is any - if [ -n "$ref_map" ]; then - citeref=$(map_citeref "$citeref") - fi + # can be a comma separated list + for citeref in $(echo -n "$citerefs" | tr ',' '\n'); do - # Only query the db if there is no matching extra entry - foundit=0 - if [ ${#extra} -gt 0 ]; then - for entry in "${extra[@]}"; do - ref="${entry#*:}" - ref="${ref%%:*}" - if [ "$ref" = "$citeref" ]; then - foundit=1 - break - fi - done - fi - - if [ "$foundit" = 0 ]; then - echo -n "$citeref' OR citeref='" - exists_citeref=1 - fi + # replace the citeref with a ref_map if there is any + if [ -n "$ref_map" ]; then + citeref=$(map_citeref "$citeref") + fi + + # Only query the db if there is no matching extra entry + foundit=0 + if [ ${#extra} -gt 0 ]; then + for entry in "${extra[@]}"; do + ref="${entry#*:}" + ref="${ref%%:*}" + if [ "$ref" = "$citeref" ]; then + foundit=1 + break + fi + done + fi + + if [ "$foundit" = 0 ]; then + echo -n "$citeref' OR citeref='" + exists_citeref=1 + fi + done done # if there are no citerefs close ' @@ -70,46 +74,50 @@ function fetch_BBlog_entries_appearance { citeref_list="" # sift through aux file - grep -h "$aux_cmd" $aux | while read -r citeref; do - eval "citeref=\${citeref#$aux_cmd}" - citeref="${citeref%\}}" + grep -h "$aux_cmd" $aux | while read -r citerefs; do + eval "citerefs=\${citerefs#$aux_cmd}" + citerefs="${citerefs%\}}" - # replace the citeref with a ref_map if there is any - if [ -n "$ref_map" ]; then - citeref=$(map_citeref "$citeref") - fi + # can be a comma separated list + for citeref in $(echo -n "$citerefs" | tr ',' '\n'); do - # check whether the reference was already cited - citeref_list="$citeref_list;" - if $(echo "$citeref_list" | grep -q ";$citeref;"); then - # remove trailing ';' - citeref_list="${citeref_list%;}" - else - citeref_list="$citeref_list$citeref" - - # Only query the db if there is no matching extra entry - foundit=0 - if [ ${#extra} -gt 0 ]; then - for entry in "${extra[@]}"; do - ref="${entry#*:}" - ref="${ref%%:*}" - if [ "$ref" = "$citeref" ]; then - foundit=1 - break - fi - done + # replace the citeref with a ref_map if there is any + if [ -n "$ref_map" ]; then + citeref=$(map_citeref "$citeref") fi - - if [ "$foundit" = 0 ]; then - SQL="$base_SQL_noprauth WHERE citeref='$citeref'" - sqlite3 -line "$db" "$SQL" | SQL_addquotes + + # check whether the reference was already cited + citeref_list="$citeref_list;" + if $(echo "$citeref_list" | grep -q ";$citeref;"); then + # remove trailing ';' + citeref_list="${citeref_list%;}" else - echo "citeref=$citeref" - fi + citeref_list="$citeref_list$citeref" - # add an empty line - echo "" - fi + # Only query the db if there is no matching extra entry + foundit=0 + if [ ${#extra} -gt 0 ]; then + for entry in "${extra[@]}"; do + ref="${entry#*:}" + ref="${ref%%:*}" + if [ "$ref" = "$citeref" ]; then + foundit=1 + break + fi + done + fi + + if [ "$foundit" = 0 ]; then + SQL="$base_SQL_noprauth WHERE citeref='$citeref'" + sqlite3 -line "$db" "$SQL" | SQL_addquotes + else + echo "citeref=$citeref" + fi + + # add an empty line + echo "" + fi + done done } diff --git a/man/man1/BBlog.1 b/man/man1/BBlog.1 index a37b75d..6303c38 100644 --- a/man/man1/BBlog.1 +++ b/man/man1/BBlog.1 @@ -1,5 +1,5 @@ -.Dd $Mdocdate: November 5 2019 $ -.Dt BBLOG 2.1.3 +.Dd $Mdocdate: November 13 2019 $ +.Dt BBLOG 2.1.4 .Os .Sh NAME .Nm BBlog