UNPKG

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

276 lines (227 loc) 9.25 kB
define("ace/mode/c9search_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; function safeCreateRegexp(source, flag) { try { return new RegExp(source, flag); } catch(e) {} } var C9SearchHighlightRules = function() { this.$rules = { "start" : [ { tokenNames : ["c9searchresults.constant.numeric", "c9searchresults.text", "c9searchresults.text", "c9searchresults.keyword"], regex : "(^\\s+[0-9]+)(:\\s)(.+)", onMatch : function(val, state, stack) { var values = this.splitRegex.exec(val); var types = this.tokenNames; var tokens = [{ type: types[0], value: values[1] },{ type: types[1], value: values[2] }]; var regex = stack[1]; var str = values[3]; var m; var last = 0; if (regex && regex.exec) { regex.lastIndex = 0; while (m = regex.exec(str)) { var skipped = str.substring(last, m.index); last = regex.lastIndex; if (skipped) tokens.push({type: types[2], value: skipped}); if (m[0]) tokens.push({type: types[3], value: m[0]}); else if (!skipped) break; } } if (last < str.length) tokens.push({type: types[2], value: str.substr(last)}); return tokens; } }, { token : ["string", "text"], // single line regex : "(\\S.*)(:$)" }, { regex : "Searching for .*$", onMatch: function(val, state, stack) { var parts = val.split("\x01"); if (parts.length < 3) return "text"; var options, search, replace; var i = 0; var tokens = [{ value: parts[i++] + "'", type: "text" }, { value: search = parts[i++], type: "text" // "c9searchresults.keyword" }, { value: "'" + parts[i++], type: "text" }]; if (parts[2] !== " in") { replace = parts[i]; tokens.push({ value: "'" + parts[i++] + "'", type: "text" }, { value: parts[i++], type: "text" }); } tokens.push({ value: " " + parts[i++] + " ", type: "text" }); if (parts[i+1]) { options = parts[i+1]; tokens.push({ value: "(" + parts[i+1] + ")", type: "text" }); i += 1; } else { i -= 1; } while (i++ < parts.length) { parts[i] && tokens.push({ value: parts[i], type: "text" }); } if (replace) { search = replace; options = ""; } if (search) { if (!/regex/.test(options)) search = lang.escapeRegExp(search); if (/whole/.test(options)) search = "\\b" + search + "\\b"; } var regex = search && safeCreateRegexp( "(" + search + ")", / sensitive/.test(options) ? "g" : "ig" ); if (regex) { stack[0] = state; stack[1] = regex; } return tokens; } }, { regex : "\\d+", token: "constant.numeric" } ] }; }; oop.inherits(C9SearchHighlightRules, TextHighlightRules); exports.C9SearchHighlightRules = C9SearchHighlightRules; }); define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { "use strict"; var Range = require("../range").Range; var MatchingBraceOutdent = function() {}; (function() { this.checkOutdent = function(line, input) { if (! /^\s+$/.test(line)) return false; return /^\s*\}/.test(input); }; this.autoOutdent = function(doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); if (!match) return 0; var column = match[1].length; var openBracePos = doc.findMatchingBracket({row: row, column: column}); if (!openBracePos || openBracePos.row == row) return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); doc.replace(new Range(row, 0, row, column-1), indent); }; this.$getIndent = function(line) { return line.match(/^\s*/)[0]; }; }).call(MatchingBraceOutdent.prototype); exports.MatchingBraceOutdent = MatchingBraceOutdent; }); define("ace/mode/folding/c9search",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { "use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; var FoldMode = exports.FoldMode = function() {}; oop.inherits(FoldMode, BaseFoldMode); (function() { this.foldingStartMarker = /^(\S.*\:|Searching for.*)$/; this.foldingStopMarker = /^(\s+|Found.*)$/; this.getFoldWidgetRange = function(session, foldStyle, row) { var lines = session.doc.getAllLines(row); var line = lines[row]; var level1 = /^(Found.*|Searching for.*)$/; var level2 = /^(\S.*\:|\s*)$/; var re = level1.test(line) ? level1 : level2; var startRow = row; var endRow = row; if (this.foldingStartMarker.test(line)) { for (var i = row + 1, l = session.getLength(); i < l; i++) { if (re.test(lines[i])) break; } endRow = i; } else if (this.foldingStopMarker.test(line)) { for (var i = row - 1; i >= 0; i--) { line = lines[i]; if (re.test(line)) break; } startRow = i; } if (startRow != endRow) { var col = line.length; if (re === level1) col = line.search(/\(Found[^)]+\)$|$/); return new Range(startRow, col, endRow, 0); } }; }).call(FoldMode.prototype); }); define("ace/mode/c9search",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c9search_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/c9search"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var C9SearchHighlightRules = require("./c9search_highlight_rules").C9SearchHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; var C9StyleFoldMode = require("./folding/c9search").FoldMode; var Mode = function() { this.HighlightRules = C9SearchHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.foldingRules = new C9StyleFoldMode(); }; oop.inherits(Mode, TextMode); (function() { this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); return indent; }; this.checkOutdent = function(state, line, input) { return this.$outdent.checkOutdent(line, input); }; this.autoOutdent = function(state, doc, row) { this.$outdent.autoOutdent(doc, row); }; this.$id = "ace/mode/c9search"; }).call(Mode.prototype); exports.Mode = Mode; });