mirror of
https://github.com/janickiy/yii2-nomer
synced 2025-03-09 15:39:59 +00:00
add files to project
This commit is contained in:
commit
5cac498444
3729 changed files with 836998 additions and 0 deletions
62
web/metronic/global/plugins/codemirror/mode/velocity/index.html
vendored
Normal file
62
web/metronic/global/plugins/codemirror/mode/velocity/index.html
vendored
Normal file
|
@ -0,0 +1,62 @@
|
|||
<!doctype html>
|
||||
<title>CodeMirror: Velocity mode</title>
|
||||
<meta charset="utf-8" />
|
||||
<link rel=stylesheet href="../../doc/docs.css">
|
||||
<link rel="stylesheet" href="../../lib/codemirror.css">
|
||||
<link rel="stylesheet" href="../../theme/night.css">
|
||||
<script src="../../lib/codemirror.js"></script>
|
||||
<script src="velocity.js"></script>
|
||||
<style>
|
||||
.CodeMirror {
|
||||
border: 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="#">Velocity</a>
|
||||
</ul>
|
||||
</div>
|
||||
<article>
|
||||
<h2>Velocity mode</h2>
|
||||
<form>
|
||||
<textarea id="code" name="code"> ## Velocity Code Demo #* based on PL/SQL mode by Peter Raganitsch, adapted to Velocity by Steve O'Hara ( http://www.pivotal-solutions.co.uk ) August 2011 *# #* This is a multiline comment. This is the second line *# #[[ hello steve This has invalid
|
||||
syntax that would normally need "poor man's escaping" like: #define() ${blah ]]# #include( "disclaimer.txt" "opinion.txt" ) #include( $foo $bar ) #parse( "lecorbusier.vm" ) #parse( $foo ) #evaluate( 'string with VTL #if(true)will be displayed#end'
|
||||
) #define( $hello ) Hello $who #end #set( $who = "World!") $hello ## displays Hello World! #foreach( $customer in $customerList ) $foreach.count $customer.Name #if( $foo == ${bar}) it's true! #break #{else} it's not! #stop #end #if ($foreach.parent.hasNext)
|
||||
$velocityCount #end #end $someObject.getValues("this is a string split across lines") $someObject("This plus $something in the middle").method(7567).property #macro( tablerows $color $somelist ) #foreach( $something in $somelist )
|
||||
<tr>
|
||||
<td bgcolor=$color>$something</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td bgcolor=$color>$bodyContent</td>
|
||||
</tr> #end #end #tablerows("red" ["dadsdf","dsa"]) #@tablerows("red" ["dadsdf","dsa"]) some body content #end Variable reference: #set( $monkey = $bill ) String literal: #set( $monkey.Friend = 'monica' ) Property reference: #set( $monkey.Blame =
|
||||
$whitehouse.Leak ) Method reference: #set( $monkey.Plan = $spindoctor.weave($web) ) Number literal: #set( $monkey.Number = 123 ) Range operator: #set( $monkey.Numbers = [1..3] ) Object list: #set( $monkey.Say = ["Not", $my, "fault"] ) Object
|
||||
map: #set( $monkey.Map = {"banana" : "good", "roast beef" : "bad"}) The RHS can also be a simple arithmetic expression, such as: Addition: #set( $value = $foo + 1 ) Subtraction: #set( $value = $bar - 1 ) Multiplication: #set( $value = $foo
|
||||
* $bar ) Division: #set( $value = $foo / $bar ) Remainder: #set( $value = $foo % $bar ) </textarea>
|
||||
</form>
|
||||
<script>
|
||||
var editor = CodeMirror.fromTextArea(document.getElementById("code"),
|
||||
{
|
||||
theme: "night",
|
||||
lineNumbers: true,
|
||||
indentUnit: 4,
|
||||
mode: "text/velocity"
|
||||
});
|
||||
</script>
|
||||
<p>
|
||||
<strong>MIME types defined:</strong> <code>text/velocity</code>.</p>
|
||||
</article>
|
201
web/metronic/global/plugins/codemirror/mode/velocity/velocity.js
vendored
Normal file
201
web/metronic/global/plugins/codemirror/mode/velocity/velocity.js
vendored
Normal file
|
@ -0,0 +1,201 @@
|
|||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: http://codemirror.net/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
mod(require("../../lib/codemirror"));
|
||||
else if (typeof define == "function" && define.amd) // AMD
|
||||
define(["../../lib/codemirror"], mod);
|
||||
else // Plain browser env
|
||||
mod(CodeMirror);
|
||||
})(function(CodeMirror) {
|
||||
"use strict";
|
||||
|
||||
CodeMirror.defineMode("velocity", function() {
|
||||
function parseWords(str) {
|
||||
var obj = {}, words = str.split(" ");
|
||||
for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
|
||||
return obj;
|
||||
}
|
||||
|
||||
var keywords = parseWords("#end #else #break #stop #[[ #]] " +
|
||||
"#{end} #{else} #{break} #{stop}");
|
||||
var functions = parseWords("#if #elseif #foreach #set #include #parse #macro #define #evaluate " +
|
||||
"#{if} #{elseif} #{foreach} #{set} #{include} #{parse} #{macro} #{define} #{evaluate}");
|
||||
var specials = parseWords("$foreach.count $foreach.hasNext $foreach.first $foreach.last $foreach.topmost $foreach.parent.count $foreach.parent.hasNext $foreach.parent.first $foreach.parent.last $foreach.parent $velocityCount $!bodyContent $bodyContent");
|
||||
var isOperatorChar = /[+\-*&%=<>!?:\/|]/;
|
||||
|
||||
function chain(stream, state, f) {
|
||||
state.tokenize = f;
|
||||
return f(stream, state);
|
||||
}
|
||||
function tokenBase(stream, state) {
|
||||
var beforeParams = state.beforeParams;
|
||||
state.beforeParams = false;
|
||||
var ch = stream.next();
|
||||
// start of unparsed string?
|
||||
if ((ch == "'") && state.inParams) {
|
||||
state.lastTokenWasBuiltin = false;
|
||||
return chain(stream, state, tokenString(ch));
|
||||
}
|
||||
// start of parsed string?
|
||||
else if ((ch == '"')) {
|
||||
state.lastTokenWasBuiltin = false;
|
||||
if (state.inString) {
|
||||
state.inString = false;
|
||||
return "string";
|
||||
}
|
||||
else if (state.inParams)
|
||||
return chain(stream, state, tokenString(ch));
|
||||
}
|
||||
// is it one of the special signs []{}().,;? Seperator?
|
||||
else if (/[\[\]{}\(\),;\.]/.test(ch)) {
|
||||
if (ch == "(" && beforeParams)
|
||||
state.inParams = true;
|
||||
else if (ch == ")") {
|
||||
state.inParams = false;
|
||||
state.lastTokenWasBuiltin = true;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
// start of a number value?
|
||||
else if (/\d/.test(ch)) {
|
||||
state.lastTokenWasBuiltin = false;
|
||||
stream.eatWhile(/[\w\.]/);
|
||||
return "number";
|
||||
}
|
||||
// multi line comment?
|
||||
else if (ch == "#" && stream.eat("*")) {
|
||||
state.lastTokenWasBuiltin = false;
|
||||
return chain(stream, state, tokenComment);
|
||||
}
|
||||
// unparsed content?
|
||||
else if (ch == "#" && stream.match(/ *\[ *\[/)) {
|
||||
state.lastTokenWasBuiltin = false;
|
||||
return chain(stream, state, tokenUnparsed);
|
||||
}
|
||||
// single line comment?
|
||||
else if (ch == "#" && stream.eat("#")) {
|
||||
state.lastTokenWasBuiltin = false;
|
||||
stream.skipToEnd();
|
||||
return "comment";
|
||||
}
|
||||
// variable?
|
||||
else if (ch == "$") {
|
||||
stream.eatWhile(/[\w\d\$_\.{}]/);
|
||||
// is it one of the specials?
|
||||
if (specials && specials.propertyIsEnumerable(stream.current())) {
|
||||
return "keyword";
|
||||
}
|
||||
else {
|
||||
state.lastTokenWasBuiltin = true;
|
||||
state.beforeParams = true;
|
||||
return "builtin";
|
||||
}
|
||||
}
|
||||
// is it a operator?
|
||||
else if (isOperatorChar.test(ch)) {
|
||||
state.lastTokenWasBuiltin = false;
|
||||
stream.eatWhile(isOperatorChar);
|
||||
return "operator";
|
||||
}
|
||||
else {
|
||||
// get the whole word
|
||||
stream.eatWhile(/[\w\$_{}@]/);
|
||||
var word = stream.current();
|
||||
// is it one of the listed keywords?
|
||||
if (keywords && keywords.propertyIsEnumerable(word))
|
||||
return "keyword";
|
||||
// is it one of the listed functions?
|
||||
if (functions && functions.propertyIsEnumerable(word) ||
|
||||
(stream.current().match(/^#@?[a-z0-9_]+ *$/i) && stream.peek()=="(") &&
|
||||
!(functions && functions.propertyIsEnumerable(word.toLowerCase()))) {
|
||||
state.beforeParams = true;
|
||||
state.lastTokenWasBuiltin = false;
|
||||
return "keyword";
|
||||
}
|
||||
if (state.inString) {
|
||||
state.lastTokenWasBuiltin = false;
|
||||
return "string";
|
||||
}
|
||||
if (stream.pos > word.length && stream.string.charAt(stream.pos-word.length-1)=="." && state.lastTokenWasBuiltin)
|
||||
return "builtin";
|
||||
// default: just a "word"
|
||||
state.lastTokenWasBuiltin = false;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
function tokenString(quote) {
|
||||
return function(stream, state) {
|
||||
var escaped = false, next, end = false;
|
||||
while ((next = stream.next()) != null) {
|
||||
if ((next == quote) && !escaped) {
|
||||
end = true;
|
||||
break;
|
||||
}
|
||||
if (quote=='"' && stream.peek() == '$' && !escaped) {
|
||||
state.inString = true;
|
||||
end = true;
|
||||
break;
|
||||
}
|
||||
escaped = !escaped && next == "\\";
|
||||
}
|
||||
if (end) state.tokenize = tokenBase;
|
||||
return "string";
|
||||
};
|
||||
}
|
||||
|
||||
function tokenComment(stream, state) {
|
||||
var maybeEnd = false, ch;
|
||||
while (ch = stream.next()) {
|
||||
if (ch == "#" && maybeEnd) {
|
||||
state.tokenize = tokenBase;
|
||||
break;
|
||||
}
|
||||
maybeEnd = (ch == "*");
|
||||
}
|
||||
return "comment";
|
||||
}
|
||||
|
||||
function tokenUnparsed(stream, state) {
|
||||
var maybeEnd = 0, ch;
|
||||
while (ch = stream.next()) {
|
||||
if (ch == "#" && maybeEnd == 2) {
|
||||
state.tokenize = tokenBase;
|
||||
break;
|
||||
}
|
||||
if (ch == "]")
|
||||
maybeEnd++;
|
||||
else if (ch != " ")
|
||||
maybeEnd = 0;
|
||||
}
|
||||
return "meta";
|
||||
}
|
||||
// Interface
|
||||
|
||||
return {
|
||||
startState: function() {
|
||||
return {
|
||||
tokenize: tokenBase,
|
||||
beforeParams: false,
|
||||
inParams: false,
|
||||
inString: false,
|
||||
lastTokenWasBuiltin: false
|
||||
};
|
||||
},
|
||||
|
||||
token: function(stream, state) {
|
||||
if (stream.eatSpace()) return null;
|
||||
return state.tokenize(stream, state);
|
||||
},
|
||||
blockCommentStart: "#*",
|
||||
blockCommentEnd: "*#",
|
||||
lineComment: "##",
|
||||
fold: "velocity"
|
||||
};
|
||||
});
|
||||
|
||||
CodeMirror.defineMIME("text/velocity", "velocity");
|
||||
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue