summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/util-sci.lua
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkiv/util-sci.lua')
-rw-r--r--tex/context/base/mkiv/util-sci.lua60
1 files changed, 39 insertions, 21 deletions
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['<div class="%s">%s</div>']
local f_linenumber = formatters['<div class="linenumber">%s</div>\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['<div class="linenumber lineerror">%s</div>\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 {
["<"] = "&lt;",
@@ -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 {
["&"] = "&amp;",
[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%
--></style>
<body>
- <table style="padding:0; margin:0;">
+ <table style="padding:0; margin:0; background-color:#FFFFFF;">
<tr>
<td><pre>%linenumbers%</pre></td>
<td><pre>%lexedcontent%</pre></td>
@@ -198,15 +201,30 @@ local htmlfile = utilities.templates.replacer([[
</html>
]])
+local htmlblob = utilities.templates.replacer([[
+<style type="text/css"><!--
+%lexingstyles%
+%numberstyles%
+--></style>
+<table style="padding:0; margin:0; background-color:#FFFFFF;">
+ <tr>
+ <td><pre>%linenumbers%</pre></td>
+ <td><pre>%lexedcontent%</pre></td>
+ </tr>
+</table>
+]])
+
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)