Commit 2b7b3b78 authored by Rafael Monnerat's avatar Rafael Monnerat

2010-08-15 rafael

* The initial version.

Integration of Bespin Text Editor (http://mozillalabs.com/bespin) with ERP5 Editor Field.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@37826 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent 402ad56b
<registered_skin_selection>
<skin_folder_selection>
<skin_folder>erp5_bespin</skin_folder>
<skin_selection>View</skin_selection>
</skin_folder_selection>
</registered_skin_selection>
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<global name="Folder" module="OFS.Folder"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_local_properties</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>erp5_bespin</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<global name="DTMLMethod" module="OFS.DTMLMethod"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>BespinEmbedded.css</string> </value>
</item>
<item>
<key> <string>_vars</string> </key>
<value>
<dictionary/>
</value>
</item>
<item>
<key> <string>globals</string> </key>
<value>
<dictionary/>
</value>
</item>
<item>
<key> <string>raw</string> </key>
<value> <string>.bespin-completion-panel {\n
font-family: Helvetica, Arial, sans-serif;\n
position: absolute;\n
cursor: default;\n
line-height: normal;\n
-moz-user-select: none;\n
-webkit-user-select: none;\n
}\n
\n
.bespin-completion-pointer {\n
position: absolute;\n
z-index: 2;\n
height: 21px;\n
width: 21px;\n
}\n
\n
.bespin-completion-pointer-up {\n
top: 1px;\n
border-top: solid #555 1px;\n
border-left: solid #555 1px;\n
background-image: -moz-linear-gradient(top left, #333333, #333333 50%, transparent 50%, transparent);\n
background-image: -webkit-gradient(linear, left top, right bottom, from(#333333), color-stop(0.5, #333333), color-stop(0.5, transparent), to(transparent));\n
-moz-transform: rotate(45deg);\n
-webkit-transform: rotate(45deg);\n
}\n
\n
.bespin-completion-pointer-down {\n
bottom: 1px;\n
border-top: solid #000 1px;\n
border-left: solid #000 1px;\n
background-image: -moz-linear-gradient(top left, #000, #000 50%, transparent 50%, transparent);\n
background-image: -webkit-gradient(linear, left top, right bottom, from(#000), color-stop(0.5, #000), color-stop(0.5, transparent), to(transparent));\n
-moz-transform: rotate(225deg);\n
-webkit-transform: rotate(225deg);\n
}\n
\n
.bespin-completion-bubble-outer {\n
position: relative;\n
z-index: 1;\n
margin: 11px 0px 11px 0px;\n
border-top: solid #555 1px;\n
-moz-border-radius: 8px;\n
-webkit-border-radius: 8px;\n
}\n
\n
.bespin-completion-bubble-inner {\n
position: relative;\n
z-index: 3;\n
padding: 6px;\n
background: -moz-linear-gradient(top, #333333, #000000);\n
background: -webkit-gradient(linear, center top, center bottom, from(#333333), to(#000000));\n
color: #ffffff;\n
font-size: 10.5pt;\n
-moz-border-radius: 8px;\n
-webkit-border-radius: 8px;\n
-moz-box-shadow: 0px 6px 16px 2px rgba(0, 0, 0, 0.5);\n
-webkit-box-shadow: 0px 6px 16px 2px rgba(0, 0, 0, 0.5);\n
}\n
\n
.bespin-completion-panel ul {\n
list-style: none;\n
margin: 0px;\n
padding: 0px;\n
}\n
\n
.bespin-completion-panel li {\n
text-indent: 0px;\n
margin: 0px;\n
padding: 6px 16px;\n
}\n
\n
.bespin-completion-highlight {\n
position: absolute;\n
z-index: -1;\n
background-image: -moz-linear-gradient(top, #3e59be, #312d80);\n
background-image: -webkit-gradient(linear, center top, center bottom, from(#3e59be), to(#312d80));\n
border: solid rgba(37, 34, 91, 1.0) 1px;\n
-moz-border-radius: 6px;\n
-webkit-border-radius: 6px;\n
}\n
\n
.bespin-completion-kind {\n
display: block;\n
float: left;\n
top: 0px;\n
left: 0px;\n
width: 8px;\n
height: 8px;\n
padding: 2px;\n
margin: 0px 5px 0px 0px;\n
font-size: 6.5pt;\n
font-weight: bold;\n
text-transform: uppercase;\n
text-align: center;\n
-moz-border-radius: 3px;\n
-webkit-border-radius: 3px;\n
}\n
\n
.bespin-completion-kind-m {\n
background-color: maroon;\n
}\n
\n
.bespin-completion-kind-f {\n
background-color: green;\n
}\n
\n
.bespin-completion-top-row {\n
position: relative;\n
}\n
\n
.bespin-completion-second-row {\n
margin: 6px 0px 0px 17px;\n
display: none;\n
}\n
\n
.bespin-completion-ident {\n
font-weight: bold;\n
}\n
\n
.bespin-completion-container {\n
color: #a0a0a0;\n
}\n
\n
</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<global name="DTMLMethod" module="OFS.DTMLMethod"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>BespinWorker.js</string> </value>
</item>
<item>
<key> <string>_vars</string> </key>
<value>
<dictionary/>
</value>
</item>
<item>
<key> <string>globals</string> </key>
<value>
<dictionary/>
</value>
</item>
<item>
<key> <string>raw</string> </key>
<value> <string encoding="cdata"><![CDATA[
;bespin.tiki.register("::python", {\n
name: "python",\n
dependencies: { "syntax_manager": "0.0.0" }\n
});\n
bespin.tiki.module("python:index",function(require,exports,module) {\n
/* ***** BEGIN LICENSE BLOCK *****\n
* Version: MPL 1.1/GPL 2.0/LGPL 2.1\n
*\n
* The contents of this file are subject to the Mozilla Public License Version\n
* 1.1 (the "License"); you may not use this file except in compliance with\n
* the License. You may obtain a copy of the License at\n
* http://www.mozilla.org/MPL/\n
*\n
* Software distributed under the License is distributed on an "AS IS" basis,\n
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License\n
* for the specific language governing rights and limitations under the\n
* License.\n
*\n
* The Original Code is Bespin.\n
*\n
* The Initial Developer of the Original Code is\n
* Mozilla.\n
* Portions created by the Initial Developer are Copyright (C) 2009\n
* the Initial Developer. All Rights Reserved.\n
*\n
* Contributor(s):\n
* Bespin Team (bespin@mozilla.com)\n
* Scott Ellis (mail@scottellis.com.au)\n
*\n
* Alternatively, the contents of this file may be used under the terms of\n
* either the GNU General Public License Version 2 or later (the "GPL"), or\n
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),\n
* in which case the provisions of the GPL or the LGPL are applicable instead\n
* of those above. If you wish to allow use of your version of this file only\n
* under the terms of either the GPL or the LGPL, and not to allow others to\n
* use your version of this file under the terms of the MPL, indicate your\n
* decision by deleting the provisions above and replace them with the notice\n
* and other provisions required by the GPL or the LGPL. If you do not delete\n
* the provisions above, a recipient may use your version of this file under\n
* the terms of any one of the MPL, the GPL or the LGPL.\n
*\n
* ***** END LICENSE BLOCK ***** */\n
\n
"define metadata";\n
({\n
"description": "Python syntax highlighter",\n
"dependencies": { "syntax_manager": "0.0.0" },\n
"environments": { "worker": true },\n
"provides": [\n
{\n
"ep": "syntax",\n
"name": "py",\n
"pointer": "#PySyntax",\n
"fileexts": [ "py" ]\n
}\n
]\n
});\n
"end";\n
\n
//var SC = require(\'sproutcore/runtime\').SC;\n
//var Promise = require(\'bespin:promise\').Promise;\n
//var StandardSyntax = require(\'syntax_manager:controllers/standardsyntax\').StandardSyntax;\n
var StandardSyntax = require(\'standard_syntax\').StandardSyntax;\n
\n
var states = {\n
start: [\n
{\n
\t regex: /^(?:and|as|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|raise|return|try|while|with|yield)(?![a-zA-Z0-9_])/,\n
\t tag: \'keyword\'\n
},\n
{\n
\t regex: /^[A-Za-z_][A-Za-z0-9_]*/,\n
\t tag: \'identifier\'\n
},\n
{\n
\t regex: /^[^\'"#\\/ \\tA-Za-z0-9_]+/,\n
\t tag: \'plain\'\n
},\n
{\n
\t regex: /^[ \\t]+/,\n
\t tag: \'plain\'\n
},\n
{\n
\t regex: /^"""/,\n
\t tag: \'string\',\n
\t then: \'qqqstring\'\n
},\n
{\n
\t regex: /^\'/,\n
\t tag: \'string\',\n
\t then: \'qstring\'\n
},\n
{\n
\t regex: /^"/,\n
\t tag: \'string\',\n
\t then: \'qqstring\'\n
},\n
{\n
\t regex: /^#.*/,\n
\t tag: \'comment\'\n
},\n
{\n
\t regex: /^./,\n
\t tag: \'plain\'\n
}\n
],\n
\n
qstring: [\n
{\n
\t regex: /^\'/,\n
\t tag: \'string\',\n
\t then: \'start\'\n
},\n
{\n
\t regex: /^(?:\\\\.|[^\'\\\\])+/,\n
\t tag: \'string\'\n
}\n
],\n
\n
qqstring: [\n
{\n
\t regex: /^"/,\n
\t tag: \'string\',\n
\t then: \'start\'\n
},\n
{\n
\t regex: /^(?:\\\\.|[^"\\\\])+/,\n
\t tag: \'string\'\n
}\n
],\n
\n
qqqstring: [\n
{\n
\t regex: /^"""/,\n
\t tag: \'string\',\n
\t then: \'start\'\n
},\n
{\n
\t regex: /^./,\n
\t tag: \'string\'\n
}\n
]\n
\n
};\n
\n
exports.PySyntax = new StandardSyntax(states);\n
\n
\n
\n
});\n
;bespin.tiki.register("::syntax_worker", {\n
name: "syntax_worker",\n
dependencies: { "syntax_directory": "0.0.0", "underscore": "0.0.0" }\n
});\n
bespin.tiki.module("syntax_worker:index",function(require,exports,module) {\n
/* ***** BEGIN LICENSE BLOCK *****\n
* Version: MPL 1.1/GPL 2.0/LGPL 2.1\n
*\n
* The contents of this file are subject to the Mozilla Public License Version\n
* 1.1 (the "License"); you may not use this file except in compliance with\n
* the License. You may obtain a copy of the License at\n
* http://www.mozilla.org/MPL/\n
*\n
* Software distributed under the License is distributed on an "AS IS" basis,\n
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License\n
* for the specific language governing rights and limitations under the\n
* License.\n
*\n
* The Original Code is Bespin.\n
*\n
* The Initial Developer of the Original Code is\n
* Mozilla.\n
* Portions created by the Initial Developer are Copyright (C) 2009\n
* the Initial Developer. All Rights Reserved.\n
*\n
* Contributor(s):\n
* Bespin Team (bespin@mozilla.com)\n
*\n
* Alternatively, the contents of this file may be used under the terms of\n
* either the GNU General Public License Version 2 or later (the "GPL"), or\n
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),\n
* in which case the provisions of the GPL or the LGPL are applicable instead\n
* of those above. If you wish to allow use of your version of this file only\n
* under the terms of either the GPL or the LGPL, and not to allow others to\n
* use your version of this file under the terms of the MPL, indicate your\n
* decision by deleting the provisions above and replace them with the notice\n
* and other provisions required by the GPL or the LGPL. If you do not delete\n
* the provisions above, a recipient may use your version of this file under\n
* the terms of any one of the MPL, the GPL or the LGPL.\n
*\n
* ***** END LICENSE BLOCK ***** */\n
\n
"define metadata";\n
({\n
"description": "Coordinates multiple syntax engines",\n
"environments": { "worker": true },\n
"dependencies": { "syntax_directory": "0.0.0", "underscore": "0.0.0" }\n
});\n
"end";\n
\n
var promise = require(\'bespin:promise\');\n
var _ = require(\'underscore\')._;\n
var console = require(\'bespin:console\').console;\n
var syntaxDirectory = require(\'syntax_directory\').syntaxDirectory;\n
\n
var syntaxWorker = {\n
engines: {},\n
\n
annotate: function(state, lines, range) {\n
function splitParts(str) { return str.split(":"); }\n
function saveState() {\n
states.push(_(stateStack).invoke(\'join\', ":").join(" "));\n
}\n
\n
var engines = this.engines;\n
var states = [], attrs = [], symbols = [];\n
var stateStack = _(state.split(" ")).map(splitParts);\n
\n
_(lines).each(function(line, offset) {\n
saveState();\n
\n
var lineAttrs = [], lineSymbols = {};\n
var col = 0;\n
while (col < line.length) {\n
// Check for the terminator string.\n
// FIXME: This is wrong. It should check *inside* the token\n
// that was just parsed as well.\n
var curState;\n
while (true) {\n
curState = _(stateStack).last();\n
if (curState.length < 3) {\n
break;\n
}\n
\n
var term = curState[2];\n
if (line.substring(col, col + term.length) !== term) {\n
break;\n
}\n
\n
stateStack.pop();\n
}\n
\n
var context = curState[0];\n
var result = engines[context].get(curState, line, col);\n
var token;\n
if (result == null) {\n
token = {\n
state: \'plain\',\n
tag: \'plain\',\n
start: col,\n
end: line.length\n
};\n
} else {\n
stateStack[stateStack.length - 1] = result.state;\n
if (result.hasOwnProperty(\'newContext\')) {\n
stateStack.push(result.newContext);\n
}\n
\n
token = result.token;\n
\n
var sym = result.symbol;\n
if (sym != null) {\n
lineSymbols["-" + sym[0]] = sym[1];\n
}\n
}\n
\n
lineAttrs.push(token);\n
col = token.end;\n
}\n
\n
attrs.push(lineAttrs);\n
symbols.push(lineSymbols);\n
});\n
\n
saveState();\n
\n
return { states: states, attrs: attrs, symbols: symbols };\n
},\n
\n
loadSyntax: function(syntaxName) {\n
var pr = new promise.Promise;\n
\n
var engines = this.engines;\n
if (engines.hasOwnProperty(syntaxName)) {\n
pr.resolve();\n
return pr;\n
}\n
\n
var info = syntaxDirectory.get(syntaxName);\n
if (info == null) {\n
throw new Error(\'No syntax engine installed for syntax "\' +\n
syntaxName + \'".\');\n
}\n
\n
info.extension.load().then(function(engine) {\n
engines[syntaxName] = engine;\n
\n
var subsyntaxes = engine.subsyntaxes;\n
if (subsyntaxes == null) {\n
pr.resolve();\n
return;\n
}\n
\n
var pr2 = promise.group(_(subsyntaxes).map(this.loadSyntax, this));\n
pr2.then(_(pr.resolve).bind(pr));\n
}.bind(this));\n
\n
return pr;\n
}\n
};\n
\n
exports.syntaxWorker = syntaxWorker;\n
\n
\n
});\n
;bespin.tiki.register("::stylesheet", {\n
name: "stylesheet",\n
dependencies: { "standard_syntax": "0.0.0" }\n
});\n
bespin.tiki.module("stylesheet:index",function(require,exports,module) {\n
/* ***** BEGIN LICENSE BLOCK *****\n
* Version: MPL 1.1/GPL 2.0/LGPL 2.1\n
*\n
* The contents of this file are subject to the Mozilla Public License Version\n
* 1.1 (the "License"); you may not use this file except in compliance with\n
* the License. You may obtain a copy of the License at\n
* http://www.mozilla.org/MPL/\n
*\n
* Software distributed under the License is distributed on an "AS IS" basis,\n
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License\n
* for the specific language governing rights and limitations under the\n
* License.\n
*\n
* The Original Code is Bespin.\n
*\n
* The Initial Developer of the Original Code is\n
* Mozilla.\n
* Portions created by the Initial Developer are Copyright (C) 2009\n
* the Initial Developer. All Rights Reserved.\n
*\n
* Contributor(s):\n
* Bespin Team (bespin@mozilla.com)\n
*\n
* Alternatively, the contents of this file may be used under the terms of\n
* either the GNU General Public License Version 2 or later (the "GPL"), or\n
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),\n
* in which case the provisions of the GPL or the LGPL are applicable instead\n
* of those above. If you wish to allow use of your version of this file only\n
* under the terms of either the GPL or the LGPL, and not to allow others to\n
* use your version of this file under the terms of the MPL, indicate your\n
* decision by deleting the provisions above and replace them with the notice\n
* and other provisions required by the GPL or the LGPL. If you do not delete\n
* the provisions above, a recipient may use your version of this file under\n
* the terms of any one of the MPL, the GPL or the LGPL.\n
*\n
* ***** END LICENSE BLOCK ***** */\n
\n
"define metadata";\n
({\n
"description": "CSS syntax highlighter",\n
"dependencies": {\n
"standard_syntax": "0.0.0"\n
},\n
"environments": {\n
"worker": true\n
},\n
"provides": [\n
{\n
"ep": "syntax",\n
"name": "css",\n
"pointer": "#CSSSyntax",\n
"fileexts": [ "css", "less" ]\n
}\n
]\n
});\n
"end";\n
\n
var Promise = require(\'bespin:promise\').Promise;\n
var StandardSyntax = require(\'standard_syntax\').StandardSyntax;\n
\n
var COMMENT_REGEXP = {\n
regex: /^\\/\\/.*/,\n
tag: \'comment\'\n
};\n
\n
var createCommentState = function(jumpBackState) {\n
return [\n
{\n
regex: /^[^*\\/]+/,\n
tag: \'comment\'\n
},\n
{\n
regex: /^\\*\\//,\n
tag: \'comment\',\n
then: jumpBackState\n
},\n
{\n
regex: /^[*\\/]/,\n
tag: \'comment\'\n
}\n
];\n
};\n
\n
var states = {\n
start: [\n
{\n
//style names\n
regex: /^([a-zA-Z-\\s]*)(?:\\:)/,\n
tag: \'identifier\',\n
then: \'style\'\n
},\n
{\n
//tags\n
regex: /^([\\w]+)(?![a-zA-Z0-9_:])([,|{]*?)(?!;)(?!(;|%))/,\n
tag: \'keyword\',\n
then: \'header\'\n
},\n
{\n
//id\n
regex: /^#([a-zA-Z]*)(?=.*{*?)/,\n
tag: \'keyword\',\n
then: \'header\'\n
},\n
{\n
//classes\n
regex: /^\\.([a-zA-Z]*)(?=.*{*?)/,\n
tag: \'keyword\',\n
then: \'header\'\n
},\n
COMMENT_REGEXP,\n
{\n
regex: /^\\/\\*/,\n
tag: \'comment\',\n
then: \'comment\'\n
},\n
{\n
regex: /^./,\n
tag: \'plain\'\n
}\n
],\n
\n
header: [\n
{\n
regex: /^[^{|\\/\\/|\\/\\*]*/,\n
tag: \'keyword\',\n
then: \'start\'\n
},\n
COMMENT_REGEXP,\n
{\n
regex: /^\\/\\*/,\n
tag: \'comment\',\n
then: \'comment_header\'\n
}\n
],\n
\n
style: [\n
{\n
regex: /^[^;|}|\\/\\/|\\/\\*]+/,\n
tag: \'plain\'\n
},\n
{\n
regex: /^;|}/,\n
tag: \'plain\',\n
then: \'start\'\n
},\n
COMMENT_REGEXP,\n
{\n
regex: /^\\/\\*/,\n
tag: \'comment\',\n
then: \'comment_style\'\n
}\n
],\n
\n
comment: createCommentState(\'start\'),\n
comment_header: createCommentState(\'header\'),\n
comment_style: createCommentState(\'style\')\n
};\n
\n
exports.CSSSyntax = new StandardSyntax(states);\n
\n
});\n
;bespin.tiki.register("::html", {\n
name: "html",\n
dependencies: { "standard_syntax": "0.0.0" }\n
});\n
bespin.tiki.module("html:index",function(require,exports,module) {\n
/* ***** BEGIN LICENSE BLOCK *****\n
* Version: MPL 1.1/GPL 2.0/LGPL 2.1\n
*\n
* The contents of this file are subject to the Mozilla Public License Version\n
* 1.1 (the "License"); you may not use this file except in compliance with\n
* the License. You may obtain a copy of the License at\n
* http://www.mozilla.org/MPL/\n
*\n
* Software distributed under the License is distributed on an "AS IS" basis,\n
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License\n
* for the specific language governing rights and limitations under the\n
* License.\n
*\n
* The Original Code is Bespin.\n
*\n
* The Initial Developer of the Original Code is\n
* Mozilla.\n
* Portions created by the Initial Developer are Copyright (C) 2009\n
* the Initial Developer. All Rights Reserved.\n
*\n
* Contributor(s):\n
* Bespin Team (bespin@mozilla.com)\n
*\n
* Alternatively, the contents of this file may be used under the terms of\n
* either the GNU General Public License Version 2 or later (the "GPL"), or\n
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),\n
* in which case the provisions of the GPL or the LGPL are applicable instead\n
* of those above. If you wish to allow use of your version of this file only\n
* under the terms of either the GPL or the LGPL, and not to allow others to\n
* use your version of this file under the terms of the MPL, indicate your\n
* decision by deleting the provisions above and replace them with the notice\n
* and other provisions required by the GPL or the LGPL. If you do not delete\n
* the provisions above, a recipient may use your version of this file under\n
* the terms of any one of the MPL, the GPL or the LGPL.\n
*\n
* ***** END LICENSE BLOCK ***** */\n
\n
"define metadata";\n
({\n
"description": "HTML syntax highlighter",\n
"dependencies": { "standard_syntax": "0.0.0" },\n
"environments": { "worker": true },\n
"provides": [\n
{\n
"ep": "syntax",\n
"name": "html",\n
"pointer": "#HTMLSyntax",\n
"fileexts": [ "htm", "html" ]\n
}\n
]\n
});\n
"end";\n
\n
var StandardSyntax = require(\'standard_syntax\').StandardSyntax;\n
\n
var states = {};\n
\n
//\n
// This parser is modeled on the WHATWG HTML 5 specification, with some\n
// simplifications to improve performance. See the relevant spec here:\n
//\n
// http://www.whatwg.org/specs/web-apps/current-work/\n
//\n
\n
var createTagStates = function(prefix, interiorActions) {\n
states[prefix + \'_beforeAttrName\'] = [\n
{\n
regex: /^\\s+/,\n
tag: \'plain\'\n
},\n
{\n
regex: /^\\//,\n
tag: \'operator\',\n
then: prefix + \'_selfClosingStartTag\'\n
},\n
{\n
regex: /^>/,\n
tag: \'operator\',\n
then: interiorActions\n
},\n
{\n
regex: /^./,\n
tag: \'keyword\',\n
then: prefix + \'_attrName\'\n
}\n
];\n
\n
// 10.2.4.35 Attribute name state\n
states[prefix + \'_attrName\'] = [\n
{\n
regex: /^\\s+/,\n
tag: \'plain\',\n
then: prefix + \'_afterAttrName\'\n
},\n
{\n
regex: /^\\//,\n
tag: \'operator\',\n
then: prefix + \'_selfClosingStartTag\'\n
},\n
{\n
regex: /^=/,\n
tag: \'operator\',\n
then: prefix + \'_beforeAttrValue\'\n
},\n
{\n
regex: /^>/,\n
tag: \'operator\',\n
then: interiorActions\n
},\n
{\n
regex: /^["\'<]+/,\n
tag: \'error\'\n
},\n
{\n
regex: /^[^ \\t\\n\\/=>"\'<]+/,\n
tag: \'keyword\'\n
}\n
];\n
\n
states[prefix + \'_afterAttrName\'] = [\n
{\n
regex: /^\\s+/,\n
tag: \'plain\'\n
},\n
{\n
regex: /^\\//,\n
tag: \'operator\',\n
then: prefix + \'_selfClosingStartTag\'\n
},\n
{\n
regex: /^=/,\n
tag: \'operator\',\n
then: prefix + \'_beforeAttrValue\'\n
},\n
{\n
regex: /^>/,\n
tag: \'operator\',\n
then: interiorActions\n
},\n
{\n
regex: /^./,\n
tag: \'keyword\',\n
then: prefix + \'_attrName\'\n
}\n
];\n
\n
states[prefix + \'_beforeAttrValue\'] = [\n
{\n
regex: /^\\s+/,\n
tag: \'plain\'\n
},\n
{\n
regex: /^"/,\n
tag: \'string\',\n
then: prefix + \'_attrValueQQ\'\n
},\n
{\n
regex: /^(?=&)/,\n
tag: \'plain\',\n
then: prefix + \'_attrValueU\'\n
},\n
{\n
regex: /^\'/,\n
tag: \'string\',\n
then: prefix + \'_attrValueQ\'\n
},\n
{\n
regex: /^>/,\n
tag: \'error\',\n
then: interiorActions\n
},\n
{\n
regex: /^./,\n
tag: \'string\',\n
then: prefix + \'_attrValueU\'\n
}\n
];\n
\n
states[prefix + \'_attrValueQQ\'] = [\n
{\n
regex: /^"/,\n
tag: \'string\',\n
then: prefix + \'_afterAttrValueQ\'\n
},\n
{\n
regex: /^[^"]+/,\n
tag: \'string\'\n
}\n
];\n
\n
states[prefix + \'_attrValueQ\'] = [\n
{\n
regex: /^\'/,\n
tag: \'string\',\n
then: prefix + \'_afterAttrValueQ\'\n
},\n
{\n
regex: /^[^\']+/,\n
tag: \'string\'\n
}\n
];\n
\n
states[prefix + \'_attrValueU\'] = [\n
{\n
regex: /^\\s/,\n
tag: \'string\',\n
then: prefix + \'_beforeAttrName\'\n
},\n
{\n
regex: /^>/,\n
tag: \'operator\',\n
then: interiorActions\n
},\n
{\n
regex: /[^ \\t\\n>]+/,\n
tag: \'string\'\n
}\n
];\n
\n
states[prefix + \'_afterAttrValueQ\'] = [\n
{\n
regex: /^\\s/,\n
tag: \'plain\',\n
then: prefix + \'_beforeAttrName\'\n
},\n
{\n
regex: /^\\//,\n
tag: \'operator\',\n
then: prefix + \'_selfClosingStartTag\'\n
},\n
{\n
regex: /^>/,\n
tag: \'operator\',\n
then: interiorActions\n
},\n
{\n
regex: /^(?=.)/,\n
tag: \'operator\',\n
then: prefix + \'_beforeAttrName\'\n
}\n
];\n
\n
// 10.2.4.43 Self-closing start tag state\n
states[prefix + \'_selfClosingStartTag\'] = [\n
{\n
regex: /^>/,\n
tag: \'operator\',\n
then: \'start\'\n
},\n
{\n
regex: /^./,\n
tag: \'error\',\n
then: prefix + \'_beforeAttrName\'\n
}\n
];\n
};\n
\n
states = {\n
// 10.2.4.1 Data state\n
start: [\n
{\n
regex: /^[^<]+/,\n
tag: \'plain\'\n
},\n
{\n
regex: /^<!--/,\n
tag: \'comment\',\n
then: \'commentStart\'\n
},\n
{\n
regex: /^<!/,\n
tag: \'directive\',\n
then: \'markupDeclarationOpen\'\n
},\n
{\n
regex: /^<\\?/,\n
tag: \'comment\',\n
then: \'bogusComment\'\n
},\n
{\n
regex: /^</,\n
tag: \'operator\',\n
then: \'tagOpen\'\n
}\n
],\n
\n
// 10.2.4.8 Tag open state\n
tagOpen: [\n
{\n
regex: /^\\//,\n
tag: \'operator\',\n
then: \'endTagOpen\'\n
},\n
{\n
regex: /^script/i,\n
tag: \'keyword\',\n
then: \'script_beforeAttrName\'\n
},\n
{\n
regex: /^[a-zA-Z]/,\n
tag: \'keyword\',\n
then: \'tagName\'\n
},\n
{\n
regex: /^(?=.)/,\n
tag: \'plain\',\n
then: \'start\'\n
}\n
],\n
\n
// 10.2.4.6 Script data state\n
scriptData: [\n
{\n
regex: /^<(?=\\/script>)/i,\n
tag: \'operator\',\n
then: \'tagOpen\'\n
},\n
{\n
regex: /^[^<]+/,\n
tag: \'plain\'\n
}\n
],\n
\n
// 10.2.4.9 End tag open state\n
endTagOpen: [\n
{\n
regex: /^[a-zA-Z]/,\n
tag: \'keyword\',\n
then: \'tagName\'\n
},\n
{\n
regex: /^>/,\n
tag: \'error\',\n
then: \'start\'\n
},\n
{\n
regex: /^./,\n
tag: \'error\',\n
then: \'bogusComment\'\n
}\n
],\n
\n
// 10.2.4.10 Tag name state\n
tagName: [\n
{\n
regex: /^\\s+/,\n
tag: \'plain\',\n
then: \'normal_beforeAttrName\'\n
},\n
{\n
regex: /^\\//,\n
tag: \'operator\',\n
then: \'normal_selfClosingStartTag\'\n
},\n
{\n
regex: /^>/,\n
tag: \'operator\',\n
then: \'start\'\n
},\n
{\n
regex: /^[^ \\t\\n\\/>]+/,\n
tag: \'keyword\'\n
}\n
],\n
\n
// 10.2.4.44 Bogus comment state\n
bogusComment: [\n
{\n
regex: /^[^>]+/,\n
tag: \'comment\'\n
},\n
{\n
regex: /^>/,\n
tag: \'comment\',\n
then: \'start\'\n
}\n
],\n
\n
// 10.2.4.45 Markup declaration open state\n
markupDeclarationOpen: [\n
{\n
regex: /^doctype/i,\n
tag: \'directive\',\n
then: \'doctype\'\n
},\n
{\n
regex: /^(?=.)/,\n
tag: \'comment\',\n
then: \'bogusComment\'\n
}\n
],\n
\n
// 10.2.4.46 Comment start state\n
commentStart: [\n
{\n
regex: /^-->/,\n
tag: \'comment\',\n
then: \'start\'\n
},\n
{\n
regex: /^[^-]+/,\n
tag: \'comment\'\n
}\n
],\n
\n
// 10.2.4.53 DOCTYPE state\n
doctype: [\n
{\n
regex: /^\\s/,\n
tag: \'plain\',\n
then: \'beforeDoctypeName\'\n
},\n
{\n
regex: /^./,\n
tag: \'error\',\n
then: \'beforeDoctypeName\'\n
}\n
],\n
\n
// 10.2.4.54 Before DOCTYPE name state\n
beforeDoctypeName: [\n
{\n
regex: /^\\s+/,\n
tag: \'plain\'\n
},\n
{\n
regex: /^>/,\n
tag: \'error\',\n
then: \'start\'\n
},\n
{\n
regex: /^./,\n
tag: \'directive\',\n
then: \'doctypeName\'\n
}\n
],\n
\n
// 10.2.4.55 DOCTYPE name state\n
doctypeName: [\n
{\n
regex: /^\\s/,\n
tag: \'plain\',\n
then: \'afterDoctypeName\'\n
},\n
{\n
regex: /^>/,\n
tag: \'directive\',\n
then: \'start\'\n
},\n
{\n
regex: /^[^ \\t\\n>]+/,\n
tag: \'directive\'\n
}\n
],\n
\n
// 10.2.4.56 After DOCTYPE name state\n
afterDoctypeName: [\n
{\n
regex: /^\\s+/,\n
tag: \'directive\'\n
},\n
{\n
regex: /^>/,\n
tag: \'directive\',\n
then: \'start\'\n
},\n
{\n
regex: /^public/i,\n
tag: \'directive\',\n
then: \'afterDoctypePublicKeyword\'\n
},\n
{\n
regex: /^system/i,\n
tag: \'directive\',\n
then: \'afterDoctypeSystemKeyword\'\n
},\n
{\n
regex: /^./,\n
tag: \'error\',\n
then: \'bogusDoctype\'\n
}\n
],\n
\n
// 10.2.4.57 After DOCTYPE public keyword state\n
afterDoctypePublicKeyword: [\n
{\n
regex: /^\\s+/,\n
tag: \'plain\',\n
then: \'beforeDoctypePublicId\'\n
},\n
{\n
regex: /^"/,\n
tag: \'error\',\n
then: \'doctypePublicIdQQ\'\n
},\n
{\n
regex: /^\'/,\n
tag: \'error\',\n
then: \'doctypePublicIdQ\'\n
},\n
{\n
regex: /^>/,\n
tag: \'error\',\n
then: \'start\'\n
},\n
{\n
regex: /^./,\n
tag: \'error\',\n
then: \'bogusDoctype\'\n
}\n
],\n
\n
// 10.2.4.58 Before DOCTYPE public identifier\n
beforeDoctypePublicId: [\n
{\n
regex: /^\\s+/,\n
tag: \'plain\'\n
},\n
{\n
regex: /^"/,\n
tag: \'string\',\n
then: \'doctypePublicIdQQ\'\n
},\n
{\n
regex: /^\'/,\n
tag: \'string\',\n
then: \'doctypePublicIdQ\'\n
},\n
{\n
regex: /^>/,\n
tag: \'error\',\n
then: \'start\'\n
},\n
{\n
regex: /^./,\n
tag: \'error\',\n
then: \'bogusDoctype\'\n
}\n
],\n
\n
// 10.2.4.59 DOCTYPE public identifier (double-quoted) state\n
doctypePublicIdQQ: [\n
{\n
regex: /^"/,\n
tag: \'string\',\n
then: \'afterDoctypePublicId\'\n
},\n
{\n
regex: /^>/,\n
tag: \'error\',\n
then: \'start\'\n
},\n
{\n
regex: /^[^>"]+/,\n
tag: \'string\'\n
}\n
],\n
\n
// 10.2.4.60 DOCTYPE public identifier (single-quoted) state\n
doctypePublicIdQ: [\n
{\n
regex: /^\'/,\n
tag: \'string\',\n
then: \'afterDoctypePublicId\'\n
},\n
{\n
regex: /^>/,\n
tag: \'error\',\n
then: \'start\'\n
},\n
{\n
regex: /^[^>\']+/,\n
tag: \'string\'\n
}\n
],\n
\n
// 10.2.4.61 After DOCTYPE public identifier state\n
afterDoctypePublicId: [\n
{\n
regex: /^\\s/,\n
tag: \'plain\',\n
then: \'betweenDoctypePublicAndSystemIds\'\n
},\n
{\n
regex: /^>/,\n
tag: \'directive\',\n
then: \'start\'\n
},\n
{\n
regex: /^"/,\n
tag: \'error\',\n
then: \'doctypeSystemIdQQ\'\n
},\n
{\n
regex: /^\'/,\n
tag: \'error\',\n
then: \'doctypeSystemIdQ\'\n
},\n
{\n
regex: /^./,\n
tag: \'error\',\n
then: \'bogusDoctype\'\n
}\n
],\n
\n
// 10.2.4.62 Between DOCTYPE public and system identifiers state\n
betweenDoctypePublicAndSystemIds: [\n
{\n
regex: /^\\s+/,\n
tag: \'plain\',\n
then: \'betweenDoctypePublicAndSystemIds\'\n
},\n
{\n
regex: /^>/,\n
tag: \'directive\',\n
then: \'start\'\n
},\n
{\n
regex: /^"/,\n
tag: \'string\',\n
then: \'doctypeSystemIdQQ\'\n
},\n
{\n
regex: /^\'/,\n
tag: \'string\',\n
then: \'doctypeSystemIdQ\'\n
},\n
{\n
regex: /^./,\n
tag: \'error\',\n
then: \'bogusDoctype\'\n
}\n
],\n
\n
// 10.2.4.63 After DOCTYPE system keyword state\n
afterDoctypeSystemKeyword: [\n
{\n
regex: /^\\s/,\n
tag: \'plain\',\n
then: \'beforeDoctypeSystemId\'\n
},\n
{\n
regex: /^"/,\n
tag: \'error\',\n
then: \'doctypeSystemIdQQ\'\n
},\n
{\n
regex: /^\'/,\n
tag: \'error\',\n
then: \'doctypeSystemIdQ\'\n
},\n
{\n
regex: /^>/,\n
tag: \'error\',\n
then: \'start\'\n
},\n
{\n
regex: /^./,\n
tag: \'error\',\n
then: \'bogusDoctype\'\n
}\n
],\n
\n
// 10.2.4.64 Before DOCTYPE system identifier state\n
beforeDoctypeSystemId: [\n
{\n
regex: /^\\s+/,\n
tag: \'plain\',\n
then: \'beforeDoctypeSystemId\'\n
},\n
{\n
regex: /^"/,\n
tag: \'string\',\n
then: \'doctypeSystemIdQQ\'\n
},\n
{\n
regex: /^\'/,\n
tag: \'string\',\n
then: \'doctypeSystemIdQ\'\n
},\n
{\n
regex: /^>/,\n
tag: \'error\',\n
then: \'start\'\n
},\n
{\n
regex: /./,\n
tag: \'error\',\n
then: \'bogusDoctype\'\n
}\n
],\n
\n
// 10.2.4.65 DOCTYPE system identifier (double-quoted) state\n
doctypeSystemIdQQ: [\n
{\n
regex: /^"/,\n
tag: \'string\',\n
then: \'afterDoctypeSystemId\'\n
},\n
{\n
regex: /^>/,\n
tag: \'error\',\n
then: \'start\'\n
},\n
{\n
regex: /^[^">]+/,\n
tag: \'string\'\n
}\n
],\n
\n
// 10.2.4.66 DOCTYPE system identifier (single-quoted) state\n
doctypeSystemIdQ: [\n
{\n
regex: /^\'/,\n
tag: \'string\',\n
then: \'afterDoctypeSystemId\'\n
},\n
{\n
regex: /^>/,\n
tag: \'error\',\n
then: \'start\'\n
},\n
{\n
regex: /^[^\'>]+/,\n
tag: \'string\'\n
}\n
],\n
\n
// 10.2.4.67 After DOCTYPE system identifier state\n
afterDoctypeSystemId: [\n
{\n
regex: /^\\s+/,\n
tag: \'plain\'\n
},\n
{\n
regex: /^>/,\n
tag: \'directive\',\n
then: \'start\'\n
},\n
{\n
regex: /^./,\n
tag: \'error\',\n
then: \'bogusDoctype\'\n
}\n
],\n
\n
// 10.2.4.68 Bogus DOCTYPE state\n
bogusDoctype: [\n
{\n
regex: /^>/,\n
tag: \'directive\',\n
then: \'start\'\n
},\n
{\n
regex: /^[^>]+/,\n
tag: \'directive\'\n
}\n
]\n
};\n
\n
createTagStates(\'normal\', \'start\');\n
createTagStates(\'script\', \'start js:start:</script>\');\n
\n
/**\n
* This syntax engine exposes an HTML parser modeled on the WHATWG HTML 5\n
* specification.\n
*/\n
exports.HTMLSyntax = new StandardSyntax(states, [ \'js\' ]);\n
\n
\n
});\n
;bespin.tiki.register("::js_syntax", {\n
name: "js_syntax",\n
dependencies: { "standard_syntax": "0.0.0" }\n
});\n
bespin.tiki.module("js_syntax:index",function(require,exports,module) {\n
/* ***** BEGIN LICENSE BLOCK *****\n
* Version: MPL 1.1/GPL 2.0/LGPL 2.1\n
*\n
* The contents of this file are subject to the Mozilla Public License Version\n
* 1.1 (the "License"); you may not use this file except in compliance with\n
* the License. You may obtain a copy of the License at\n
* http://www.mozilla.org/MPL/\n
*\n
* Software distributed under the License is distributed on an "AS IS" basis,\n
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License\n
* for the specific language governing rights and limitations under the\n
* License.\n
*\n
* The Original Code is Bespin.\n
*\n
* The Initial Developer of the Original Code is\n
* Mozilla.\n
* Portions created by the Initial Developer are Copyright (C) 2009\n
* the Initial Developer. All Rights Reserved.\n
*\n
* Contributor(s):\n
* Bespin Team (bespin@mozilla.com)\n
*\n
* Alternatively, the contents of this file may be used under the terms of\n
* either the GNU General Public License Version 2 or later (the "GPL"), or\n
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),\n
* in which case the provisions of the GPL or the LGPL are applicable instead\n
* of those above. If you wish to allow use of your version of this file only\n
* under the terms of either the GPL or the LGPL, and not to allow others to\n
* use your version of this file under the terms of the MPL, indicate your\n
* decision by deleting the provisions above and replace them with the notice\n
* and other provisions required by the GPL or the LGPL. If you do not delete\n
* the provisions above, a recipient may use your version of this file under\n
* the terms of any one of the MPL, the GPL or the LGPL.\n
*\n
* ***** END LICENSE BLOCK ***** */\n
\n
"define metadata";\n
({\n
"description": "JavaScript syntax highlighter",\n
"dependencies": { "standard_syntax": "0.0.0" },\n
"environments": { "worker": true },\n
"provides": [\n
{\n
"ep": "syntax",\n
"name": "js",\n
"pointer": "#JSSyntax",\n
"fileexts": [ "js", "json" ]\n
}\n
]\n
});\n
"end";\n
\n
var StandardSyntax = require(\'standard_syntax\').StandardSyntax;\n
\n
var states = {\n
start: [\n
{\n
regex: /^var(?=\\s*([A-Za-z_$][A-Za-z0-9_$]*)\\s*=\\s*require\\s*\\(\\s*[\'"]([^\'"]*)[\'"]\\s*\\)\\s*[;,])/,\n
tag: \'keyword\',\n
symbol: \'$1:$2\'\n
},\n
{\n
regex: /^(?:break|case|catch|continue|default|delete|do|else|false|finally|for|function|if|in|instanceof|let|new|null|return|switch|this|throw|true|try|typeof|var|void|while|with)(?![a-zA-Z0-9_])/,\n
tag: \'keyword\'\n
},\n
{\n
regex: /^[A-Za-z_][A-Za-z0-9_]*/,\n
tag: \'plain\'\n
},\n
{\n
regex: /^[^\'"\\/ \\tA-Za-z0-9_]+/,\n
tag: \'plain\'\n
},\n
{\n
regex: /^[ \\t]+/,\n
tag: \'plain\'\n
},\n
{\n
regex: /^\'(?=.)/,\n
tag: \'string\',\n
then: \'qstring\'\n
},\n
{\n
regex: /^"(?=.)/,\n
tag: \'string\',\n
then: \'qqstring\'\n
},\n
{\n
regex: /^\\/\\/.*/,\n
tag: \'comment\'\n
},\n
{\n
regex: /^\\/\\*/,\n
tag: \'comment\',\n
then: \'comment\'\n
},\n
{\n
regex: /^./,\n
tag: \'plain\'\n
}\n
],\n
\n
qstring: [\n
{\n
regex: /^(?:\\\\.|[^\'\\\\])*\'?/,\n
tag: \'string\',\n
then: \'start\'\n
}\n
],\n
\n
qqstring: [\n
{\n
regex: /^(?:\\\\.|[^"\\\\])*"?/,\n
tag: \'string\',\n
then: \'start\'\n
}\n
],\n
\n
comment: [\n
{\n
regex: /^[^*\\/]+/,\n
tag: \'comment\'\n
},\n
{\n
regex: /^\\*\\//,\n
tag: \'comment\',\n
then: \'start\'\n
},\n
{\n
regex: /^[*\\/]/,\n
tag: \'comment\'\n
}\n
]\n
};\n
\n
exports.JSSyntax = new StandardSyntax(states);\n
\n
});\n
;bespin.tiki.register("::standard_syntax", {\n
name: "standard_syntax",\n
dependencies: { "syntax_worker": "0.0.0", "syntax_directory": "0.0.0", "underscore": "0.0.0" }\n
});\n
bespin.tiki.module("standard_syntax:index",function(require,exports,module) {\n
/* ***** BEGIN LICENSE BLOCK *****\n
* Version: MPL 1.1/GPL 2.0/LGPL 2.1\n
*\n
* The contents of this file are subject to the Mozilla Public License Version\n
* 1.1 (the "License"); you may not use this file except in compliance with\n
* the License. You may obtain a copy of the License at\n
* http://www.mozilla.org/MPL/\n
*\n
* Software distributed under the License is distributed on an "AS IS" basis,\n
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License\n
* for the specific language governing rights and limitations under the\n
* License.\n
*\n
* The Original Code is Bespin.\n
*\n
* The Initial Developer of the Original Code is\n
* Mozilla.\n
* Portions created by the Initial Developer are Copyright (C) 2009\n
* the Initial Developer. All Rights Reserved.\n
*\n
* Contributor(s):\n
* Bespin Team (bespin@mozilla.com)\n
*\n
* Alternatively, the contents of this file may be used under the terms of\n
* either the GNU General Public License Version 2 or later (the "GPL"), or\n
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),\n
* in which case the provisions of the GPL or the LGPL are applicable instead\n
* of those above. If you wish to allow use of your version of this file only\n
* under the terms of either the GPL or the LGPL, and not to allow others to\n
* use your version of this file under the terms of the MPL, indicate your\n
* decision by deleting the provisions above and replace them with the notice\n
* and other provisions required by the GPL or the LGPL. If you do not delete\n
* the provisions above, a recipient may use your version of this file under\n
* the terms of any one of the MPL, the GPL or the LGPL.\n
*\n
* ***** END LICENSE BLOCK ***** */\n
\n
"define metadata";\n
({\n
"description": "Easy-to-use basis for syntax engines",\n
"environments": { "worker": true },\n
"dependencies": { \n
"syntax_directory": "0.0.0", \n
"underscore": "0.0.0",\n
"syntax_worker": "0.0.0"\n
}\n
});\n
"end";\n
\n
var promise = require(\'bespin:promise\');\n
var _ = require(\'underscore\')._;\n
var console = require(\'bespin:console\').console;\n
var syntaxDirectory = require(\'syntax_directory\').syntaxDirectory;\n
\n
exports.StandardSyntax = function(states, subsyntaxes) {\n
this.states = states;\n
this.subsyntaxes = subsyntaxes;\n
};\n
\n
/** This syntax controller exposes a simple regex- and line-based parser. */\n
exports.StandardSyntax.prototype = {\n
get: function(fullState, line, col) {\n
var context = fullState[0], state = fullState[1];\n
\n
if (!this.states.hasOwnProperty(state)) {\n
throw new Error(\'StandardSyntax: no such state "\' + state + \'"\');\n
}\n
\n
var str = line.substring(col); // TODO: sticky flag where available\n
var token = { start: col, state: fullState };\n
\n
var result = null;\n
_(this.states[state]).each(function(alt) {\n
var regex = alt.regex;\n
var match = regex.exec(str);\n
if (match == null) {\n
return;\n
}\n
\n
var len = match[0].length;\n
token.end = col + len;\n
token.tag = alt.tag;\n
\n
var newSymbol = null;\n
if (alt.hasOwnProperty(\'symbol\')) {\n
var replace = function(_, n) { return match[n]; };\n
var symspec = alt.symbol.replace(/\\$([0-9]+)/g, replace);\n
var symMatch = /^([^:]+):(.*)/.exec(symspec);\n
newSymbol = [ symMatch[1], symMatch[2] ];\n
}\n
\n
var nextState, newContext = null;\n
if (alt.hasOwnProperty(\'then\')) {\n
var then = alt.then.split(" ");\n
nextState = [ context, then[0] ];\n
if (then.length > 1) {\n
newContext = then[1].split(":");\n
}\n
} else if (len === 0) {\n
throw new Error("StandardSyntax: Infinite loop detected: " +\n
"zero-length match that didn\'t change state");\n
} else {\n
nextState = fullState;\n
}\n
\n
result = { state: nextState, token: token, symbol: newSymbol };\n
if (newContext != null) {\n
result.newContext = newContext;\n
}\n
\n
_.breakLoop();\n
});\n
\n
return result;\n
}\n
};\n
\n
\n
});\n
bespin.metadata = {"python": {"resourceURL": "resources/python/", "name": "python", "environments": {"worker": true}, "dependencies": {"syntax_manager": "0.0.0"}, "testmodules": [], "provides": [{"pointer": "#PySyntax", "ep": "syntax", "fileexts": ["py"], "name": "py"}], "type": "plugins/thirdparty", "description": "Python syntax highlighter"}, "syntax_worker": {"resourceURL": "resources/syntax_worker/", "description": "Coordinates multiple syntax engines", "environments": {"worker": true}, "dependencies": {"syntax_directory": "0.0.0", "underscore": "0.0.0"}, "testmodules": [], "type": "plugins/supported", "name": "syntax_worker"}, "stylesheet": {"resourceURL": "resources/stylesheet/", "name": "stylesheet", "environments": {"worker": true}, "dependencies": {"standard_syntax": "0.0.0"}, "testmodules": [], "provides": [{"pointer": "#CSSSyntax", "ep": "syntax", "fileexts": ["css", "less"], "name": "css"}], "type": "plugins/supported", "description": "CSS syntax highlighter"}, "html": {"resourceURL": "resources/html/", "name": "html", "environments": {"worker": true}, "dependencies": {"standard_syntax": "0.0.0"}, "testmodules": [], "provides": [{"pointer": "#HTMLSyntax", "ep": "syntax", "fileexts": ["htm", "html"], "name": "html"}], "type": "plugins/supported", "description": "HTML syntax highlighter"}, "js_syntax": {"resourceURL": "resources/js_syntax/", "name": "js_syntax", "environments": {"worker": true}, "dependencies": {"standard_syntax": "0.0.0"}, "testmodules": [], "provides": [{"pointer": "#JSSyntax", "ep": "syntax", "fileexts": ["js", "json"], "name": "js"}], "type": "plugins/supported", "description": "JavaScript syntax highlighter"}, "standard_syntax": {"resourceURL": "resources/standard_syntax/", "description": "Easy-to-use basis for syntax engines", "environments": {"worker": true}, "dependencies": {"syntax_worker": "0.0.0", "syntax_directory": "0.0.0", "underscore": "0.0.0"}, "testmodules": [], "type": "plugins/supported", "name": "standard_syntax"}};/* ***** BEGIN LICENSE BLOCK *****\n
* Version: MPL 1.1/GPL 2.0/LGPL 2.1\n
*\n
* The contents of this file are subject to the Mozilla Public License Version\n
* 1.1 (the "License"); you may not use this file except in compliance with\n
* the License. You may obtain a copy of the License at\n
* http://www.mozilla.org/MPL/\n
*\n
* Software distributed under the License is distributed on an "AS IS" basis,\n
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License\n
* for the specific language governing rights and limitations under the\n
* License.\n
*\n
* The Original Code is Bespin.\n
*\n
* The Initial Developer of the Original Code is\n
* Mozilla.\n
* Portions created by the Initial Developer are Copyright (C) 2009\n
* the Initial Developer. All Rights Reserved.\n
*\n
* Contributor(s):\n
* Bespin Team (bespin@mozilla.com)\n
*\n
* Alternatively, the contents of this file may be used under the terms of\n
* either the GNU General Public License Version 2 or later (the "GPL"), or\n
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),\n
* in which case the provisions of the GPL or the LGPL are applicable instead\n
* of those above. If you wish to allow use of your version of this file only\n
* under the terms of either the GPL or the LGPL, and not to allow others to\n
* use your version of this file under the terms of the MPL, indicate your\n
* decision by deleting the provisions above and replace them with the notice\n
* and other provisions required by the GPL or the LGPL. If you do not delete\n
* the provisions above, a recipient may use your version of this file under\n
* the terms of any one of the MPL, the GPL or the LGPL.\n
*\n
* ***** END LICENSE BLOCK ***** */\n
\n
if (typeof(window) !== \'undefined\') {\n
throw new Error(\'"worker.js can only be loaded in a web worker. Use the \' +\n
\'"worker_manager" plugin to instantiate web workers.\');\n
}\n
\n
var messageQueue = [];\n
var target = null;\n
\n
if (typeof(bespin) === \'undefined\') {\n
bespin = {};\n
}\n
\n
function pump() {\n
if (messageQueue.length === 0) {\n
return;\n
}\n
\n
var msg = messageQueue[0];\n
switch (msg.op) {\n
case \'load\':\n
var base = msg.base;\n
bespin.base = base;\n
if (!bespin.hasOwnProperty(\'tiki\')) {\n
importScripts(base + "tiki.js");\n
}\n
if (!bespin.bootLoaded) {\n
importScripts(base + "plugin/register/boot");\n
bespin.bootLoaded = true;\n
}\n
\n
var require = bespin.tiki.require;\n
require.loader.sources[0].xhr = true;\n
require.ensurePackage(\'::bespin\', function() {\n
var catalog = require(\'bespin:plugins\').catalog;\n
var Promise = require(\'bespin:promise\').Promise;\n
\n
var pr;\n
if (!bespin.hasOwnProperty(\'metadata\')) {\n
pr = catalog.loadMetadataFromURL("plugin/register/worker");\n
} else {\n
catalog.registerMetadata(bespin.metadata);\n
pr = new Promise();\n
pr.resolve();\n
}\n
\n
pr.then(function() {\n
require.ensurePackage(msg.pkg, function() {\n
var module = require(msg.module);\n
target = module[msg.target];\n
messageQueue.shift();\n
pump();\n
});\n
});\n
});\n
break;\n
\n
case \'invoke\':\n
function finish(result) {\n
var resp = { op: \'finish\', id: msg.id, result: result };\n
postMessage(JSON.stringify(resp));\n
messageQueue.shift();\n
pump();\n
}\n
\n
if (!target.hasOwnProperty(msg.method)) {\n
throw new Error("No such method: " + msg.method);\n
}\n
\n
var rv = target[msg.method].apply(target, msg.args);\n
if (typeof(rv) === \'object\' && rv.isPromise) {\n
rv.then(finish, function(e) { throw e; });\n
} else {\n
finish(rv);\n
}\n
\n
break;\n
}\n
}\n
\n
onmessage = function(ev) {\n
messageQueue.push(JSON.parse(ev.data));\n
if (messageQueue.length === 1) {\n
pump();\n
}\n
};\n
\n
]]></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <string encoding="cdata"><![CDATA[
<tal:block tal:define=\'cleaninput python: inputvalue;\n
name python: inputname;\n
site_root python: here.getWebSiteValue() or here.getPortalObject();\n
portal_url python: site_root.absolute_url();\n
cols python: field.get_value("width");\n
rows python: field.get_value("height");\n
extra python: "%s" % field.get_value("extra")\n
\'>\n
<script type="text/javascript" tal:attributes="src string:${portal_url}/BespinEmbedded.js" />\n
<script type="text/javascript" tal:attributes="src string:${portal_url}/BespinPython.js" />\n
<textarea class="bespin" \n
tal:attributes="cols cols; \n
rows rows; \n
name name;\n
data-bespinoptions extra"\n
tal:content="cleaninput">\n
\n
</textarea>\n
</tal:block>
]]></string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>bespin_support</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<global name="Folder" module="OFS.Folder"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>resources</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<global name="Folder" module="OFS.Folder"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>completion</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<global name="Folder" module="OFS.Folder"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>screen_theme</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<global name="Folder" module="OFS.Folder"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>images</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<global name="Image" module="OFS.Image"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts81210751.06</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>bespin-s.png</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>image/png</string> </value>
</item>
<item>
<key> <string>data</string> </key>
<value> <string encoding="base64">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
RK5CYII=</string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <int>70</int> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>7700</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <int>73</int> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<global name="Image" module="OFS.Image"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts81210769.7</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>check-selected.png</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>image/png</string> </value>
</item>
<item>
<key> <string>data</string> </key>
<value> <string encoding="base64">iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ
bWFnZVJlYWR5ccllPAAAAvBJREFUeNq8lb9rFEEUx9/M7h5nTkEJItaKrWCljWBhYxotPCXEXwFF
RJSUxotETby7/8BCQSGEIwpiITaxUkG00CagIbamEIxocjF3uzO+92Z2b3b3thHicu/ezuzM5/vm
1xuhtYbNfIQrsG/36T3oJtFG/pE3Q/0Xl1tfcwIIP6m0mguFBu17AJ4HWgpsgWa9Fm5k+Ed9lTY+
ikB2I/AVNZdVFHmSCFDkCF8KEaQD34A9AkuGclmKfLwIF2QkppAc4XsYQtBVJLKXRuLbphMUOZTK
4JW3gVcaAO0hnETQc/Q8Co6JQuefSKJXIBCuOm2INn5BqNahpGACG56XVuAclCsQVHYivIKjwOnx
8RN7D5T1bIFM3uN6arf0sQkSGaWBXaAHthomPrEABOVBjpYB7BHgSxZiC5z3THnx7TQNAr58aHB9
actgMouJAPjCgGkd/DQMyLy4bEfnmfrP87chjCCxhXcN5iTYnpSdc994bRcZrCi4a0xrgm7hWQ26
Ufoc7T9SMxskK2B2DsGkARfB7fPp6U2Ep+sOHJsEgf2EpwsE7G6Jt2UR/H1rHDphOvJD1emknxCi
zxokQNPodavWF/5mhuCQsoPDdT5v4ASZF4i3ONr8bA02MMJXj26kPlOZ6l07fBbhSE9OuWX0F8Av
L2ZvpaJ7+cCIkM9GfnS0wfB44XvwohHg3hgavpMDPb+fhw9dcuBg85I2h9z+9RGwDY6PTvEiFtmJ
Kxl4nPwcRl7AJq44Q1Yv34MObsOsnbrWzMEhk1mF6jMC4Xzkd7SRq3U+SLGdGesPj9sLN8jcCDCf
c1aktBsbli9cb3AKGG8+LIZHvT7UX2PKzgo81r9XOOVirmXP71bk4lgdlr99t1Ngp5PbqASe9KH+
P1eY6QrcFX/aAO1VM0xq5Bh14tFxOTJ1kanPtV1bA7G+ysz8lSnEnC5jLt++g69MTnxS9k646N03
8cKaecdp6YYY+Q8QGKTUOn1l/pdLf7OevwIMAAwmFRODEQ87AAAAAElFTkSuQmCC</string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <int>24</int> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>846</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <int>24</int> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<global name="Image" module="OFS.Image"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts81210938.71</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>lines.png</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>image/png</string> </value>
</item>
<item>
<key> <string>data</string> </key>
<value> <string encoding="base64">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</string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <int>200</int> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>3577</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <int>300</int> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<global name="Image" module="OFS.Image"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts81210885.63</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>scroll-down.png</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>image/png</string> </value>
</item>
<item>
<key> <string>data</string> </key>
<value> <string encoding="base64">iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAAAXNSR0IArs4c6QAAAAZiS0dEAAAA
AAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oECBcmNcNB6TQAAAAidEVYdENv
bW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVAgb24gYSBNYWOHqHdDAAAAYUlEQVQY083QIRKDYBCD0azn
ElwMyU3Q9T0Dd8JwB+TD/IOgFERN43bmy2yS5C9USYI+yfuGG6tqOS7MrjV/WNFjO4Fb+5orw3SC
p6/B0GFt4IrutjGGBg+P86DwQv208w5Vk3NaFii+RwAAAABJRU5ErkJggg==</string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <int>11</int> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>271</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <int>11</int> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<global name="Image" module="OFS.Image"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts81210900.0</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>scroll-left.png</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>image/png</string> </value>
</item>
<item>
<key> <string>data</string> </key>
<value> <string encoding="base64">iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAAAXNSR0IArs4c6QAAAAZiS0dEAAAA
AAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oECBcvHr4/qz0AAAAidEVYdENv
bW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVAgb24gYSBNYWOHqHdDAAAAS0lEQVQY063QsQmAMBCG0di7
RMCxHMfeTVwiuziC7bOwCpxioq/+OI4/pb9gehNlbChP0YgFh0uJogEzdrUwXsU+Xm76uWuNrp3v
nLqfjttDMYDKAAAAAElFTkSuQmCC</string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <int>11</int> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>249</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <int>11</int> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<global name="Image" module="OFS.Image"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts81210912.76</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>scroll-right.png</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>image/png</string> </value>
</item>
<item>
<key> <string>data</string> </key>
<value> <string encoding="base64">iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAAAXNSR0IArs4c6QAAAAZiS0dEAAAA
AAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oECBcvBTRaYtEAAAAidEVYdENv
bW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVAgb24gYSBNYWOHqHdDAAAARklEQVQY063QsQ2AMBAEwSen
CSSXRTnk7oQm6IUSSIfI+YG88eh1+qq/oX3BF05sKYYHB9YEj27sWBI86tMux5vjb7Sa1Qu2gI7b
PwSb/gAAAABJRU5ErkJggg==</string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <int>11</int> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>244</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <int>11</int> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<global name="Image" module="OFS.Image"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts81210924.98</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>scroll-up.png</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>image/png</string> </value>
</item>
<item>
<key> <string>data</string> </key>
<value> <string encoding="base64">iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAAAXNSR0IArs4c6QAAAAZiS0dEAAAA
AAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oECBckIeutX8sAAAAidEVYdENv
bW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVAgb24gYSBNYWOHqHdDAAAAXUlEQVQY083Nuw2AIBhF4fsn
liTMwGJsQ+0ijOAuNuxAeSiUQoOPxMZTf7lX+hJgwAzYGxzZik/QAWXHBXB3OHEsXcEA1BOuQBjh
zLjczdRXJXlJy+DUA8HMVv2jBsm9dlXl5Y2nAAAAAElFTkSuQmCC</string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <int>11</int> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>267</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <int>11</int> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<global name="DTMLDocument" module="OFS.DTMLDocument"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>theme.less</string> </value>
</item>
<item>
<key> <string>_vars</string> </key>
<value>
<dictionary/>
</value>
</item>
<item>
<key> <string>globals</string> </key>
<value>
<dictionary/>
</value>
</item>
<item>
<key> <string>raw</string> </key>
<value> <string>/* ***** BEGIN LICENSE BLOCK *****\n
* Version: MPL 1.1/GPL 2.0/LGPL 2.1\n
*\n
* The contents of this file are subject to the Mozilla Public License Version\n
* 1.1 (the "License"); you may not use this file except in compliance with\n
* the License. You may obtain a copy of the License at\n
* http://www.mozilla.org/MPL/\n
*\n
* Software distributed under the License is distributed on an "AS IS" basis,\n
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License\n
* for the specific language governing rights and limitations under the\n
* License.\n
*\n
* The Original Code is Bespin.\n
*\n
* The Initial Developer of the Original Code is\n
* Mozilla.\n
* Portions created by the Initial Developer are Copyright (C) 2009\n
* the Initial Developer. All Rights Reserved.\n
*\n
* Contributor(s):\n
* Bespin Team (bespin@mozilla.com)\n
*\n
* Alternatively, the contents of this file may be used under the terms of\n
* either the GNU General Public License Version 2 or later (the "GPL"), or\n
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),\n
* in which case the provisions of the GPL or the LGPL are applicable instead\n
* of those above. If you wish to allow use of your version of this file only\n
* under the terms of either the GPL or the LGPL, and not to allow others to\n
* use your version of this file under the terms of the MPL, indicate your\n
* decision by deleting the provisions above and replace them with the notice\n
* and other provisions required by the GPL or the LGPL. If you do not delete\n
* the provisions above, a recipient may use your version of this file under\n
* the terms of any one of the MPL, the GPL or the LGPL.\n
*\n
* ***** END LICENSE BLOCK ***** */\n
\n
.bespin {\n
.container {\n
font-family: @container_font;\n
font-size: @container_font_size;\n
\n
color: @container_color;\n
background: @container_bg;\n
line-height: @container_line_height;\n
\n
display: -moz-box;\n
-moz-box-orient: vertical;\n
display: -webkit-box;\n
-webkit-box-orient: vertical;\n
width: 100%;\n
height: 100%;\n
margin: 0;\n
}\n
\n
.container .north {\n
-moz-box-ordinal-group: 1;\n
-webkit-box-ordinal-group: 1;\n
}\n
\n
.container .center-container {\n
display: -moz-box;\n
-moz-box-orient: horizontal;\n
-moz-box-ordinal-group: 2;\n
-moz-box-flex: 1;\n
display: -webkit-box;\n
-webkit-box-orient: horizontal;\n
-webkit-box-ordinal-group: 2;\n
-webkit-box-flex: 1;\n
}\n
\n
.container .south {\n
-moz-box-ordinal-group: 3;\n
-webkit-box-ordinal-group: 3;\n
}\n
\n
.container .center-container .west {\n
-moz-box-ordinal-group: 1;\n
-webkit-box-ordinal-group: 1;\n
}\n
\n
.container .center-container .center {\n
-moz-box-flex: 1;\n
-moz-box-ordinal-group: 2;\n
-webkit-box-flex: 1;\n
-webkit-box-ordinal-group: 2;\n
}\n
\n
.container .center-container .east {\n
-moz-box-ordinal-group: 3;\n
-webkit-box-ordinal-group: 3;\n
}\n
\n
input, textarea {\n
display: block;\n
border: 0px;\n
width: 200px;\n
padding: 4px;\n
color: @control_color;\n
background: @control_bg;\n
border: @control_border;\n
font-size: 8pt;\n
-moz-border-radius: @control_border_radius;\n
-webkit-border-radius: @control_border_radius;\n
box-shadow:\n
rgba(255,255,255,0.3) 0px 0px 2px,\n
inset rgba(0,0,0,0.3) 0px 0px 4px;\n
-moz-box-shadow:\n
rgba(255,255,255,0.3) 0px 0px 2px,\n
inset rgba(0,0,0,0.3) 0px 0px 4px;\n
-webkit-box-shadow:\n
rgba(255,255,255,0.3) 0px 0px 2px,\n
inset rgba(0,0,0,0.3) 0px 0px 4px;\n
}\n
\n
input:focus, textarea:focus {\n
color: @control_active_color;\n
border: @control_active_border;\n
background: @control_active_bg;\n
outline: none;\n
box-shadow: opacity(@control_active_inset_color, 0.6) 0px 0px 2px,\n
inset opacity(@control_active_inset_color, 0.3) 0px 0px 6px;\n
-moz-box-shadow: opacity(@control_active_inset_color, 0.6) 0px 0px 2px,\n
inset opacity(@control_active_inset_color, 0.3) 0px 0px 6px;\n
-webkit-box-shadow: opacity(@control_active_inset_color, 0.6) 0px 0px 2px,\n
inset opacity(@control_active_inset_color, 0.3) 0px 0px 6px;\n
}\n
\n
input[type=submit], input[type=button] {\n
font-family: @button_font;\n
font-size: @button_font_size;\n
text-shadow: 1px 1px rgba(0, 0, 0, 0.4);\n
\n
padding: 8px 12px;\n
margin-left: 8px;\n
color: @button_color;\n
background: transparent -moz-linear-gradient(top, @button_bg, @button_bg2);\n
background: transparent -webkit-gradient(linear, 50% 0%, 50% 100%, from(@button_bg), to(@button_bg2));\n
\n
border: 1px solid @button_border;\n
-moz-border-radius: @control_border_radius;\n
-webkit-border-radius: @control_border_radius;\n
-moz-box-shadow:\n
inset rgba(255, 255, 255, 0.2) 0 1px 0px,\n
inset rgba(0, 0, 0, 0.2) 0 -1px 0px,\n
rgba(0, 0, 0, 0.1) 0px 1px 2px;\n
-webkit-box-shadow:\n
inset rgba(255, 255, 255, 0.2) 0 1px 0px,\n
inset rgba(0, 0, 0, 0.2) 0 -1px 0px,\n
rgba(0, 0, 0, 0.1) 0px 1px 2px;\n
box-shadow:\n
inset rgba(255, 255, 255, 0.2) 0 1px 0px,\n
inset rgba(0, 0, 0, 0.2) 0 -1px 0px,\n
rgba(0, 0, 0, 0.1) 0px 1px 2px;\n
}\n
\n
.pane {\n
font-size: @pane_font_size;\n
font-family: @pane_font;\n
border-top: 1px solid rgba(255,255,255,0.1);\n
border-left: 1px solid rgba(0, 0, 0, 0.1);\n
border-right: 1px solid rgba(0, 0, 0, 0.1);\n
border-bottom: 2px solid rgba(0, 0, 0, 0.1);\n
background-color: @pane_bg;\n
overflow: visible;\n
padding: 15px;\n
\n
color: @pane_color;\n
line-height: @pane_line_height;\n
\n
margin-bottom: 6px;\n
margin-top: 6px;\n
text-shadow: @pane_text_shadow;\n
\n
-moz-border-radius: @pane_border_radius;\n
-webkit-border-radius: @pane_border_radius;\n
-moz-box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 2px;\n
-webkit-box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 2px;\n
\n
a {\n
color: @pane_a_color;\n
}\n
\n
h1 {\n
font-family: @pane_h1_font;\n
font-size: @pane_h1_font_size;\n
color: @pane_h1_color;\n
\n
letter-spacing: -1.25px;\n
line-height: 1.0;\n
margin-top: 0px;\n
margin-left: 10px;\n
margin-bottom: 25px;\n
margin-top: 10px;\n
text-shadow: @pane_text_shadow;\n
}\n
\n
p {\n
margin-left: 10px;\n
}\n
}\n
\n
\n
.form {\n
font-family: @form_font;\n
font-size: @form_font_size;\n
line-height: @form_line_height;\n
color: @form_color;\n
text-shadow: @form_text_shadow;\n
\n
fieldset, p {\n
color: @form_color;\n
margin-bottom: 6px;\n
margin-top: 6px;\n
text-shadow: form_text_shadow;\n
}\n
}\n
\n
/*\n
* The state classes are a little bit complex, because of the doubble class bug in IE6\n
* The state class looks like this:\n
*\n
* .ui-radio-state[-checked][-disabled][-hover] or .ui-checkbox-state[-checked][-disabled][-hover]\n
*\n
* Examples:\n
*\n
* .ui-radio-state-checked (simply checked)\n
* .ui-radio-state-checked-hover (checked and hovered/focused)\n
* .ui-radio-state-hover (unchecked and hovered/focused)\n
*\n
* If you don´t have to deal with the doubble class bug of IE6 you can also use the simple ui-checkbox-checked, ui-checkbox-disabled, ui-checkbox-hover state-classnames (or: ui-radio-checked...)\n
* and the ui-radio/ui-checkbox role-classnames.\n
*\n
*/\n
\n
span.ui-checkbox,\n
span.ui-radio {\n
display: block;\n
float: left;\n
width: 24px;\n
height: 24px;\n
background: url(images/radio-unselected.png) no-repeat;\n
}\n
\n
span.ui-checkbox {\n
background: url(images/check-unselected.png) no-repeat;\n
}\n
\n
span.ui-helper-hidden {\n
display: none;\n
}\n
\n
span.ui-checkbox-state-checked,\n
span.ui-checkbox-state-checked-hover {\n
background: url(images/check-selected.png) no-repeat;\n
}\n
\n
span.ui-radio-state-checked,\n
span.ui-radio-state-checked-hover {\n
background: url(images/radio-selected.png) no-repeat;\n
}\n
\n
.ui-helper-hidden-accessible {\n
position: absolute;\n
left: -999em;\n
}\n
}\n
\n
</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
2010-08-15 rafael
* The initial version.
\ No newline at end of file
Still Experimental
\ No newline at end of file
Copyright (c) 2010 Nexedi SA
\ No newline at end of file
erp5_view_style
\ No newline at end of file
Files for integration of Bespin Text Editor (http://mozillalabs.com/bespin) with ERP5
\ No newline at end of file
GPL
\ No newline at end of file
rafael
\ No newline at end of file
None
\ No newline at end of file
11
\ No newline at end of file
erp5_bespin | View
\ No newline at end of file
erp5_bespin
\ No newline at end of file
0
\ No newline at end of file
erp5_bespin
\ No newline at end of file
1.0
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment