mirror of
https://github.com/documize/community.git
synced 2025-08-05 05:25:27 +02:00
moved emberjs to gui folder
This commit is contained in:
parent
6a18d18f91
commit
dc49dbbeff
999 changed files with 677 additions and 651 deletions
87
gui/public/codemirror/mode/yacas/index.html
vendored
Executable file
87
gui/public/codemirror/mode/yacas/index.html
vendored
Executable file
|
@ -0,0 +1,87 @@
|
|||
<!doctype html>
|
||||
|
||||
<title>CodeMirror: yacas mode</title>
|
||||
<meta charset="utf-8"/>
|
||||
<link rel=stylesheet href="../../doc/docs.css">
|
||||
|
||||
<link rel=stylesheet href=../../lib/codemirror.css>
|
||||
<script src=../../lib/codemirror.js></script>
|
||||
<script src=../../addon/edit/matchbrackets.js></script>
|
||||
<script src=yacas.js></script>
|
||||
<style type=text/css>
|
||||
.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}
|
||||
</style>
|
||||
<div id=nav>
|
||||
<a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>
|
||||
|
||||
<ul>
|
||||
<li><a href="../../index.html">Home</a>
|
||||
<li><a href="../../doc/manual.html">Manual</a>
|
||||
<li><a href="https://github.com/codemirror/codemirror">Code</a>
|
||||
</ul>
|
||||
<ul>
|
||||
<li><a href="../index.html">Language modes</a>
|
||||
<li><a class=active href="#">yacas</a>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<article>
|
||||
<h2>yacas mode</h2>
|
||||
|
||||
|
||||
<textarea id="yacasCode">
|
||||
// example yacas code
|
||||
Graph(edges_IsList) <-- [
|
||||
Local(v, e, f, t);
|
||||
|
||||
vertices := {};
|
||||
|
||||
ForEach (e, edges) [
|
||||
If (IsList(e), e := Head(e));
|
||||
{f, t} := Tail(Listify(e));
|
||||
|
||||
DestructiveAppend(vertices, f);
|
||||
DestructiveAppend(vertices, t);
|
||||
];
|
||||
|
||||
Graph(RemoveDuplicates(vertices), edges);
|
||||
];
|
||||
|
||||
10 # IsGraph(Graph(vertices_IsList, edges_IsList)) <-- True;
|
||||
20 # IsGraph(_x) <-- False;
|
||||
|
||||
Edges(Graph(vertices_IsList, edges_IsList)) <-- edges;
|
||||
Vertices(Graph(vertices_IsList, edges_IsList)) <-- vertices;
|
||||
|
||||
AdjacencyList(g_IsGraph) <-- [
|
||||
Local(l, vertices, edges, e, op, f, t);
|
||||
|
||||
l := Association'Create();
|
||||
|
||||
vertices := Vertices(g);
|
||||
ForEach (v, vertices)
|
||||
Association'Set(l, v, {});
|
||||
|
||||
edges := Edges(g);
|
||||
|
||||
ForEach(e, edges) [
|
||||
If (IsList(e), e := Head(e));
|
||||
{op, f, t} := Listify(e);
|
||||
DestructiveAppend(Association'Get(l, f), t);
|
||||
If (String(op) = "<->", DestructiveAppend(Association'Get(l, t), f));
|
||||
];
|
||||
|
||||
l;
|
||||
];
|
||||
</textarea>
|
||||
|
||||
<script>
|
||||
var yacasEditor = CodeMirror.fromTextArea(document.getElementById('yacasCode'), {
|
||||
mode: 'text/x-yacas',
|
||||
lineNumbers: true,
|
||||
matchBrackets: true
|
||||
});
|
||||
</script>
|
||||
|
||||
<p><strong>MIME types defined:</strong> <code>text/x-yacas</code> (yacas).</p>
|
||||
</article>
|
204
gui/public/codemirror/mode/yacas/yacas.js
vendored
Executable file
204
gui/public/codemirror/mode/yacas/yacas.js
vendored
Executable file
|
@ -0,0 +1,204 @@
|
|||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: http://codemirror.net/LICENSE
|
||||
|
||||
// Yacas mode copyright (c) 2015 by Grzegorz Mazur
|
||||
// Loosely based on mathematica mode by Calin Barbat
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
mod(require("../../lib/codemirror"));
|
||||
else if (typeof define == "function" && define.amd) // AMD
|
||||
define(["../../lib/codemirror"], mod);
|
||||
else // Plain browser env
|
||||
mod(CodeMirror);
|
||||
})(function(CodeMirror) {
|
||||
"use strict";
|
||||
|
||||
CodeMirror.defineMode('yacas', function(_config, _parserConfig) {
|
||||
|
||||
function words(str) {
|
||||
var obj = {}, words = str.split(" ");
|
||||
for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
|
||||
return obj;
|
||||
}
|
||||
|
||||
var bodiedOps = words("Assert BackQuote D Defun Deriv For ForEach FromFile " +
|
||||
"FromString Function Integrate InverseTaylor Limit " +
|
||||
"LocalSymbols Macro MacroRule MacroRulePattern " +
|
||||
"NIntegrate Rule RulePattern Subst TD TExplicitSum " +
|
||||
"TSum Taylor Taylor1 Taylor2 Taylor3 ToFile " +
|
||||
"ToStdout ToString TraceRule Until While");
|
||||
|
||||
// patterns
|
||||
var pFloatForm = "(?:(?:\\.\\d+|\\d+\\.\\d*|\\d+)(?:[eE][+-]?\\d+)?)";
|
||||
var pIdentifier = "(?:[a-zA-Z\\$'][a-zA-Z0-9\\$']*)";
|
||||
|
||||
// regular expressions
|
||||
var reFloatForm = new RegExp(pFloatForm);
|
||||
var reIdentifier = new RegExp(pIdentifier);
|
||||
var rePattern = new RegExp(pIdentifier + "?_" + pIdentifier);
|
||||
var reFunctionLike = new RegExp(pIdentifier + "\\s*\\(");
|
||||
|
||||
function tokenBase(stream, state) {
|
||||
var ch;
|
||||
|
||||
// get next character
|
||||
ch = stream.next();
|
||||
|
||||
// string
|
||||
if (ch === '"') {
|
||||
state.tokenize = tokenString;
|
||||
return state.tokenize(stream, state);
|
||||
}
|
||||
|
||||
// comment
|
||||
if (ch === '/') {
|
||||
if (stream.eat('*')) {
|
||||
state.tokenize = tokenComment;
|
||||
return state.tokenize(stream, state);
|
||||
}
|
||||
if (stream.eat("/")) {
|
||||
stream.skipToEnd();
|
||||
return "comment";
|
||||
}
|
||||
}
|
||||
|
||||
// go back one character
|
||||
stream.backUp(1);
|
||||
|
||||
// update scope info
|
||||
var m = stream.match(/^(\w+)\s*\(/, false);
|
||||
if (m !== null && bodiedOps.hasOwnProperty(m[1]))
|
||||
state.scopes.push('bodied');
|
||||
|
||||
var scope = currentScope(state);
|
||||
|
||||
if (scope === 'bodied' && ch === '[')
|
||||
state.scopes.pop();
|
||||
|
||||
if (ch === '[' || ch === '{' || ch === '(')
|
||||
state.scopes.push(ch);
|
||||
|
||||
scope = currentScope(state);
|
||||
|
||||
if (scope === '[' && ch === ']' ||
|
||||
scope === '{' && ch === '}' ||
|
||||
scope === '(' && ch === ')')
|
||||
state.scopes.pop();
|
||||
|
||||
if (ch === ';') {
|
||||
while (scope === 'bodied') {
|
||||
state.scopes.pop();
|
||||
scope = currentScope(state);
|
||||
}
|
||||
}
|
||||
|
||||
// look for ordered rules
|
||||
if (stream.match(/\d+ *#/, true, false)) {
|
||||
return 'qualifier';
|
||||
}
|
||||
|
||||
// look for numbers
|
||||
if (stream.match(reFloatForm, true, false)) {
|
||||
return 'number';
|
||||
}
|
||||
|
||||
// look for placeholders
|
||||
if (stream.match(rePattern, true, false)) {
|
||||
return 'variable-3';
|
||||
}
|
||||
|
||||
// match all braces separately
|
||||
if (stream.match(/(?:\[|\]|{|}|\(|\))/, true, false)) {
|
||||
return 'bracket';
|
||||
}
|
||||
|
||||
// literals looking like function calls
|
||||
if (stream.match(reFunctionLike, true, false)) {
|
||||
stream.backUp(1);
|
||||
return 'variable';
|
||||
}
|
||||
|
||||
// all other identifiers
|
||||
if (stream.match(reIdentifier, true, false)) {
|
||||
return 'variable-2';
|
||||
}
|
||||
|
||||
// operators; note that operators like @@ or /; are matched separately for each symbol.
|
||||
if (stream.match(/(?:\\|\+|\-|\*|\/|,|;|\.|:|@|~|=|>|<|&|\||_|`|'|\^|\?|!|%)/, true, false)) {
|
||||
return 'operator';
|
||||
}
|
||||
|
||||
// everything else is an error
|
||||
return 'error';
|
||||
}
|
||||
|
||||
function tokenString(stream, state) {
|
||||
var next, end = false, escaped = false;
|
||||
while ((next = stream.next()) != null) {
|
||||
if (next === '"' && !escaped) {
|
||||
end = true;
|
||||
break;
|
||||
}
|
||||
escaped = !escaped && next === '\\';
|
||||
}
|
||||
if (end && !escaped) {
|
||||
state.tokenize = tokenBase;
|
||||
}
|
||||
return 'string';
|
||||
};
|
||||
|
||||
function tokenComment(stream, state) {
|
||||
var prev, next;
|
||||
while((next = stream.next()) != null) {
|
||||
if (prev === '*' && next === '/') {
|
||||
state.tokenize = tokenBase;
|
||||
break;
|
||||
}
|
||||
prev = next;
|
||||
}
|
||||
return 'comment';
|
||||
}
|
||||
|
||||
function currentScope(state) {
|
||||
var scope = null;
|
||||
if (state.scopes.length > 0)
|
||||
scope = state.scopes[state.scopes.length - 1];
|
||||
return scope;
|
||||
}
|
||||
|
||||
return {
|
||||
startState: function() {
|
||||
return {
|
||||
tokenize: tokenBase,
|
||||
scopes: []
|
||||
};
|
||||
},
|
||||
token: function(stream, state) {
|
||||
if (stream.eatSpace()) return null;
|
||||
return state.tokenize(stream, state);
|
||||
},
|
||||
indent: function(state, textAfter) {
|
||||
if (state.tokenize !== tokenBase && state.tokenize !== null)
|
||||
return CodeMirror.Pass;
|
||||
|
||||
var delta = 0;
|
||||
if (textAfter === ']' || textAfter === '];' ||
|
||||
textAfter === '}' || textAfter === '};' ||
|
||||
textAfter === ');')
|
||||
delta = -1;
|
||||
|
||||
return (state.scopes.length + delta) * _config.indentUnit;
|
||||
},
|
||||
electricChars: "{}[]();",
|
||||
blockCommentStart: "/*",
|
||||
blockCommentEnd: "*/",
|
||||
lineComment: "//"
|
||||
};
|
||||
});
|
||||
|
||||
CodeMirror.defineMIME('text/x-yacas', {
|
||||
name: 'yacas'
|
||||
});
|
||||
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue