From 7ecbcaaf68d152851591dbb5931a6eb15d155019 Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Mon, 25 Nov 2019 23:15:50 +0100 Subject: 2019-11-25 17:37:00 --- tex/context/base/mkiv/util-sci.lua | 60 +++++++++++++++++++++++++------------- 1 file changed, 39 insertions(+), 21 deletions(-) (limited to 'tex/context/base/mkiv/util-sci.lua') diff --git a/tex/context/base/mkiv/util-sci.lua b/tex/context/base/mkiv/util-sci.lua index a3fcbc928..778991ea6 100644 --- a/tex/context/base/mkiv/util-sci.lua +++ b/tex/context/base/mkiv/util-sci.lua @@ -18,10 +18,10 @@ utilities.scite = scite local report = logs.reporter("scite") do - local lexerroot = "c:/data/system/scite/wscite/context/lexers" - if not lexerroot then - lexerroot = file.dirname(resolvers.find_file("scite-context-lexer.lua")) - end +-- local lexerroot = "c:/data/system/scite/wscite/context/lexers" +-- if not lexerroot then + lexerroot = file.dirname(resolvers.findfile("scite-context-lexer.lua")) +-- end if lfs.isdir(lexerroot) then package.extraluapath(lexerroot) package.extraluapath(lexerroot.."/themes") @@ -84,13 +84,15 @@ scite.loadedlexers = loadedlexers scite.knownlexers = knownlexers scite.loadscitelexer = loadscitelexer -local f_fore_bold = formatters['.%s { display: inline ; font-weight: bold ; color: #%02X%02X%02X ; }'] -local f_fore_none = formatters['.%s { display: inline ; font-weight: normal ; color: #%02X%02X%02X ; }'] -local f_none_bold = formatters['.%s { display: inline ; font-weight: bold ; }'] -local f_none_none = formatters['.%s { display: inline ; font-weight: normal ; }'] +local f_fore_bold = formatters['.%s { display:inline; font-weight:bold; color:#%02X%02X%02X; }'] +local f_fore_none = formatters['.%s { display:inline; font-weight:normal; color:#%02X%02X%02X; }'] +local f_none_bold = formatters['.%s { display:inline; font-weight:bold; }'] +local f_none_none = formatters['.%s { display:inline; font-weight:normal; }'] local f_div_class = formatters['
%s
'] local f_linenumber = formatters['
%s
\n'] -local f_div_number = formatters['.linenumber { display: inline-block ; font-weight: normal ; width: %sem ; margin-right: 2em ; padding-right: .25em ; text-align: right ; background-color: #C7C7C7 ; }'] +local f_lineerror = formatters['
%s
\n'] +local f_div_number = formatters['.linenumber { display:inline-block; font-weight:normal; width:%sem; margin-right:2em; padding-right:.25em; text-align:right; color:#000000; }'] -- background-color:#C7C7C7; +local s_div_error = '.lineerror { font-weight:bold; color:#FFFFFF; background-color:#000000; }' local replacer_regular = lpeg.replacer { ["<"] = "<", @@ -99,6 +101,7 @@ local replacer_regular = lpeg.replacer { } local linenumber = 0 +local lineerror = 0 local linenumbers = { } local replacer_numbered = lpeg.replacer { @@ -107,7 +110,7 @@ local replacer_numbered = lpeg.replacer { ["&"] = "&", [lpeg.patterns.newline] = function() linenumber = linenumber + 1 - linenumbers[linenumber] = f_linenumber(linenumber) + linenumbers[linenumber] = (linenumber == lineerror and f_lineerror or f_linenumber)(linenumber) return "\n" end, } @@ -153,6 +156,7 @@ local function exportstyled(lexer,text,numbered) local b = 0 linenumber = 0 linenumbers = { } + lineerror = tonumber(numbered) or 0 local replacer = numbered and replacer_numbered or replacer_regular local n = #result for i=1,n,2 do @@ -169,12 +173,11 @@ local function exportstyled(lexer,text,numbered) end start = position end - buffer = concat(buffer) - return buffer, concat(linenumbers) + return concat(buffer), concat(linenumbers) end local function exportcsslinenumber() - return f_div_number(#tostring(linenumber)/2+1) + return f_div_number(#tostring(linenumber)/2+1) .. "\n" .. s_div_error end local htmlfile = utilities.templates.replacer([[ @@ -188,7 +191,7 @@ local htmlfile = utilities.templates.replacer([[ %numberstyles% --> - +
@@ -198,15 +201,30 @@ local htmlfile = utilities.templates.replacer([[ ]]) +local htmlblob = utilities.templates.replacer([[ + +
%linenumbers%
%lexedcontent%
+ + + + +
%linenumbers%
%lexedcontent%
+]]) + function scite.tohtml(data,lexname,numbered,title) local source, lines = exportstyled(loadedlexers[lexname],data or "",numbered) - return htmlfile { - lexedcontent = source, -- before numberstyles - lexingstyles = exportcsslexing(), - numberstyles = exportcsslinenumber(), - title = title or "context source file", - linenumbers = lines, - } + if source then + return (title == false and htmlblob or htmlfile) { + lexedcontent = source, -- before numberstyles + lexingstyles = exportcsslexing(), + numberstyles = exportcsslinenumber(), + title = title or "context source file", + linenumbers = lines, + } + end end local function maketargetname(name) -- cgit v1.2.3