@loftysoul/soul
Version:
The professional Content Management System, based ghost
22 lines (21 loc) • 8.03 kB
JavaScript
(function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror"),require("../javascript/javascript"),require("../css/css"),require("../htmlmixed/htmlmixed")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","../javascript/javascript","../css/css","../htmlmixed/htmlmixed"],t):t(CodeMirror)})((function(t){"use strict"
t.defineMode("pug",(function(e){var n="keyword",i="meta",r="builtin",a="qualifier",s={"{":"}","(":")","[":"]"},c=t.getMode(e,"javascript")
function u(){this.javaScriptLine=!1,this.javaScriptLineExcludesColon=!1,this.javaScriptArguments=!1,this.javaScriptArgumentsDepth=0,this.isInterpolating=!1,this.interpolationNesting=0,this.jsState=t.startState(c),this.restOfLine="",this.isIncludeFiltered=!1,this.isEach=!1,this.lastTag="",this.scriptType="",this.isAttrs=!1,this.attrsNest=[],this.inAttributeName=!0,this.attributeIsType=!1,this.attrValue="",this.indentOf=1/0,this.indentToken="",this.innerMode=null,this.innerState=null,this.innerModeForLine=!1}function o(t,e){if(t.match("#{"))return e.isInterpolating=!0,e.interpolationNesting=0,"punctuation"}function p(n,i){var r
if(n.match(/^:([\w\-]+)/))return e&&e.innerModes&&(r=e.innerModes(n.current().substring(1))),r||(r=n.current().substring(1)),"string"==typeof r&&(r=t.getMode(e,r)),f(n,i,r),"atom"}function f(n,i,r){r=t.mimeModes[r]||r,r=e.innerModes&&e.innerModes(r)||r,r=t.mimeModes[r]||r,r=t.getMode(e,r),i.indentOf=n.indentation(),r&&"null"!==r.name?i.innerMode=r:i.indentToken="string"}function l(e,n,i){if(e.indentation()>n.indentOf||n.innerModeForLine&&!e.sol()||i)return n.innerMode?(n.innerState||(n.innerState=n.innerMode.startState?t.startState(n.innerMode,e.indentation()):{}),e.hideFirstChars(n.indentOf+2,(function(){return n.innerMode.token(e,n.innerState)||!0}))):(e.skipToEnd(),n.indentToken)
e.sol()&&(n.indentOf=1/0,n.indentToken=null,n.innerMode=null,n.innerState=null)}return u.prototype.copy=function(){var e=new u
return e.javaScriptLine=this.javaScriptLine,e.javaScriptLineExcludesColon=this.javaScriptLineExcludesColon,e.javaScriptArguments=this.javaScriptArguments,e.javaScriptArgumentsDepth=this.javaScriptArgumentsDepth,e.isInterpolating=this.isInterpolating,e.interpolationNesting=this.interpolationNesting,e.jsState=t.copyState(c,this.jsState),e.innerMode=this.innerMode,this.innerMode&&this.innerState&&(e.innerState=t.copyState(this.innerMode,this.innerState)),e.restOfLine=this.restOfLine,e.isIncludeFiltered=this.isIncludeFiltered,e.isEach=this.isEach,e.lastTag=this.lastTag,e.scriptType=this.scriptType,e.isAttrs=this.isAttrs,e.attrsNest=this.attrsNest.slice(),e.inAttributeName=this.inAttributeName,e.attributeIsType=this.attributeIsType,e.attrValue=this.attrValue,e.indentOf=this.indentOf,e.indentToken=this.indentToken,e.innerModeForLine=this.innerModeForLine,e},{startState:function(){return new u},copyState:function(t){return t.copy()},token:function(e,u){var h=l(e,u)||function(t,e){if(t.sol()&&(e.restOfLine=""),e.restOfLine){t.skipToEnd()
var n=e.restOfLine
return e.restOfLine="",n}}(e,u)||function(t,e){if(e.isInterpolating){if("}"===t.peek()){if(e.interpolationNesting--,e.interpolationNesting<0)return t.next(),e.isInterpolating=!1,"punctuation"}else"{"===t.peek()&&e.interpolationNesting++
return c.token(t,e.jsState)||!0}}(e,u)||function(t,e){if(e.isIncludeFiltered){var n=p(t,e)
return e.isIncludeFiltered=!1,e.restOfLine="string",n}}(e,u)||function(t,e){if(e.isEach){if(t.match(/^ in\b/))return e.javaScriptLine=!0,e.isEach=!1,n
if(t.sol()||t.eol())e.isEach=!1
else if(t.next()){for(;!t.match(/^ in\b/,!1)&&t.next(););return"variable"}}}(e,u)||function e(n,i){if(i.isAttrs){if(s[n.peek()]&&i.attrsNest.push(s[n.peek()]),i.attrsNest[i.attrsNest.length-1]===n.peek())i.attrsNest.pop()
else if(n.eat(")"))return i.isAttrs=!1,"punctuation"
if(i.inAttributeName&&n.match(/^[^=,\)!]+/))return"="!==n.peek()&&"!"!==n.peek()||(i.inAttributeName=!1,i.jsState=t.startState(c),"script"===i.lastTag&&"type"===n.current().trim().toLowerCase()?i.attributeIsType=!0:i.attributeIsType=!1),"attribute"
var r=c.token(n,i.jsState)
if(i.attributeIsType&&"string"===r&&(i.scriptType=n.current().toString()),0===i.attrsNest.length&&("string"===r||"variable"===r||"keyword"===r))try{return Function("","var x "+i.attrValue.replace(/,\s*$/,"").replace(/^!/,"")),i.inAttributeName=!0,i.attrValue="",n.backUp(n.current().length),e(n,i)}catch(a){}return i.attrValue+=n.current(),r||!0}}(e,u)||function(t,e){if(t.sol()&&(e.javaScriptLine=!1,e.javaScriptLineExcludesColon=!1),e.javaScriptLine){if(e.javaScriptLineExcludesColon&&":"===t.peek())return e.javaScriptLine=!1,void(e.javaScriptLineExcludesColon=!1)
var n=c.token(t,e.jsState)
return t.eol()&&(e.javaScriptLine=!1),n||!0}}(e,u)||function(t,e){if(e.javaScriptArguments)return 0===e.javaScriptArgumentsDepth&&"("!==t.peek()?void(e.javaScriptArguments=!1):("("===t.peek()?e.javaScriptArgumentsDepth++:")"===t.peek()&&e.javaScriptArgumentsDepth--,0===e.javaScriptArgumentsDepth?void(e.javaScriptArguments=!1):c.token(t,e.jsState)||!0)}(e,u)||function(t,e){if(e.mixinCallAfter)return e.mixinCallAfter=!1,t.match(/^\( *[-\w]+ *=/,!1)||(e.javaScriptArguments=!0,e.javaScriptArgumentsDepth=0),!0}(e,u)||function(t){if(t.match(/^yield\b/))return"keyword"}(e)||function(t){if(t.match(/^(?:doctype) *([^\n]+)?/))return i}(e)||o(e,u)||function(t,e){if(t.match(/^case\b/))return e.javaScriptLine=!0,n}(e,u)||function(t,e){if(t.match(/^when\b/))return e.javaScriptLine=!0,e.javaScriptLineExcludesColon=!0,n}(e,u)||function(t){if(t.match(/^default\b/))return n}(e)||function(t,e){if(t.match(/^extends?\b/))return e.restOfLine="string",n}(e,u)||function(t,e){if(t.match(/^append\b/))return e.restOfLine="variable",n}(e,u)||function(t,e){if(t.match(/^prepend\b/))return e.restOfLine="variable",n}(e,u)||function(t,e){if(t.match(/^block\b *(?:(prepend|append)\b)?/))return e.restOfLine="variable",n}(e,u)||function(t,e){if(t.match(/^include\b/))return e.restOfLine="string",n}(e,u)||function(t,e){if(t.match(/^include:([a-zA-Z0-9\-]+)/,!1)&&t.match("include"))return e.isIncludeFiltered=!0,n}(e,u)||function(t,e){if(t.match(/^mixin\b/))return e.javaScriptLine=!0,n}(e,u)||function(t,e){return t.match(/^\+([-\w]+)/)?(t.match(/^\( *[-\w]+ *=/,!1)||(e.javaScriptArguments=!0,e.javaScriptArgumentsDepth=0),"variable"):t.match(/^\+#{/,!1)?(t.next(),e.mixinCallAfter=!0,o(t,e)):void 0}(e,u)||function(t,e){if(t.match(/^(if|unless|else if|else)\b/))return e.javaScriptLine=!0,n}(e,u)||function(t,e){if(t.match(/^(- *)?(each|for)\b/))return e.isEach=!0,n}(e,u)||function(t,e){if(t.match(/^while\b/))return e.javaScriptLine=!0,n}(e,u)||function(t,e){var n
if(n=t.match(/^(\w(?:[-:\w]*\w)?)\/?/))return e.lastTag=n[1].toLowerCase(),"script"===e.lastTag&&(e.scriptType="application/javascript"),"tag"}(e,u)||p(e,u)||function(t,e){if(t.match(/^(!?=|-)/))return e.javaScriptLine=!0,"punctuation"}(e,u)||function(t){if(t.match(/^#([\w-]+)/))return r}(e)||function(t){if(t.match(/^\.([\w-]+)/))return a}(e)||function(t,e){if("("==t.peek())return t.next(),e.isAttrs=!0,e.attrsNest=[],e.inAttributeName=!0,e.attrValue="",e.attributeIsType=!1,"punctuation"}(e,u)||function(t,e){if(t.match(/^&attributes\b/))return e.javaScriptArguments=!0,e.javaScriptArgumentsDepth=0,"keyword"}(e,u)||function(t){if(t.sol()&&t.eatSpace())return"indent"}(e)||function(t,e){return t.match(/^(?:\| ?| )([^\n]+)/)?"string":t.match(/^(<[^\n]*)/,!1)?(f(t,e,"htmlmixed"),e.innerModeForLine=!0,l(t,e,!0)):void 0}(e,u)||function(t,e){if(t.match(/^ *\/\/(-)?([^\n]*)/))return e.indentOf=t.indentation(),e.indentToken="comment","comment"}(e,u)||function(t){if(t.match(/^: */))return"colon"}(e)||function(t,e){if(t.eat(".")){var n=null
return"script"===e.lastTag&&-1!=e.scriptType.toLowerCase().indexOf("javascript")?n=e.scriptType.toLowerCase().replace(/"|'/g,""):"style"===e.lastTag&&(n="css"),f(t,e,n),"dot"}}(e,u)||function(t){return t.next(),null}(e)
return!0===h?null:h}}}),"javascript","css","htmlmixed"),t.defineMIME("text/x-pug","pug"),t.defineMIME("text/x-jade","pug")}))