diff options
| -rw-r--r-- | Changelog | 5 | ||||
| -rwxr-xr-x | bin/BBlog | 29 | ||||
| -rw-r--r-- | engines/sqlite.sh | 130 | ||||
| -rw-r--r-- | man/man1/BBlog.1 | 4 | 
4 files changed, 92 insertions, 76 deletions
| @@ -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. @@ -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 | 
