summaryrefslogtreecommitdiff
path: root/public/vendor/codemirror/mode/xml
diff options
context:
space:
mode:
authorWu Cheng-Han2016-11-28 01:36:48 +0800
committerWu Cheng-Han2016-11-28 01:36:48 +0800
commit9f79ed929e4156dc8b5b45161895d70d51cfa5a2 (patch)
tree760e0491a52558036b93b0c986e96aa95b4c0127 /public/vendor/codemirror/mode/xml
parent3a305b8258782797b328f2ce46e8bb74e9603594 (diff)
Update to move custom CodeMirror codebase to our own repo and update webpack build config
Diffstat (limited to 'public/vendor/codemirror/mode/xml')
-rw-r--r--public/vendor/codemirror/mode/xml/index.html61
-rw-r--r--public/vendor/codemirror/mode/xml/test.js51
-rw-r--r--public/vendor/codemirror/mode/xml/xml.js394
3 files changed, 0 insertions, 506 deletions
diff --git a/public/vendor/codemirror/mode/xml/index.html b/public/vendor/codemirror/mode/xml/index.html
deleted file mode 100644
index c56b8b6e..00000000
--- a/public/vendor/codemirror/mode/xml/index.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!doctype html>
-
-<title>CodeMirror: XML 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="xml.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"><h1>CodeMirror</h1><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/codemirror/codemirror">Code</a>
- </ul>
- <ul>
- <li><a href="../index.html">Language modes</a>
- <li><a class=active href="#">XML</a>
- </ul>
-</div>
-
-<article>
-<h2>XML mode</h2>
-<form><textarea id="code" name="code">
-&lt;html style="color: green"&gt;
- &lt;!-- this is a comment --&gt;
- &lt;head&gt;
- &lt;title&gt;HTML Example&lt;/title&gt;
- &lt;/head&gt;
- &lt;body&gt;
- The indentation tries to be &lt;em&gt;somewhat &amp;quot;do what
- I mean&amp;quot;&lt;/em&gt;... but might not match your style.
- &lt;/body&gt;
-&lt;/html&gt;
-</textarea></form>
- <script>
- var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
- mode: "text/html",
- lineNumbers: true
- });
- </script>
- <p>The XML mode supports these configuration parameters:</p>
- <dl>
- <dt><code>htmlMode (boolean)</code></dt>
- <dd>This switches the mode to parse HTML instead of XML. This
- means attributes do not have to be quoted, and some elements
- (such as <code>br</code>) do not require a closing tag.</dd>
- <dt><code>matchClosing (boolean)</code></dt>
- <dd>Controls whether the mode checks that close tags match the
- corresponding opening tag, and highlights mismatches as errors.
- Defaults to true.</dd>
- <dt><code>alignCDATA (boolean)</code></dt>
- <dd>Setting this to true will force the opening tag of CDATA
- blocks to not be indented.</dd>
- </dl>
-
- <p><strong>MIME types defined:</strong> <code>application/xml</code>, <code>text/html</code>.</p>
- </article>
diff --git a/public/vendor/codemirror/mode/xml/test.js b/public/vendor/codemirror/mode/xml/test.js
deleted file mode 100644
index f48156b5..00000000
--- a/public/vendor/codemirror/mode/xml/test.js
+++ /dev/null
@@ -1,51 +0,0 @@
-// CodeMirror, copyright (c) by Marijn Haverbeke and others
-// Distributed under an MIT license: http://codemirror.net/LICENSE
-
-(function() {
- var mode = CodeMirror.getMode({indentUnit: 2}, "xml"), mname = "xml";
- function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), mname); }
-
- MT("matching",
- "[tag&bracket <][tag top][tag&bracket >]",
- " text",
- " [tag&bracket <][tag inner][tag&bracket />]",
- "[tag&bracket </][tag top][tag&bracket >]");
-
- MT("nonmatching",
- "[tag&bracket <][tag top][tag&bracket >]",
- " [tag&bracket <][tag inner][tag&bracket />]",
- " [tag&bracket </][tag&error tip][tag&bracket&error >]");
-
- MT("doctype",
- "[meta <!doctype foobar>]",
- "[tag&bracket <][tag top][tag&bracket />]");
-
- MT("cdata",
- "[tag&bracket <][tag top][tag&bracket >]",
- " [atom <![CDATA[foo]",
- "[atom barbazguh]]]]>]",
- "[tag&bracket </][tag top][tag&bracket >]");
-
- // HTML tests
- mode = CodeMirror.getMode({indentUnit: 2}, "text/html");
-
- MT("selfclose",
- "[tag&bracket <][tag html][tag&bracket >]",
- " [tag&bracket <][tag link] [attribute rel]=[string stylesheet] [attribute href]=[string \"/foobar\"][tag&bracket >]",
- "[tag&bracket </][tag html][tag&bracket >]");
-
- MT("list",
- "[tag&bracket <][tag ol][tag&bracket >]",
- " [tag&bracket <][tag li][tag&bracket >]one",
- " [tag&bracket <][tag li][tag&bracket >]two",
- "[tag&bracket </][tag ol][tag&bracket >]");
-
- MT("valueless",
- "[tag&bracket <][tag input] [attribute type]=[string checkbox] [attribute checked][tag&bracket />]");
-
- MT("pThenArticle",
- "[tag&bracket <][tag p][tag&bracket >]",
- " foo",
- "[tag&bracket <][tag article][tag&bracket >]bar");
-
-})();
diff --git a/public/vendor/codemirror/mode/xml/xml.js b/public/vendor/codemirror/mode/xml/xml.js
deleted file mode 100644
index f987a3a3..00000000
--- a/public/vendor/codemirror/mode/xml/xml.js
+++ /dev/null
@@ -1,394 +0,0 @@
-// CodeMirror, copyright (c) by Marijn Haverbeke and others
-// Distributed under an MIT license: http://codemirror.net/LICENSE
-
-(function(mod) {
- if (typeof exports == "object" && typeof module == "object") // CommonJS
- mod(require("../../lib/codemirror"));
- else if (typeof define == "function" && define.amd) // AMD
- define(["../../lib/codemirror"], mod);
- else // Plain browser env
- mod(CodeMirror);
-})(function(CodeMirror) {
-"use strict";
-
-var htmlConfig = {
- autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true,
- 'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true,
- 'keygen': true, 'link': true, 'meta': true, 'param': true, 'source': true,
- 'track': true, 'wbr': true, 'menuitem': true},
- implicitlyClosed: {'dd': true, 'li': true, 'optgroup': true, 'option': true, 'p': true,
- 'rp': true, 'rt': true, 'tbody': true, 'td': true, 'tfoot': true,
- 'th': true, 'tr': true},
- contextGrabbers: {
- 'dd': {'dd': true, 'dt': true},
- 'dt': {'dd': true, 'dt': true},
- 'li': {'li': true},
- 'option': {'option': true, 'optgroup': true},
- 'optgroup': {'optgroup': true},
- 'p': {'address': true, 'article': true, 'aside': true, 'blockquote': true, 'dir': true,
- 'div': true, 'dl': true, 'fieldset': true, 'footer': true, 'form': true,
- 'h1': true, 'h2': true, 'h3': true, 'h4': true, 'h5': true, 'h6': true,
- 'header': true, 'hgroup': true, 'hr': true, 'menu': true, 'nav': true, 'ol': true,
- 'p': true, 'pre': true, 'section': true, 'table': true, 'ul': true},
- 'rp': {'rp': true, 'rt': true},
- 'rt': {'rp': true, 'rt': true},
- 'tbody': {'tbody': true, 'tfoot': true},
- 'td': {'td': true, 'th': true},
- 'tfoot': {'tbody': true},
- 'th': {'td': true, 'th': true},
- 'thead': {'tbody': true, 'tfoot': true},
- 'tr': {'tr': true}
- },
- doNotIndent: {"pre": true},
- allowUnquoted: true,
- allowMissing: true,
- caseFold: true
-}
-
-var xmlConfig = {
- autoSelfClosers: {},
- implicitlyClosed: {},
- contextGrabbers: {},
- doNotIndent: {},
- allowUnquoted: false,
- allowMissing: false,
- caseFold: false
-}
-
-CodeMirror.defineMode("xml", function(editorConf, config_) {
- var indentUnit = editorConf.indentUnit
- var config = {}
- var defaults = config_.htmlMode ? htmlConfig : xmlConfig
- for (var prop in defaults) config[prop] = defaults[prop]
- for (var prop in config_) config[prop] = config_[prop]
-
- // Return variables for tokenizers
- var type, setStyle;
-
- function inText(stream, state) {
- function chain(parser) {
- state.tokenize = parser;
- return parser(stream, state);
- }
-
- var ch = stream.next();
- if (ch == "<") {
- if (stream.eat("!")) {
- if (stream.eat("[")) {
- if (stream.match("CDATA[")) return chain(inBlock("atom", "]]>"));
- else return null;
- } else if (stream.match("--")) {
- return chain(inBlock("comment", "-->"));
- } else if (stream.match("DOCTYPE", true, true)) {
- stream.eatWhile(/[\w\._\-]/);
- return chain(doctype(1));
- } else {
- return null;
- }
- } else if (stream.eat("?")) {
- stream.eatWhile(/[\w\._\-]/);
- state.tokenize = inBlock("meta", "?>");
- return "meta";
- } else {
- type = stream.eat("/") ? "closeTag" : "openTag";
- state.tokenize = inTag;
- return "tag bracket";
- }
- } else if (ch == "&") {
- var ok;
- if (stream.eat("#")) {
- if (stream.eat("x")) {
- ok = stream.eatWhile(/[a-fA-F\d]/) && stream.eat(";");
- } else {
- ok = stream.eatWhile(/[\d]/) && stream.eat(";");
- }
- } else {
- ok = stream.eatWhile(/[\w\.\-:]/) && stream.eat(";");
- }
- return ok ? "atom" : "error";
- } else {
- stream.eatWhile(/[^&<]/);
- return null;
- }
- }
- inText.isInText = true;
-
- function inTag(stream, state) {
- var ch = stream.next();
- if (ch == ">" || (ch == "/" && stream.eat(">"))) {
- state.tokenize = inText;
- type = ch == ">" ? "endTag" : "selfcloseTag";
- return "tag bracket";
- } else if (ch == "=") {
- type = "equals";
- return null;
- } else if (ch == "<") {
- state.tokenize = inText;
- state.state = baseState;
- state.tagName = state.tagStart = null;
- var next = state.tokenize(stream, state);
- return next ? next + " tag error" : "tag error";
- } else if (/[\'\"]/.test(ch)) {
- state.tokenize = inAttribute(ch);
- state.stringStartCol = stream.column();
- return state.tokenize(stream, state);
- } else {
- stream.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/);
- return "word";
- }
- }
-
- function inAttribute(quote) {
- var closure = function(stream, state) {
- while (!stream.eol()) {
- if (stream.next() == quote) {
- state.tokenize = inTag;
- break;
- }
- }
- return "string";
- };
- closure.isInAttribute = true;
- return closure;
- }
-
- function inBlock(style, terminator) {
- return function(stream, state) {
- while (!stream.eol()) {
- if (stream.match(terminator)) {
- state.tokenize = inText;
- break;
- }
- stream.next();
- }
- return style;
- };
- }
- function doctype(depth) {
- return function(stream, state) {
- var ch;
- while ((ch = stream.next()) != null) {
- if (ch == "<") {
- state.tokenize = doctype(depth + 1);
- return state.tokenize(stream, state);
- } else if (ch == ">") {
- if (depth == 1) {
- state.tokenize = inText;
- break;
- } else {
- state.tokenize = doctype(depth - 1);
- return state.tokenize(stream, state);
- }
- }
- }
- return "meta";
- };
- }
-
- function Context(state, tagName, startOfLine) {
- this.prev = state.context;
- this.tagName = tagName;
- this.indent = state.indented;
- this.startOfLine = startOfLine;
- if (config.doNotIndent.hasOwnProperty(tagName) || (state.context && state.context.noIndent))
- this.noIndent = true;
- }
- function popContext(state) {
- if (state.context) state.context = state.context.prev;
- }
- function maybePopContext(state, nextTagName) {
- var parentTagName;
- while (true) {
- if (!state.context) {
- return;
- }
- parentTagName = state.context.tagName;
- if (!config.contextGrabbers.hasOwnProperty(parentTagName) ||
- !config.contextGrabbers[parentTagName].hasOwnProperty(nextTagName)) {
- return;
- }
- popContext(state);
- }
- }
-
- function baseState(type, stream, state) {
- if (type == "openTag") {
- state.tagStart = stream.column();
- return tagNameState;
- } else if (type == "closeTag") {
- return closeTagNameState;
- } else {
- return baseState;
- }
- }
- function tagNameState(type, stream, state) {
- if (type == "word") {
- state.tagName = stream.current();
- setStyle = "tag";
- return attrState;
- } else {
- setStyle = "error";
- return tagNameState;
- }
- }
- function closeTagNameState(type, stream, state) {
- if (type == "word") {
- var tagName = stream.current();
- if (state.context && state.context.tagName != tagName &&
- config.implicitlyClosed.hasOwnProperty(state.context.tagName))
- popContext(state);
- if ((state.context && state.context.tagName == tagName) || config.matchClosing === false) {
- setStyle = "tag";
- return closeState;
- } else {
- setStyle = "tag error";
- return closeStateErr;
- }
- } else {
- setStyle = "error";
- return closeStateErr;
- }
- }
-
- function closeState(type, _stream, state) {
- if (type != "endTag") {
- setStyle = "error";
- return closeState;
- }
- popContext(state);
- return baseState;
- }
- function closeStateErr(type, stream, state) {
- setStyle = "error";
- return closeState(type, stream, state);
- }
-
- function attrState(type, _stream, state) {
- if (type == "word") {
- setStyle = "attribute";
- return attrEqState;
- } else if (type == "endTag" || type == "selfcloseTag") {
- var tagName = state.tagName, tagStart = state.tagStart;
- state.tagName = state.tagStart = null;
- if (type == "selfcloseTag" ||
- config.autoSelfClosers.hasOwnProperty(tagName)) {
- maybePopContext(state, tagName);
- } else {
- maybePopContext(state, tagName);
- state.context = new Context(state, tagName, tagStart == state.indented);
- }
- return baseState;
- }
- setStyle = "error";
- return attrState;
- }
- function attrEqState(type, stream, state) {
- if (type == "equals") return attrValueState;
- if (!config.allowMissing) setStyle = "error";
- return attrState(type, stream, state);
- }
- function attrValueState(type, stream, state) {
- if (type == "string") return attrContinuedState;
- if (type == "word" && config.allowUnquoted) {setStyle = "string"; return attrState;}
- setStyle = "error";
- return attrState(type, stream, state);
- }
- function attrContinuedState(type, stream, state) {
- if (type == "string") return attrContinuedState;
- return attrState(type, stream, state);
- }
-
- return {
- startState: function(baseIndent) {
- var state = {tokenize: inText,
- state: baseState,
- indented: baseIndent || 0,
- tagName: null, tagStart: null,
- context: null}
- if (baseIndent != null) state.baseIndent = baseIndent
- return state
- },
-
- token: function(stream, state) {
- if (!state.tagName && stream.sol())
- state.indented = stream.indentation();
-
- if (stream.eatSpace()) return null;
- type = null;
- var style = state.tokenize(stream, state);
- if ((style || type) && style != "comment") {
- setStyle = null;
- state.state = state.state(type || style, stream, state);
- if (setStyle)
- style = setStyle == "error" ? style + " error" : setStyle;
- }
- return style;
- },
-
- indent: function(state, textAfter, fullLine) {
- var context = state.context;
- // Indent multi-line strings (e.g. css).
- if (state.tokenize.isInAttribute) {
- if (state.tagStart == state.indented)
- return state.stringStartCol + 1;
- else
- return state.indented + indentUnit;
- }
- if (context && context.noIndent) return CodeMirror.Pass;
- if (state.tokenize != inTag && state.tokenize != inText)
- return fullLine ? fullLine.match(/^(\s*)/)[0].length : 0;
- // Indent the starts of attribute names.
- if (state.tagName) {
- if (config.multilineTagIndentPastTag !== false)
- return state.tagStart + state.tagName.length + 2;
- else
- return state.tagStart + indentUnit * (config.multilineTagIndentFactor || 1);
- }
- if (config.alignCDATA && /<!\[CDATA\[/.test(textAfter)) return 0;
- var tagAfter = textAfter && /^<(\/)?([\w_:\.-]*)/.exec(textAfter);
- if (tagAfter && tagAfter[1]) { // Closing tag spotted
- while (context) {
- if (context.tagName == tagAfter[2]) {
- context = context.prev;
- break;
- } else if (config.implicitlyClosed.hasOwnProperty(context.tagName)) {
- context = context.prev;
- } else {
- break;
- }
- }
- } else if (tagAfter) { // Opening tag spotted
- while (context) {
- var grabbers = config.contextGrabbers[context.tagName];
- if (grabbers && grabbers.hasOwnProperty(tagAfter[2]))
- context = context.prev;
- else
- break;
- }
- }
- while (context && context.prev && !context.startOfLine)
- context = context.prev;
- if (context) return context.indent + indentUnit;
- else return state.baseIndent || 0;
- },
-
- electricInput: /<\/[\s\w:]+>$/,
- blockCommentStart: "<!--",
- blockCommentEnd: "-->",
-
- configuration: config.htmlMode ? "html" : "xml",
- helperType: config.htmlMode ? "html" : "xml",
-
- skipAttribute: function(state) {
- if (state.state == attrValueState)
- state.state = attrState
- }
- };
-});
-
-CodeMirror.defineMIME("text/xml", "xml");
-CodeMirror.defineMIME("application/xml", "xml");
-if (!CodeMirror.mimeModes.hasOwnProperty("text/html"))
- CodeMirror.defineMIME("text/html", {name: "xml", htmlMode: true});
-
-});