jekyll-theme-anc 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE.txt +21 -0
- data/README.md +1 -0
- data/_includes/disqus.html +42 -0
- data/_includes/facebook_share_btn.html +1 -0
- data/_includes/footer.html +79 -0
- data/_includes/go2top.html +22 -0
- data/_includes/google-analytics.html +11 -0
- data/_includes/head.html +50 -0
- data/_includes/header.html +13 -0
- data/_includes/jspdf.html +41 -0
- data/_includes/nav.html +25 -0
- data/_includes/pageloginpoper.html +59 -0
- data/_includes/post-categories.html +8 -0
- data/_includes/post_seo.html +59 -0
- data/_includes/youtube_video.html +11 -0
- data/_layouts/blog.html +33 -0
- data/_layouts/default.html +151 -0
- data/_layouts/home.html +26 -0
- data/_layouts/page.html +5 -0
- data/_layouts/post.html +83 -0
- data/_sass/anc.scss +9 -0
- data/_sass/anc/_base.scss +144 -0
- data/_sass/anc/_layout.scss +0 -0
- data/_sass/anc/_materialize.scss +38 -0
- data/_sass/anc/_syntax-highlighting.scss +78 -0
- data/_sass/anc/components/_variables.scss +343 -0
- data/_sass/materialize-css/components/_badges.scss +47 -0
- data/_sass/materialize-css/components/_buttons.scss +291 -0
- data/_sass/materialize-css/components/_cards.scss +196 -0
- data/_sass/materialize-css/components/_carousel.scss +90 -0
- data/_sass/materialize-css/components/_chips.scss +89 -0
- data/_sass/materialize-css/components/_collapsible.scss +84 -0
- data/_sass/materialize-css/components/_color.scss +412 -0
- data/_sass/materialize-css/components/_dropdown.scss +68 -0
- data/_sass/materialize-css/components/_global.scss +734 -0
- data/_sass/materialize-css/components/_grid.scss +156 -0
- data/_sass/materialize-css/components/_icons-material-design.scss +5 -0
- data/_sass/materialize-css/components/_materialbox.scss +43 -0
- data/_sass/materialize-css/components/_modal.scss +90 -0
- data/_sass/materialize-css/components/_navbar.scss +208 -0
- data/_sass/materialize-css/components/_normalize.scss +424 -0
- data/_sass/materialize-css/components/_preloader.scss +334 -0
- data/_sass/materialize-css/components/_pulse.scss +34 -0
- data/_sass/materialize-css/components/_roboto.scss +39 -0
- data/_sass/materialize-css/components/_sideNav.scss +214 -0
- data/_sass/materialize-css/components/_slider.scss +92 -0
- data/_sass/materialize-css/components/_table_of_contents.scss +33 -0
- data/_sass/materialize-css/components/_tabs.scss +93 -0
- data/_sass/materialize-css/components/_tapTarget.scss +103 -0
- data/_sass/materialize-css/components/_toast.scss +59 -0
- data/_sass/materialize-css/components/_tooltip.scss +31 -0
- data/_sass/materialize-css/components/_transitions.scss +13 -0
- data/_sass/materialize-css/components/_typography.scss +61 -0
- data/_sass/materialize-css/components/_variables.scss +343 -0
- data/_sass/materialize-css/components/_waves.scss +114 -0
- data/_sass/materialize-css/components/date_picker/_default.date.scss +456 -0
- data/_sass/materialize-css/components/date_picker/_default.scss +212 -0
- data/_sass/materialize-css/components/date_picker/_default.time.scss +267 -0
- data/_sass/materialize-css/components/forms/_checkboxes.scss +210 -0
- data/_sass/materialize-css/components/forms/_file-input.scss +44 -0
- data/_sass/materialize-css/components/forms/_forms.scss +22 -0
- data/_sass/materialize-css/components/forms/_input-fields.scss +333 -0
- data/_sass/materialize-css/components/forms/_radio-buttons.scss +115 -0
- data/_sass/materialize-css/components/forms/_range.scss +160 -0
- data/_sass/materialize-css/components/forms/_select.scss +182 -0
- data/_sass/materialize-css/components/forms/_switches.scss +89 -0
- data/_sass/materialize-css/materialize.scss +42 -0
- data/_sass/materialize/components/_badges.scss +47 -0
- data/_sass/materialize/components/_buttons.scss +291 -0
- data/_sass/materialize/components/_cards.scss +196 -0
- data/_sass/materialize/components/_carousel.scss +90 -0
- data/_sass/materialize/components/_chips.scss +89 -0
- data/_sass/materialize/components/_collapsible.scss +84 -0
- data/_sass/materialize/components/_color.scss +412 -0
- data/_sass/materialize/components/_dropdown.scss +68 -0
- data/_sass/materialize/components/_global.scss +734 -0
- data/_sass/materialize/components/_grid.scss +156 -0
- data/_sass/materialize/components/_icons-material-design.scss +5 -0
- data/_sass/materialize/components/_materialbox.scss +43 -0
- data/_sass/materialize/components/_modal.scss +90 -0
- data/_sass/materialize/components/_navbar.scss +208 -0
- data/_sass/materialize/components/_normalize.scss +424 -0
- data/_sass/materialize/components/_preloader.scss +334 -0
- data/_sass/materialize/components/_pulse.scss +34 -0
- data/_sass/materialize/components/_roboto.scss +39 -0
- data/_sass/materialize/components/_sideNav.scss +214 -0
- data/_sass/materialize/components/_slider.scss +92 -0
- data/_sass/materialize/components/_table_of_contents.scss +33 -0
- data/_sass/materialize/components/_tabs.scss +93 -0
- data/_sass/materialize/components/_tapTarget.scss +103 -0
- data/_sass/materialize/components/_toast.scss +59 -0
- data/_sass/materialize/components/_tooltip.scss +31 -0
- data/_sass/materialize/components/_transitions.scss +13 -0
- data/_sass/materialize/components/_typography.scss +61 -0
- data/_sass/materialize/components/_variables.scss +343 -0
- data/_sass/materialize/components/_waves.scss +114 -0
- data/_sass/materialize/components/date_picker/_default.date.scss +456 -0
- data/_sass/materialize/components/date_picker/_default.scss +212 -0
- data/_sass/materialize/components/date_picker/_default.time.scss +267 -0
- data/_sass/materialize/components/forms/_checkboxes.scss +210 -0
- data/_sass/materialize/components/forms/_file-input.scss +44 -0
- data/_sass/materialize/components/forms/_forms.scss +22 -0
- data/_sass/materialize/components/forms/_input-fields.scss +333 -0
- data/_sass/materialize/components/forms/_radio-buttons.scss +115 -0
- data/_sass/materialize/components/forms/_range.scss +160 -0
- data/_sass/materialize/components/forms/_select.scss +182 -0
- data/_sass/materialize/components/forms/_switches.scss +89 -0
- data/_sass/materialize/materialize.scss +42 -0
- data/assets/fonts/FontAwesome.otf +0 -0
- data/assets/fonts/fontawesome-webfont.eot +0 -0
- data/assets/fonts/fontawesome-webfont.svg +2671 -0
- data/assets/fonts/fontawesome-webfont.ttf +0 -0
- data/assets/fonts/fontawesome-webfont.woff +0 -0
- data/assets/fonts/fontawesome-webfont.woff2 +0 -0
- data/assets/fonts/roboto/Roboto-Bold.woff +0 -0
- data/assets/fonts/roboto/Roboto-Bold.woff2 +0 -0
- data/assets/fonts/roboto/Roboto-Light.woff +0 -0
- data/assets/fonts/roboto/Roboto-Light.woff2 +0 -0
- data/assets/fonts/roboto/Roboto-Medium.woff +0 -0
- data/assets/fonts/roboto/Roboto-Medium.woff2 +0 -0
- data/assets/fonts/roboto/Roboto-Regular.woff +0 -0
- data/assets/fonts/roboto/Roboto-Regular.woff2 +0 -0
- data/assets/fonts/roboto/Roboto-Thin.woff +0 -0
- data/assets/fonts/roboto/Roboto-Thin.woff2 +0 -0
- data/assets/images/close.png +0 -0
- data/assets/images/loader.gif +0 -0
- data/assets/img/icons/facebook-square.png +0 -0
- data/assets/img/icons/github-square.png +0 -0
- data/assets/img/icons/twitter-square.png +0 -0
- data/assets/img/icons/youtube-square.png +0 -0
- data/assets/img/jubayed11.37-16.jpg +0 -0
- data/assets/img/parallax1.jpg +0 -0
- data/assets/img/sample-1.jpg +0 -0
- data/assets/js/custom_script.js +200 -0
- data/assets/js/highlight.pack.js +2 -0
- data/assets/js/materialize.min.js +6 -0
- data/assets/js/mode/apl/apl.js +174 -0
- data/assets/js/mode/asciiarmor/asciiarmor.js +74 -0
- data/assets/js/mode/asn.1/asn.1.js +204 -0
- data/assets/js/mode/asterisk/asterisk.js +196 -0
- data/assets/js/mode/brainfuck/brainfuck.js +85 -0
- data/assets/js/mode/clike/clike.js +789 -0
- data/assets/js/mode/clojure/clojure.js +306 -0
- data/assets/js/mode/cmake/cmake.js +97 -0
- data/assets/js/mode/cobol/cobol.js +255 -0
- data/assets/js/mode/coffeescript/coffeescript.js +359 -0
- data/assets/js/mode/commonlisp/commonlisp.js +124 -0
- data/assets/js/mode/crystal/crystal.js +433 -0
- data/assets/js/mode/css/css.js +831 -0
- data/assets/js/mode/cypher/cypher.js +150 -0
- data/assets/js/mode/d/d.js +218 -0
- data/assets/js/mode/dart/dart.js +157 -0
- data/assets/js/mode/diff/diff.js +47 -0
- data/assets/js/mode/django/django.js +356 -0
- data/assets/js/mode/dockerfile/dockerfile.js +79 -0
- data/assets/js/mode/dtd/dtd.js +142 -0
- data/assets/js/mode/dylan/dylan.js +352 -0
- data/assets/js/mode/ebnf/ebnf.js +195 -0
- data/assets/js/mode/ecl/ecl.js +206 -0
- data/assets/js/mode/eiffel/eiffel.js +160 -0
- data/assets/js/mode/elm/elm.js +205 -0
- data/assets/js/mode/erlang/erlang.js +619 -0
- data/assets/js/mode/factor/factor.js +85 -0
- data/assets/js/mode/fcl/fcl.js +173 -0
- data/assets/js/mode/forth/forth.js +180 -0
- data/assets/js/mode/fortran/fortran.js +188 -0
- data/assets/js/mode/gas/gas.js +345 -0
- data/assets/js/mode/gfm/gfm.js +129 -0
- data/assets/js/mode/gherkin/gherkin.js +178 -0
- data/assets/js/mode/go/go.js +187 -0
- data/assets/js/mode/groovy/groovy.js +230 -0
- data/assets/js/mode/haml/haml.js +161 -0
- data/assets/js/mode/handlebars/handlebars.js +62 -0
- data/assets/js/mode/haskell-literate/haskell-literate.js +43 -0
- data/assets/js/mode/haskell/haskell.js +267 -0
- data/assets/js/mode/haxe/haxe.js +515 -0
- data/assets/js/mode/htmlembedded/htmlembedded.js +28 -0
- data/assets/js/mode/htmlmixed/htmlmixed.js +152 -0
- data/assets/js/mode/http/http.js +113 -0
- data/assets/js/mode/idl/idl.js +290 -0
- data/assets/js/mode/javascript/javascript.js +838 -0
- data/assets/js/mode/jinja2/jinja2.js +142 -0
- data/assets/js/mode/jsx/jsx.js +148 -0
- data/assets/js/mode/julia/julia.js +418 -0
- data/assets/js/mode/livescript/livescript.js +280 -0
- data/assets/js/mode/lua/lua.js +159 -0
- data/assets/js/mode/markdown/markdown.js +859 -0
- data/assets/js/mode/mathematica/mathematica.js +176 -0
- data/assets/js/mode/mbox/mbox.js +129 -0
- data/assets/js/mode/meta.js +215 -0
- data/assets/js/mode/mirc/mirc.js +193 -0
- data/assets/js/mode/mllike/mllike.js +208 -0
- data/assets/js/mode/modelica/modelica.js +245 -0
- data/assets/js/mode/mscgen/mscgen.js +175 -0
- data/assets/js/mode/mumps/mumps.js +148 -0
- data/assets/js/mode/nginx/nginx.js +178 -0
- data/assets/js/mode/nsis/nsis.js +95 -0
- data/assets/js/mode/ntriples/ntriples.js +195 -0
- data/assets/js/mode/octave/octave.js +139 -0
- data/assets/js/mode/oz/oz.js +252 -0
- data/assets/js/mode/pascal/pascal.js +109 -0
- data/assets/js/mode/pegjs/pegjs.js +114 -0
- data/assets/js/mode/perl/perl.js +837 -0
- data/assets/js/mode/php/php.js +234 -0
- data/assets/js/mode/pig/pig.js +178 -0
- data/assets/js/mode/powershell/powershell.js +398 -0
- data/assets/js/mode/properties/properties.js +78 -0
- data/assets/js/mode/protobuf/protobuf.js +68 -0
- data/assets/js/mode/pug/pug.js +591 -0
- data/assets/js/mode/puppet/puppet.js +220 -0
- data/assets/js/mode/python/python.js +334 -0
- data/assets/js/mode/q/q.js +139 -0
- data/assets/js/mode/r/r.js +183 -0
- data/assets/js/mode/rpm/changes/index.html +66 -0
- data/assets/js/mode/rpm/rpm.js +109 -0
- data/assets/js/mode/rst/rst.js +557 -0
- data/assets/js/mode/ruby/ruby.js +295 -0
- data/assets/js/mode/rust/rust.js +72 -0
- data/assets/js/mode/sas/sas.js +303 -0
- data/assets/js/mode/sass/sass.js +454 -0
- data/assets/js/mode/scheme/scheme.js +249 -0
- data/assets/js/mode/shell/shell.js +142 -0
- data/assets/js/mode/sieve/sieve.js +193 -0
- data/assets/js/mode/slim/slim.js +575 -0
- data/assets/js/mode/smalltalk/smalltalk.js +168 -0
- data/assets/js/mode/smarty/smarty.js +225 -0
- data/assets/js/mode/solr/solr.js +104 -0
- data/assets/js/mode/soy/soy.js +342 -0
- data/assets/js/mode/sparql/sparql.js +180 -0
- data/assets/js/mode/spreadsheet/spreadsheet.js +112 -0
- data/assets/js/mode/sql/sql.js +475 -0
- data/assets/js/mode/stex/stex.js +251 -0
- data/assets/js/mode/stylus/stylus.js +771 -0
- data/assets/js/mode/swift/swift.js +210 -0
- data/assets/js/mode/tcl/tcl.js +139 -0
- data/assets/js/mode/textile/textile.js +469 -0
- data/assets/js/mode/tiddlywiki/tiddlywiki.css +14 -0
- data/assets/js/mode/tiddlywiki/tiddlywiki.js +308 -0
- data/assets/js/mode/tiki/tiki.css +26 -0
- data/assets/js/mode/tiki/tiki.js +312 -0
- data/assets/js/mode/toml/toml.js +88 -0
- data/assets/js/mode/tornado/tornado.js +68 -0
- data/assets/js/mode/troff/troff.js +84 -0
- data/assets/js/mode/ttcn-cfg/ttcn-cfg.js +214 -0
- data/assets/js/mode/ttcn/ttcn.js +283 -0
- data/assets/js/mode/turtle/turtle.js +162 -0
- data/assets/js/mode/twig/twig.js +141 -0
- data/assets/js/mode/vb/vb.js +275 -0
- data/assets/js/mode/vbscript/vbscript.js +350 -0
- data/assets/js/mode/velocity/velocity.js +201 -0
- data/assets/js/mode/verilog/verilog.js +675 -0
- data/assets/js/mode/vhdl/vhdl.js +189 -0
- data/assets/js/mode/vue/vue.js +70 -0
- data/assets/js/mode/webidl/webidl.js +195 -0
- data/assets/js/mode/xml/xml.js +394 -0
- data/assets/js/mode/xquery/xquery.js +448 -0
- data/assets/js/mode/yacas/yacas.js +204 -0
- data/assets/js/mode/yaml-frontmatter/yaml-frontmatter.js +68 -0
- data/assets/js/mode/yaml/yaml.js +118 -0
- data/assets/js/mode/z80/z80.js +116 -0
- data/assets/main.scss +5 -0
- metadata +347 -0
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
|
2
|
+
// Distributed under an MIT license: http://codemirror.net/LICENSE
|
|
3
|
+
|
|
4
|
+
// Swift mode created by Michael Kaminsky https://github.com/mkaminsky11
|
|
5
|
+
|
|
6
|
+
(function(mod) {
|
|
7
|
+
if (typeof exports == "object" && typeof module == "object")
|
|
8
|
+
mod(require("../../lib/codemirror"))
|
|
9
|
+
else if (typeof define == "function" && define.amd)
|
|
10
|
+
define(["../../lib/codemirror"], mod)
|
|
11
|
+
else
|
|
12
|
+
mod(CodeMirror)
|
|
13
|
+
})(function(CodeMirror) {
|
|
14
|
+
"use strict"
|
|
15
|
+
|
|
16
|
+
function wordSet(words) {
|
|
17
|
+
var set = {}
|
|
18
|
+
for (var i = 0; i < words.length; i++) set[words[i]] = true
|
|
19
|
+
return set
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
var keywords = wordSet(["_","var","let","class","enum","extension","import","protocol","struct","func","typealias","associatedtype",
|
|
23
|
+
"open","public","internal","fileprivate","private","deinit","init","new","override","self","subscript","super",
|
|
24
|
+
"convenience","dynamic","final","indirect","lazy","required","static","unowned","unowned(safe)","unowned(unsafe)","weak","as","is",
|
|
25
|
+
"break","case","continue","default","else","fallthrough","for","guard","if","in","repeat","switch","where","while",
|
|
26
|
+
"defer","return","inout","mutating","nonmutating","catch","do","rethrows","throw","throws","try","didSet","get","set","willSet",
|
|
27
|
+
"assignment","associativity","infix","left","none","operator","postfix","precedence","precedencegroup","prefix","right",
|
|
28
|
+
"Any","AnyObject","Type","dynamicType","Self","Protocol","__COLUMN__","__FILE__","__FUNCTION__","__LINE__"])
|
|
29
|
+
var definingKeywords = wordSet(["var","let","class","enum","extension","import","protocol","struct","func","typealias","associatedtype","for"])
|
|
30
|
+
var atoms = wordSet(["true","false","nil","self","super","_"])
|
|
31
|
+
var types = wordSet(["Array","Bool","Character","Dictionary","Double","Float","Int","Int8","Int16","Int32","Int64","Never","Optional","Set","String",
|
|
32
|
+
"UInt8","UInt16","UInt32","UInt64","Void"])
|
|
33
|
+
var operators = "+-/*%=|&<>~^?!"
|
|
34
|
+
var punc = ":;,.(){}[]"
|
|
35
|
+
var binary = /^\-?0b[01][01_]*/
|
|
36
|
+
var octal = /^\-?0o[0-7][0-7_]*/
|
|
37
|
+
var hexadecimal = /^\-?0x[\dA-Fa-f][\dA-Fa-f_]*(?:(?:\.[\dA-Fa-f][\dA-Fa-f_]*)?[Pp]\-?\d[\d_]*)?/
|
|
38
|
+
var decimal = /^\-?\d[\d_]*(?:\.\d[\d_]*)?(?:[Ee]\-?\d[\d_]*)?/
|
|
39
|
+
var identifier = /^\$\d+|(`?)[_A-Za-z][_A-Za-z$0-9]*\1/
|
|
40
|
+
var property = /^\.(?:\$\d+|(`?)[_A-Za-z][_A-Za-z$0-9]*\1)/
|
|
41
|
+
var instruction = /^\#[A-Za-z]+/
|
|
42
|
+
var attribute = /^@(?:\$\d+|(`?)[_A-Za-z][_A-Za-z$0-9]*\1)/
|
|
43
|
+
//var regexp = /^\/(?!\s)(?:\/\/)?(?:\\.|[^\/])+\//
|
|
44
|
+
|
|
45
|
+
function tokenBase(stream, state, prev) {
|
|
46
|
+
if (stream.sol()) state.indented = stream.indentation()
|
|
47
|
+
if (stream.eatSpace()) return null
|
|
48
|
+
|
|
49
|
+
var ch = stream.peek()
|
|
50
|
+
if (ch == "/") {
|
|
51
|
+
if (stream.match("//")) {
|
|
52
|
+
stream.skipToEnd()
|
|
53
|
+
return "comment"
|
|
54
|
+
}
|
|
55
|
+
if (stream.match("/*")) {
|
|
56
|
+
state.tokenize.push(tokenComment)
|
|
57
|
+
return tokenComment(stream, state)
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (stream.match(instruction)) return "builtin"
|
|
61
|
+
if (stream.match(attribute)) return "attribute"
|
|
62
|
+
if (stream.match(binary)) return "number"
|
|
63
|
+
if (stream.match(octal)) return "number"
|
|
64
|
+
if (stream.match(hexadecimal)) return "number"
|
|
65
|
+
if (stream.match(decimal)) return "number"
|
|
66
|
+
if (stream.match(property)) return "property"
|
|
67
|
+
if (operators.indexOf(ch) > -1) {
|
|
68
|
+
stream.next()
|
|
69
|
+
return "operator"
|
|
70
|
+
}
|
|
71
|
+
if (punc.indexOf(ch) > -1) {
|
|
72
|
+
stream.next()
|
|
73
|
+
stream.match("..")
|
|
74
|
+
return "punctuation"
|
|
75
|
+
}
|
|
76
|
+
if (ch == '"' || ch == "'") {
|
|
77
|
+
stream.next()
|
|
78
|
+
var tokenize = tokenString(ch)
|
|
79
|
+
state.tokenize.push(tokenize)
|
|
80
|
+
return tokenize(stream, state)
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
if (stream.match(identifier)) {
|
|
84
|
+
var ident = stream.current()
|
|
85
|
+
if (types.hasOwnProperty(ident)) return "variable-2"
|
|
86
|
+
if (atoms.hasOwnProperty(ident)) return "atom"
|
|
87
|
+
if (keywords.hasOwnProperty(ident)) {
|
|
88
|
+
if (definingKeywords.hasOwnProperty(ident))
|
|
89
|
+
state.prev = "define"
|
|
90
|
+
return "keyword"
|
|
91
|
+
}
|
|
92
|
+
if (prev == "define") return "def"
|
|
93
|
+
return "variable"
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
stream.next()
|
|
97
|
+
return null
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function tokenUntilClosingParen() {
|
|
101
|
+
var depth = 0
|
|
102
|
+
return function(stream, state, prev) {
|
|
103
|
+
var inner = tokenBase(stream, state, prev)
|
|
104
|
+
if (inner == "punctuation") {
|
|
105
|
+
if (stream.current() == "(") ++depth
|
|
106
|
+
else if (stream.current() == ")") {
|
|
107
|
+
if (depth == 0) {
|
|
108
|
+
stream.backUp(1)
|
|
109
|
+
state.tokenize.pop()
|
|
110
|
+
return state.tokenize[state.tokenize.length - 1](stream, state)
|
|
111
|
+
}
|
|
112
|
+
else --depth
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return inner
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
function tokenString(quote) {
|
|
120
|
+
return function(stream, state) {
|
|
121
|
+
var ch, escaped = false
|
|
122
|
+
while (ch = stream.next()) {
|
|
123
|
+
if (escaped) {
|
|
124
|
+
if (ch == "(") {
|
|
125
|
+
state.tokenize.push(tokenUntilClosingParen())
|
|
126
|
+
return "string"
|
|
127
|
+
}
|
|
128
|
+
escaped = false
|
|
129
|
+
} else if (ch == quote) {
|
|
130
|
+
break
|
|
131
|
+
} else {
|
|
132
|
+
escaped = ch == "\\"
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
state.tokenize.pop()
|
|
136
|
+
return "string"
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
function tokenComment(stream, state) {
|
|
141
|
+
stream.match(/^(?:[^*]|\*(?!\/))*/)
|
|
142
|
+
if (stream.match("*/")) state.tokenize.pop()
|
|
143
|
+
return "comment"
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
function Context(prev, align, indented) {
|
|
147
|
+
this.prev = prev
|
|
148
|
+
this.align = align
|
|
149
|
+
this.indented = indented
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
function pushContext(state, stream) {
|
|
153
|
+
var align = stream.match(/^\s*($|\/[\/\*])/, false) ? null : stream.column() + 1
|
|
154
|
+
state.context = new Context(state.context, align, state.indented)
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
function popContext(state) {
|
|
158
|
+
if (state.context) {
|
|
159
|
+
state.indented = state.context.indented
|
|
160
|
+
state.context = state.context.prev
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
CodeMirror.defineMode("swift", function(config) {
|
|
165
|
+
return {
|
|
166
|
+
startState: function() {
|
|
167
|
+
return {
|
|
168
|
+
prev: null,
|
|
169
|
+
context: null,
|
|
170
|
+
indented: 0,
|
|
171
|
+
tokenize: []
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
|
|
175
|
+
token: function(stream, state) {
|
|
176
|
+
var prev = state.prev
|
|
177
|
+
state.prev = null
|
|
178
|
+
var tokenize = state.tokenize[state.tokenize.length - 1] || tokenBase
|
|
179
|
+
var style = tokenize(stream, state, prev)
|
|
180
|
+
if (!style || style == "comment") state.prev = prev
|
|
181
|
+
else if (!state.prev) state.prev = style
|
|
182
|
+
|
|
183
|
+
if (style == "punctuation") {
|
|
184
|
+
var bracket = /[\(\[\{]|([\]\)\}])/.exec(stream.current())
|
|
185
|
+
if (bracket) (bracket[1] ? popContext : pushContext)(state, stream)
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
return style
|
|
189
|
+
},
|
|
190
|
+
|
|
191
|
+
indent: function(state, textAfter) {
|
|
192
|
+
var cx = state.context
|
|
193
|
+
if (!cx) return 0
|
|
194
|
+
var closing = /^[\]\}\)]/.test(textAfter)
|
|
195
|
+
if (cx.align != null) return cx.align - (closing ? 1 : 0)
|
|
196
|
+
return cx.indented + (closing ? 0 : config.indentUnit)
|
|
197
|
+
},
|
|
198
|
+
|
|
199
|
+
electricInput: /^\s*[\)\}\]]$/,
|
|
200
|
+
|
|
201
|
+
lineComment: "//",
|
|
202
|
+
blockCommentStart: "/*",
|
|
203
|
+
blockCommentEnd: "*/",
|
|
204
|
+
fold: "brace",
|
|
205
|
+
closeBrackets: "()[]{}''\"\"``"
|
|
206
|
+
}
|
|
207
|
+
})
|
|
208
|
+
|
|
209
|
+
CodeMirror.defineMIME("text/x-swift","swift")
|
|
210
|
+
});
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
|
2
|
+
// Distributed under an MIT license: http://codemirror.net/LICENSE
|
|
3
|
+
|
|
4
|
+
//tcl mode by Ford_Lawnmower :: Based on Velocity mode by Steve O'Hara
|
|
5
|
+
|
|
6
|
+
(function(mod) {
|
|
7
|
+
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
|
8
|
+
mod(require("../../lib/codemirror"));
|
|
9
|
+
else if (typeof define == "function" && define.amd) // AMD
|
|
10
|
+
define(["../../lib/codemirror"], mod);
|
|
11
|
+
else // Plain browser env
|
|
12
|
+
mod(CodeMirror);
|
|
13
|
+
})(function(CodeMirror) {
|
|
14
|
+
"use strict";
|
|
15
|
+
|
|
16
|
+
CodeMirror.defineMode("tcl", function() {
|
|
17
|
+
function parseWords(str) {
|
|
18
|
+
var obj = {}, words = str.split(" ");
|
|
19
|
+
for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
|
|
20
|
+
return obj;
|
|
21
|
+
}
|
|
22
|
+
var keywords = parseWords("Tcl safe after append array auto_execok auto_import auto_load " +
|
|
23
|
+
"auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror " +
|
|
24
|
+
"binary break catch cd close concat continue dde eof encoding error " +
|
|
25
|
+
"eval exec exit expr fblocked fconfigure fcopy file fileevent filename " +
|
|
26
|
+
"filename flush for foreach format gets glob global history http if " +
|
|
27
|
+
"incr info interp join lappend lindex linsert list llength load lrange " +
|
|
28
|
+
"lreplace lsearch lset lsort memory msgcat namespace open package parray " +
|
|
29
|
+
"pid pkg::create pkg_mkIndex proc puts pwd re_syntax read regex regexp " +
|
|
30
|
+
"registry regsub rename resource return scan seek set socket source split " +
|
|
31
|
+
"string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord " +
|
|
32
|
+
"tcl_wordBreakAfter tcl_startOfPreviousWord tcl_wordBreakBefore tcltest " +
|
|
33
|
+
"tclvars tell time trace unknown unset update uplevel upvar variable " +
|
|
34
|
+
"vwait");
|
|
35
|
+
var functions = parseWords("if elseif else and not or eq ne in ni for foreach while switch");
|
|
36
|
+
var isOperatorChar = /[+\-*&%=<>!?^\/\|]/;
|
|
37
|
+
function chain(stream, state, f) {
|
|
38
|
+
state.tokenize = f;
|
|
39
|
+
return f(stream, state);
|
|
40
|
+
}
|
|
41
|
+
function tokenBase(stream, state) {
|
|
42
|
+
var beforeParams = state.beforeParams;
|
|
43
|
+
state.beforeParams = false;
|
|
44
|
+
var ch = stream.next();
|
|
45
|
+
if ((ch == '"' || ch == "'") && state.inParams) {
|
|
46
|
+
return chain(stream, state, tokenString(ch));
|
|
47
|
+
} else if (/[\[\]{}\(\),;\.]/.test(ch)) {
|
|
48
|
+
if (ch == "(" && beforeParams) state.inParams = true;
|
|
49
|
+
else if (ch == ")") state.inParams = false;
|
|
50
|
+
return null;
|
|
51
|
+
} else if (/\d/.test(ch)) {
|
|
52
|
+
stream.eatWhile(/[\w\.]/);
|
|
53
|
+
return "number";
|
|
54
|
+
} else if (ch == "#") {
|
|
55
|
+
if (stream.eat("*"))
|
|
56
|
+
return chain(stream, state, tokenComment);
|
|
57
|
+
if (ch == "#" && stream.match(/ *\[ *\[/))
|
|
58
|
+
return chain(stream, state, tokenUnparsed);
|
|
59
|
+
stream.skipToEnd();
|
|
60
|
+
return "comment";
|
|
61
|
+
} else if (ch == '"') {
|
|
62
|
+
stream.skipTo(/"/);
|
|
63
|
+
return "comment";
|
|
64
|
+
} else if (ch == "$") {
|
|
65
|
+
stream.eatWhile(/[$_a-z0-9A-Z\.{:]/);
|
|
66
|
+
stream.eatWhile(/}/);
|
|
67
|
+
state.beforeParams = true;
|
|
68
|
+
return "builtin";
|
|
69
|
+
} else if (isOperatorChar.test(ch)) {
|
|
70
|
+
stream.eatWhile(isOperatorChar);
|
|
71
|
+
return "comment";
|
|
72
|
+
} else {
|
|
73
|
+
stream.eatWhile(/[\w\$_{}\xa1-\uffff]/);
|
|
74
|
+
var word = stream.current().toLowerCase();
|
|
75
|
+
if (keywords && keywords.propertyIsEnumerable(word))
|
|
76
|
+
return "keyword";
|
|
77
|
+
if (functions && functions.propertyIsEnumerable(word)) {
|
|
78
|
+
state.beforeParams = true;
|
|
79
|
+
return "keyword";
|
|
80
|
+
}
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
function tokenString(quote) {
|
|
85
|
+
return function(stream, state) {
|
|
86
|
+
var escaped = false, next, end = false;
|
|
87
|
+
while ((next = stream.next()) != null) {
|
|
88
|
+
if (next == quote && !escaped) {
|
|
89
|
+
end = true;
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
escaped = !escaped && next == "\\";
|
|
93
|
+
}
|
|
94
|
+
if (end) state.tokenize = tokenBase;
|
|
95
|
+
return "string";
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
function tokenComment(stream, state) {
|
|
99
|
+
var maybeEnd = false, ch;
|
|
100
|
+
while (ch = stream.next()) {
|
|
101
|
+
if (ch == "#" && maybeEnd) {
|
|
102
|
+
state.tokenize = tokenBase;
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
maybeEnd = (ch == "*");
|
|
106
|
+
}
|
|
107
|
+
return "comment";
|
|
108
|
+
}
|
|
109
|
+
function tokenUnparsed(stream, state) {
|
|
110
|
+
var maybeEnd = 0, ch;
|
|
111
|
+
while (ch = stream.next()) {
|
|
112
|
+
if (ch == "#" && maybeEnd == 2) {
|
|
113
|
+
state.tokenize = tokenBase;
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
if (ch == "]")
|
|
117
|
+
maybeEnd++;
|
|
118
|
+
else if (ch != " ")
|
|
119
|
+
maybeEnd = 0;
|
|
120
|
+
}
|
|
121
|
+
return "meta";
|
|
122
|
+
}
|
|
123
|
+
return {
|
|
124
|
+
startState: function() {
|
|
125
|
+
return {
|
|
126
|
+
tokenize: tokenBase,
|
|
127
|
+
beforeParams: false,
|
|
128
|
+
inParams: false
|
|
129
|
+
};
|
|
130
|
+
},
|
|
131
|
+
token: function(stream, state) {
|
|
132
|
+
if (stream.eatSpace()) return null;
|
|
133
|
+
return state.tokenize(stream, state);
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
});
|
|
137
|
+
CodeMirror.defineMIME("text/x-tcl", "tcl");
|
|
138
|
+
|
|
139
|
+
});
|
|
@@ -0,0 +1,469 @@
|
|
|
1
|
+
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
|
2
|
+
// Distributed under an MIT license: http://codemirror.net/LICENSE
|
|
3
|
+
|
|
4
|
+
(function(mod) {
|
|
5
|
+
if (typeof exports == "object" && typeof module == "object") { // CommonJS
|
|
6
|
+
mod(require("../../lib/codemirror"));
|
|
7
|
+
} else if (typeof define == "function" && define.amd) { // AMD
|
|
8
|
+
define(["../../lib/codemirror"], mod);
|
|
9
|
+
} else { // Plain browser env
|
|
10
|
+
mod(CodeMirror);
|
|
11
|
+
}
|
|
12
|
+
})(function(CodeMirror) {
|
|
13
|
+
"use strict";
|
|
14
|
+
|
|
15
|
+
var TOKEN_STYLES = {
|
|
16
|
+
addition: "positive",
|
|
17
|
+
attributes: "attribute",
|
|
18
|
+
bold: "strong",
|
|
19
|
+
cite: "keyword",
|
|
20
|
+
code: "atom",
|
|
21
|
+
definitionList: "number",
|
|
22
|
+
deletion: "negative",
|
|
23
|
+
div: "punctuation",
|
|
24
|
+
em: "em",
|
|
25
|
+
footnote: "variable",
|
|
26
|
+
footCite: "qualifier",
|
|
27
|
+
header: "header",
|
|
28
|
+
html: "comment",
|
|
29
|
+
image: "string",
|
|
30
|
+
italic: "em",
|
|
31
|
+
link: "link",
|
|
32
|
+
linkDefinition: "link",
|
|
33
|
+
list1: "variable-2",
|
|
34
|
+
list2: "variable-3",
|
|
35
|
+
list3: "keyword",
|
|
36
|
+
notextile: "string-2",
|
|
37
|
+
pre: "operator",
|
|
38
|
+
p: "property",
|
|
39
|
+
quote: "bracket",
|
|
40
|
+
span: "quote",
|
|
41
|
+
specialChar: "tag",
|
|
42
|
+
strong: "strong",
|
|
43
|
+
sub: "builtin",
|
|
44
|
+
sup: "builtin",
|
|
45
|
+
table: "variable-3",
|
|
46
|
+
tableHeading: "operator"
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
function startNewLine(stream, state) {
|
|
50
|
+
state.mode = Modes.newLayout;
|
|
51
|
+
state.tableHeading = false;
|
|
52
|
+
|
|
53
|
+
if (state.layoutType === "definitionList" && state.spanningLayout &&
|
|
54
|
+
stream.match(RE("definitionListEnd"), false))
|
|
55
|
+
state.spanningLayout = false;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function handlePhraseModifier(stream, state, ch) {
|
|
59
|
+
if (ch === "_") {
|
|
60
|
+
if (stream.eat("_"))
|
|
61
|
+
return togglePhraseModifier(stream, state, "italic", /__/, 2);
|
|
62
|
+
else
|
|
63
|
+
return togglePhraseModifier(stream, state, "em", /_/, 1);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if (ch === "*") {
|
|
67
|
+
if (stream.eat("*")) {
|
|
68
|
+
return togglePhraseModifier(stream, state, "bold", /\*\*/, 2);
|
|
69
|
+
}
|
|
70
|
+
return togglePhraseModifier(stream, state, "strong", /\*/, 1);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (ch === "[") {
|
|
74
|
+
if (stream.match(/\d+\]/)) state.footCite = true;
|
|
75
|
+
return tokenStyles(state);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if (ch === "(") {
|
|
79
|
+
var spec = stream.match(/^(r|tm|c)\)/);
|
|
80
|
+
if (spec)
|
|
81
|
+
return tokenStylesWith(state, TOKEN_STYLES.specialChar);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
if (ch === "<" && stream.match(/(\w+)[^>]+>[^<]+<\/\1>/))
|
|
85
|
+
return tokenStylesWith(state, TOKEN_STYLES.html);
|
|
86
|
+
|
|
87
|
+
if (ch === "?" && stream.eat("?"))
|
|
88
|
+
return togglePhraseModifier(stream, state, "cite", /\?\?/, 2);
|
|
89
|
+
|
|
90
|
+
if (ch === "=" && stream.eat("="))
|
|
91
|
+
return togglePhraseModifier(stream, state, "notextile", /==/, 2);
|
|
92
|
+
|
|
93
|
+
if (ch === "-" && !stream.eat("-"))
|
|
94
|
+
return togglePhraseModifier(stream, state, "deletion", /-/, 1);
|
|
95
|
+
|
|
96
|
+
if (ch === "+")
|
|
97
|
+
return togglePhraseModifier(stream, state, "addition", /\+/, 1);
|
|
98
|
+
|
|
99
|
+
if (ch === "~")
|
|
100
|
+
return togglePhraseModifier(stream, state, "sub", /~/, 1);
|
|
101
|
+
|
|
102
|
+
if (ch === "^")
|
|
103
|
+
return togglePhraseModifier(stream, state, "sup", /\^/, 1);
|
|
104
|
+
|
|
105
|
+
if (ch === "%")
|
|
106
|
+
return togglePhraseModifier(stream, state, "span", /%/, 1);
|
|
107
|
+
|
|
108
|
+
if (ch === "@")
|
|
109
|
+
return togglePhraseModifier(stream, state, "code", /@/, 1);
|
|
110
|
+
|
|
111
|
+
if (ch === "!") {
|
|
112
|
+
var type = togglePhraseModifier(stream, state, "image", /(?:\([^\)]+\))?!/, 1);
|
|
113
|
+
stream.match(/^:\S+/); // optional Url portion
|
|
114
|
+
return type;
|
|
115
|
+
}
|
|
116
|
+
return tokenStyles(state);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
function togglePhraseModifier(stream, state, phraseModifier, closeRE, openSize) {
|
|
120
|
+
var charBefore = stream.pos > openSize ? stream.string.charAt(stream.pos - openSize - 1) : null;
|
|
121
|
+
var charAfter = stream.peek();
|
|
122
|
+
if (state[phraseModifier]) {
|
|
123
|
+
if ((!charAfter || /\W/.test(charAfter)) && charBefore && /\S/.test(charBefore)) {
|
|
124
|
+
var type = tokenStyles(state);
|
|
125
|
+
state[phraseModifier] = false;
|
|
126
|
+
return type;
|
|
127
|
+
}
|
|
128
|
+
} else if ((!charBefore || /\W/.test(charBefore)) && charAfter && /\S/.test(charAfter) &&
|
|
129
|
+
stream.match(new RegExp("^.*\\S" + closeRE.source + "(?:\\W|$)"), false)) {
|
|
130
|
+
state[phraseModifier] = true;
|
|
131
|
+
state.mode = Modes.attributes;
|
|
132
|
+
}
|
|
133
|
+
return tokenStyles(state);
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
function tokenStyles(state) {
|
|
137
|
+
var disabled = textileDisabled(state);
|
|
138
|
+
if (disabled) return disabled;
|
|
139
|
+
|
|
140
|
+
var styles = [];
|
|
141
|
+
if (state.layoutType) styles.push(TOKEN_STYLES[state.layoutType]);
|
|
142
|
+
|
|
143
|
+
styles = styles.concat(activeStyles(
|
|
144
|
+
state, "addition", "bold", "cite", "code", "deletion", "em", "footCite",
|
|
145
|
+
"image", "italic", "link", "span", "strong", "sub", "sup", "table", "tableHeading"));
|
|
146
|
+
|
|
147
|
+
if (state.layoutType === "header")
|
|
148
|
+
styles.push(TOKEN_STYLES.header + "-" + state.header);
|
|
149
|
+
|
|
150
|
+
return styles.length ? styles.join(" ") : null;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
function textileDisabled(state) {
|
|
154
|
+
var type = state.layoutType;
|
|
155
|
+
|
|
156
|
+
switch(type) {
|
|
157
|
+
case "notextile":
|
|
158
|
+
case "code":
|
|
159
|
+
case "pre":
|
|
160
|
+
return TOKEN_STYLES[type];
|
|
161
|
+
default:
|
|
162
|
+
if (state.notextile)
|
|
163
|
+
return TOKEN_STYLES.notextile + (type ? (" " + TOKEN_STYLES[type]) : "");
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
function tokenStylesWith(state, extraStyles) {
|
|
169
|
+
var disabled = textileDisabled(state);
|
|
170
|
+
if (disabled) return disabled;
|
|
171
|
+
|
|
172
|
+
var type = tokenStyles(state);
|
|
173
|
+
if (extraStyles)
|
|
174
|
+
return type ? (type + " " + extraStyles) : extraStyles;
|
|
175
|
+
else
|
|
176
|
+
return type;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
function activeStyles(state) {
|
|
180
|
+
var styles = [];
|
|
181
|
+
for (var i = 1; i < arguments.length; ++i) {
|
|
182
|
+
if (state[arguments[i]])
|
|
183
|
+
styles.push(TOKEN_STYLES[arguments[i]]);
|
|
184
|
+
}
|
|
185
|
+
return styles;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
function blankLine(state) {
|
|
189
|
+
var spanningLayout = state.spanningLayout, type = state.layoutType;
|
|
190
|
+
|
|
191
|
+
for (var key in state) if (state.hasOwnProperty(key))
|
|
192
|
+
delete state[key];
|
|
193
|
+
|
|
194
|
+
state.mode = Modes.newLayout;
|
|
195
|
+
if (spanningLayout) {
|
|
196
|
+
state.layoutType = type;
|
|
197
|
+
state.spanningLayout = true;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
var REs = {
|
|
202
|
+
cache: {},
|
|
203
|
+
single: {
|
|
204
|
+
bc: "bc",
|
|
205
|
+
bq: "bq",
|
|
206
|
+
definitionList: /- .*?:=+/,
|
|
207
|
+
definitionListEnd: /.*=:\s*$/,
|
|
208
|
+
div: "div",
|
|
209
|
+
drawTable: /\|.*\|/,
|
|
210
|
+
foot: /fn\d+/,
|
|
211
|
+
header: /h[1-6]/,
|
|
212
|
+
html: /\s*<(?:\/)?(\w+)(?:[^>]+)?>(?:[^<]+<\/\1>)?/,
|
|
213
|
+
link: /[^"]+":\S/,
|
|
214
|
+
linkDefinition: /\[[^\s\]]+\]\S+/,
|
|
215
|
+
list: /(?:#+|\*+)/,
|
|
216
|
+
notextile: "notextile",
|
|
217
|
+
para: "p",
|
|
218
|
+
pre: "pre",
|
|
219
|
+
table: "table",
|
|
220
|
+
tableCellAttributes: /[\/\\]\d+/,
|
|
221
|
+
tableHeading: /\|_\./,
|
|
222
|
+
tableText: /[^"_\*\[\(\?\+~\^%@|-]+/,
|
|
223
|
+
text: /[^!"_=\*\[\(<\?\+~\^%@-]+/
|
|
224
|
+
},
|
|
225
|
+
attributes: {
|
|
226
|
+
align: /(?:<>|<|>|=)/,
|
|
227
|
+
selector: /\([^\(][^\)]+\)/,
|
|
228
|
+
lang: /\[[^\[\]]+\]/,
|
|
229
|
+
pad: /(?:\(+|\)+){1,2}/,
|
|
230
|
+
css: /\{[^\}]+\}/
|
|
231
|
+
},
|
|
232
|
+
createRe: function(name) {
|
|
233
|
+
switch (name) {
|
|
234
|
+
case "drawTable":
|
|
235
|
+
return REs.makeRe("^", REs.single.drawTable, "$");
|
|
236
|
+
case "html":
|
|
237
|
+
return REs.makeRe("^", REs.single.html, "(?:", REs.single.html, ")*", "$");
|
|
238
|
+
case "linkDefinition":
|
|
239
|
+
return REs.makeRe("^", REs.single.linkDefinition, "$");
|
|
240
|
+
case "listLayout":
|
|
241
|
+
return REs.makeRe("^", REs.single.list, RE("allAttributes"), "*\\s+");
|
|
242
|
+
case "tableCellAttributes":
|
|
243
|
+
return REs.makeRe("^", REs.choiceRe(REs.single.tableCellAttributes,
|
|
244
|
+
RE("allAttributes")), "+\\.");
|
|
245
|
+
case "type":
|
|
246
|
+
return REs.makeRe("^", RE("allTypes"));
|
|
247
|
+
case "typeLayout":
|
|
248
|
+
return REs.makeRe("^", RE("allTypes"), RE("allAttributes"),
|
|
249
|
+
"*\\.\\.?", "(\\s+|$)");
|
|
250
|
+
case "attributes":
|
|
251
|
+
return REs.makeRe("^", RE("allAttributes"), "+");
|
|
252
|
+
|
|
253
|
+
case "allTypes":
|
|
254
|
+
return REs.choiceRe(REs.single.div, REs.single.foot,
|
|
255
|
+
REs.single.header, REs.single.bc, REs.single.bq,
|
|
256
|
+
REs.single.notextile, REs.single.pre, REs.single.table,
|
|
257
|
+
REs.single.para);
|
|
258
|
+
|
|
259
|
+
case "allAttributes":
|
|
260
|
+
return REs.choiceRe(REs.attributes.selector, REs.attributes.css,
|
|
261
|
+
REs.attributes.lang, REs.attributes.align, REs.attributes.pad);
|
|
262
|
+
|
|
263
|
+
default:
|
|
264
|
+
return REs.makeRe("^", REs.single[name]);
|
|
265
|
+
}
|
|
266
|
+
},
|
|
267
|
+
makeRe: function() {
|
|
268
|
+
var pattern = "";
|
|
269
|
+
for (var i = 0; i < arguments.length; ++i) {
|
|
270
|
+
var arg = arguments[i];
|
|
271
|
+
pattern += (typeof arg === "string") ? arg : arg.source;
|
|
272
|
+
}
|
|
273
|
+
return new RegExp(pattern);
|
|
274
|
+
},
|
|
275
|
+
choiceRe: function() {
|
|
276
|
+
var parts = [arguments[0]];
|
|
277
|
+
for (var i = 1; i < arguments.length; ++i) {
|
|
278
|
+
parts[i * 2 - 1] = "|";
|
|
279
|
+
parts[i * 2] = arguments[i];
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
parts.unshift("(?:");
|
|
283
|
+
parts.push(")");
|
|
284
|
+
return REs.makeRe.apply(null, parts);
|
|
285
|
+
}
|
|
286
|
+
};
|
|
287
|
+
|
|
288
|
+
function RE(name) {
|
|
289
|
+
return (REs.cache[name] || (REs.cache[name] = REs.createRe(name)));
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
var Modes = {
|
|
293
|
+
newLayout: function(stream, state) {
|
|
294
|
+
if (stream.match(RE("typeLayout"), false)) {
|
|
295
|
+
state.spanningLayout = false;
|
|
296
|
+
return (state.mode = Modes.blockType)(stream, state);
|
|
297
|
+
}
|
|
298
|
+
var newMode;
|
|
299
|
+
if (!textileDisabled(state)) {
|
|
300
|
+
if (stream.match(RE("listLayout"), false))
|
|
301
|
+
newMode = Modes.list;
|
|
302
|
+
else if (stream.match(RE("drawTable"), false))
|
|
303
|
+
newMode = Modes.table;
|
|
304
|
+
else if (stream.match(RE("linkDefinition"), false))
|
|
305
|
+
newMode = Modes.linkDefinition;
|
|
306
|
+
else if (stream.match(RE("definitionList")))
|
|
307
|
+
newMode = Modes.definitionList;
|
|
308
|
+
else if (stream.match(RE("html"), false))
|
|
309
|
+
newMode = Modes.html;
|
|
310
|
+
}
|
|
311
|
+
return (state.mode = (newMode || Modes.text))(stream, state);
|
|
312
|
+
},
|
|
313
|
+
|
|
314
|
+
blockType: function(stream, state) {
|
|
315
|
+
var match, type;
|
|
316
|
+
state.layoutType = null;
|
|
317
|
+
|
|
318
|
+
if (match = stream.match(RE("type")))
|
|
319
|
+
type = match[0];
|
|
320
|
+
else
|
|
321
|
+
return (state.mode = Modes.text)(stream, state);
|
|
322
|
+
|
|
323
|
+
if (match = type.match(RE("header"))) {
|
|
324
|
+
state.layoutType = "header";
|
|
325
|
+
state.header = parseInt(match[0][1]);
|
|
326
|
+
} else if (type.match(RE("bq"))) {
|
|
327
|
+
state.layoutType = "quote";
|
|
328
|
+
} else if (type.match(RE("bc"))) {
|
|
329
|
+
state.layoutType = "code";
|
|
330
|
+
} else if (type.match(RE("foot"))) {
|
|
331
|
+
state.layoutType = "footnote";
|
|
332
|
+
} else if (type.match(RE("notextile"))) {
|
|
333
|
+
state.layoutType = "notextile";
|
|
334
|
+
} else if (type.match(RE("pre"))) {
|
|
335
|
+
state.layoutType = "pre";
|
|
336
|
+
} else if (type.match(RE("div"))) {
|
|
337
|
+
state.layoutType = "div";
|
|
338
|
+
} else if (type.match(RE("table"))) {
|
|
339
|
+
state.layoutType = "table";
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
state.mode = Modes.attributes;
|
|
343
|
+
return tokenStyles(state);
|
|
344
|
+
},
|
|
345
|
+
|
|
346
|
+
text: function(stream, state) {
|
|
347
|
+
if (stream.match(RE("text"))) return tokenStyles(state);
|
|
348
|
+
|
|
349
|
+
var ch = stream.next();
|
|
350
|
+
if (ch === '"')
|
|
351
|
+
return (state.mode = Modes.link)(stream, state);
|
|
352
|
+
return handlePhraseModifier(stream, state, ch);
|
|
353
|
+
},
|
|
354
|
+
|
|
355
|
+
attributes: function(stream, state) {
|
|
356
|
+
state.mode = Modes.layoutLength;
|
|
357
|
+
|
|
358
|
+
if (stream.match(RE("attributes")))
|
|
359
|
+
return tokenStylesWith(state, TOKEN_STYLES.attributes);
|
|
360
|
+
else
|
|
361
|
+
return tokenStyles(state);
|
|
362
|
+
},
|
|
363
|
+
|
|
364
|
+
layoutLength: function(stream, state) {
|
|
365
|
+
if (stream.eat(".") && stream.eat("."))
|
|
366
|
+
state.spanningLayout = true;
|
|
367
|
+
|
|
368
|
+
state.mode = Modes.text;
|
|
369
|
+
return tokenStyles(state);
|
|
370
|
+
},
|
|
371
|
+
|
|
372
|
+
list: function(stream, state) {
|
|
373
|
+
var match = stream.match(RE("list"));
|
|
374
|
+
state.listDepth = match[0].length;
|
|
375
|
+
var listMod = (state.listDepth - 1) % 3;
|
|
376
|
+
if (!listMod)
|
|
377
|
+
state.layoutType = "list1";
|
|
378
|
+
else if (listMod === 1)
|
|
379
|
+
state.layoutType = "list2";
|
|
380
|
+
else
|
|
381
|
+
state.layoutType = "list3";
|
|
382
|
+
|
|
383
|
+
state.mode = Modes.attributes;
|
|
384
|
+
return tokenStyles(state);
|
|
385
|
+
},
|
|
386
|
+
|
|
387
|
+
link: function(stream, state) {
|
|
388
|
+
state.mode = Modes.text;
|
|
389
|
+
if (stream.match(RE("link"))) {
|
|
390
|
+
stream.match(/\S+/);
|
|
391
|
+
return tokenStylesWith(state, TOKEN_STYLES.link);
|
|
392
|
+
}
|
|
393
|
+
return tokenStyles(state);
|
|
394
|
+
},
|
|
395
|
+
|
|
396
|
+
linkDefinition: function(stream, state) {
|
|
397
|
+
stream.skipToEnd();
|
|
398
|
+
return tokenStylesWith(state, TOKEN_STYLES.linkDefinition);
|
|
399
|
+
},
|
|
400
|
+
|
|
401
|
+
definitionList: function(stream, state) {
|
|
402
|
+
stream.match(RE("definitionList"));
|
|
403
|
+
|
|
404
|
+
state.layoutType = "definitionList";
|
|
405
|
+
|
|
406
|
+
if (stream.match(/\s*$/))
|
|
407
|
+
state.spanningLayout = true;
|
|
408
|
+
else
|
|
409
|
+
state.mode = Modes.attributes;
|
|
410
|
+
|
|
411
|
+
return tokenStyles(state);
|
|
412
|
+
},
|
|
413
|
+
|
|
414
|
+
html: function(stream, state) {
|
|
415
|
+
stream.skipToEnd();
|
|
416
|
+
return tokenStylesWith(state, TOKEN_STYLES.html);
|
|
417
|
+
},
|
|
418
|
+
|
|
419
|
+
table: function(stream, state) {
|
|
420
|
+
state.layoutType = "table";
|
|
421
|
+
return (state.mode = Modes.tableCell)(stream, state);
|
|
422
|
+
},
|
|
423
|
+
|
|
424
|
+
tableCell: function(stream, state) {
|
|
425
|
+
if (stream.match(RE("tableHeading")))
|
|
426
|
+
state.tableHeading = true;
|
|
427
|
+
else
|
|
428
|
+
stream.eat("|");
|
|
429
|
+
|
|
430
|
+
state.mode = Modes.tableCellAttributes;
|
|
431
|
+
return tokenStyles(state);
|
|
432
|
+
},
|
|
433
|
+
|
|
434
|
+
tableCellAttributes: function(stream, state) {
|
|
435
|
+
state.mode = Modes.tableText;
|
|
436
|
+
|
|
437
|
+
if (stream.match(RE("tableCellAttributes")))
|
|
438
|
+
return tokenStylesWith(state, TOKEN_STYLES.attributes);
|
|
439
|
+
else
|
|
440
|
+
return tokenStyles(state);
|
|
441
|
+
},
|
|
442
|
+
|
|
443
|
+
tableText: function(stream, state) {
|
|
444
|
+
if (stream.match(RE("tableText")))
|
|
445
|
+
return tokenStyles(state);
|
|
446
|
+
|
|
447
|
+
if (stream.peek() === "|") { // end of cell
|
|
448
|
+
state.mode = Modes.tableCell;
|
|
449
|
+
return tokenStyles(state);
|
|
450
|
+
}
|
|
451
|
+
return handlePhraseModifier(stream, state, stream.next());
|
|
452
|
+
}
|
|
453
|
+
};
|
|
454
|
+
|
|
455
|
+
CodeMirror.defineMode("textile", function() {
|
|
456
|
+
return {
|
|
457
|
+
startState: function() {
|
|
458
|
+
return { mode: Modes.newLayout };
|
|
459
|
+
},
|
|
460
|
+
token: function(stream, state) {
|
|
461
|
+
if (stream.sol()) startNewLine(stream, state);
|
|
462
|
+
return state.mode(stream, state);
|
|
463
|
+
},
|
|
464
|
+
blankLine: blankLine
|
|
465
|
+
};
|
|
466
|
+
});
|
|
467
|
+
|
|
468
|
+
CodeMirror.defineMIME("text/x-textile", "textile");
|
|
469
|
+
});
|