84 lines
2.1 KiB
HTML
84 lines
2.1 KiB
HTML
|
<!DOCTYPE html>
|
||
|
<html lang="en">
|
||
|
<head>
|
||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||
|
<title>Static Code highlighter using Ace</title>
|
||
|
<meta name="author" content="Matthew Kastor">
|
||
|
<style type="text/css">
|
||
|
.code {
|
||
|
width: 50%;
|
||
|
white-space: pre-wrap;
|
||
|
border: solid lightgrey 1px
|
||
|
}
|
||
|
</style>
|
||
|
</head>
|
||
|
<body>
|
||
|
|
||
|
<h2>Client Side Syntax Highlighting</h2>
|
||
|
|
||
|
<p>Syntax highlighting using Ace language modes and themes.</p>
|
||
|
|
||
|
<div class="code" ace-mode="ace/mode/css" ace-theme="ace/theme/chrome" ace-gutter="true">
|
||
|
.code {
|
||
|
width: 50%;
|
||
|
white-space: pre-wrap;
|
||
|
border: solid lightgrey 1px
|
||
|
}
|
||
|
|
||
|
</div>
|
||
|
|
||
|
<pre class="code" ace-mode="ace/mode/javascript" ace-theme="ace/theme/twilight">
|
||
|
function wobble (flam) {
|
||
|
return flam.wobbled = true;
|
||
|
}
|
||
|
|
||
|
</pre>
|
||
|
|
||
|
|
||
|
<div class="code" ace-mode="ace/mode/lua" ace-theme="ace/theme/chrome" ace-gutter="true" style="width: 30em;">
|
||
|
--[[--
|
||
|
num_args takes in 5.1 byte code and extracts the number of arguments from its function header.
|
||
|
--]]--
|
||
|
|
||
|
function int(t)
|
||
|
return t:byte(1) + t:byte(2) * 0x100 + t:byte(3) * 0x10000 + t:byte(4) * 0x1000000
|
||
|
end
|
||
|
|
||
|
function num_args(func)
|
||
|
local dump = string.dump(func)
|
||
|
local offset, cursor = int(dump:sub(13)), offset + 26
|
||
|
--Get the params and var flag (whether there's a ... in the param)
|
||
|
return dump:sub(cursor):byte(), dump:sub(cursor+1):byte()
|
||
|
end
|
||
|
|
||
|
</div>
|
||
|
|
||
|
|
||
|
<script src="kitchen-sink/require.js"></script>
|
||
|
<script>
|
||
|
require.config({paths: { "ace" : "../lib/ace"}});
|
||
|
|
||
|
require(["ace/ace", "ace/ext/static_highlight"], function(ace) {
|
||
|
var highlight = ace.require("ace/ext/static_highlight")
|
||
|
var dom = ace.require("ace/lib/dom")
|
||
|
function qsa(sel) {
|
||
|
return Array.apply(null, document.querySelectorAll(sel));
|
||
|
}
|
||
|
|
||
|
qsa(".code").forEach(function (codeEl) {
|
||
|
highlight(codeEl, {
|
||
|
mode: codeEl.getAttribute("ace-mode"),
|
||
|
theme: codeEl.getAttribute("ace-theme"),
|
||
|
firstLineNumber: 1,
|
||
|
showGutter: codeEl.getAttribute("ace-gutter"),
|
||
|
trim: true
|
||
|
}, function (highlighted) {
|
||
|
|
||
|
});
|
||
|
});
|
||
|
})
|
||
|
</script>
|
||
|
|
||
|
</body>
|
||
|
</html>
|