From a387512957f359642cfbf4b39fd8c8aaf2ed9c35 Mon Sep 17 00:00:00 2001 From: Nick Gammon Date: Thu, 14 Jul 2011 10:14:00 +1000 Subject: [PATCH] Improved snippet displays by removing tags from the lookup tables --- plugins/MUSHclient_Help.xml | 143 +++++++++++++++++++++++------------- 1 file changed, 90 insertions(+), 53 deletions(-) diff --git a/plugins/MUSHclient_Help.xml b/plugins/MUSHclient_Help.xml index 10a5543e..a300f40c 100644 --- a/plugins/MUSHclient_Help.xml +++ b/plugins/MUSHclient_Help.xml @@ -180,7 +180,7 @@ end -- text_output local P, R, S, C, Cc, Ct = lpeg.P, lpeg.R, lpeg.S, lpeg.C, lpeg.Cc, lpeg.Ct local TAG = (P"<" * P"/"^-1 * R("AZ", "az")^1 * P"/"^-1 * P">")/tag_output local NOT_TAG = ((1 - lpeg.P"<")^0/text_output) -local HTML = (NOT_TAG * TAG * NOT_TAG)^0 +local HTML = (NOT_TAG * TAG * NOT_TAG)^1 + NOT_TAG -- show a help item with a coloured heading, and coloured text @@ -211,7 +211,6 @@ end -- show_item -- normal functions local function show_functions_help (row) - NoteHr () show_item (HEADINGCOLOUR, "Function", NAMECOLOUR, row.name) show_item (HEADINGCOLOUR, "Summary", SUMMARYCOLOUR, row.summary) @@ -220,27 +219,22 @@ local function show_functions_help (row) show_item (HEADINGCOLOUR, "Return Value", RETURNVALUE, row.return_value) show_item (HEADINGCOLOUR, "Lua Example", CODECOLOUR, row.lua_example) show_item (HEADINGCOLOUR, "Lua Notes", NOTESCOLOUR, row.lua_notes) - end -- show_functions_help -- general help (major topics) local function show_general_help (row) - NoteHr () show_item (NOTESCOLOUR, "", NAMECOLOUR, row.title) - show_item (HEADINGCOLOUR, "Summary", SUMMARYCOLOUR, row.description, true) - + show_item (HEADINGCOLOUR, "Summary", SUMMARYCOLOUR, row.description, true) -- HTML codes end -- show_general_help -- lua functions local function show_lua_functions_help (row) - NoteHr () show_item (HEADINGCOLOUR, "Lua", NAMECOLOUR, row.name) show_item (HEADINGCOLOUR, "Summary", SUMMARYCOLOUR, row.summary) show_item (HEADINGCOLOUR, "Prototype", PROTOTYPECOLOUR, row.prototype) - show_item (HEADINGCOLOUR, "Description", DESCRIPTIONCOLOUR, row.description, true) - + show_item (HEADINGCOLOUR, "Description", DESCRIPTIONCOLOUR, row.description, true) -- HTML codes end -- show_lua_functions_help @@ -306,20 +300,8 @@ function general_help (search_string, want_snippet) -- show snippet if want_snippet then - - -- fix up snippet ... - -- get rid of imbedded tags - snippet = snippet:gsub ("", "") - -- get rid of partial leading tags (eg. b>) - snippet = snippet:gsub ("^ %.%.%. /?%a-/?>", "") - -- get rid of partial closing tags (eg. ", "") + + -- convert entities ... + s = s:gsub ("&%a-;", entities) + + return s +end -- fix_description + function OnPluginInstall () -- open database on disk @@ -438,41 +434,82 @@ function OnPluginInstall () if not fts4 then local start = utils.timer () ColourNote ("cyan", "", "Creating help database full-text lookup tables ...") - assert (db:execute[[ - BEGIN TRANSACTION; - - DROP TABLE IF EXISTS commands_lookup; - CREATE VIRTUAL TABLE commands_lookup USING FTS4(name, short_description, description); - INSERT INTO commands_lookup (name, short_description, description) - SELECT command_name, short_description, description FROM commands; - - DROP TABLE IF EXISTS dialogs_lookup; - CREATE VIRTUAL TABLE dialogs_lookup USING FTS4(name, title, description); - INSERT INTO dialogs_lookup (name, title, description) - SELECT dialog_name, title, description FROM dialogs; + + -- START + assert (db:execute [[ + BEGIN TRANSACTION; + DROP TABLE IF EXISTS commands_lookup; + DROP TABLE IF EXISTS dialogs_lookup; + DROP TABLE IF EXISTS functions_lookup; + DROP TABLE IF EXISTS general_doc_lookup; + DROP TABLE IF EXISTS errors_lookup; + DROP TABLE IF EXISTS lua_functions_lookup; + ]]) + + -- COMMANDS + assert (db:execute "CREATE VIRTUAL TABLE commands_lookup USING FTS4(name, summary, description)") + + -- fix up HTML stuff + for row in db:nrows("SELECT command_name, short_description, description FROM commands") do + assert (db:execute (string.format ([[ + INSERT INTO commands_lookup (name, summary, description) + VALUES (%s, %s, %s)]], + fixsql (row.command_name), + fixsql (row.short_description), + fixsql (fix_description (row.description))))) + end -- for - DROP TABLE IF EXISTS functions_lookup; - CREATE VIRTUAL TABLE functions_lookup USING FTS4(name, summary, description, lua_example, lua_notes); - INSERT INTO functions_lookup (name, summary, description, lua_example, lua_notes) - SELECT name, summary, description, lua_example, lua_notes FROM functions; + -- DIALOGS + assert (db:execute "CREATE VIRTUAL TABLE dialogs_lookup USING FTS4(name, summary, description)") + + -- fix up HTML stuff + for row in db:nrows("SELECT dialog_name, title, description FROM dialogs") do + assert (db:execute (string.format ([[ + INSERT INTO dialogs_lookup (name, summary, description) + VALUES (%s, %s, %s)]], + fixsql (row.dialog_name), + fixsql (row.title), + fixsql (fix_description (row.description))))) + end -- for - DROP TABLE IF EXISTS general_doc_lookup; - CREATE VIRTUAL TABLE general_doc_lookup USING FTS4(name, title, description); - INSERT INTO general_doc_lookup (name, title, description) - SELECT doc_name, title, description FROM general_doc; + -- WORLD FUNCTIONS + assert (db:execute "CREATE VIRTUAL TABLE functions_lookup USING FTS4(name, summary, description, lua_example, lua_notes)") + assert (db:execute [[INSERT INTO functions_lookup (name, summary, description, lua_example, lua_notes) + SELECT name, summary, description, lua_example, lua_notes FROM functions]]) - DROP TABLE IF EXISTS errors_lookup; - CREATE VIRTUAL TABLE errors_lookup USING FTS4(name, error_code, description); - INSERT INTO errors_lookup (name, error_code, description) - SELECT error_name, error_code, meaning FROM errors; + -- GENERAL TOPICS + assert (db:execute "CREATE VIRTUAL TABLE general_doc_lookup USING FTS4(name, summary, description)") + + -- fix up HTML stuff + for row in db:nrows("SELECT doc_name, title, description FROM general_doc") do + assert (db:execute (string.format ([[ + INSERT INTO general_doc_lookup (name, summary, description) + VALUES (%s, %s, %s)]], + fixsql (row.doc_name), + fixsql (row.title), + fixsql (fix_description (row.description))))) + end -- for - DROP TABLE IF EXISTS lua_functions_lookup; - CREATE VIRTUAL TABLE lua_functions_lookup USING FTS4(name, summary, description); - INSERT INTO lua_functions_lookup (name, summary, description) - SELECT name, summary, description FROM lua_functions; + -- ERRORS + assert (db:execute "CREATE VIRTUAL TABLE errors_lookup USING FTS4(name, error_code, description)") + assert (db:execute [[INSERT INTO errors_lookup (name, error_code, description) + SELECT error_name, error_code, meaning FROM errors ]]) - COMMIT; - ]]) + -- LUA FUNCTIONS + assert (db:execute "CREATE VIRTUAL TABLE lua_functions_lookup USING FTS4(name, summary, description)") + + -- fix up HTML stuff + for row in db:nrows("SELECT name, summary, description FROM lua_functions") do + assert (db:execute (string.format ([[ + INSERT INTO lua_functions_lookup (name, summary, description) + VALUES (%s, %s, %s)]], + fixsql (row.name), + fixsql (row.summary), + fixsql (fix_description (row.description))))) + end -- for + + -- DONE + assert (db:execute "COMMIT;") ColourNote ("cyan", "", string.format ("Done. Took %0.3f seconds.", utils.timer () - start)) end -- if