diff options
| author | Ian Jauslin <jauslin@ias.edu> | 2017-05-02 20:20:48 +0000 | 
|---|---|---|
| committer | Ian Jauslin <jauslin@ias.edu> | 2017-05-02 21:38:33 +0000 | 
| commit | 1366aa391af0ec4e6fcef3a10d8345ad2d32e340 (patch) | |
| tree | efcc637d71f5f490c15580e13f4e3bf8bd7f3a27 /engines | |
Initial commit
Diffstat (limited to 'engines')
| -rw-r--r-- | engines/sqlite.sh | 115 | 
1 files changed, 115 insertions, 0 deletions
| diff --git a/engines/sqlite.sh b/engines/sqlite.sh new file mode 100644 index 0000000..c14f30c --- /dev/null +++ b/engines/sqlite.sh @@ -0,0 +1,115 @@ +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" + +# add quotes +function SQL_addquotes { +  while read -r line; do +    # add quotes and escape string +    if [ -n "$line" ]; then +      line=$(escape_string "$line") +      line="${line/%=/= }" +      line="${line/ = /=\"}" +      line="${line/%/\"}" +    fi +    echo "$line" +  done +} + +# SQL command for alphabetical ordering +function generate_SQL_alpha { +  echo -n "$base_SQL WHERE citeref='" + +  # whether there is a citeref +  exists_citeref=0 + +  # sift through aux file +  grep -h "$aux_cmd" $aux | while read -r citeref; do +    eval "citeref=\${citeref#$aux_cmd}" +    citeref="${citeref%\}}" + +    # 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 + +  # if there are no citerefs close ' +  [ $exists_citeref = 0 ] && echo -n "'" +} + +# fetch entries by alphabetical order +function fetch_BBlog_entries_alpha { +  SQL="$(generate_SQL_alpha)" +  SQL="${SQL% OR citeref=\'} ORDER BY prauth,year" +  sqlite3 -line "$db" "$SQL" | SQL_addquotes +  # add an empty line +  echo "" +} + +# fetch entries by order of appearance +function fetch_BBlog_entries_appearance { +  # keep track of citerefs to avoid repetitions +  citeref_list="" + +  # sift through aux file +  grep -h "$aux_cmd" $aux | while read -r citeref; do +    eval "citeref=\${citeref#$aux_cmd}" +    citeref="${citeref%\}}" + +    # replace the citeref with a ref_map if there is any +    if [ -n "$ref_map" ]; then +      citeref=$(map_citeref "$citeref") +    fi + +    # 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 +      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 +} + | 
