alpaca
Version:
Alpaca provides the easiest and fastest way to generate interactive forms for the web and mobile devices. It runs simply as HTML5 or more elaborately using Bootstrap, jQuery Mobile or jQuery UI. Alpaca uses Handlebars to process JSON schema and provide
675 lines (635 loc) • 12 kB
JavaScript
define("ace/mode/mushcode_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) {
;
var oop = require("../lib/oop");
var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
var MushCodeRules = function() {
var keywords = (
"@if|"+
"@ifelse|"+
"@switch|"+
"@halt|"+
"@dolist|"+
"@create|"+
"@scent|"+
"@sound|"+
"@touch|"+
"@ataste|"+
"@osound|"+
"@ahear|"+
"@aahear|"+
"@amhear|"+
"@otouch|"+
"@otaste|"+
"@drop|"+
"@odrop|"+
"@adrop|"+
"@dropfail|"+
"@odropfail|"+
"@smell|"+
"@oemit|"+
"@emit|"+
"@pemit|"+
"@parent|"+
"@clone|"+
"@taste|"+
"whisper|"+
"page|"+
"say|"+
"pose|"+
"semipose|"+
"teach|"+
"touch|"+
"taste|"+
"smell|"+
"listen|"+
"look|"+
"move|"+
"go|"+
"home|"+
"follow|"+
"unfollow|"+
"desert|"+
"dismiss|"+
"@tel"
);
var builtinConstants = (
"=#0"
);
var builtinFunctions = (
"default|"+
"edefault|"+
"eval|"+
"get_eval|"+
"get|"+
"grep|"+
"grepi|"+
"hasattr|"+
"hasattrp|"+
"hasattrval|"+
"hasattrpval|"+
"lattr|"+
"nattr|"+
"poss|"+
"udefault|"+
"ufun|"+
"u|"+
"v|"+
"uldefault|"+
"xget|"+
"zfun|"+
"band|"+
"bnand|"+
"bnot|"+
"bor|"+
"bxor|"+
"shl|"+
"shr|"+
"and|"+
"cand|"+
"cor|"+
"eq|"+
"gt|"+
"gte|"+
"lt|"+
"lte|"+
"nand|"+
"neq|"+
"nor|"+
"not|"+
"or|"+
"t|"+
"xor|"+
"con|"+
"entrances|"+
"exit|"+
"followers|"+
"home|"+
"lcon|"+
"lexits|"+
"loc|"+
"locate|"+
"lparent|"+
"lsearch|"+
"next|"+
"num|"+
"owner|"+
"parent|"+
"pmatch|"+
"rloc|"+
"rnum|"+
"room|"+
"where|"+
"zone|"+
"worn|"+
"held|"+
"carried|"+
"acos|"+
"asin|"+
"atan|"+
"ceil|"+
"cos|"+
"e|"+
"exp|"+
"fdiv|"+
"fmod|"+
"floor|"+
"log|"+
"ln|"+
"pi|"+
"power|"+
"round|"+
"sin|"+
"sqrt|"+
"tan|"+
"aposs|"+
"andflags|"+
"conn|"+
"commandssent|"+
"controls|"+
"doing|"+
"elock|"+
"findable|"+
"flags|"+
"fullname|"+
"hasflag|"+
"haspower|"+
"hastype|"+
"hidden|"+
"idle|"+
"isbaker|"+
"lock|"+
"lstats|"+
"money|"+
"who|"+
"name|"+
"nearby|"+
"obj|"+
"objflags|"+
"photo|"+
"poll|"+
"powers|"+
"pendingtext|"+
"receivedtext|"+
"restarts|"+
"restarttime|"+
"subj|"+
"shortestpath|"+
"tmoney|"+
"type|"+
"visible|"+
"cat|"+
"element|"+
"elements|"+
"extract|"+
"filter|"+
"filterbool|"+
"first|"+
"foreach|"+
"fold|"+
"grab|"+
"graball|"+
"index|"+
"insert|"+
"itemize|"+
"items|"+
"iter|"+
"last|"+
"ldelete|"+
"map|"+
"match|"+
"matchall|"+
"member|"+
"mix|"+
"munge|"+
"pick|"+
"remove|"+
"replace|"+
"rest|"+
"revwords|"+
"setdiff|"+
"setinter|"+
"setunion|"+
"shuffle|"+
"sort|"+
"sortby|"+
"splice|"+
"step|"+
"wordpos|"+
"words|"+
"add|"+
"lmath|"+
"max|"+
"mean|"+
"median|"+
"min|"+
"mul|"+
"percent|"+
"sign|"+
"stddev|"+
"sub|"+
"val|"+
"bound|"+
"abs|"+
"inc|"+
"dec|"+
"dist2d|"+
"dist3d|"+
"div|"+
"floordiv|"+
"mod|"+
"modulo|"+
"remainder|"+
"vadd|"+
"vdim|"+
"vdot|"+
"vmag|"+
"vmax|"+
"vmin|"+
"vmul|"+
"vsub|"+
"vunit|"+
"regedit|"+
"regeditall|"+
"regeditalli|"+
"regediti|"+
"regmatch|"+
"regmatchi|"+
"regrab|"+
"regraball|"+
"regraballi|"+
"regrabi|"+
"regrep|"+
"regrepi|"+
"after|"+
"alphamin|"+
"alphamax|"+
"art|"+
"before|"+
"brackets|"+
"capstr|"+
"case|"+
"caseall|"+
"center|"+
"containsfansi|"+
"comp|"+
"decompose|"+
"decrypt|"+
"delete|"+
"edit|"+
"encrypt|"+
"escape|"+
"if|"+
"ifelse|"+
"lcstr|"+
"left|"+
"lit|"+
"ljust|"+
"merge|"+
"mid|"+
"ostrlen|"+
"pos|"+
"repeat|"+
"reverse|"+
"right|"+
"rjust|"+
"scramble|"+
"secure|"+
"space|"+
"spellnum|"+
"squish|"+
"strcat|"+
"strmatch|"+
"strinsert|"+
"stripansi|"+
"stripfansi|"+
"strlen|"+
"switch|"+
"switchall|"+
"table|"+
"tr|"+
"trim|"+
"ucstr|"+
"unsafe|"+
"wrap|"+
"ctitle|"+
"cwho|"+
"channels|"+
"clock|"+
"cflags|"+
"ilev|"+
"itext|"+
"inum|"+
"convsecs|"+
"convutcsecs|"+
"convtime|"+
"ctime|"+
"etimefmt|"+
"isdaylight|"+
"mtime|"+
"secs|"+
"msecs|"+
"starttime|"+
"time|"+
"timefmt|"+
"timestring|"+
"utctime|"+
"atrlock|"+
"clone|"+
"create|"+
"cook|"+
"dig|"+
"emit|"+
"lemit|"+
"link|"+
"oemit|"+
"open|"+
"pemit|"+
"remit|"+
"set|"+
"tel|"+
"wipe|"+
"zemit|"+
"fbcreate|"+
"fbdestroy|"+
"fbwrite|"+
"fbclear|"+
"fbcopy|"+
"fbcopyto|"+
"fbclip|"+
"fbdump|"+
"fbflush|"+
"fbhset|"+
"fblist|"+
"fbstats|"+
"qentries|"+
"qentry|"+
"play|"+
"ansi|"+
"break|"+
"c|"+
"asc|"+
"die|"+
"isdbref|"+
"isint|"+
"isnum|"+
"isletters|"+
"linecoords|"+
"localize|"+
"lnum|"+
"nameshort|"+
"null|"+
"objeval|"+
"r|"+
"rand|"+
"s|"+
"setq|"+
"setr|"+
"soundex|"+
"soundslike|"+
"valid|"+
"vchart|"+
"vchart2|"+
"vlabel|"+
"@@|"+
"bakerdays|"+
"bodybuild|"+
"box|"+
"capall|"+
"catalog|"+
"children|"+
"ctrailer|"+
"darttime|"+
"debt|"+
"detailbar|"+
"exploredroom|"+
"fansitoansi|"+
"fansitoxansi|"+
"fullbar|"+
"halfbar|"+
"isdarted|"+
"isnewbie|"+
"isword|"+
"lambda|"+
"lobjects|"+
"lplayers|"+
"lthings|"+
"lvexits|"+
"lvobjects|"+
"lvplayers|"+
"lvthings|"+
"newswrap|"+
"numsuffix|"+
"playerson|"+
"playersthisweek|"+
"randomad|"+
"randword|"+
"realrandword|"+
"replacechr|"+
"second|"+
"splitamount|"+
"strlenall|"+
"text|"+
"third|"+
"tofansi|"+
"totalac|"+
"unique|"+
"getaddressroom|"+
"listpropertycomm|"+
"listpropertyres|"+
"lotowner|"+
"lotrating|"+
"lotratingcount|"+
"lotvalue|"+
"boughtproduct|"+
"companyabb|"+
"companyicon|"+
"companylist|"+
"companyname|"+
"companyowners|"+
"companyvalue|"+
"employees|"+
"invested|"+
"productlist|"+
"productname|"+
"productowners|"+
"productrating|"+
"productratingcount|"+
"productsoldat|"+
"producttype|"+
"ratedproduct|"+
"soldproduct|"+
"topproducts|"+
"totalspentonproduct|"+
"totalstock|"+
"transfermoney|"+
"uniquebuyercount|"+
"uniqueproductsbought|"+
"validcompany|"+
"deletepicture|"+
"fbsave|"+
"getpicturesecurity|"+
"haspicture|"+
"listpictures|"+
"picturesize|"+
"replacecolor|"+
"rgbtocolor|"+
"savepicture|"+
"setpicturesecurity|"+
"showpicture|"+
"piechart|"+
"piechartlabel|"+
"createmaze|"+
"drawmaze|"+
"drawwireframe"
);
var keywordMapper = this.createKeywordMapper({
"invalid.deprecated": "debugger",
"support.function": builtinFunctions,
"constant.language": builtinConstants,
"keyword": keywords
}, "identifier");
var strPre = "(?:r|u|ur|R|U|UR|Ur|uR)?";
var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))";
var octInteger = "(?:0[oO]?[0-7]+)";
var hexInteger = "(?:0[xX][\\dA-Fa-f]+)";
var binInteger = "(?:0[bB][01]+)";
var integer = "(?:" + decimalInteger + "|" + octInteger + "|" + hexInteger + "|" + binInteger + ")";
var exponent = "(?:[eE][+-]?\\d+)";
var fraction = "(?:\\.\\d+)";
var intPart = "(?:\\d+)";
var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))";
var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")";
var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")";
this.$rules = {
"start" : [
{
token : "variable", // mush substitution register
regex : "%[0-9]{1}"
},
{
token : "variable", // mush substitution register
regex : "%q[0-9A-Za-z]{1}"
},
{
token : "variable", // mush special character register
regex : "%[a-zA-Z]{1}"
},
{
token: "variable.language",
regex: "%[a-z0-9-_]+"
},
{
token : "constant.numeric", // imaginary
regex : "(?:" + floatNumber + "|\\d+)[jJ]\\b"
}, {
token : "constant.numeric", // float
regex : floatNumber
}, {
token : "constant.numeric", // long integer
regex : integer + "[lL]\\b"
}, {
token : "constant.numeric", // integer
regex : integer + "\\b"
}, {
token : keywordMapper,
regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
}, {
token : "keyword.operator",
regex : "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|#|%|<<|>>|\\||\\^|~|<|>|<=|=>|==|!=|<>|="
}, {
token : "paren.lparen",
regex : "[\\[\\(\\{]"
}, {
token : "paren.rparen",
regex : "[\\]\\)\\}]"
}, {
token : "text",
regex : "\\s+"
} ]
};
};
oop.inherits(MushCodeRules, TextHighlightRules);
exports.MushCodeRules = MushCodeRules;
});
define("ace/mode/folding/pythonic",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"], function(require, exports, module) {
;
var oop = require("../../lib/oop");
var BaseFoldMode = require("./fold_mode").FoldMode;
var FoldMode = exports.FoldMode = function(markers) {
this.foldingStartMarker = new RegExp("([\\[{])(?:\\s*)$|(" + markers + ")(?:\\s*)(?:#.*)?$");
};
oop.inherits(FoldMode, BaseFoldMode);
(function() {
this.getFoldWidgetRange = function(session, foldStyle, row) {
var line = session.getLine(row);
var match = line.match(this.foldingStartMarker);
if (match) {
if (match[1])
return this.openingBracketBlock(session, match[1], row, match.index);
if (match[2])
return this.indentationBlock(session, row, match.index + match[2].length);
return this.indentationBlock(session, row);
}
}
}).call(FoldMode.prototype);
});
define("ace/mode/mushcode",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mushcode_highlight_rules","ace/mode/folding/pythonic","ace/range"], function(require, exports, module) {
;
var oop = require("../lib/oop");
var TextMode = require("./text").Mode;
var MushCodeRules = require("./mushcode_highlight_rules").MushCodeRules;
var PythonFoldMode = require("./folding/pythonic").FoldMode;
var Range = require("../range").Range;
var Mode = function() {
this.HighlightRules = MushCodeRules;
this.foldingRules = new PythonFoldMode("\\:");
};
oop.inherits(Mode, TextMode);
(function() {
this.lineCommentStart = "#";
this.getNextLineIndent = function(state, line, tab) {
var indent = this.$getIndent(line);
var tokenizedLine = this.getTokenizer().getLineTokens(line, state);
var tokens = tokenizedLine.tokens;
if (tokens.length && tokens[tokens.length-1].type == "comment") {
return indent;
}
if (state == "start") {
var match = line.match(/^.*[\{\(\[\:]\s*$/);
if (match) {
indent += tab;
}
}
return indent;
};
var outdents = {
"pass": 1,
"return": 1,
"raise": 1,
"break": 1,
"continue": 1
};
this.checkOutdent = function(state, line, input) {
if (input !== "\r\n" && input !== "\r" && input !== "\n")
return false;
var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens;
if (!tokens)
return false;
do {
var last = tokens.pop();
} while (last && (last.type == "comment" || (last.type == "text" && last.value.match(/^\s+$/))));
if (!last)
return false;
return (last.type == "keyword" && outdents[last.value]);
};
this.autoOutdent = function(state, doc, row) {
row += 1;
var indent = this.$getIndent(doc.getLine(row));
var tab = doc.getTabString();
if (indent.slice(-tab.length) == tab)
doc.remove(new Range(row, indent.length-tab.length, row, indent.length));
};
this.$id = "ace/mode/mushcode";
}).call(Mode.prototype);
exports.Mode = Mode;
});