From 7c71a956f67cf81ed89b3aff3c470b7c593d6f4d Mon Sep 17 00:00:00 2001 From: Dan Wallis Date: Mon, 21 Aug 2023 18:14:42 +0100 Subject: [PATCH 1/2] Index reserved keywords for better user experience --- gen-phpweb-sqlite-db.php | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gen-phpweb-sqlite-db.php b/gen-phpweb-sqlite-db.php index 0ef04b6..fb50925 100644 --- a/gen-phpweb-sqlite-db.php +++ b/gen-phpweb-sqlite-db.php @@ -164,6 +164,31 @@ function scan($dir, $lang) $dbh->exec("INSERT INTO fs (lang, prefix, keyword, name, prio) values ('$lang', '$prefix', '" . metaphone($keyword) . "', '$doc_rel', ".($prio+10).")"); } + + if ($f === 'reserved.keywords.php') { + // Yes, this is fragile. + $handle = fopen($file, 'r'); + $stm = $dbh->prepare('INSERT INTO fs (lang, prefix, keyword, name, prio) VALUES (?, ?, ?, ?, ?)'); + $path_base = dirname($doc_rel); + while ($stm && false !== ($line = fgets($handle))) { + if (strpos($line, '([^<]+)!', $line, $matches)) { + continue; + } + + $keyword = strtolower(rtrim($matches[2], '()')); + $href = $matches[1]; + + if ($x = strpos($href, '#')) { + $href = substr($href, 0, $x); + } + + $stm->execute([$lang, $prefix ?? '', $keyword, $path_base . '/' . $href, $prio ?? 200]); + } + } } closedir($d); From ab93a8b499a6059c8083eee1046f7986975c3d92 Mon Sep 17 00:00:00 2001 From: Dan Wallis Date: Thu, 22 Aug 2024 22:59:45 +0100 Subject: [PATCH 2/2] Improve error handling --- gen-phpweb-sqlite-db.php | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/gen-phpweb-sqlite-db.php b/gen-phpweb-sqlite-db.php index fb50925..be36df5 100644 --- a/gen-phpweb-sqlite-db.php +++ b/gen-phpweb-sqlite-db.php @@ -81,7 +81,7 @@ function scan($dir, $lang) 'control-structures.', 'language.', 'about.', 'faq.', 'features.', ); - + $count = 0; echo "Lang: $lang\n"; @@ -115,7 +115,7 @@ function scan($dir, $lang) if ($x !== false) { $keyword = substr($keyword, 0, $x); } - + // Skip PHP 4 domxml (book.domxml). It uses function. syntax, unlike book.dom if (0 === strpos($keyword, 'function.dom') && false === strpos($keyword, 'simplexml')) { continue; @@ -165,9 +165,8 @@ function scan($dir, $lang) } - if ($f === 'reserved.keywords.php') { + if ($f === 'reserved.keywords.php' && $handle = fopen($file, 'r')) { // Yes, this is fragile. - $handle = fopen($file, 'r'); $stm = $dbh->prepare('INSERT INTO fs (lang, prefix, keyword, name, prio) VALUES (?, ?, ?, ?, ?)'); $path_base = dirname($doc_rel); while ($stm && false !== ($line = fgets($handle))) { @@ -191,7 +190,7 @@ function scan($dir, $lang) } } closedir($d); - + echo "Added entries for $count files\n"; echo "\n"; } @@ -220,4 +219,3 @@ function scan_langs($root) } closedir($d); } -