6 Commits

Author SHA1 Message Date
60ba48d308 Update to 2.3.1:
* Fix: Compatibility with sqlite3 version >= 3.52.0
2026-03-31 19:31:00 -04:00
c2f99c259d Update to v2.3:
New: access 'url' entry in sqlite databases.
2023-07-26 09:34:22 -05:00
c6e9cb3af4 Update to v2.2.1:
Fix: Missing quotes in filter interpreter.
2023-03-27 11:47:09 -04:00
70bba87946 Update to v2.2:
New: Allow for the value of other entries to be in the 'sed' command of a
       filter. (May break existing configurations in cases where sed command
       uses a '%'.)
2023-03-21 20:13:35 -04:00
aacbf51475 Update to v2.1.5:
Fixed: Properly escape entries with a '%'
2022-09-09 16:11:42 -04:00
2136ba3f69 Update to v2.1.4:
New: Allow for comma separated list of references in aux_cmd.
2019-11-13 11:22:41 -05:00
7 changed files with 137 additions and 95 deletions

View File

@@ -1,3 +1,31 @@
2.3.1:
* Fix: Compatibility with sqlite3 version >= 3.52.0
2.3:
* New: access 'url' entry in sqlite databases.
2.2.1:
* Fix: Missing quotes in filter interpreter.
2.2:
* New: Allow for the value of other entries to be in the 'sed' command of a
filter. (May break existing configurations in cases where sed command
uses a '%'.)
2.1.5:
* Fixed: Properly escape entries with a '%'
2.1.4:
* New: Allow for comma separated list of references in aux_cmd.
2.1.3: 2.1.3:
* Fixed: entries that contain a '%' do not cause a failure. * Fixed: entries that contain a '%' do not cause a failure.

View File

@@ -1,4 +1,4 @@
## Copyright Ian Jauslin 2015-2019 ## Copyright Ian Jauslin 2015-2023
## ##
## Licensed under the Apache License, Version 2.0 (the "License"); ## Licensed under the Apache License, Version 2.0 (the "License");
## you may not use this file except in compliance with the License. ## you may not use this file except in compliance with the License.

2
NOTICE
View File

@@ -1,2 +1,2 @@
BBlog BBlog
Copyright Ian Jauslin 2015-2019 Copyright Ian Jauslin 2015-2026

View File

