[REF] github page: move page to docs folder on master branch

Currently, some of the things on the playground must be changed directly
on the master branch while other things require checking out the
gh-pages branch and making the modifications there. Even when changes
need to be made on the master branch, all changes that are not direcly
in owl itself need to be copied by hand to the gh-pages branch.

This commit moves all files that exist on the gh-pages branch to the
master branch in the docs folder, this change will require configuring
the github page to use the docs folder instead of a separate branch, but
will make maintenance of the github page and playground easier going
forward.
This commit is contained in:
Samuel Degueldre
2023-04-24 11:04:11 +02:00
committed by Géry Debongnie
parent 9475de4d18
commit b8b5190bc6
59 changed files with 7186 additions and 76 deletions
+980
View File
@@ -0,0 +1,980 @@
ace.define(
"ace/mode/css_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;
var supportType = (exports.supportType =
"align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index");
var supportFunction = (exports.supportFunction =
"rgb|rgba|url|attr|counter|counters");
var supportConstant = (exports.supportConstant =
"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom");
var supportConstantColor = (exports.supportConstantColor =
"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen");
var supportConstantFonts = (exports.supportConstantFonts =
"arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace");
var numRe = (exports.numRe =
"\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))");
var pseudoElements = (exports.pseudoElements =
"(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b");
var pseudoClasses = (exports.pseudoClasses =
"(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b");
var CssHighlightRules = function() {
var keywordMapper = this.createKeywordMapper(
{
"support.function": supportFunction,
"support.constant": supportConstant,
"support.type": supportType,
"support.constant.color": supportConstantColor,
"support.constant.fonts": supportConstantFonts
},
"text",
true
);
this.$rules = {
start: [
{
include: ["strings", "url", "comments"]
},
{
token: "paren.lparen",
regex: "\\{",
next: "ruleset"
},
{
token: "paren.rparen",
regex: "\\}"
},
{
token: "string",
regex: "@(?!viewport)",
next: "media"
},
{
token: "keyword",
regex: "#[a-z0-9-_]+"
},
{
token: "keyword",
regex: "%"
},
{
token: "variable",
regex: "\\.[a-z0-9-_]+"
},
{
token: "string",
regex: ":[a-z0-9-_]+"
},
{
token: "constant.numeric",
regex: numRe
},
{
token: "constant",
regex: "[a-z0-9-_]+"
},
{
caseInsensitive: true
}
],
media: [
{
include: ["strings", "url", "comments"]
},
{
token: "paren.lparen",
regex: "\\{",
next: "start"
},
{
token: "paren.rparen",
regex: "\\}",
next: "start"
},
{
token: "string",
regex: ";",
next: "start"
},
{
token: "keyword",
regex:
"(?:media|supports|document|charset|import|namespace|media|supports|document" +
"|page|font|keyframes|viewport|counter-style|font-feature-values" +
"|swash|ornaments|annotation|stylistic|styleset|character-variant)"
}
],
comments: [
{
token: "comment", // multi line comment
regex: "\\/\\*",
push: [
{
token: "comment",
regex: "\\*\\/",
next: "pop"
},
{
defaultToken: "comment"
}
]
}
],
ruleset: [
{
regex: "-(webkit|ms|moz|o)-",
token: "text"
},
{
token: "punctuation.operator",
regex: "[:;]"
},
{
token: "paren.rparen",
regex: "\\}",
next: "start"
},
{
include: ["strings", "url", "comments"]
},
{
token: ["constant.numeric", "keyword"],
regex:
"(" +
numRe +
")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
},
{
token: "constant.numeric",
regex: numRe
},
{
token: "constant.numeric", // hex6 color
regex: "#[a-f0-9]{6}"
},
{
token: "constant.numeric", // hex3 color
regex: "#[a-f0-9]{3}"
},
{
token: [
"punctuation",
"entity.other.attribute-name.pseudo-element.css"
],
regex: pseudoElements
},
{
token: [
"punctuation",
"entity.other.attribute-name.pseudo-class.css"
],
regex: pseudoClasses
},
{
include: "url"
},
{
token: keywordMapper,
regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
},
{
caseInsensitive: true
}
],
url: [
{
token: "support.function",
regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
push: [
{
token: "support.function",
regex: "\\)",
next: "pop"
},
{
defaultToken: "string"
}
]
}
],
strings: [
{
token: "string.start",
regex: "'",
push: [
{
token: "string.end",
regex: "'|$",
next: "pop"
},
{
include: "escapes"
},
{
token: "constant.language.escape",
regex: /\\$/,
consumeLineEnd: true
},
{
defaultToken: "string"
}
]
},
{
token: "string.start",
regex: '"',
push: [
{
token: "string.end",
regex: '"|$',
next: "pop"
},
{
include: "escapes"
},
{
token: "constant.language.escape",
regex: /\\$/,
consumeLineEnd: true
},
{
defaultToken: "string"
}
]
}
],
escapes: [
{
token: "constant.language.escape",
regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
}
]
};
this.normalizeRules();
};
oop.inherits(CssHighlightRules, TextHighlightRules);
exports.CssHighlightRules = CssHighlightRules;
}
);
ace.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;
}
);
ace.define(
"ace/mode/css_completions",
["require", "exports", "module"],
function(require, exports, module) {
"use strict";
var propertyMap = {
background: { "#$0": 1 },
"background-color": { "#$0": 1, transparent: 1, fixed: 1 },
"background-image": { "url('/$0')": 1 },
"background-repeat": {
repeat: 1,
"repeat-x": 1,
"repeat-y": 1,
"no-repeat": 1,
inherit: 1
},
"background-position": {
bottom: 2,
center: 2,
left: 2,
right: 2,
top: 2,
inherit: 2
},
"background-attachment": { scroll: 1, fixed: 1 },
"background-size": { cover: 1, contain: 1 },
"background-clip": {
"border-box": 1,
"padding-box": 1,
"content-box": 1
},
"background-origin": {
"border-box": 1,
"padding-box": 1,
"content-box": 1
},
border: { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 },
"border-color": { "#$0": 1 },
"border-style": {
solid: 2,
dashed: 2,
dotted: 2,
double: 2,
groove: 2,
hidden: 2,
inherit: 2,
inset: 2,
none: 2,
outset: 2,
ridged: 2
},
"border-collapse": { collapse: 1, separate: 1 },
bottom: { px: 1, em: 1, "%": 1 },
clear: { left: 1, right: 1, both: 1, none: 1 },
color: { "#$0": 1, "rgb(#$00,0,0)": 1 },
cursor: {
default: 1,
pointer: 1,
move: 1,
text: 1,
wait: 1,
help: 1,
progress: 1,
"n-resize": 1,
"ne-resize": 1,
"e-resize": 1,
"se-resize": 1,
"s-resize": 1,
"sw-resize": 1,
"w-resize": 1,
"nw-resize": 1
},
display: {
none: 1,
block: 1,
inline: 1,
"inline-block": 1,
"table-cell": 1
},
"empty-cells": { show: 1, hide: 1 },
float: { left: 1, right: 1, none: 1 },
"font-family": {
Arial: 2,
"Comic Sans MS": 2,
Consolas: 2,
"Courier New": 2,
Courier: 2,
Georgia: 2,
Monospace: 2,
"Sans-Serif": 2,
"Segoe UI": 2,
Tahoma: 2,
"Times New Roman": 2,
"Trebuchet MS": 2,
Verdana: 1
},
"font-size": { px: 1, em: 1, "%": 1 },
"font-weight": { bold: 1, normal: 1 },
"font-style": { italic: 1, normal: 1 },
"font-variant": { normal: 1, "small-caps": 1 },
height: { px: 1, em: 1, "%": 1 },
left: { px: 1, em: 1, "%": 1 },
"letter-spacing": { normal: 1 },
"line-height": { normal: 1 },
"list-style-type": {
none: 1,
disc: 1,
circle: 1,
square: 1,
decimal: 1,
"decimal-leading-zero": 1,
"lower-roman": 1,
"upper-roman": 1,
"lower-greek": 1,
"lower-latin": 1,
"upper-latin": 1,
georgian: 1,
"lower-alpha": 1,
"upper-alpha": 1
},
margin: { px: 1, em: 1, "%": 1 },
"margin-right": { px: 1, em: 1, "%": 1 },
"margin-left": { px: 1, em: 1, "%": 1 },
"margin-top": { px: 1, em: 1, "%": 1 },
"margin-bottom": { px: 1, em: 1, "%": 1 },
"max-height": { px: 1, em: 1, "%": 1 },
"max-width": { px: 1, em: 1, "%": 1 },
"min-height": { px: 1, em: 1, "%": 1 },
"min-width": { px: 1, em: 1, "%": 1 },
overflow: { hidden: 1, visible: 1, auto: 1, scroll: 1 },
"overflow-x": { hidden: 1, visible: 1, auto: 1, scroll: 1 },
"overflow-y": { hidden: 1, visible: 1, auto: 1, scroll: 1 },
padding: { px: 1, em: 1, "%": 1 },
"padding-top": { px: 1, em: 1, "%": 1 },
"padding-right": { px: 1, em: 1, "%": 1 },
"padding-bottom": { px: 1, em: 1, "%": 1 },
"padding-left": { px: 1, em: 1, "%": 1 },
"page-break-after": { auto: 1, always: 1, avoid: 1, left: 1, right: 1 },
"page-break-before": { auto: 1, always: 1, avoid: 1, left: 1, right: 1 },
position: { absolute: 1, relative: 1, fixed: 1, static: 1 },
right: { px: 1, em: 1, "%": 1 },
"table-layout": { fixed: 1, auto: 1 },
"text-decoration": { none: 1, underline: 1, "line-through": 1, blink: 1 },
"text-align": { left: 1, right: 1, center: 1, justify: 1 },
"text-transform": { capitalize: 1, uppercase: 1, lowercase: 1, none: 1 },
top: { px: 1, em: 1, "%": 1 },
"vertical-align": { top: 1, bottom: 1 },
visibility: { hidden: 1, visible: 1 },
"white-space": {
nowrap: 1,
normal: 1,
pre: 1,
"pre-line": 1,
"pre-wrap": 1
},
width: { px: 1, em: 1, "%": 1 },
"word-spacing": { normal: 1 },
filter: { "alpha(opacity=$0100)": 1 },
"text-shadow": { "$02px 2px 2px #777": 1 },
"text-overflow": { "ellipsis-word": 1, clip: 1, ellipsis: 1 },
"-moz-border-radius": 1,
"-moz-border-radius-topright": 1,
"-moz-border-radius-bottomright": 1,
"-moz-border-radius-topleft": 1,
"-moz-border-radius-bottomleft": 1,
"-webkit-border-radius": 1,
"-webkit-border-top-right-radius": 1,
"-webkit-border-top-left-radius": 1,
"-webkit-border-bottom-right-radius": 1,
"-webkit-border-bottom-left-radius": 1,
"-moz-box-shadow": 1,
"-webkit-box-shadow": 1,
transform: { "rotate($00deg)": 1, "skew($00deg)": 1 },
"-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 },
"-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }
};
var CssCompletions = function() {};
(function() {
this.completionsDefined = false;
this.defineCompletions = function() {
if (document) {
var style = document.createElement("c").style;
for (var i in style) {
if (typeof style[i] !== "string") continue;
var name = i.replace(/[A-Z]/g, function(x) {
return "-" + x.toLowerCase();
});
if (!propertyMap.hasOwnProperty(name)) propertyMap[name] = 1;
}
}
this.completionsDefined = true;
};
this.getCompletions = function(state, session, pos, prefix) {
if (!this.completionsDefined) {
this.defineCompletions();
}
if (state === "ruleset" || session.$mode.$id == "ace/mode/scss") {
var line = session.getLine(pos.row).substr(0, pos.column);
if (/:[^;]+$/.test(line)) {
/([\w\-]+):[^:]*$/.test(line);
return this.getPropertyValueCompletions(
state,
session,
pos,
prefix
);
} else {
return this.getPropertyCompletions(state, session, pos, prefix);
}
}
return [];
};
this.getPropertyCompletions = function(state, session, pos, prefix) {
var properties = Object.keys(propertyMap);
return properties.map(function(property) {
return {
caption: property,
snippet: property + ": $0;",
meta: "property",
score: 1000000
};
});
};
this.getPropertyValueCompletions = function(state, session, pos, prefix) {
var line = session.getLine(pos.row).substr(0, pos.column);
var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1];
if (!property) return [];
var values = [];
if (
property in propertyMap &&
typeof propertyMap[property] === "object"
) {
values = Object.keys(propertyMap[property]);
}
return values.map(function(value) {
return {
caption: value,
snippet: value,
meta: "property value",
score: 1000000
};
});
};
}.call(CssCompletions.prototype));
exports.CssCompletions = CssCompletions;
}
);
ace.define(
"ace/mode/behaviour/css",
[
"require",
"exports",
"module",
"ace/lib/oop",
"ace/mode/behaviour",
"ace/mode/behaviour/cstyle",
"ace/token_iterator"
],
function(require, exports, module) {
"use strict";
var oop = require("../../lib/oop");
var Behaviour = require("../behaviour").Behaviour;
var CstyleBehaviour = require("./cstyle").CstyleBehaviour;
var TokenIterator = require("../../token_iterator").TokenIterator;
var CssBehaviour = function() {
this.inherit(CstyleBehaviour);
this.add("colon", "insertion", function(
state,
action,
editor,
session,
text
) {
if (text === ":" && editor.selection.isEmpty()) {
var cursor = editor.getCursorPosition();
var iterator = new TokenIterator(session, cursor.row, cursor.column);
var token = iterator.getCurrentToken();
if (token && token.value.match(/\s+/)) {
token = iterator.stepBackward();
}
if (token && token.type === "support.type") {
var line = session.doc.getLine(cursor.row);
var rightChar = line.substring(cursor.column, cursor.column + 1);
if (rightChar === ":") {
return {
text: "",
selection: [1, 1]
};
}
if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) {
return {
text: ":;",
selection: [1, 1]
};
}
}
}
});
this.add("colon", "deletion", function(
state,
action,
editor,
session,
range
) {
var selected = session.doc.getTextRange(range);
if (!range.isMultiLine() && selected === ":") {
var cursor = editor.getCursorPosition();
var iterator = new TokenIterator(session, cursor.row, cursor.column);
var token = iterator.getCurrentToken();
if (token && token.value.match(/\s+/)) {
token = iterator.stepBackward();
}
if (token && token.type === "support.type") {
var line = session.doc.getLine(range.start.row);
var rightChar = line.substring(
range.end.column,
range.end.column + 1
);
if (rightChar === ";") {
range.end.column++;
return range;
}
}
}
});
this.add("semicolon", "insertion", function(
state,
action,
editor,
session,
text
) {
if (text === ";" && editor.selection.isEmpty()) {
var cursor = editor.getCursorPosition();
var line = session.doc.getLine(cursor.row);
var rightChar = line.substring(cursor.column, cursor.column + 1);
if (rightChar === ";") {
return {
text: "",
selection: [1, 1]
};
}
}
});
this.add("!important", "insertion", function(
state,
action,
editor,
session,
text
) {
if (text === "!" && editor.selection.isEmpty()) {
var cursor = editor.getCursorPosition();
var line = session.doc.getLine(cursor.row);
if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) {
return {
text: "!important",
selection: [10, 10]
};
}
}
});
};
oop.inherits(CssBehaviour, CstyleBehaviour);
exports.CssBehaviour = CssBehaviour;
}
);
ace.define(
"ace/mode/folding/cstyle",
[
"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(commentRegex) {
if (commentRegex) {
this.foldingStartMarker = new RegExp(
this.foldingStartMarker.source.replace(
/\|[^|]*?$/,
"|" + commentRegex.start
)
);
this.foldingStopMarker = new RegExp(
this.foldingStopMarker.source.replace(
/\|[^|]*?$/,
"|" + commentRegex.end
)
);
}
});
oop.inherits(FoldMode, BaseFoldMode);
(function() {
this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/;
this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/;
this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/;
this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/;
this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/;
this._getFoldWidgetBase = this.getFoldWidget;
this.getFoldWidget = function(session, foldStyle, row) {
var line = session.getLine(row);
if (this.singleLineBlockCommentRe.test(line)) {
if (
!this.startRegionRe.test(line) &&
!this.tripleStarBlockCommentRe.test(line)
)
return "";
}
var fw = this._getFoldWidgetBase(session, foldStyle, row);
if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart
return fw;
};
this.getFoldWidgetRange = function(
session,
foldStyle,
row,
forceMultiline
) {
var line = session.getLine(row);
if (this.startRegionRe.test(line))
return this.getCommentRegionBlock(session, line, row);
var match = line.match(this.foldingStartMarker);
if (match) {
var i = match.index;
if (match[1])
return this.openingBracketBlock(session, match[1], row, i);
var range = session.getCommentFoldRange(row, i + match[0].length, 1);
if (range && !range.isMultiLine()) {
if (forceMultiline) {
range = this.getSectionRange(session, row);
} else if (foldStyle != "all") range = null;
}
return range;
}
if (foldStyle === "markbegin") return;
var match = line.match(this.foldingStopMarker);
if (match) {
var i = match.index + match[0].length;
if (match[1])
return this.closingBracketBlock(session, match[1], row, i);
return session.getCommentFoldRange(row, i, -1);
}
};
this.getSectionRange = function(session, row) {
var line = session.getLine(row);
var startIndent = line.search(/\S/);
var startRow = row;
var startColumn = line.length;
row = row + 1;
var endRow = row;
var maxRow = session.getLength();
while (++row < maxRow) {
line = session.getLine(row);
var indent = line.search(/\S/);
if (indent === -1) continue;
if (startIndent > indent) break;
var subRange = this.getFoldWidgetRange(session, "all", row);
if (subRange) {
if (subRange.start.row <= startRow) {
break;
} else if (subRange.isMultiLine()) {
row = subRange.end.row;
} else if (startIndent == indent) {
break;
}
}
endRow = row;
}
return new Range(
startRow,
startColumn,
endRow,
session.getLine(endRow).length
);
};
this.getCommentRegionBlock = function(session, line, row) {
var startColumn = line.search(/\s*$/);
var maxRow = session.getLength();
var startRow = row;
var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/;
var depth = 1;
while (++row < maxRow) {
line = session.getLine(row);
var m = re.exec(line);
if (!m) continue;
if (m[1]) depth--;
else depth++;
if (!depth) break;
}
var endRow = row;
if (endRow > startRow) {
return new Range(startRow, startColumn, endRow, line.length);
}
};
}.call(FoldMode.prototype));
}
);
ace.define(
"ace/mode/css",
[
"require",
"exports",
"module",
"ace/lib/oop",
"ace/mode/text",
"ace/mode/css_highlight_rules",
"ace/mode/matching_brace_outdent",
"ace/worker/worker_client",
"ace/mode/css_completions",
"ace/mode/behaviour/css",
"ace/mode/folding/cstyle"
],
function(require, exports, module) {
"use strict";
var oop = require("../lib/oop");
var TextMode = require("./text").Mode;
var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules;
var MatchingBraceOutdent = require("./matching_brace_outdent")
.MatchingBraceOutdent;
var WorkerClient = require("../worker/worker_client").WorkerClient;
var CssCompletions = require("./css_completions").CssCompletions;
var CssBehaviour = require("./behaviour/css").CssBehaviour;
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
var Mode = function() {
this.HighlightRules = CssHighlightRules;
this.$outdent = new MatchingBraceOutdent();
this.$behaviour = new CssBehaviour();
this.$completer = new CssCompletions();
this.foldingRules = new CStyleFoldMode();
};
oop.inherits(Mode, TextMode);
(function() {
this.foldingRules = "cStyle";
this.blockComment = { start: "/*", end: "*/" };
this.getNextLineIndent = function(state, line, tab) {
var indent = this.$getIndent(line);
var tokens = this.getTokenizer().getLineTokens(line, state).tokens;
if (tokens.length && tokens[tokens.length - 1].type == "comment") {
return indent;
}
var match = line.match(/^.*\{\s*$/);
if (match) {
indent += tab;
}
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.getCompletions = function(state, session, pos, prefix) {
return this.$completer.getCompletions(state, session, pos, prefix);
};
this.createWorker = function(session) {
var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker");
worker.attachToDocument(session.getDocument());
worker.on("annotate", function(e) {
session.setAnnotations(e.data);
});
worker.on("terminate", function() {
session.clearAnnotations();
});
return worker;
};
this.$id = "ace/mode/css";
}.call(Mode.prototype));
exports.Mode = Mode;
}
);
(function() {
ace.require(["ace/mode/css"], function(m) {
if (typeof module == "object" && typeof exports == "object" && module) {
module.exports = m;
}
});
})();