summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLouie Shprung <lshprung@scu.edu>2022-11-21 22:00:04 -0800
committerLouie Shprung <lshprung@scu.edu>2022-11-22 08:45:27 -0800
commitee103902c141cdc3dce565af453b589fd1fc7a82 (patch)
treeff8456af0218b252c9f0039f9bf4bc17d3ac2506 /src
parent1433e5580757ef140bc64bcc5a904fd0ab9401ed (diff)
Rewrite in POSIX shell
Diffstat (limited to 'src')
-rwxr-xr-xsrc/index.rb27
-rwxr-xr-xsrc/index.sh43
2 files changed, 43 insertions, 27 deletions
diff --git a/src/index.rb b/src/index.rb
deleted file mode 100755
index 9c66c81..0000000
--- a/src/index.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-require 'pathname'
-
-puts %Q[
- CREATE TABLE searchIndex(id INTEGER PRIMARY KEY, name TEXT, type TEXT, path TEXT);
- CREATE UNIQUE INDEX anchor ON searchIndex (name, type, path);
-]
-
-INSERT_SQL = %Q[
- INSERT INTO searchIndex(name, type, path) VALUES ('%s','%s','%s');
-]
-
-PATTERN = %r[<title>(.*)\(automake\)(.*)</title>]
-
-def quote(s)
- s.gsub(/&amp;/, '&').gsub(/'/, "\\'")
-end
-
-ARGV.each do |arg|
- Pathname.glob(arg) do |path|
- match = path.each_line.lazy.map { |line| PATTERN.match(line) }.find { |m| m }
- if match
- printf INSERT_SQL, quote(match[1]), 'Guide', path.basename
- else
- $stderr.puts "%{path.basename}: no title found"
- end
- end
-end
diff --git a/src/index.sh b/src/index.sh
new file mode 100755
index 0000000..f4d898e
--- /dev/null
+++ b/src/index.sh
@@ -0,0 +1,43 @@
+#!/usr/bin/env sh
+
+DB_PATH="$1"
+shift
+
+get_title() {
+ FILE="$1"
+
+ PATTERN="<title>.*\(automake\).*</title>"
+
+ #Find pattern in file
+ grep -Eo "$PATTERN" "$FILE" |
+ #Remove tag
+ sed 's/<[^>]*>//g' | \
+ #Remove '(automake)'
+ sed 's/(automake)//g' | \
+ #Remove trailing space
+ sed 's/[ ]*$//g' | \
+ #Replace '&amp' with '&'
+ sed 's/&amp/&/g'
+}
+
+insert() {
+ NAME="$1"
+ TYPE="$2"
+ PAGE_PATH="$3"
+
+ sqlite3 "$DB_PATH" "INSERT INTO searchIndex(name, type, path) VALUES (\"$NAME\",\"$TYPE\",\"$PAGE_PATH\");"
+}
+
+# Create table
+sqlite3 "$DB_PATH" "CREATE TABLE searchIndex(id INTEGER PRIMARY KEY, name TEXT, type TEXT, path TEXT);"
+sqlite3 "$DB_PATH" "CREATE UNIQUE INDEX anchor ON searchIndex (name, type, path);"
+
+# Get title and insert into table for each html file
+while [ -n "$1" ]; do
+ unset PAGE_NAME
+ PAGE_NAME="$(get_title "$1")"
+ if [ -n "$PAGE_NAME" ]; then
+ insert "$PAGE_NAME" "Guide" "$(basename "$1")"
+ fi
+ shift
+done