syntax.js
来自「SQLiteDBMS是SQLite数据库的管理服务器软件」· JavaScript 代码 · 共 148 行
JS
148 行
function syntaxSQL(div) { var cur=div.innerHTML.replace(/<br>|<p>/ig, '\n').replace(/<[^>]*>/g, ''); var matchStr=[]; var quota=[ '\'[^\']*\'', '"[^"]*"' ]; for (var i=quota.length; i--;) { var reg=new RegExp('('+quota[i].replace(/[ ]/, '[ \t]+')+')', 'gi'); var match=cur.match(reg); if (match) { matchStr.splice(0, matchStr.length); for (var p=0; p < 10; p++) { if (match[p]) matchStr.push(match[p]); } if (matchStr) { var uStr=arrayUnique(matchStr); for (var p=uStr.length; p--;) { uStr[p]=trim(uStr[p]); var replace=new RegExp(uStr[p], 'g'); cur=cur.replace(replace, '<span class="quota">'+uStr[p]+'</span>'); } } } } var sql=[ 'ALTER TABLE ', ' RENAME TO ', ' ADD COLUMN ', 'ANALYZE ', 'ATTACH DATABASE ', 'BEGIN TRANSACTION ', 'COMMIT TRANSACTION ', 'COPY ', 'CREATE INDEX ', 'CREATE TABLE ', ' TEMP ', ' TEMPORARY ', ' CONSTRAINT ', 'CREATE TRIGGER ', ' BEFORE ', ' AFTER ', ' FOR EACH ROW( WHEN)? ', ' FOR EACH STATEMENT( WHEN)? ', 'CREATE VIEW ', ' AS ', 'DELETE ', ' FROM ', 'DETACH DATABASE ', 'DROP INDEX ', 'DROP TABLE ', 'DROP TRIGGER ', 'DROP VIEW ', 'END TRANSACTION ', 'EXPLAIN ', 'INSERT (OR REPLACE )?INTO ', ' VALUES', 'ON CONFLICT clause ', 'PRAGMA ', 'REINDEX ', 'REPLACE ', 'ROLLBACK TRANSACTION ', 'SELECT ', 'UPDATE ', ' SET ', 'VACUUM ', 'BEGIN', 'END', 'SHOW DATABASE', 'SHOW USER', 'SHOW TABLE', 'SHOW INDEX', 'SHOW TRIGGER', 'SHOW STATUS', 'SHOW VERSION', 'DESC ', 'CREATE DATABASE', 'DROP DATABASE', 'CREATE USER', 'DROP USER', 'GRANT (CREATE )?', 'REVOKE (CREATE )?' ]; for (var i=sql.length; i--;) { var reg=new RegExp('('+sql[i].replace(/[ ]/, '[ \t]*')+')', 'gi'); var match=cur.match(reg); if (match) { matchStr.splice(0, matchStr.length); for (var p=0; p < 10; p++) { if (match[p]) matchStr.push(match[p]); } if (matchStr) { var uStr=arrayUnique(matchStr); for (var p=uStr.length; p--;) { uStr[p]=trim(uStr[p]); var replace=new RegExp(uStr[p], 'g'); cur=cur.replace(replace, '<span class="SQL">'+uStr[p]+'</span>'); } } } } var types=[ ' int', ' integer', ' float', ' real', ' text', ' blob', ' not null', ' default', ' primary key', ' autoincrement', ' new\.', ' old\.' ]; for (var i=types.length; i--;) { var reg=new RegExp('('+types[i].replace(/[ ]/, '[ \t]+')+')', 'gi'); var match=cur.match(reg); if (match) { matchStr.splice(0, matchStr.length); for (var p=0; p < 10; p++) { if (match[p]) matchStr.push(match[p]); } if (matchStr) { var uStr=arrayUnique(matchStr); for (var p=uStr.length; p--;) { uStr[p]=trim(uStr[p]); var replace=new RegExp(uStr[p], 'g'); cur=cur.replace(replace, '<span class="types">'+uStr[p]+'</span>'); } } } } cur=cur.replace(/\n/g, '<br>'); div.innerHTML=cur;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?