Added lua into the kitchen sink demo.
This commit is contained in:
parent
4b83e01684
commit
0a58b58d1f
8 changed files with 630 additions and 6 deletions
12
demo/demo.js
12
demo/demo.js
|
|
@ -54,6 +54,7 @@ var CssMode = require("ace/mode/css").Mode;
|
|||
var ScssMode = require("ace/mode/scss").Mode;
|
||||
var HtmlMode = require("ace/mode/html").Mode;
|
||||
var XmlMode = require("ace/mode/xml").Mode;
|
||||
var LuaMode = require("ace/mode/lua").Mode;
|
||||
var PythonMode = require("ace/mode/python").Mode;
|
||||
var PhpMode = require("ace/mode/php").Mode;
|
||||
var JavaMode = require("ace/mode/java").Mode;
|
||||
|
|
@ -124,10 +125,15 @@ exports.launch = function(env) {
|
|||
docs.html.setMode(new HtmlMode());
|
||||
docs.html.setUndoManager(new UndoManager());
|
||||
|
||||
docs.lua = new EditSession(require("ace/requirejs/text!demo/docs/lua.lua"));
|
||||
docs.lua.setMode(new LuaMode());
|
||||
docs.lua.setUndoManager(new UndoManager());
|
||||
|
||||
docs.python = new EditSession(require("ace/requirejs/text!demo/docs/python.py"));
|
||||
docs.python.setMode(new PythonMode());
|
||||
docs.python.setUndoManager(new UndoManager());
|
||||
|
||||
|
||||
docs.php = new EditSession(require("ace/requirejs/text!demo/docs/php.php"));
|
||||
docs.php.setMode(new PhpMode());
|
||||
docs.php.setUndoManager(new UndoManager());
|
||||
|
|
@ -222,6 +228,7 @@ exports.launch = function(env) {
|
|||
css: new CssMode(),
|
||||
scss: new ScssMode(),
|
||||
javascript: new JavaScriptMode(),
|
||||
lua: new LuaMode(),
|
||||
python: new PythonMode(),
|
||||
php: new PhpMode(),
|
||||
java: new JavaMode(),
|
||||
|
|
@ -287,6 +294,9 @@ exports.launch = function(env) {
|
|||
else if (mode instanceof XmlMode) {
|
||||
modeEl.value = "xml";
|
||||
}
|
||||
else if (mode instanceof LuaMode){
|
||||
modeEl.value = "lua";
|
||||
}
|
||||
else if (mode instanceof PythonMode) {
|
||||
modeEl.value = "python";
|
||||
}
|
||||
|
|
@ -524,6 +534,8 @@ exports.launch = function(env) {
|
|||
mode = "css";
|
||||
} else if (/^.*\.scss$/i.test(file.name)) {
|
||||
mode = "scss";
|
||||
} else if (/^.*\.lua$/i.test(file.name)) {
|
||||
mode = "lua";
|
||||
} else if (/^.*\.py$/i.test(file.name)) {
|
||||
mode = "python";
|
||||
} else if (/^.*\.php$/i.test(file.name)) {
|
||||
|
|
|
|||
36
demo/docs/lua.lua
Normal file
36
demo/docs/lua.lua
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
--[[--
|
||||
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
|
||||
|
||||
-- Usage:
|
||||
num_args(function(a,b,c,d, ...) end) -- return 4, 7
|
||||
|
||||
-- Python styled string format operator
|
||||
local gm = debug.getmetatable("")
|
||||
|
||||
gm.__mod=function(self, other)
|
||||
if type(other) ~= "table" then other = {other} end
|
||||
for i,v in ipairs(other) do other[i] = tostring(v) end
|
||||
return self:format(unpack(other))
|
||||
end
|
||||
|
||||
print([===[
|
||||
blah blah %s, (%d %d)
|
||||
]===]%{"blah", num_args(int)})
|
||||
|
||||
--[=[--
|
||||
table.maxn is deprecated, use # instead.
|
||||
--]=]--
|
||||
print(table.maxn{1,2,[4]=4,[8]=8) -- outputs 8 instead of 2
|
||||
Loading…
Add table
Add a link
Reference in a new issue