You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by tv...@apache.org on 2013/09/24 23:31:41 UTC
svn commit: r1526017 [24/31] - in /tomee/tomee/trunk:
examples/moviefun-rest/ tomee/ tomee/tomee-static-content/
tomee/tomee-static-content/backbone/ tomee/tomee-static-content/backbone/src/
tomee/tomee-static-content/backbone/src/main/ tomee/tomee-sta...
Added: tomee/tomee/trunk/tomee/tomee-static-content/codemirror/src/main/resources/META-INF/resources/app/lib/codemirror/mode/xquery/xquery.js
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-static-content/codemirror/src/main/resources/META-INF/resources/app/lib/codemirror/mode/xquery/xquery.js?rev=1526017&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-static-content/codemirror/src/main/resources/META-INF/resources/app/lib/codemirror/mode/xquery/xquery.js (added)
+++ tomee/tomee/trunk/tomee/tomee-static-content/codemirror/src/main/resources/META-INF/resources/app/lib/codemirror/mode/xquery/xquery.js Tue Sep 24 21:31:34 2013
@@ -0,0 +1,454 @@
+/*
+Copyright (C) 2011 by MarkLogic Corporation
+Author: Mike Brevoort <mi...@brevoort.com>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+CodeMirror.defineMode("xquery", function() {
+
+ // The keywords object is set to the result of this self executing
+ // function. Each keyword is a property of the keywords object whose
+ // value is {type: atype, style: astyle}
+ var keywords = function(){
+ // conveinence functions used to build keywords object
+ function kw(type) {return {type: type, style: "keyword"};}
+ var A = kw("keyword a")
+ , B = kw("keyword b")
+ , C = kw("keyword c")
+ , operator = kw("operator")
+ , atom = {type: "atom", style: "atom"}
+ , punctuation = {type: "punctuation", style: null}
+ , qualifier = {type: "axis_specifier", style: "qualifier"};
+
+ // kwObj is what is return from this function at the end
+ var kwObj = {
+ 'if': A, 'switch': A, 'while': A, 'for': A,
+ 'else': B, 'then': B, 'try': B, 'finally': B, 'catch': B,
+ 'element': C, 'attribute': C, 'let': C, 'implements': C, 'import': C, 'module': C, 'namespace': C,
+ 'return': C, 'super': C, 'this': C, 'throws': C, 'where': C, 'private': C,
+ ',': punctuation,
+ 'null': atom, 'fn:false()': atom, 'fn:true()': atom
+ };
+
+ // a list of 'basic' keywords. For each add a property to kwObj with the value of
+ // {type: basic[i], style: "keyword"} e.g. 'after' --> {type: "after", style: "keyword"}
+ var basic = ['after','ancestor','ancestor-or-self','and','as','ascending','assert','attribute','before',
+ 'by','case','cast','child','comment','declare','default','define','descendant','descendant-or-self',
+ 'descending','document','document-node','element','else','eq','every','except','external','following',
+ 'following-sibling','follows','for','function','if','import','in','instance','intersect','item',
+ 'let','module','namespace','node','node','of','only','or','order','parent','precedes','preceding',
+ 'preceding-sibling','processing-instruction','ref','return','returns','satisfies','schema','schema-element',
+ 'self','some','sortby','stable','text','then','to','treat','typeswitch','union','variable','version','where',
+ 'xquery', 'empty-sequence'];
+ for(var i=0, l=basic.length; i < l; i++) { kwObj[basic[i]] = kw(basic[i]);};
+
+ // a list of types. For each add a property to kwObj with the value of
+ // {type: "atom", style: "atom"}
+ var types = ['xs:string', 'xs:float', 'xs:decimal', 'xs:double', 'xs:integer', 'xs:boolean', 'xs:date', 'xs:dateTime',
+ 'xs:time', 'xs:duration', 'xs:dayTimeDuration', 'xs:time', 'xs:yearMonthDuration', 'numeric', 'xs:hexBinary',
+ 'xs:base64Binary', 'xs:anyURI', 'xs:QName', 'xs:byte','xs:boolean','xs:anyURI','xf:yearMonthDuration'];
+ for(var i=0, l=types.length; i < l; i++) { kwObj[types[i]] = atom;};
+
+ // each operator will add a property to kwObj with value of {type: "operator", style: "keyword"}
+ var operators = ['eq', 'ne', 'lt', 'le', 'gt', 'ge', ':=', '=', '>', '>=', '<', '<=', '.', '|', '?', 'and', 'or', 'div', 'idiv', 'mod', '*', '/', '+', '-'];
+ for(var i=0, l=operators.length; i < l; i++) { kwObj[operators[i]] = operator;};
+
+ // each axis_specifiers will add a property to kwObj with value of {type: "axis_specifier", style: "qualifier"}
+ var axis_specifiers = ["self::", "attribute::", "child::", "descendant::", "descendant-or-self::", "parent::",
+ "ancestor::", "ancestor-or-self::", "following::", "preceding::", "following-sibling::", "preceding-sibling::"];
+ for(var i=0, l=axis_specifiers.length; i < l; i++) { kwObj[axis_specifiers[i]] = qualifier; };
+
+ return kwObj;
+ }();
+
+ // Used as scratch variables to communicate multiple values without
+ // consing up tons of objects.
+ var type, content;
+
+ function ret(tp, style, cont) {
+ type = tp; content = cont;
+ return style;
+ }
+
+ function chain(stream, state, f) {
+ state.tokenize = f;
+ return f(stream, state);
+ }
+
+ // the primary mode tokenizer
+ function tokenBase(stream, state) {
+ var ch = stream.next(),
+ mightBeFunction = false,
+ isEQName = isEQNameAhead(stream);
+
+ // an XML tag (if not in some sub, chained tokenizer)
+ if (ch == "<") {
+ if(stream.match("!--", true))
+ return chain(stream, state, tokenXMLComment);
+
+ if(stream.match("![CDATA", false)) {
+ state.tokenize = tokenCDATA;
+ return ret("tag", "tag");
+ }
+
+ if(stream.match("?", false)) {
+ return chain(stream, state, tokenPreProcessing);
+ }
+
+ var isclose = stream.eat("/");
+ stream.eatSpace();
+ var tagName = "", c;
+ while ((c = stream.eat(/[^\s\u00a0=<>\"\'\/?]/))) tagName += c;
+
+ return chain(stream, state, tokenTag(tagName, isclose));
+ }
+ // start code block
+ else if(ch == "{") {
+ pushStateStack(state,{ type: "codeblock"});
+ return ret("", null);
+ }
+ // end code block
+ else if(ch == "}") {
+ popStateStack(state);
+ return ret("", null);
+ }
+ // if we're in an XML block
+ else if(isInXmlBlock(state)) {
+ if(ch == ">")
+ return ret("tag", "tag");
+ else if(ch == "/" && stream.eat(">")) {
+ popStateStack(state);
+ return ret("tag", "tag");
+ }
+ else
+ return ret("word", "variable");
+ }
+ // if a number
+ else if (/\d/.test(ch)) {
+ stream.match(/^\d*(?:\.\d*)?(?:E[+\-]?\d+)?/);
+ return ret("number", "atom");
+ }
+ // comment start
+ else if (ch === "(" && stream.eat(":")) {
+ pushStateStack(state, { type: "comment"});
+ return chain(stream, state, tokenComment);
+ }
+ // quoted string
+ else if ( !isEQName && (ch === '"' || ch === "'"))
+ return chain(stream, state, tokenString(ch));
+ // variable
+ else if(ch === "$") {
+ return chain(stream, state, tokenVariable);
+ }
+ // assignment
+ else if(ch ===":" && stream.eat("=")) {
+ return ret("operator", "keyword");
+ }
+ // open paren
+ else if(ch === "(") {
+ pushStateStack(state, { type: "paren"});
+ return ret("", null);
+ }
+ // close paren
+ else if(ch === ")") {
+ popStateStack(state);
+ return ret("", null);
+ }
+ // open paren
+ else if(ch === "[") {
+ pushStateStack(state, { type: "bracket"});
+ return ret("", null);
+ }
+ // close paren
+ else if(ch === "]") {
+ popStateStack(state);
+ return ret("", null);
+ }
+ else {
+ var known = keywords.propertyIsEnumerable(ch) && keywords[ch];
+
+ // if there's a EQName ahead, consume the rest of the string portion, it's likely a function
+ if(isEQName && ch === '\"') while(stream.next() !== '"'){}
+ if(isEQName && ch === '\'') while(stream.next() !== '\''){}
+
+ // gobble up a word if the character is not known
+ if(!known) stream.eatWhile(/[\w\$_-]/);
+
+ // gobble a colon in the case that is a lib func type call fn:doc
+ var foundColon = stream.eat(":");
+
+ // if there's not a second colon, gobble another word. Otherwise, it's probably an axis specifier
+ // which should get matched as a keyword
+ if(!stream.eat(":") && foundColon) {
+ stream.eatWhile(/[\w\$_-]/);
+ }
+ // if the next non whitespace character is an open paren, this is probably a function (if not a keyword of other sort)
+ if(stream.match(/^[ \t]*\(/, false)) {
+ mightBeFunction = true;
+ }
+ // is the word a keyword?
+ var word = stream.current();
+ known = keywords.propertyIsEnumerable(word) && keywords[word];
+
+ // if we think it's a function call but not yet known,
+ // set style to variable for now for lack of something better
+ if(mightBeFunction && !known) known = {type: "function_call", style: "variable def"};
+
+ // if the previous word was element, attribute, axis specifier, this word should be the name of that
+ if(isInXmlConstructor(state)) {
+ popStateStack(state);
+ return ret("word", "variable", word);
+ }
+ // as previously checked, if the word is element,attribute, axis specifier, call it an "xmlconstructor" and
+ // push the stack so we know to look for it on the next word
+ if(word == "element" || word == "attribute" || known.type == "axis_specifier") pushStateStack(state, {type: "xmlconstructor"});
+
+ // if the word is known, return the details of that else just call this a generic 'word'
+ return known ? ret(known.type, known.style, word) :
+ ret("word", "variable", word);
+ }
+ }
+
+ // handle comments, including nested
+ function tokenComment(stream, state) {
+ var maybeEnd = false, maybeNested = false, nestedCount = 0, ch;
+ while (ch = stream.next()) {
+ if (ch == ")" && maybeEnd) {
+ if(nestedCount > 0)
+ nestedCount--;
+ else {
+ popStateStack(state);
+ break;
+ }
+ }
+ else if(ch == ":" && maybeNested) {
+ nestedCount++;
+ }
+ maybeEnd = (ch == ":");
+ maybeNested = (ch == "(");
+ }
+
+ return ret("comment", "comment");
+ }
+
+ // tokenizer for string literals
+ // optionally pass a tokenizer function to set state.tokenize back to when finished
+ function tokenString(quote, f) {
+ return function(stream, state) {
+ var ch;
+
+ if(isInString(state) && stream.current() == quote) {
+ popStateStack(state);
+ if(f) state.tokenize = f;
+ return ret("string", "string");
+ }
+
+ pushStateStack(state, { type: "string", name: quote, tokenize: tokenString(quote, f) });
+
+ // if we're in a string and in an XML block, allow an embedded code block
+ if(stream.match("{", false) && isInXmlAttributeBlock(state)) {
+ state.tokenize = tokenBase;
+ return ret("string", "string");
+ }
+
+
+ while (ch = stream.next()) {
+ if (ch == quote) {
+ popStateStack(state);
+ if(f) state.tokenize = f;
+ break;
+ }
+ else {
+ // if we're in a string and in an XML block, allow an embedded code block in an attribute
+ if(stream.match("{", false) && isInXmlAttributeBlock(state)) {
+ state.tokenize = tokenBase;
+ return ret("string", "string");
+ }
+
+ }
+ }
+
+ return ret("string", "string");
+ };
+ }
+
+ // tokenizer for variables
+ function tokenVariable(stream, state) {
+ var isVariableChar = /[\w\$_-]/;
+
+ // a variable may start with a quoted EQName so if the next character is quote, consume to the next quote
+ if(stream.eat("\"")) {
+ while(stream.next() !== '\"'){};
+ stream.eat(":");
+ } else {
+ stream.eatWhile(isVariableChar);
+ if(!stream.match(":=", false)) stream.eat(":");
+ }
+ stream.eatWhile(isVariableChar);
+ state.tokenize = tokenBase;
+ return ret("variable", "variable");
+ }
+
+ // tokenizer for XML tags
+ function tokenTag(name, isclose) {
+ return function(stream, state) {
+ stream.eatSpace();
+ if(isclose && stream.eat(">")) {
+ popStateStack(state);
+ state.tokenize = tokenBase;
+ return ret("tag", "tag");
+ }
+ // self closing tag without attributes?
+ if(!stream.eat("/"))
+ pushStateStack(state, { type: "tag", name: name, tokenize: tokenBase});
+ if(!stream.eat(">")) {
+ state.tokenize = tokenAttribute;
+ return ret("tag", "tag");
+ }
+ else {
+ state.tokenize = tokenBase;
+ }
+ return ret("tag", "tag");
+ };
+ }
+
+ // tokenizer for XML attributes
+ function tokenAttribute(stream, state) {
+ var ch = stream.next();
+
+ if(ch == "/" && stream.eat(">")) {
+ if(isInXmlAttributeBlock(state)) popStateStack(state);
+ if(isInXmlBlock(state)) popStateStack(state);
+ return ret("tag", "tag");
+ }
+ if(ch == ">") {
+ if(isInXmlAttributeBlock(state)) popStateStack(state);
+ return ret("tag", "tag");
+ }
+ if(ch == "=")
+ return ret("", null);
+ // quoted string
+ if (ch == '"' || ch == "'")
+ return chain(stream, state, tokenString(ch, tokenAttribute));
+
+ if(!isInXmlAttributeBlock(state))
+ pushStateStack(state, { type: "attribute", name: name, tokenize: tokenAttribute});
+
+ stream.eat(/[a-zA-Z_:]/);
+ stream.eatWhile(/[-a-zA-Z0-9_:.]/);
+ stream.eatSpace();
+
+ // the case where the attribute has not value and the tag was closed
+ if(stream.match(">", false) || stream.match("/", false)) {
+ popStateStack(state);
+ state.tokenize = tokenBase;
+ }
+
+ return ret("attribute", "attribute");
+ }
+
+ // handle comments, including nested
+ function tokenXMLComment(stream, state) {
+ var ch;
+ while (ch = stream.next()) {
+ if (ch == "-" && stream.match("->", true)) {
+ state.tokenize = tokenBase;
+ return ret("comment", "comment");
+ }
+ }
+ }
+
+
+ // handle CDATA
+ function tokenCDATA(stream, state) {
+ var ch;
+ while (ch = stream.next()) {
+ if (ch == "]" && stream.match("]", true)) {
+ state.tokenize = tokenBase;
+ return ret("comment", "comment");
+ }
+ }
+ }
+
+ // handle preprocessing instructions
+ function tokenPreProcessing(stream, state) {
+ var ch;
+ while (ch = stream.next()) {
+ if (ch == "?" && stream.match(">", true)) {
+ state.tokenize = tokenBase;
+ return ret("comment", "comment meta");
+ }
+ }
+ }
+
+
+ // functions to test the current context of the state
+ function isInXmlBlock(state) { return isIn(state, "tag"); }
+ function isInXmlAttributeBlock(state) { return isIn(state, "attribute"); }
+ function isInXmlConstructor(state) { return isIn(state, "xmlconstructor"); }
+ function isInString(state) { return isIn(state, "string"); }
+
+ function isEQNameAhead(stream) {
+ // assume we've already eaten a quote (")
+ if(stream.current() === '"')
+ return stream.match(/^[^\"]+\"\:/, false);
+ else if(stream.current() === '\'')
+ return stream.match(/^[^\"]+\'\:/, false);
+ else
+ return false;
+ }
+
+ function isIn(state, type) {
+ return (state.stack.length && state.stack[state.stack.length - 1].type == type);
+ }
+
+ function pushStateStack(state, newState) {
+ state.stack.push(newState);
+ }
+
+ function popStateStack(state) {
+ state.stack.pop();
+ var reinstateTokenize = state.stack.length && state.stack[state.stack.length-1].tokenize;
+ state.tokenize = reinstateTokenize || tokenBase;
+ }
+
+ // the interface for the mode API
+ return {
+ startState: function() {
+ return {
+ tokenize: tokenBase,
+ cc: [],
+ stack: []
+ };
+ },
+
+ token: function(stream, state) {
+ if (stream.eatSpace()) return null;
+ var style = state.tokenize(stream, state);
+ return style;
+ },
+
+ blockCommentStart: "(:",
+ blockCommentEnd: ":)"
+
+ };
+
+});
+
+CodeMirror.defineMIME("application/xquery", "xquery");
Added: tomee/tomee/trunk/tomee/tomee-static-content/codemirror/src/main/resources/META-INF/resources/app/lib/codemirror/mode/yaml/index.html
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-static-content/codemirror/src/main/resources/META-INF/resources/app/lib/codemirror/mode/yaml/index.html?rev=1526017&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-static-content/codemirror/src/main/resources/META-INF/resources/app/lib/codemirror/mode/yaml/index.html (added)
+++ tomee/tomee/trunk/tomee/tomee-static-content/codemirror/src/main/resources/META-INF/resources/app/lib/codemirror/mode/yaml/index.html Tue Sep 24 21:31:34 2013
@@ -0,0 +1,80 @@
+<!doctype html>
+
+<title>CodeMirror: YAML mode</title>
+<meta charset="utf-8"/>
+<link rel=stylesheet href="../../doc/docs.css">
+
+<link rel="stylesheet" href="../../lib/codemirror.css">
+<script src="../../lib/codemirror.js"></script>
+<script src="yaml.js"></script>
+<style>.CodeMirror { border-top: 1px solid #ddd; border-bottom: 1px solid #ddd; }</style>
+<div id=nav>
+ <a href="http://codemirror.net"><img id=logo src="../../doc/logo.png"></a>
+
+ <ul>
+ <li><a href="../../index.html">Home</a>
+ <li><a href="../../doc/manual.html">Manual</a>
+ <li><a href="https://github.com/marijnh/codemirror">Code</a>
+ </ul>
+ <ul>
+ <li><a href="../index.html">Language modes</a>
+ <li><a class=active href="#">YAML</a>
+ </ul>
+</div>
+
+<article>
+<h2>YAML mode</h2>
+<form><textarea id="code" name="code">
+--- # Favorite movies
+- Casablanca
+- North by Northwest
+- The Man Who Wasn't There
+--- # Shopping list
+[milk, pumpkin pie, eggs, juice]
+--- # Indented Blocks, common in YAML data files, use indentation and new lines to separate the key: value pairs
+ name: John Smith
+ age: 33
+--- # Inline Blocks, common in YAML data streams, use commas to separate the key: value pairs between braces
+{name: John Smith, age: 33}
+---
+receipt: Oz-Ware Purchase Invoice
+date: 2007-08-06
+customer:
+ given: Dorothy
+ family: Gale
+
+items:
+ - part_no: A4786
+ descrip: Water Bucket (Filled)
+ price: 1.47
+ quantity: 4
+
+ - part_no: E1628
+ descrip: High Heeled "Ruby" Slippers
+ size: 8
+ price: 100.27
+ quantity: 1
+
+bill-to: &id001
+ street: |
+ 123 Tornado Alley
+ Suite 16
+ city: East Centerville
+ state: KS
+
+ship-to: *id001
+
+specialDelivery: >
+ Follow the Yellow Brick
+ Road to the Emerald City.
+ Pay no attention to the
+ man behind the curtain.
+...
+</textarea></form>
+ <script>
+ var editor = CodeMirror.fromTextArea(document.getElementById("code"), {});
+ </script>
+
+ <p><strong>MIME types defined:</strong> <code>text/x-yaml</code>.</p>
+
+ </article>
Added: tomee/tomee/trunk/tomee/tomee-static-content/codemirror/src/main/resources/META-INF/resources/app/lib/codemirror/mode/yaml/yaml.js
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-static-content/codemirror/src/main/resources/META-INF/resources/app/lib/codemirror/mode/yaml/yaml.js?rev=1526017&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-static-content/codemirror/src/main/resources/META-INF/resources/app/lib/codemirror/mode/yaml/yaml.js (added)
+++ tomee/tomee/trunk/tomee/tomee-static-content/codemirror/src/main/resources/META-INF/resources/app/lib/codemirror/mode/yaml/yaml.js Tue Sep 24 21:31:34 2013
@@ -0,0 +1,97 @@
+CodeMirror.defineMode("yaml", function() {
+
+ var cons = ['true', 'false', 'on', 'off', 'yes', 'no'];
+ var keywordRegex = new RegExp("\\b(("+cons.join(")|(")+"))$", 'i');
+
+ return {
+ token: function(stream, state) {
+ var ch = stream.peek();
+ var esc = state.escaped;
+ state.escaped = false;
+ /* comments */
+ if (ch == "#" && (stream.pos == 0 || /\s/.test(stream.string.charAt(stream.pos - 1)))) {
+ stream.skipToEnd(); return "comment";
+ }
+ if (state.literal && stream.indentation() > state.keyCol) {
+ stream.skipToEnd(); return "string";
+ } else if (state.literal) { state.literal = false; }
+ if (stream.sol()) {
+ state.keyCol = 0;
+ state.pair = false;
+ state.pairStart = false;
+ /* document start */
+ if(stream.match(/---/)) { return "def"; }
+ /* document end */
+ if (stream.match(/\.\.\./)) { return "def"; }
+ /* array list item */
+ if (stream.match(/\s*-\s+/)) { return 'meta'; }
+ }
+ /* inline pairs/lists */
+ if (stream.match(/^(\{|\}|\[|\])/)) {
+ if (ch == '{')
+ state.inlinePairs++;
+ else if (ch == '}')
+ state.inlinePairs--;
+ else if (ch == '[')
+ state.inlineList++;
+ else
+ state.inlineList--;
+ return 'meta';
+ }
+
+ /* list seperator */
+ if (state.inlineList > 0 && !esc && ch == ',') {
+ stream.next();
+ return 'meta';
+ }
+ /* pairs seperator */
+ if (state.inlinePairs > 0 && !esc && ch == ',') {
+ state.keyCol = 0;
+ state.pair = false;
+ state.pairStart = false;
+ stream.next();
+ return 'meta';
+ }
+
+ /* start of value of a pair */
+ if (state.pairStart) {
+ /* block literals */
+ if (stream.match(/^\s*(\||\>)\s*/)) { state.literal = true; return 'meta'; };
+ /* references */
+ if (stream.match(/^\s*(\&|\*)[a-z0-9\._-]+\b/i)) { return 'variable-2'; }
+ /* numbers */
+ if (state.inlinePairs == 0 && stream.match(/^\s*-?[0-9\.\,]+\s?$/)) { return 'number'; }
+ if (state.inlinePairs > 0 && stream.match(/^\s*-?[0-9\.\,]+\s?(?=(,|}))/)) { return 'number'; }
+ /* keywords */
+ if (stream.match(keywordRegex)) { return 'keyword'; }
+ }
+
+ /* pairs (associative arrays) -> key */
+ if (!state.pair && stream.match(/^\s*\S+(?=\s*:($|\s))/i)) {
+ state.pair = true;
+ state.keyCol = stream.indentation();
+ return "atom";
+ }
+ if (state.pair && stream.match(/^:\s*/)) { state.pairStart = true; return 'meta'; }
+
+ /* nothing found, continue */
+ state.pairStart = false;
+ state.escaped = (ch == '\\');
+ stream.next();
+ return null;
+ },
+ startState: function() {
+ return {
+ pair: false,
+ pairStart: false,
+ keyCol: 0,
+ inlinePairs: 0,
+ inlineList: 0,
+ literal: false,
+ escaped: false
+ };
+ }
+ };
+});
+
+CodeMirror.defineMIME("text/x-yaml", "yaml");
Added: tomee/tomee/trunk/tomee/tomee-static-content/codemirror/src/main/resources/META-INF/resources/app/lib/codemirror/mode/z80/index.html
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-static-content/codemirror/src/main/resources/META-INF/resources/app/lib/codemirror/mode/z80/index.html?rev=1526017&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-static-content/codemirror/src/main/resources/META-INF/resources/app/lib/codemirror/mode/z80/index.html (added)
+++ tomee/tomee/trunk/tomee/tomee-static-content/codemirror/src/main/resources/META-INF/resources/app/lib/codemirror/mode/z80/index.html Tue Sep 24 21:31:34 2013
@@ -0,0 +1,52 @@
+<!doctype html>
+
+<title>CodeMirror: Z80 assembly mode</title>
+<meta charset="utf-8"/>
+<link rel=stylesheet href="../../doc/docs.css">
+
+<link rel="stylesheet" href="../../lib/codemirror.css">
+<script src="../../lib/codemirror.js"></script>
+<script src="z80.js"></script>
+<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
+<div id=nav>
+ <a href="http://codemirror.net"><img id=logo src="../../doc/logo.png"></a>
+
+ <ul>
+ <li><a href="../../index.html">Home</a>
+ <li><a href="../../doc/manual.html">Manual</a>
+ <li><a href="https://github.com/marijnh/codemirror">Code</a>
+ </ul>
+ <ul>
+ <li><a href="../index.html">Language modes</a>
+ <li><a class=active href="#">Z80 assembly</a>
+ </ul>
+</div>
+
+<article>
+<h2>Z80 assembly mode</h2>
+
+
+<div><textarea id="code" name="code">
+#include "ti83plus.inc"
+#define progStart $9D95
+.org progStart-2
+.db $BB,$6D
+ bcall(_ClrLCDFull)
+ ld HL, 0
+ ld (PenCol), HL
+ ld HL, Message
+ bcall(_PutS) ; Displays the string
+ bcall(_NewLine)
+ ret
+Message:
+.db "Hello world!",0
+</textarea></div>
+
+ <script>
+ var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
+ lineNumbers: true
+ });
+ </script>
+
+ <p><strong>MIME type defined:</strong> <code>text/x-z80</code>.</p>
+ </article>
Added: tomee/tomee/trunk/tomee/tomee-static-content/codemirror/src/main/resources/META-INF/resources/app/lib/codemirror/mode/z80/z80.js
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-static-content/codemirror/src/main/resources/META-INF/resources/app/lib/codemirror/mode/z80/z80.js?rev=1526017&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-static-content/codemirror/src/main/resources/META-INF/resources/app/lib/codemirror/mode/z80/z80.js (added)
+++ tomee/tomee/trunk/tomee/tomee-static-content/codemirror/src/main/resources/META-INF/resources/app/lib/codemirror/mode/z80/z80.js Tue Sep 24 21:31:34 2013
@@ -0,0 +1,85 @@
+CodeMirror.defineMode('z80', function() {
+ var keywords1 = /^(exx?|(ld|cp|in)([di]r?)?|pop|push|ad[cd]|cpl|daa|dec|inc|neg|sbc|sub|and|bit|[cs]cf|x?or|res|set|r[lr]c?a?|r[lr]d|s[lr]a|srl|djnz|nop|rst|[de]i|halt|im|ot[di]r|out[di]?)\b/i;
+ var keywords2 = /^(call|j[pr]|ret[in]?)\b/i;
+ var keywords3 = /^b_?(call|jump)\b/i;
+ var variables1 = /^(af?|bc?|c|de?|e|hl?|l|i[xy]?|r|sp)\b/i;
+ var variables2 = /^(n?[zc]|p[oe]?|m)\b/i;
+ var errors = /^([hl][xy]|i[xy][hl]|slia|sll)\b/i;
+ var numbers = /^([\da-f]+h|[0-7]+o|[01]+b|\d+)\b/i;
+
+ return {
+ startState: function() {
+ return {context: 0};
+ },
+ token: function(stream, state) {
+ if (!stream.column())
+ state.context = 0;
+
+ if (stream.eatSpace())
+ return null;
+
+ var w;
+
+ if (stream.eatWhile(/\w/)) {
+ w = stream.current();
+
+ if (stream.indentation()) {
+ if (state.context == 1 && variables1.test(w))
+ return 'variable-2';
+
+ if (state.context == 2 && variables2.test(w))
+ return 'variable-3';
+
+ if (keywords1.test(w)) {
+ state.context = 1;
+ return 'keyword';
+ } else if (keywords2.test(w)) {
+ state.context = 2;
+ return 'keyword';
+ } else if (keywords3.test(w)) {
+ state.context = 3;
+ return 'keyword';
+ }
+
+ if (errors.test(w))
+ return 'error';
+ } else if (numbers.test(w)) {
+ return 'number';
+ } else {
+ return null;
+ }
+ } else if (stream.eat(';')) {
+ stream.skipToEnd();
+ return 'comment';
+ } else if (stream.eat('"')) {
+ while (w = stream.next()) {
+ if (w == '"')
+ break;
+
+ if (w == '\\')
+ stream.next();
+ }
+ return 'string';
+ } else if (stream.eat('\'')) {
+ if (stream.match(/\\?.'/))
+ return 'number';
+ } else if (stream.eat('.') || stream.sol() && stream.eat('#')) {
+ state.context = 4;
+
+ if (stream.eatWhile(/\w/))
+ return 'def';
+ } else if (stream.eat('$')) {
+ if (stream.eatWhile(/[\da-f]/i))
+ return 'number';
+ } else if (stream.eat('%')) {
+ if (stream.eatWhile(/[01]/))
+ return 'number';
+ } else {
+ stream.next();
+ }
+ return null;
+ }
+ };
+});
+
+CodeMirror.defineMIME("text/x-z80", "z80");
Added: tomee/tomee/trunk/tomee/tomee-static-content/handlebars/pom.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-static-content/handlebars/pom.xml?rev=1526017&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-static-content/handlebars/pom.xml (added)
+++ tomee/tomee/trunk/tomee/tomee-static-content/handlebars/pom.xml Tue Sep 24 21:31:34 2013
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.openejb.staticweb</groupId>
+ <artifactId>tomee-static-content</artifactId>
+ <version>1.6.0-SNAPSHOT</version>
+ </parent>
+ <artifactId>handlebars</artifactId>
+ <version>1.6.0-SNAPSHOT</version>
+ <packaging>jar</packaging>
+ <name>OpenEJB :: TomEE :: tomee-static-content :: handlebars</name>
+ <description>Contains handlebars 1.0.0</description>
+</project>