@@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
## Copyright Ian Jauslin 2015-2019 ## Copyright Ian Jauslin 2015-2026
## ##
## Licensed under the Apache License, Version 2.0 (the "License"); ## Licensed under the Apache License, Version 2.0 (the "License");
## you may not use this file except in compliance with the License. ## you may not use this file except in compliance with the License.
@@ -18,7 +18,7 @@
enginedir=/home/ian/Programs/BBlog2/src/engines enginedir=/home/ian/Programs/BBlog2/src/engines
# version # version
version=2.1.3 version=2.3.1
function print_config { function print_config {
echo "engine: $engine" echo "engine: $engine"
@@ -222,7 +222,8 @@ function replace_format {
# apply filter # apply filter
if [ -n "$filter" ]; then if [ -n "$filter" ]; then
sed_cmd=$(eval "echo \$filter_$filter") # replace '%' inside filter text
sed_cmd=$(replace_format "$(eval echo \$filter_$filter)")
replacement=$(eval "echo \$$field" | sed -r "$sed_cmd" ) replacement=$(eval "echo \$$field" | sed -r "$sed_cmd" )
else else
replacement=$(eval "echo \$$field") replacement=$(eval "echo \$$field")
@@ -235,12 +236,13 @@ function replace_format {
out="${out//\%$command\%/$replacement}" out="${out//\%$command\%/$replacement}"
done done
# un-escape '%' in replacement
out="${out//::iansays:percent::/\%}"
# finish replacing newlines # finish replacing newlines
out="${out//\\n/%}" out="${out//\\n/%}"
out=$(echo "$out" | tr "%" "\n") out=$(echo "$out" | tr "%" "\n")
# un-escape '%' in replacement
out="${out//::iansays:percent::/\%}"
echo "$out" echo "$out"
} }
@@ -272,17 +274,20 @@ function inverse_map_citeref {
foundref=0 foundref=0
# sift through aux file # sift through aux file
grep -h "$aux_cmd" $aux | while read -r ref; do grep -h "$aux_cmd" $aux | while read -r refs; do
eval "ref=\${ref#$aux_cmd}" eval "refs=\${refs#$aux_cmd}"
ref="${ref%\}}" refs="${ref%\}}"
# replace the ref via the ref_map # can be a comma separated list
possibleref=$(map_citeref "$ref") for ref in $(echo -n "$refs" | tr ',' '\n'); do
# check whether the ref is the right one # replace the ref via the ref_map
if [ "$possibleref" = "$newref" ]; then possibleref=$(map_citeref "$ref")
echo "$ref" # check whether the ref is the right one
foundref=1 if [ "$possibleref" = "$newref" ]; then
return 1 echo "$ref"
fi foundref=1
return 1
fi
done
done && echo "$foundref$newref" done && echo "$foundref$newref"
} }

View File

@@ -1,5 +1,5 @@
base_SQL="SELECT title,author,journal,year,token,doi,arxiv,citeref,prauth FROM bibliography" base_SQL="SELECT title,author,journal,year,token,doi,arxiv,citeref,prauth,bibtex,url FROM bibliography"
base_SQL_noprauth="SELECT title,author,journal,year,token,doi,arxiv,citeref FROM bibliography" base_SQL_noprauth="SELECT title,author,journal,year,token,doi,arxiv,citeref,bibtex,url FROM bibliography"
# add quotes # add quotes
function SQL_addquotes { function SQL_addquotes {
@@ -7,7 +7,6 @@ function SQL_addquotes {
# add quotes and escape string # add quotes and escape string
if [ -n "$line" ]; then if [ -n "$line" ]; then
line=$(escape_string "$line") line=$(escape_string "$line")
line="${line/%=/= }"
line="${line/ = /=\"}" line="${line/ = /=\"}"
line="${line/%/\"}" line="${line/%/\"}"
fi fi
@@ -23,69 +22,17 @@ function generate_SQL_alpha {
exists_citeref=0 exists_citeref=0
# sift through aux file # sift through aux file
grep -h "$aux_cmd" $aux | while read -r citeref; do grep -h "$aux_cmd" $aux | while read -r citerefs; do
eval "citeref=\${citeref#$aux_cmd}" eval "citerefs=\${citerefs#$aux_cmd}"
citeref="${citeref%\}}" citerefs="${citerefs%\}}"
# replace the citeref with a ref_map if there is any # can be a comma separated list
if [ -n "$ref_map" ]; then for citeref in $(echo -n "$citerefs" | tr ',' '\n'); do
citeref=$(map_citeref "$citeref")
fi
# Only query the db if there is no matching extra entry # replace the citeref with a ref_map if there is any
foundit=0 if [ -n "$ref_map" ]; then
if [ ${#extra} -gt 0 ]; then citeref=$(map_citeref "$citeref")
for entry in "${extra[@]}"; do fi
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 # Only query the db if there is no matching extra entry
foundit=0 foundit=0
@@ -101,15 +48,75 @@ function fetch_BBlog_entries_appearance {
fi fi
if [ "$foundit" = 0 ]; then if [ "$foundit" = 0 ]; then
SQL="$base_SQL_noprauth WHERE citeref='$citeref'" echo -n "$citeref' OR citeref='"
sqlite3 -line "$db" "$SQL" | SQL_addquotes exists_citeref=1
else fi
echo "citeref=$citeref" done
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 "$db" ".mode line --colsep ' = '" "$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 citerefs; do
eval "citerefs=\${citerefs#$aux_cmd}"
citerefs="${citerefs%\}}"
# can be a comma separated list
for citeref in $(echo -n "$citerefs" | tr ',' '\n'); do
# replace the citeref with a ref_map if there is any
if [ -n "$ref_map" ]; then
citeref=$(map_citeref "$citeref")
fi fi
# add an empty line # check whether the reference was already cited
echo "" citeref_list="$citeref_list;"
fi 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
done done
} }

View File

@@ -1,5 +1,5 @@
.Dd $Mdocdate: November 5 2019 $ .Dd $Mdocdate: July 26 2026 $
.Dt BBLOG 2.1.3 .Dt BBLOG 2.3.1
.Os .Os
.Sh NAME .Sh NAME
.Nm BBlog .Nm BBlog
@@ -194,6 +194,6 @@ automatically adds a letter (from 'b' to 'z') at the end of non-unique tokens, i
.Nm .Nm
was written by Ian Jauslin. was written by Ian Jauslin.
.Sh COPYRIGHT .Sh COPYRIGHT
copyright Ian Jauslin 2015-2019 copyright Ian Jauslin 2015-2026
.Sh SEE ALSO .Sh SEE ALSO
.Sx BBlog-sqlite Ns (7) .Sx BBlog-sqlite Ns (7)

View File

@@ -1,4 +1,4 @@
.Dd $Mdocdate: Novermber 5 2019 $ .Dd $Mdocdate: July 26 2026 $
.Dt BBLOG-sqlite .Dt BBLOG-sqlite
.Os .Os
.Sh DESCRIPTION .Sh DESCRIPTION
@@ -28,11 +28,13 @@ label of the reference
.It prauth .It prauth
bibliography entries are ordered alphabetically with respect to this entry bibliography entries are ordered alphabetically with respect to this entry
label of the reference label of the reference
.It url
link to paper
.El .El
.Sh AUTHORS .Sh AUTHORS
The sqlite BBlog engine was written by Ian Jauslin. The sqlite BBlog engine was written by Ian Jauslin.
.Sh COPYRIGHT .Sh COPYRIGHT
copyright Ian Jauslin 2015-2019 copyright Ian Jauslin 2015-2026
.Sh SEE ALSO .Sh SEE ALSO
.Sx BBlog Ns (1) , .Sx BBlog Ns (1) ,
.Sx sqlite3 Ns (1) .Sx sqlite3 Ns (1)