├── books └── gulp-book │ ├── demo │ ├── chapter3 │ │ ├── dist │ │ │ └── css │ │ │ │ └── a.css │ │ ├── css │ │ │ └── a.css │ │ ├── package.json │ │ ├── README.md │ │ └── gulpfile.js │ ├── chapter5 │ │ ├── dist │ │ │ └── css │ │ │ │ ├── a.css │ │ │ │ └── import.css │ │ ├── less │ │ │ ├── a.less │ │ │ └── import.less │ │ ├── package.json │ │ ├── README.md │ │ └── gulpfile.js │ ├── chapter6 │ │ ├── dist │ │ │ └── css │ │ │ │ ├── a.css │ │ │ │ └── import.css │ │ ├── sass │ │ │ ├── a.scss │ │ │ └── import.scss │ │ ├── package.json │ │ ├── README.md │ │ └── gulpfile.js │ ├── chapter2 │ │ ├── dist │ │ │ └── js │ │ │ │ └── a.js │ │ ├── js │ │ │ └── a.js │ │ ├── package.json │ │ ├── README.md │ │ └── gulpfile.js │ ├── chapter7 │ │ ├── README.md │ │ ├── use-gulp-watch-path.js │ │ ├── watchjs-1.js │ │ └── watchjs-2.js │ ├── chapter4 │ │ ├── images │ │ │ ├── nimo.jpg │ │ │ ├── loading.gif │ │ │ └── gradient.png │ │ ├── dist │ │ │ └── images │ │ │ │ ├── nimo.jpg │ │ │ │ ├── loading.gif │ │ │ │ └── gradient.png │ │ ├── package.json │ │ ├── README.md │ │ └── gulpfile.js │ └── README.md │ ├── SUMMARY.md │ ├── chapter1.md │ ├── README.md │ └── chapter5.md ├── README.md ├── static ├── images │ ├── loading.gif │ ├── loading@2x.gif │ ├── loading@3x.gif │ └── logos │ │ ├── vi.png │ │ ├── editormd-logo-16x16.png │ │ ├── editormd-logo-24x24.png │ │ ├── editormd-logo-32x32.png │ │ ├── editormd-logo-48x48.png │ │ ├── editormd-logo-57x57.png │ │ ├── editormd-logo-64x64.png │ │ ├── editormd-logo-72x72.png │ │ ├── editormd-logo-96x96.png │ │ ├── editormd-logo-114x114.png │ │ ├── editormd-logo-120x120.png │ │ ├── editormd-logo-144x144.png │ │ ├── editormd-logo-180x180.png │ │ ├── editormd-logo-240x240.png │ │ ├── editormd-logo-320x320.png │ │ ├── editormd-favicon-16x16.ico │ │ ├── editormd-favicon-24x24.ico │ │ ├── editormd-favicon-32x32.ico │ │ ├── editormd-favicon-48x48.ico │ │ └── editormd-favicon-64x64.ico ├── fonts │ ├── FontAwesome.otf │ ├── editormd-logo.eot │ ├── editormd-logo.ttf │ ├── editormd-logo.woff │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ ├── fontawesome-webfont.woff2 │ └── editormd-logo.svg ├── lib │ ├── codemirror │ │ ├── theme │ │ │ ├── ambiance-mobile.css │ │ │ ├── neat.css │ │ │ ├── elegant.css │ │ │ ├── neo.css │ │ │ ├── eclipse.css │ │ │ ├── cobalt.css │ │ │ ├── monokai.css │ │ │ ├── rubyblue.css │ │ │ ├── night.css │ │ │ ├── the-matrix.css │ │ │ ├── colorforth.css │ │ │ ├── blackboard.css │ │ │ ├── 3024-day.css │ │ │ ├── tomorrow-night-bright.css │ │ │ ├── paraiso-dark.css │ │ │ ├── paraiso-light.css │ │ │ ├── 3024-night.css │ │ │ ├── base16-dark.css │ │ │ ├── base16-light.css │ │ │ ├── vibrant-ink.css │ │ │ ├── mbo.css │ │ │ ├── twilight.css │ │ │ ├── midnight.css │ │ │ ├── zenburn.css │ │ │ ├── erlang-dark.css │ │ │ ├── tomorrow-night-eighties.css │ │ │ └── xq-light.css │ │ ├── addon │ │ │ ├── display │ │ │ │ ├── fullscreen.css │ │ │ │ ├── fullscreen.js │ │ │ │ └── placeholder.js │ │ │ ├── search │ │ │ │ └── matchesonscrollbar.css │ │ │ ├── fold │ │ │ │ ├── foldgutter.css │ │ │ │ ├── indent-fold.js │ │ │ │ ├── markdown-fold.js │ │ │ │ └── comment-fold.js │ │ │ ├── dialog │ │ │ │ └── dialog.css │ │ │ ├── hint │ │ │ │ ├── show-hint.css │ │ │ │ ├── anyword-hint.js │ │ │ │ └── css-hint.js │ │ │ ├── mode │ │ │ │ └── multiplex_test.js │ │ │ ├── lint │ │ │ │ ├── yaml-lint.js │ │ │ │ ├── json-lint.js │ │ │ │ ├── css-lint.js │ │ │ │ └── coffeescript-lint.js │ │ │ ├── edit │ │ │ │ ├── trailingspace.js │ │ │ │ └── continuelist.js │ │ │ ├── tern │ │ │ │ ├── worker.js │ │ │ │ └── tern.css │ │ │ ├── runmode │ │ │ │ └── colorize.js │ │ │ └── scroll │ │ │ │ ├── simplescrollbars.css │ │ │ │ └── scrollpastend.js │ │ ├── mode │ │ │ ├── tiddlywiki │ │ │ │ └── tiddlywiki.css │ │ │ ├── ruby │ │ │ │ └── test.js │ │ │ ├── tiki │ │ │ │ ├── tiki.css │ │ │ │ └── index.html │ │ │ ├── diff │ │ │ │ └── diff.js │ │ │ ├── ntriples │ │ │ │ └── index.html │ │ │ ├── spreadsheet │ │ │ │ └── index.html │ │ │ ├── http │ │ │ │ └── index.html │ │ │ ├── solr │ │ │ │ └── index.html │ │ │ ├── z80 │ │ │ │ └── index.html │ │ │ ├── ecl │ │ │ │ └── index.html │ │ │ ├── rust │ │ │ │ └── index.html │ │ │ ├── turtle │ │ │ │ └── index.html │ │ │ ├── pascal │ │ │ │ └── index.html │ │ │ ├── pig │ │ │ │ └── index.html │ │ │ ├── vbscript │ │ │ │ └── index.html │ │ │ ├── gherkin │ │ │ │ └── index.html │ │ │ ├── properties │ │ │ │ └── index.html │ │ │ ├── javascript │ │ │ │ └── typescript.html │ │ │ ├── sass │ │ │ │ └── index.html │ │ │ ├── perl │ │ │ │ └── index.html │ │ │ ├── idl │ │ │ │ └── index.html │ │ │ ├── dart │ │ │ │ ├── index.html │ │ │ │ └── dart.js │ │ │ ├── xml │ │ │ │ ├── test.js │ │ │ │ └── index.html │ │ │ ├── jinja2 │ │ │ │ └── index.html │ │ │ ├── css │ │ │ │ ├── less_test.js │ │ │ │ └── index.html │ │ │ ├── shell │ │ │ │ ├── test.js │ │ │ │ └── index.html │ │ │ ├── sparql │ │ │ │ └── index.html │ │ │ ├── django │ │ │ │ └── index.html │ │ │ ├── tornado │ │ │ │ └── index.html │ │ │ ├── forth │ │ │ │ └── index.html │ │ │ ├── gas │ │ │ │ └── index.html │ │ │ ├── toml │ │ │ │ └── index.html │ │ │ ├── cypher │ │ │ │ └── index.html │ │ │ ├── octave │ │ │ │ └── index.html │ │ │ ├── pegjs │ │ │ │ └── index.html │ │ │ ├── smalltalk │ │ │ │ └── index.html │ │ │ ├── htmlembedded │ │ │ │ └── index.html │ │ │ ├── soy │ │ │ │ └── index.html │ │ │ ├── php │ │ │ │ └── index.html │ │ │ └── modelica │ │ │ │ └── index.html │ │ ├── bower.json │ │ ├── README.md │ │ ├── package.json │ │ └── LICENSE │ └── jquery.flowchart.min.js ├── js │ └── bookstack.js ├── css │ ├── editormd.logo.min.css │ └── bookstack.css └── plugins │ └── test-plugin │ └── test-plugin.js ├── conf └── app.conf ├── main.go ├── routers └── router.go ├── utils └── utils.go ├── controllers └── MainController.go ├── LICENSE ├── tests └── default_test.go └── .gitignore /books/gulp-book/demo/chapter3/dist/css/a.css: -------------------------------------------------------------------------------- 1 | body a{color:pink} -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # BookStack 2 | BookStack,GitBook的go语言实现,markdown文档在线阅读解决方案。 3 | -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter5/dist/css/a.css: -------------------------------------------------------------------------------- 1 | .less a { 2 | color: pink; 3 | } 4 | -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter6/dist/css/a.css: -------------------------------------------------------------------------------- 1 | .sass a { 2 | color: pink; } 3 | -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter3/css/a.css: -------------------------------------------------------------------------------- 1 | /* a.css */ 2 | body a{ 3 | color:pink; 4 | } -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter5/less/a.less: -------------------------------------------------------------------------------- 1 | .less{ 2 | a{ 3 | color:pink; 4 | } 5 | } -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter6/sass/a.scss: -------------------------------------------------------------------------------- 1 | .sass{ 2 | a{ 3 | color:pink; 4 | } 5 | } -------------------------------------------------------------------------------- /static/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/static/images/loading.gif -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter2/dist/js/a.js: -------------------------------------------------------------------------------- 1 | function demo(n){alert("--------\r\n"+n+"\r\n--------")}demo("Hi"); -------------------------------------------------------------------------------- /static/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/static/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /static/images/loading@2x.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/static/images/loading@2x.gif -------------------------------------------------------------------------------- /static/images/loading@3x.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/static/images/loading@3x.gif -------------------------------------------------------------------------------- /static/images/logos/vi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/static/images/logos/vi.png -------------------------------------------------------------------------------- /static/fonts/editormd-logo.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/static/fonts/editormd-logo.eot -------------------------------------------------------------------------------- /static/fonts/editormd-logo.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/static/fonts/editormd-logo.ttf -------------------------------------------------------------------------------- /static/fonts/editormd-logo.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/static/fonts/editormd-logo.woff -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter5/dist/css/import.css: -------------------------------------------------------------------------------- 1 | .less a { 2 | color: pink; 3 | } 4 | .import a { 5 | color: red; 6 | } 7 | -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter5/less/import.less: -------------------------------------------------------------------------------- 1 | @import "a.less"; 2 | .import{ 3 | a{ 4 | color:red; 5 | } 6 | } -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter6/dist/css/import.css: -------------------------------------------------------------------------------- 1 | .sass a { 2 | color: pink; } 3 | 4 | .import a { 5 | color: red; } 6 | -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter6/sass/import.scss: -------------------------------------------------------------------------------- 1 | @import "a.scss"; 2 | .import{ 3 | a{ 4 | color:red; 5 | } 6 | } -------------------------------------------------------------------------------- /conf/app.conf: -------------------------------------------------------------------------------- 1 | appname = BookStack 2 | httpport = 8888 3 | runmode = dev 4 | EnableGzip=true 5 | 6 | #谷歌浏览器 7 | chrome=chrome 8 | -------------------------------------------------------------------------------- /static/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/static/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /static/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/static/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /static/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/static/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /static/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/static/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter7/README.md: -------------------------------------------------------------------------------- 1 | # 使用 gulp 构建一个项目 - 代码示例 2 | 3 | 本章示例完整代码全部保存在 [nimojs/gulp-demo](https://github.com/nimojs/gulp-demo)。 -------------------------------------------------------------------------------- /static/images/logos/editormd-logo-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/static/images/logos/editormd-logo-16x16.png -------------------------------------------------------------------------------- /static/images/logos/editormd-logo-24x24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/static/images/logos/editormd-logo-24x24.png -------------------------------------------------------------------------------- /static/images/logos/editormd-logo-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/static/images/logos/editormd-logo-32x32.png -------------------------------------------------------------------------------- /static/images/logos/editormd-logo-48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/static/images/logos/editormd-logo-48x48.png -------------------------------------------------------------------------------- /static/images/logos/editormd-logo-57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/static/images/logos/editormd-logo-57x57.png -------------------------------------------------------------------------------- /static/images/logos/editormd-logo-64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/static/images/logos/editormd-logo-64x64.png -------------------------------------------------------------------------------- /static/images/logos/editormd-logo-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/static/images/logos/editormd-logo-72x72.png -------------------------------------------------------------------------------- /static/images/logos/editormd-logo-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/static/images/logos/editormd-logo-96x96.png -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter4/images/nimo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/books/gulp-book/demo/chapter4/images/nimo.jpg -------------------------------------------------------------------------------- /static/images/logos/editormd-logo-114x114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/static/images/logos/editormd-logo-114x114.png -------------------------------------------------------------------------------- /static/images/logos/editormd-logo-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/static/images/logos/editormd-logo-120x120.png -------------------------------------------------------------------------------- /static/images/logos/editormd-logo-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/static/images/logos/editormd-logo-144x144.png -------------------------------------------------------------------------------- /static/images/logos/editormd-logo-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/static/images/logos/editormd-logo-180x180.png -------------------------------------------------------------------------------- /static/images/logos/editormd-logo-240x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/static/images/logos/editormd-logo-240x240.png -------------------------------------------------------------------------------- /static/images/logos/editormd-logo-320x320.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/static/images/logos/editormd-logo-320x320.png -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter2/js/a.js: -------------------------------------------------------------------------------- 1 | // a.js 2 | function demo (msg) { 3 | alert('--------\r\n' + msg + '\r\n--------') 4 | } 5 | 6 | demo('Hi') -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter4/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/books/gulp-book/demo/chapter4/images/loading.gif -------------------------------------------------------------------------------- /static/images/logos/editormd-favicon-16x16.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/static/images/logos/editormd-favicon-16x16.ico -------------------------------------------------------------------------------- /static/images/logos/editormd-favicon-24x24.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/static/images/logos/editormd-favicon-24x24.ico -------------------------------------------------------------------------------- /static/images/logos/editormd-favicon-32x32.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/static/images/logos/editormd-favicon-32x32.ico -------------------------------------------------------------------------------- /static/images/logos/editormd-favicon-48x48.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/static/images/logos/editormd-favicon-48x48.ico -------------------------------------------------------------------------------- /static/images/logos/editormd-favicon-64x64.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/static/images/logos/editormd-favicon-64x64.ico -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter4/dist/images/nimo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/books/gulp-book/demo/chapter4/dist/images/nimo.jpg -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter4/images/gradient.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/books/gulp-book/demo/chapter4/images/gradient.png -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter4/dist/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/books/gulp-book/demo/chapter4/dist/images/loading.gif -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter4/dist/images/gradient.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BookStackCN/BookStack/HEAD/books/gulp-book/demo/chapter4/dist/images/gradient.png -------------------------------------------------------------------------------- /static/lib/codemirror/theme/ambiance-mobile.css: -------------------------------------------------------------------------------- 1 | .cm-s-ambiance.CodeMirror { 2 | -webkit-box-shadow: none; 3 | -moz-box-shadow: none; 4 | box-shadow: none; 5 | } 6 | -------------------------------------------------------------------------------- /main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | _ "github.com/BookStackCN/BookStack/routers" 5 | "github.com/astaxie/beego" 6 | ) 7 | 8 | func main() { 9 | beego.Run() 10 | } 11 | -------------------------------------------------------------------------------- /static/lib/codemirror/addon/display/fullscreen.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-fullscreen { 2 | position: fixed; 3 | top: 0; left: 0; right: 0; bottom: 0; 4 | height: auto; 5 | z-index: 9; 6 | } 7 | -------------------------------------------------------------------------------- /static/lib/codemirror/addon/search/matchesonscrollbar.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-search-match { 2 | background: gold; 3 | border-top: 1px solid orange; 4 | border-bottom: 1px solid orange; 5 | -moz-box-sizing: border-box; 6 | box-sizing: border-box; 7 | opacity: .5; 8 | } 9 | -------------------------------------------------------------------------------- /books/gulp-book/demo/README.md: -------------------------------------------------------------------------------- 1 | gulp 入门指南示例代码 2 | =================== 3 | 4 | 5 | - [使用 gulp 压缩 JS](./chapter2) 6 | - [使用 gulp 压缩 CSS](./chapter3) 7 | - [使用 gulp 压缩图片](./chapter4) 8 | - [使用 gulp 编译 LESS](./chapter5) 9 | - [使用 gulp 编译 Sass](./chapter6) 10 | - [使用 gulp 构建一个项目](./chapter7) 11 | -------------------------------------------------------------------------------- /books/gulp-book/SUMMARY.md: -------------------------------------------------------------------------------- 1 | 目录 2 | ==== 3 | 4 | 1. [安装 Node 和 gulp](chapter1.md) 5 | 2. [使用 gulp 压缩 JS](chapter2.md) 6 | 3. [使用 gulp 压缩 CSS](chapter3.md) 7 | 4. [使用 gulp 压缩图片](chapter4.md) 8 | 5. [使用 gulp 编译 LESS](chapter5.md) 9 | 6. [使用 gulp 编译 Sass](chapter6.md) 10 | 7. [使用 gulp 构建一个项目](chapter7.md) -------------------------------------------------------------------------------- /routers/router.go: -------------------------------------------------------------------------------- 1 | package routers 2 | 3 | import ( 4 | "github.com/BookStackCN/BookStack/controllers" 5 | "github.com/astaxie/beego" 6 | ) 7 | 8 | func init() { 9 | beego.Router("/", &controllers.MainController{}) 10 | beego.Router("/read/*", &controllers.MainController{}, "get:Read") 11 | } 12 | -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter2/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "homepage": "https://github.com/nimojs/gulp-book", 3 | "version": "0.0.1", 4 | "description": "", 5 | "main": "gulpfile.js", 6 | "license": "MIT", 7 | "devDependencies": { 8 | "gulp": "^3.8.11", 9 | "gulp-uglify": "^1.1.0" 10 | } 11 | } -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter4/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "homepage": "https://github.com/nimojs/gulp-book", 3 | "version": "0.0.1", 4 | "description": "", 5 | "main": "gulpfile.js", 6 | "license": "MIT", 7 | "devDependencies": { 8 | "gulp": "^3.8.11", 9 | "gulp-imagemin": "^2.2.1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter5/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "homepage": "https://github.com/nimojs/gulp-book", 3 | "version": "0.0.1", 4 | "description": "", 5 | "main": "gulpfile.js", 6 | "license": "MIT", 7 | "devDependencies": { 8 | "gulp": "^3.8.11", 9 | "gulp-less": "^3.0.2" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter3/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "homepage": "https://github.com/nimojs/gulp-book", 3 | "version": "0.0.1", 4 | "description": "", 5 | "main": "gulpfile.js", 6 | "license": "MIT", 7 | "devDependencies": { 8 | "gulp": "^3.8.11", 9 | "gulp-minify-css": "^1.0.0" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter6/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "homepage": "https://github.com/nimojs/gulp-book", 3 | "version": "0.0.1", 4 | "description": "", 5 | "main": "gulpfile.js", 6 | "license": "MIT", 7 | "devDependencies": { 8 | "gulp": "^3.8.11", 9 | "gulp-ruby-sass": "^1.0.1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/tiddlywiki/tiddlywiki.css: -------------------------------------------------------------------------------- 1 | span.cm-underlined { 2 | text-decoration: underline; 3 | } 4 | span.cm-strikethrough { 5 | text-decoration: line-through; 6 | } 7 | span.cm-brace { 8 | color: #170; 9 | font-weight: bold; 10 | } 11 | span.cm-table { 12 | color: blue; 13 | font-weight: bold; 14 | } 15 | -------------------------------------------------------------------------------- /static/lib/codemirror/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "codemirror", 3 | "version":"5.0.0", 4 | "main": ["lib/codemirror.js", "lib/codemirror.css"], 5 | "ignore": [ 6 | "**/.*", 7 | "node_modules", 8 | "components", 9 | "bin", 10 | "demo", 11 | "doc", 12 | "test", 13 | "index.html", 14 | "package.json" 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter4/README.md: -------------------------------------------------------------------------------- 1 | # 使用 gulp 压缩图片 - 示例代码 2 | 3 | [gulp 入门指南](https://github.com/nimojs/gulp-book) 4 | 5 | 本目录 [使用 gulp 压缩图片](../../chapter4.md)章节中的示例代码 6 | 7 | 8 | ## 安装依赖 9 | 打开命令行切换至此目录后,在命令行输入 10 | ``` 11 | npm install 12 | ``` 13 | 14 | 将会安装此示例所需的模块 15 | 16 | ------- 17 | 18 | 若没有安装模块或安装模块失败。在命令行运行 `gulp`。则会出现如下报错: 19 | ``` 20 | module.js:338 21 | throw err; 22 | ^ 23 | Error: Cannot find module 'gulp-xxx' 24 | ``` 25 | -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter2/README.md: -------------------------------------------------------------------------------- 1 | # 使用 gulp 压缩 JS - 示例代码 2 | 3 | [gulp 入门指南](https://github.com/nimojs/gulp-book) 4 | 5 | 本目录 [使用 gulp 压缩 JS](../../chapter2.md)章节中的示例代码 6 | 7 | 8 | ## 安装依赖 9 | 打开命令行切换至此目录后,在命令行输入 10 | ``` 11 | npm install 12 | ``` 13 | 14 | 将会安装此示例所需的模块 15 | 16 | ------- 17 | 18 | 若没有安装模块或安装模块失败。在命令行运行 `gulp`。则会出现如下报错: 19 | ``` 20 | module.js:338 21 | throw err; 22 | ^ 23 | Error: Cannot find module 'gulp-xxx' 24 | ``` 25 | -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter3/README.md: -------------------------------------------------------------------------------- 1 | # 使用 gulp 压缩 CSS - 示例代码 2 | 3 | [gulp 入门指南](https://github.com/nimojs/gulp-book) 4 | 5 | 本目录 [使用 gulp 压缩 CSS](../../chapter3.md)章节中的示例代码 6 | 7 | 8 | ## 安装依赖 9 | 打开命令行切换至此目录后,在命令行输入 10 | ``` 11 | npm install 12 | ``` 13 | 14 | 将会安装此示例所需的模块 15 | 16 | ------- 17 | 18 | 若没有安装模块或安装模块失败。在命令行运行 `gulp`。则会出现如下报错: 19 | ``` 20 | module.js:338 21 | throw err; 22 | ^ 23 | Error: Cannot find module 'gulp-xxx' 24 | ``` 25 | -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter5/README.md: -------------------------------------------------------------------------------- 1 | # 使用 gulp 编译 LESS - 示例代码 2 | 3 | [gulp 入门指南](https://github.com/nimojs/gulp-book) 4 | 5 | 本目录 [使用 gulp 编译 LESS](../../chapter5.md)章节中的示例代码 6 | 7 | 8 | ## 安装依赖 9 | 打开命令行切换至此目录后,在命令行输入 10 | ``` 11 | npm install 12 | ``` 13 | 14 | 将会安装此示例所需的模块 15 | 16 | ------- 17 | 18 | 若没有安装模块或安装模块失败。在命令行运行 `gulp`。则会出现如下报错: 19 | ``` 20 | module.js:338 21 | throw err; 22 | ^ 23 | Error: Cannot find module 'gulp-xxx' 24 | ``` 25 | -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter6/README.md: -------------------------------------------------------------------------------- 1 | # 使用 gulp 编译 Sass - 示例代码 2 | 3 | [gulp 入门指南](https://github.com/nimojs/gulp-book) 4 | 5 | 本目录 [使用 gulp 编译 Sass](../../chapter6.md)章节中的示例代码 6 | 7 | 8 | ## 安装依赖 9 | 打开命令行切换至此目录后,在命令行输入 10 | ``` 11 | npm install 12 | ``` 13 | 14 | 将会安装此示例所需的模块 15 | 16 | ------- 17 | 18 | 若没有安装模块或安装模块失败。在命令行运行 `gulp`。则会出现如下报错: 19 | ``` 20 | module.js:338 21 | throw err; 22 | ^ 23 | Error: Cannot find module 'gulp-xxx' 24 | ``` 25 | -------------------------------------------------------------------------------- /static/lib/codemirror/addon/fold/foldgutter.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-foldmarker { 2 | color: blue; 3 | text-shadow: #b9f 1px 1px 2px, #b9f -1px -1px 2px, #b9f 1px -1px 2px, #b9f -1px 1px 2px; 4 | font-family: arial; 5 | line-height: .3; 6 | cursor: pointer; 7 | } 8 | .CodeMirror-foldgutter { 9 | width: .7em; 10 | } 11 | .CodeMirror-foldgutter-open, 12 | .CodeMirror-foldgutter-folded { 13 | cursor: pointer; 14 | } 15 | .CodeMirror-foldgutter-open:after { 16 | content: "\25BE"; 17 | } 18 | .CodeMirror-foldgutter-folded:after { 19 | content: "\25B8"; 20 | } 21 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/ruby/test.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function() { 5 | var mode = CodeMirror.getMode({indentUnit: 2}, "ruby"); 6 | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } 7 | 8 | MT("divide_equal_operator", 9 | "[variable bar] [operator /=] [variable foo]"); 10 | 11 | MT("divide_equal_operator_no_spacing", 12 | "[variable foo][operator /=][number 42]"); 13 | 14 | })(); 15 | -------------------------------------------------------------------------------- /utils/utils.go: -------------------------------------------------------------------------------- 1 | package utils 2 | 3 | import ( 4 | "io/ioutil" 5 | 6 | "github.com/astaxie/beego" 7 | ) 8 | 9 | //是否是调试模式 10 | var Debug = true 11 | 12 | func init() { 13 | if beego.AppConfig.String("runmode") == "prod" { 14 | Debug = false 15 | } 16 | } 17 | 18 | //获取文件内容字符串 19 | //@param file 文件 20 | //@return content 返回的字符串内容 21 | //@return err 错误 22 | func FileGetContent(file string) (content string, err error) { 23 | var b []byte 24 | if b, err = ioutil.ReadFile(file); err == nil { 25 | content = string(b) 26 | } 27 | return 28 | } 29 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/tiki/tiki.css: -------------------------------------------------------------------------------- 1 | .cm-tw-syntaxerror { 2 | color: #FFF; 3 | background-color: #900; 4 | } 5 | 6 | .cm-tw-deleted { 7 | text-decoration: line-through; 8 | } 9 | 10 | .cm-tw-header5 { 11 | font-weight: bold; 12 | } 13 | .cm-tw-listitem:first-child { /*Added first child to fix duplicate padding when highlighting*/ 14 | padding-left: 10px; 15 | } 16 | 17 | .cm-tw-box { 18 | border-top-width: 0px ! important; 19 | border-style: solid; 20 | border-width: 1px; 21 | border-color: inherit; 22 | } 23 | 24 | .cm-tw-underline { 25 | text-decoration: underline; 26 | } -------------------------------------------------------------------------------- /static/lib/codemirror/addon/dialog/dialog.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-dialog { 2 | position: absolute; 3 | left: 0; right: 0; 4 | background: white; 5 | z-index: 15; 6 | padding: .1em .8em; 7 | overflow: hidden; 8 | color: #333; 9 | } 10 | 11 | .CodeMirror-dialog-top { 12 | border-bottom: 1px solid #eee; 13 | top: 0; 14 | } 15 | 16 | .CodeMirror-dialog-bottom { 17 | border-top: 1px solid #eee; 18 | bottom: 0; 19 | } 20 | 21 | .CodeMirror-dialog input { 22 | border: none; 23 | outline: none; 24 | background: transparent; 25 | width: 20em; 26 | color: inherit; 27 | font-family: monospace; 28 | } 29 | 30 | .CodeMirror-dialog button { 31 | font-size: 70%; 32 | } 33 | -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter5/gulpfile.js: -------------------------------------------------------------------------------- 1 | // 获取 gulp 2 | var gulp = require('gulp') 3 | // 获取 gulp-less 模块 4 | var less = require('gulp-less') 5 | 6 | // 编译less 7 | // 在命令行输入 gulp images 启动此任务 8 | gulp.task('less', function () { 9 | // 1. 找到 less 文件 10 | gulp.src('less/**.less') 11 | // 2. 编译为css 12 | .pipe(less()) 13 | // 3. 另存文件 14 | .pipe(gulp.dest('dist/css')) 15 | }); 16 | 17 | // 在命令行使用 gulp auto 启动此任务 18 | gulp.task('auto', function () { 19 | // 监听文件修改,当文件被修改则执行 images 任务 20 | gulp.watch('less/**.less', ['less']) 21 | }) 22 | 23 | // 使用 gulp.task('default') 定义默认任务 24 | // 在命令行使用 gulp 启动 less 任务和 auto 任务 25 | gulp.task('default', ['less', 'auto']) -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter3/gulpfile.js: -------------------------------------------------------------------------------- 1 | // 获取 gulp 2 | var gulp = require('gulp') 3 | 4 | // 获取 minify-css 模块(用于压缩 CSS) 5 | var minifyCSS = require('gulp-minify-css') 6 | 7 | // 压缩 css 文件 8 | // 在命令行使用 gulp css 启动此任务 9 | gulp.task('css', function () { 10 | // 1. 找到文件 11 | gulp.src('css/*.css') 12 | // 2. 压缩文件 13 | .pipe(minifyCSS()) 14 | // 3. 另存为压缩文件 15 | .pipe(gulp.dest('dist/css')) 16 | }) 17 | 18 | // 在命令行使用 gulp auto 启动此任务 19 | gulp.task('auto', function () { 20 | // 监听文件修改,当文件被修改则执行 css 任务 21 | gulp.watch('css/*.css', ['css']) 22 | }); 23 | 24 | // 使用 gulp.task('default') 定义默认任务 25 | // 在命令行使用 gulp 启动 css 任务和 auto 任务 26 | gulp.task('default', ['css', 'auto']) -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter6/gulpfile.js: -------------------------------------------------------------------------------- 1 | // 获取 gulp 2 | var gulp = require('gulp') 3 | // 获取 gulp-ruby-sass 模块 4 | var sass = require('gulp-ruby-sass') 5 | 6 | // 编译sass 7 | // 在命令行输入 gulp sass 启动此任务 8 | gulp.task('sass', function() { 9 | return sass('sass/') 10 | .on('error', function (err) { 11 | console.error('Error!', err.message); 12 | }) 13 | .pipe(gulp.dest('dist/css')) 14 | }); 15 | 16 | 17 | // 在命令行使用 gulp auto 启动此任务 18 | gulp.task('auto', function () { 19 | // 监听文件修改,当文件被修改则执行 images 任务 20 | gulp.watch('sass/**/*.scss', ['sass']) 21 | }); 22 | 23 | // 使用 gulp.task('default') 定义默认任务 24 | // 在命令行使用 gulp 启动 sass 任务和 auto 任务 25 | gulp.task('default', ['sass', 'auto']) -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter2/gulpfile.js: -------------------------------------------------------------------------------- 1 | // 获取 gulp 2 | var gulp = require('gulp') 3 | 4 | // 获取 uglify 模块(用于压缩 JS) 5 | var uglify = require('gulp-uglify') 6 | 7 | // 压缩 js 文件 8 | // 在命令行使用 gulp script 启动此任务 9 | gulp.task('script', function() { 10 | // 1. 找到文件 11 | gulp.src('js/*.js') 12 | // 2. 压缩文件 13 | .pipe(uglify()) 14 | // 3. 另存压缩后的文件 15 | .pipe(gulp.dest('dist/js')) 16 | }) 17 | 18 | // 在命令行使用 gulp auto 启动此任务 19 | gulp.task('auto', function () { 20 | // 监听文件修改,当文件被修改则执行 script 任务 21 | gulp.watch('js/*.js', ['script']) 22 | }) 23 | 24 | 25 | // 使用 gulp.task('default') 定义默认任务 26 | // 在命令行使用 gulp 启动 script 任务和 auto 任务 27 | gulp.task('default', ['script', 'auto']) -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter4/gulpfile.js: -------------------------------------------------------------------------------- 1 | // 获取 gulp 2 | var gulp = require('gulp'); 3 | 4 | // 获取 gulp-imagemin 模块 5 | var imagemin = require('gulp-imagemin') 6 | 7 | // 压缩图片任务 8 | // 在命令行输入 gulp images 启动此任务 9 | gulp.task('images', function () { 10 | // 1. 找到图片 11 | gulp.src('images/*.*') 12 | // 2. 压缩图片 13 | .pipe(imagemin({ 14 | progressive: true 15 | })) 16 | // 3. 另存图片 17 | .pipe(gulp.dest('dist/images')) 18 | }); 19 | 20 | // 在命令行使用 gulp auto 启动此任务 21 | gulp.task('auto', function () { 22 | // 监听文件修改,当文件被修改则执行 images 任务 23 | gulp.watch('images/*.*', ['images']) 24 | }); 25 | 26 | // 使用 gulp.task('default') 定义默认任务 27 | // 在命令行使用 gulp 启动 images 任务和 auto 任务 28 | gulp.task('default', ['images', 'auto']) 29 | -------------------------------------------------------------------------------- /static/lib/codemirror/theme/neat.css: -------------------------------------------------------------------------------- 1 | .cm-s-neat span.cm-comment { color: #a86; } 2 | .cm-s-neat span.cm-keyword { line-height: 1em; font-weight: bold; color: blue; } 3 | .cm-s-neat span.cm-string { color: #a22; } 4 | .cm-s-neat span.cm-builtin { line-height: 1em; font-weight: bold; color: #077; } 5 | .cm-s-neat span.cm-special { line-height: 1em; font-weight: bold; color: #0aa; } 6 | .cm-s-neat span.cm-variable { color: black; } 7 | .cm-s-neat span.cm-number, .cm-s-neat span.cm-atom { color: #3a3; } 8 | .cm-s-neat span.cm-meta {color: #555;} 9 | .cm-s-neat span.cm-link { color: #3a3; } 10 | 11 | .cm-s-neat .CodeMirror-activeline-background {background: #e8f2ff !important;} 12 | .cm-s-neat .CodeMirror-matchingbracket {outline:1px solid grey; color:black !important;} 13 | -------------------------------------------------------------------------------- /static/lib/codemirror/theme/elegant.css: -------------------------------------------------------------------------------- 1 | .cm-s-elegant span.cm-number, .cm-s-elegant span.cm-string, .cm-s-elegant span.cm-atom {color: #762;} 2 | .cm-s-elegant span.cm-comment {color: #262; font-style: italic; line-height: 1em;} 3 | .cm-s-elegant span.cm-meta {color: #555; font-style: italic; line-height: 1em;} 4 | .cm-s-elegant span.cm-variable {color: black;} 5 | .cm-s-elegant span.cm-variable-2 {color: #b11;} 6 | .cm-s-elegant span.cm-qualifier {color: #555;} 7 | .cm-s-elegant span.cm-keyword {color: #730;} 8 | .cm-s-elegant span.cm-builtin {color: #30a;} 9 | .cm-s-elegant span.cm-link {color: #762;} 10 | .cm-s-elegant span.cm-error {background-color: #fdd;} 11 | 12 | .cm-s-elegant .CodeMirror-activeline-background {background: #e8f2ff !important;} 13 | .cm-s-elegant .CodeMirror-matchingbracket {outline:1px solid grey; color:black !important;} 14 | -------------------------------------------------------------------------------- /static/lib/codemirror/README.md: -------------------------------------------------------------------------------- 1 | # CodeMirror 2 | [![Build Status](https://travis-ci.org/codemirror/CodeMirror.svg)](https://travis-ci.org/codemirror/CodeMirror) 3 | [![NPM version](https://img.shields.io/npm/v/codemirror.svg)](https://www.npmjs.org/package/codemirror) 4 | [Funding status: ![maintainer happiness](https://marijnhaverbeke.nl/fund/status_s.png)](https://marijnhaverbeke.nl/fund/) 5 | 6 | CodeMirror is a JavaScript component that provides a code editor in 7 | the browser. When a mode is available for the language you are coding 8 | in, it will color your code, and optionally help with indentation. 9 | 10 | The project page is http://codemirror.net 11 | The manual is at http://codemirror.net/doc/manual.html 12 | The contributing guidelines are in [CONTRIBUTING.md](https://github.com/codemirror/CodeMirror/blob/master/CONTRIBUTING.md) 13 | -------------------------------------------------------------------------------- /static/js/bookstack.js: -------------------------------------------------------------------------------- 1 | $(function () { 2 | //回滚到顶部 3 | $(".bookstack-gotop").click(function () { 4 | $('html,body').animate({scrollTop:0}, 200); 5 | }); 6 | //TODO:根据summary.md,生成上一篇和下一篇的链接地址 7 | 8 | //以https或者http开头的url链接,加上target='_blank' 9 | $(document).on("click","a",function (e) { 10 | e.preventDefault(); 11 | var href=$(this).attr("href").toLowerCase(); 12 | if($(this).attr("target")=="_blank" ||href.indexOf("http://")==0 || href.indexOf("https://")==0 ){ 13 | window.open(href); 14 | }else{ 15 | location.href=href; 16 | } 17 | }); 18 | 19 | 20 | $("#show-summary").click(function () { 21 | var summary=$("#bookstack-render-summary"); 22 | summary.hasClass("show")?summary.removeClass("show"):summary.addClass("show"); 23 | }); 24 | 25 | }); -------------------------------------------------------------------------------- /static/lib/codemirror/addon/hint/show-hint.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-hints { 2 | position: absolute; 3 | z-index: 10; 4 | overflow: hidden; 5 | list-style: none; 6 | 7 | margin: 0; 8 | padding: 2px; 9 | 10 | -webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2); 11 | -moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2); 12 | box-shadow: 2px 3px 5px rgba(0,0,0,.2); 13 | border-radius: 3px; 14 | border: 1px solid silver; 15 | 16 | background: white; 17 | font-size: 90%; 18 | font-family: monospace; 19 | 20 | max-height: 20em; 21 | overflow-y: auto; 22 | } 23 | 24 | .CodeMirror-hint { 25 | margin: 0; 26 | padding: 0 4px; 27 | border-radius: 2px; 28 | max-width: 19em; 29 | overflow: hidden; 30 | white-space: pre; 31 | color: black; 32 | cursor: pointer; 33 | } 34 | 35 | li.CodeMirror-hint-active { 36 | background: #08f; 37 | color: white; 38 | } 39 | -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter7/use-gulp-watch-path.js: -------------------------------------------------------------------------------- 1 | var gulp = require('gulp') 2 | var gutil = require('gulp-util') 3 | 4 | var uglify = require('gulp-uglify') 5 | var watchPath = require('gulp-watch-path') 6 | 7 | gulp.task('watchjs', function () { 8 | gulp.watch('src/js/**/*.js', function (event) { 9 | var paths = watchPath(event, 'src/', 'dist/') 10 | /* 11 | paths 12 | { srcPath: 'src/js/log.js', 13 | srcDir: 'src/js/', 14 | distPath: 'dist/js/log.js', 15 | distDir: 'dist/js/', 16 | srcFilename: 'log.js', 17 | distFilename: 'log.js' } 18 | */ 19 | gutil.log(gutil.colors.green(event.type) + ' ' + paths.srcPath) 20 | gutil.log('Dist ' + paths.distPath) 21 | 22 | gulp.src(paths.srcPath) 23 | .pipe(uglify()) 24 | .pipe(gulp.dest(paths.distDir)) 25 | }) 26 | }) 27 | 28 | gulp.task('default', ['watchjs']) -------------------------------------------------------------------------------- /static/lib/codemirror/addon/mode/multiplex_test.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function() { 5 | CodeMirror.defineMode("markdown_with_stex", function(){ 6 | var inner = CodeMirror.getMode({}, "stex"); 7 | var outer = CodeMirror.getMode({}, "markdown"); 8 | 9 | var innerOptions = { 10 | open: '$', 11 | close: '$', 12 | mode: inner, 13 | delimStyle: 'delim', 14 | innerStyle: 'inner' 15 | }; 16 | 17 | return CodeMirror.multiplexingMode(outer, innerOptions); 18 | }); 19 | 20 | var mode = CodeMirror.getMode({}, "markdown_with_stex"); 21 | 22 | function MT(name) { 23 | test.mode( 24 | name, 25 | mode, 26 | Array.prototype.slice.call(arguments, 1), 27 | 'multiplexing'); 28 | } 29 | 30 | MT( 31 | "stexInsideMarkdown", 32 | "[strong **Equation:**] [delim $][inner&tag \\pi][delim $]"); 33 | })(); 34 | -------------------------------------------------------------------------------- /static/lib/codemirror/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "codemirror", 3 | "version":"5.0.0", 4 | "main": "lib/codemirror.js", 5 | "description": "In-browser code editing made bearable", 6 | "licenses": [{"type": "MIT", 7 | "url": "http://codemirror.net/LICENSE"}], 8 | "directories": {"lib": "./lib"}, 9 | "scripts": {"test": "node ./test/run.js"}, 10 | "devDependencies": {"node-static": "0.6.0", 11 | "phantomjs": "1.9.2-5", 12 | "blint": ">=0.1.1"}, 13 | "bugs": "http://github.com/codemirror/CodeMirror/issues", 14 | "keywords": ["JavaScript", "CodeMirror", "Editor"], 15 | "homepage": "http://codemirror.net", 16 | "maintainers":[{"name": "Marijn Haverbeke", 17 | "email": "marijnh@gmail.com", 18 | "web": "http://marijnhaverbeke.nl"}], 19 | "repository": {"type": "git", 20 | "url": "https://github.com/codemirror/CodeMirror.git"} 21 | } 22 | -------------------------------------------------------------------------------- /static/lib/codemirror/addon/lint/yaml-lint.js: -------------------------------------------------------------------------------- 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 | })(function(CodeMirror) { 12 | "use strict"; 13 | 14 | // Depends on js-yaml.js from https://github.com/nodeca/js-yaml 15 | 16 | // declare global: jsyaml 17 | 18 | CodeMirror.registerHelper("lint", "yaml", function(text) { 19 | var found = []; 20 | try { jsyaml.load(text); } 21 | catch(e) { 22 | var loc = e.mark; 23 | found.push({ from: CodeMirror.Pos(loc.line, loc.column), to: CodeMirror.Pos(loc.line, loc.column), message: e.message }); 24 | } 25 | return found; 26 | }); 27 | 28 | }); 29 | -------------------------------------------------------------------------------- /controllers/MainController.go: -------------------------------------------------------------------------------- 1 | package controllers 2 | 3 | import ( 4 | "path/filepath" 5 | "strings" 6 | 7 | "github.com/BookStackCN/BookStack/utils" 8 | "github.com/astaxie/beego" 9 | ) 10 | 11 | type MainController struct { 12 | beego.Controller 13 | } 14 | 15 | func (this *MainController) Get() { 16 | this.Data["Website"] = "beego.me" 17 | this.Data["Email"] = "astaxie@gmail.com" 18 | this.TplName = "index.html" 19 | } 20 | 21 | func (this *MainController) Read() { 22 | file := this.GetString(":splat") 23 | if utils.Debug { 24 | beego.Debug("读取的文件", file) 25 | } 26 | ext := strings.ToLower(filepath.Ext(file)) 27 | cont, err := utils.FileGetContent("books/" + file) 28 | if ext == ".md" || ext == ".markdown" { 29 | if err != nil { 30 | beego.Error(err.Error()) 31 | this.Abort("404") 32 | } 33 | summary, _ := utils.FileGetContent("books/" + filepath.Dir(file) + "/summary.md") 34 | this.Data["Summary"] = summary 35 | this.Data["Markdown"] = cont 36 | this.TplName = "read.html" 37 | } else { 38 | this.Ctx.WriteString(cont) 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /static/fonts/editormd-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Generated by IcoMoon 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/lib/codemirror/addon/lint/json-lint.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | // Depends on jsonlint.js from https://github.com/zaach/jsonlint 5 | 6 | // declare global: jsonlint 7 | 8 | (function(mod) { 9 | if (typeof exports == "object" && typeof module == "object") // CommonJS 10 | mod(require("../../lib/codemirror")); 11 | else if (typeof define == "function" && define.amd) // AMD 12 | define(["../../lib/codemirror"], mod); 13 | else // Plain browser env 14 | mod(CodeMirror); 15 | })(function(CodeMirror) { 16 | "use strict"; 17 | 18 | CodeMirror.registerHelper("lint", "json", function(text) { 19 | var found = []; 20 | jsonlint.parseError = function(str, hash) { 21 | var loc = hash.loc; 22 | found.push({from: CodeMirror.Pos(loc.first_line - 1, loc.first_column), 23 | to: CodeMirror.Pos(loc.last_line - 1, loc.last_column), 24 | message: str}); 25 | }; 26 | try { jsonlint.parse(text); } 27 | catch(e) {} 28 | return found; 29 | }); 30 | 31 | }); 32 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 BookStackCN 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /static/lib/codemirror/theme/neo.css: -------------------------------------------------------------------------------- 1 | /* neo theme for codemirror */ 2 | 3 | /* Color scheme */ 4 | 5 | .cm-s-neo.CodeMirror { 6 | background-color:#ffffff; 7 | color:#2e383c; 8 | line-height:1.4375; 9 | } 10 | .cm-s-neo .cm-comment {color:#75787b} 11 | .cm-s-neo .cm-keyword, .cm-s-neo .cm-property {color:#1d75b3} 12 | .cm-s-neo .cm-atom,.cm-s-neo .cm-number {color:#75438a} 13 | .cm-s-neo .cm-node,.cm-s-neo .cm-tag {color:#9c3328} 14 | .cm-s-neo .cm-string {color:#b35e14} 15 | .cm-s-neo .cm-variable,.cm-s-neo .cm-qualifier {color:#047d65} 16 | 17 | 18 | /* Editor styling */ 19 | 20 | .cm-s-neo pre { 21 | padding:0; 22 | } 23 | 24 | .cm-s-neo .CodeMirror-gutters { 25 | border:none; 26 | border-right:10px solid transparent; 27 | background-color:transparent; 28 | } 29 | 30 | .cm-s-neo .CodeMirror-linenumber { 31 | padding:0; 32 | color:#e0e2e5; 33 | } 34 | 35 | .cm-s-neo .CodeMirror-guttermarker { color: #1d75b3; } 36 | .cm-s-neo .CodeMirror-guttermarker-subtle { color: #e0e2e5; } 37 | 38 | .cm-s-neo div.CodeMirror-cursor { 39 | width: auto; 40 | border: 0; 41 | background: rgba(155,157,162,0.37); 42 | z-index: 1; 43 | } 44 | -------------------------------------------------------------------------------- /static/lib/codemirror/addon/edit/trailingspace.js: -------------------------------------------------------------------------------- 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 | })(function(CodeMirror) { 12 | CodeMirror.defineOption("showTrailingSpace", false, function(cm, val, prev) { 13 | if (prev == CodeMirror.Init) prev = false; 14 | if (prev && !val) 15 | cm.removeOverlay("trailingspace"); 16 | else if (!prev && val) 17 | cm.addOverlay({ 18 | token: function(stream) { 19 | for (var l = stream.string.length, i = l; i && /\s/.test(stream.string.charAt(i - 1)); --i) {} 20 | if (i > stream.pos) { stream.pos = i; return null; } 21 | stream.pos = l; 22 | return "trailingspace"; 23 | }, 24 | name: "trailingspace" 25 | }); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /tests/default_test.go: -------------------------------------------------------------------------------- 1 | package test 2 | 3 | import ( 4 | "net/http" 5 | "net/http/httptest" 6 | "testing" 7 | "runtime" 8 | "path/filepath" 9 | _ "github.com/BookStackCN/BookStack/BookStack/routers" 10 | 11 | "github.com/astaxie/beego" 12 | . "github.com/smartystreets/goconvey/convey" 13 | ) 14 | 15 | func init() { 16 | _, file, _, _ := runtime.Caller(1) 17 | apppath, _ := filepath.Abs(filepath.Dir(filepath.Join(file, ".." + string(filepath.Separator)))) 18 | beego.TestBeegoInit(apppath) 19 | } 20 | 21 | 22 | // TestBeego is a sample to run an endpoint test 23 | func TestBeego(t *testing.T) { 24 | r, _ := http.NewRequest("GET", "/", nil) 25 | w := httptest.NewRecorder() 26 | beego.BeeApp.Handlers.ServeHTTP(w, r) 27 | 28 | beego.Trace("testing", "TestBeego", "Code[%d]\n%s", w.Code, w.Body.String()) 29 | 30 | Convey("Subject: Test Station Endpoint\n", t, func() { 31 | Convey("Status Code Should Be 200", func() { 32 | So(w.Code, ShouldEqual, 200) 33 | }) 34 | Convey("The Result Should Not Be Empty", func() { 35 | So(w.Body.Len(), ShouldBeGreaterThan, 0) 36 | }) 37 | }) 38 | } 39 | 40 | -------------------------------------------------------------------------------- /static/lib/codemirror/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (C) 2014 by Marijn Haverbeke and others 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /static/lib/codemirror/theme/eclipse.css: -------------------------------------------------------------------------------- 1 | .cm-s-eclipse span.cm-meta {color: #FF1717;} 2 | .cm-s-eclipse span.cm-keyword { line-height: 1em; font-weight: bold; color: #7F0055; } 3 | .cm-s-eclipse span.cm-atom {color: #219;} 4 | .cm-s-eclipse span.cm-number {color: #164;} 5 | .cm-s-eclipse span.cm-def {color: #00f;} 6 | .cm-s-eclipse span.cm-variable {color: black;} 7 | .cm-s-eclipse span.cm-variable-2 {color: #0000C0;} 8 | .cm-s-eclipse span.cm-variable-3 {color: #0000C0;} 9 | .cm-s-eclipse span.cm-property {color: black;} 10 | .cm-s-eclipse span.cm-operator {color: black;} 11 | .cm-s-eclipse span.cm-comment {color: #3F7F5F;} 12 | .cm-s-eclipse span.cm-string {color: #2A00FF;} 13 | .cm-s-eclipse span.cm-string-2 {color: #f50;} 14 | .cm-s-eclipse span.cm-qualifier {color: #555;} 15 | .cm-s-eclipse span.cm-builtin {color: #30a;} 16 | .cm-s-eclipse span.cm-bracket {color: #cc7;} 17 | .cm-s-eclipse span.cm-tag {color: #170;} 18 | .cm-s-eclipse span.cm-attribute {color: #00c;} 19 | .cm-s-eclipse span.cm-link {color: #219;} 20 | .cm-s-eclipse span.cm-error {color: #f00;} 21 | 22 | .cm-s-eclipse .CodeMirror-activeline-background {background: #e8f2ff !important;} 23 | .cm-s-eclipse .CodeMirror-matchingbracket {outline:1px solid grey; color:black !important;} 24 | -------------------------------------------------------------------------------- /static/lib/codemirror/addon/lint/css-lint.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | // Depends on csslint.js from https://github.com/stubbornella/csslint 5 | 6 | // declare global: CSSLint 7 | 8 | (function(mod) { 9 | if (typeof exports == "object" && typeof module == "object") // CommonJS 10 | mod(require("../../lib/codemirror")); 11 | else if (typeof define == "function" && define.amd) // AMD 12 | define(["../../lib/codemirror"], mod); 13 | else // Plain browser env 14 | mod(CodeMirror); 15 | })(function(CodeMirror) { 16 | "use strict"; 17 | 18 | CodeMirror.registerHelper("lint", "css", function(text) { 19 | var found = []; 20 | if (!window.CSSLint) return found; 21 | var results = CSSLint.verify(text), messages = results.messages, message = null; 22 | for ( var i = 0; i < messages.length; i++) { 23 | message = messages[i]; 24 | var startLine = message.line -1, endLine = message.line -1, startCol = message.col -1, endCol = message.col; 25 | found.push({ 26 | from: CodeMirror.Pos(startLine, startCol), 27 | to: CodeMirror.Pos(endLine, endCol), 28 | message: message.message, 29 | severity : message.type 30 | }); 31 | } 32 | return found; 33 | }); 34 | 35 | }); 36 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/diff/diff.js: -------------------------------------------------------------------------------- 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 | })(function(CodeMirror) { 12 | "use strict"; 13 | 14 | CodeMirror.defineMode("diff", function() { 15 | 16 | var TOKEN_NAMES = { 17 | '+': 'positive', 18 | '-': 'negative', 19 | '@': 'meta' 20 | }; 21 | 22 | return { 23 | token: function(stream) { 24 | var tw_pos = stream.string.search(/[\t ]+?$/); 25 | 26 | if (!stream.sol() || tw_pos === 0) { 27 | stream.skipToEnd(); 28 | return ("error " + ( 29 | TOKEN_NAMES[stream.string.charAt(0)] || '')).replace(/ $/, ''); 30 | } 31 | 32 | var token_name = TOKEN_NAMES[stream.peek()] || stream.skipToEnd(); 33 | 34 | if (tw_pos === -1) { 35 | stream.skipToEnd(); 36 | } else { 37 | stream.pos = tw_pos; 38 | } 39 | 40 | return token_name; 41 | } 42 | }; 43 | }); 44 | 45 | CodeMirror.defineMIME("text/x-diff", "diff"); 46 | 47 | }); 48 | -------------------------------------------------------------------------------- /static/lib/jquery.flowchart.min.js: -------------------------------------------------------------------------------- 1 | /*! jQuery.flowchart.js v1.1.0 | jquery.flowchart.min.js | jQuery plugin for flowchart.js. | MIT License | By: Pandao | https://github.com/pandao/jquery.flowchart.js | 2015-03-09 */ 2 | (function(factory){if(typeof require==="function"&&typeof exports==="object"&&typeof module==="object"){module.exports=factory}else{if(typeof define==="function"){factory(jQuery,flowchart)}else{factory($,flowchart)}}}(function(jQuery,flowchart){(function($){$.fn.flowChart=function(options){options=options||{};var defaults={"x":0,"y":0,"line-width":2,"line-length":50,"text-margin":10,"font-size":14,"font-color":"black","line-color":"black","element-color":"black","fill":"white","yes-text":"yes","no-text":"no","arrow-end":"block","symbols":{"start":{"font-color":"black","element-color":"black","fill":"white"},"end":{"class":"end-element"}},"flowstate":{"past":{"fill":"#CCCCCC","font-size":12},"current":{"fill":"black","font-color":"white","font-weight":"bold"},"future":{"fill":"white"},"request":{"fill":"blue"},"invalid":{"fill":"#444444"},"approved":{"fill":"#58C4A3","font-size":12,"yes-text":"APPROVED","no-text":"n/a"},"rejected":{"fill":"#C45879","font-size":12,"yes-text":"n/a","no-text":"REJECTED"}}};return this.each(function(){var $this=$(this);var diagram=flowchart.parse($this.text());var settings=$.extend(true,defaults,options);$this.html("");diagram.drawSVG(this,settings)})}})(jQuery)})); -------------------------------------------------------------------------------- /static/lib/codemirror/addon/tern/worker.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | // declare global: tern, server 5 | 6 | var server; 7 | 8 | this.onmessage = function(e) { 9 | var data = e.data; 10 | switch (data.type) { 11 | case "init": return startServer(data.defs, data.plugins, data.scripts); 12 | case "add": return server.addFile(data.name, data.text); 13 | case "del": return server.delFile(data.name); 14 | case "req": return server.request(data.body, function(err, reqData) { 15 | postMessage({id: data.id, body: reqData, err: err && String(err)}); 16 | }); 17 | case "getFile": 18 | var c = pending[data.id]; 19 | delete pending[data.id]; 20 | return c(data.err, data.text); 21 | default: throw new Error("Unknown message type: " + data.type); 22 | } 23 | }; 24 | 25 | var nextId = 0, pending = {}; 26 | function getFile(file, c) { 27 | postMessage({type: "getFile", name: file, id: ++nextId}); 28 | pending[nextId] = c; 29 | } 30 | 31 | function startServer(defs, plugins, scripts) { 32 | if (scripts) importScripts.apply(null, scripts); 33 | 34 | server = new tern.Server({ 35 | getFile: getFile, 36 | async: true, 37 | defs: defs, 38 | plugins: plugins 39 | }); 40 | } 41 | 42 | var console = { 43 | log: function(v) { postMessage({type: "debug", message: v}); } 44 | }; 45 | -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter7/watchjs-1.js: -------------------------------------------------------------------------------- 1 | var gulp = require('gulp') 2 | var gutil = require('gulp-util') 3 | var uglify = require('gulp-uglify') 4 | var watchPath = require('gulp-watch-path') 5 | var combiner = require('stream-combiner2') 6 | 7 | var handleError = function (err) { 8 | var colors = gutil.colors; 9 | console.log('\n') 10 | gutil.log(colors.red('Error!')) 11 | gutil.log('fileName: ' + colors.red(err.fileName)) 12 | gutil.log('lineNumber: ' + colors.red(err.lineNumber)) 13 | gutil.log('message: ' + err.message) 14 | gutil.log('plugin: ' + colors.yellow(err.plugin)) 15 | } 16 | 17 | gulp.task('watchjs', function () { 18 | gulp.watch('src/js/**/*.js', function (event) { 19 | var paths = watchPath(event, 'src/', 'dist/') 20 | /* 21 | paths 22 | { srcPath: 'src/js/log.js', 23 | srcDir: 'src/js/', 24 | distPath: 'dist/js/log.js', 25 | distDir: 'dist/js/', 26 | srcFilename: 'log.js', 27 | distFilename: 'log.js' } 28 | */ 29 | gutil.log(gutil.colors.green(event.type) + ' ' + paths.srcPath) 30 | gutil.log('Dist ' + paths.distPath) 31 | 32 | var combined = combiner.obj([ 33 | gulp.src(paths.srcPath), 34 | uglify(), 35 | gulp.dest(paths.distDir) 36 | ]) 37 | 38 | combined.on('error', handleError) 39 | }) 40 | }) 41 | 42 | gulp.task('default', ['watchjs']) -------------------------------------------------------------------------------- /static/lib/codemirror/addon/lint/coffeescript-lint.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | // Depends on coffeelint.js from http://www.coffeelint.org/js/coffeelint.js 5 | 6 | // declare global: coffeelint 7 | 8 | (function(mod) { 9 | if (typeof exports == "object" && typeof module == "object") // CommonJS 10 | mod(require("../../lib/codemirror")); 11 | else if (typeof define == "function" && define.amd) // AMD 12 | define(["../../lib/codemirror"], mod); 13 | else // Plain browser env 14 | mod(CodeMirror); 15 | })(function(CodeMirror) { 16 | "use strict"; 17 | 18 | CodeMirror.registerHelper("lint", "coffeescript", function(text) { 19 | var found = []; 20 | var parseError = function(err) { 21 | var loc = err.lineNumber; 22 | found.push({from: CodeMirror.Pos(loc-1, 0), 23 | to: CodeMirror.Pos(loc, 0), 24 | severity: err.level, 25 | message: err.message}); 26 | }; 27 | try { 28 | var res = coffeelint.lint(text); 29 | for(var i = 0; i < res.length; i++) { 30 | parseError(res[i]); 31 | } 32 | } catch(e) { 33 | found.push({from: CodeMirror.Pos(e.location.first_line, 0), 34 | to: CodeMirror.Pos(e.location.last_line, e.location.last_column), 35 | severity: 'error', 36 | message: e.message}); 37 | } 38 | return found; 39 | }); 40 | 41 | }); 42 | -------------------------------------------------------------------------------- /static/lib/codemirror/addon/runmode/colorize.js: -------------------------------------------------------------------------------- 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"), require("./runmode")); 7 | else if (typeof define == "function" && define.amd) // AMD 8 | define(["../../lib/codemirror", "./runmode"], mod); 9 | else // Plain browser env 10 | mod(CodeMirror); 11 | })(function(CodeMirror) { 12 | "use strict"; 13 | 14 | var isBlock = /^(p|li|div|h\\d|pre|blockquote|td)$/; 15 | 16 | function textContent(node, out) { 17 | if (node.nodeType == 3) return out.push(node.nodeValue); 18 | for (var ch = node.firstChild; ch; ch = ch.nextSibling) { 19 | textContent(ch, out); 20 | if (isBlock.test(node.nodeType)) out.push("\n"); 21 | } 22 | } 23 | 24 | CodeMirror.colorize = function(collection, defaultMode) { 25 | if (!collection) collection = document.body.getElementsByTagName("pre"); 26 | 27 | for (var i = 0; i < collection.length; ++i) { 28 | var node = collection[i]; 29 | var mode = node.getAttribute("data-lang") || defaultMode; 30 | if (!mode) continue; 31 | 32 | var text = []; 33 | textContent(node, text); 34 | node.innerHTML = ""; 35 | CodeMirror.runMode(text.join(""), mode, node); 36 | 37 | node.className += " cm-s-default"; 38 | } 39 | }; 40 | }); 41 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/ntriples/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: NTriples mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 15 | 28 | 29 |
30 |

NTriples mode

31 |
32 | 39 |
40 | 41 | 44 |

MIME types defined: text/n-triples.

45 |
46 | -------------------------------------------------------------------------------- /books/gulp-book/demo/chapter7/watchjs-2.js: -------------------------------------------------------------------------------- 1 | var gulp = require('gulp') 2 | var gutil = require('gulp-util') 3 | var uglify = require('gulp-uglify') 4 | var watchPath = require('gulp-watch-path') 5 | var combiner = require('stream-combiner2') 6 | var sourcemaps = require('gulp-sourcemaps') 7 | 8 | var handleError = function (err) { 9 | var colors = gutil.colors; 10 | console.log('\n') 11 | gutil.log(colors.red('Error!')) 12 | gutil.log('fileName: ' + colors.red(err.fileName)) 13 | gutil.log('lineNumber: ' + colors.red(err.lineNumber)) 14 | gutil.log('message: ' + err.message) 15 | gutil.log('plugin: ' + colors.yellow(err.plugin)) 16 | } 17 | 18 | gulp.task('watchjs', function () { 19 | gulp.watch('src/js/**/*.js', function (event) { 20 | var paths = watchPath(event, 'src/', 'dist/') 21 | /* 22 | paths 23 | { srcPath: 'src/js/log.js', 24 | srcDir: 'src/js/', 25 | distPath: 'dist/js/log.js', 26 | distDir: 'dist/js/', 27 | srcFilename: 'log.js', 28 | distFilename: 'log.js' } 29 | */ 30 | gutil.log(gutil.colors.green(event.type) + ' ' + paths.srcPath) 31 | gutil.log('Dist ' + paths.distPath) 32 | 33 | var combined = combiner.obj([ 34 | gulp.src(paths.srcPath), 35 | sourcemaps.init(), 36 | uglify(), 37 | sourcemaps.write('./'), 38 | gulp.dest(paths.distDir) 39 | ]) 40 | 41 | combined.on('error', handleError) 42 | }) 43 | }) 44 | 45 | gulp.task('default', ['watchjs']) -------------------------------------------------------------------------------- /static/lib/codemirror/mode/spreadsheet/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Spreadsheet mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 25 | 26 |
27 |

Spreadsheet mode

28 |
29 | 30 | 37 | 38 |

MIME types defined: text/x-spreadsheet.

39 | 40 |

The Spreadsheet Mode

41 |

Created by Robert Plummer

42 |
43 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/http/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: HTTP mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

HTTP mode

27 | 28 | 29 |
39 | 40 | 43 | 44 |

MIME types defined: message/http.

45 |
46 | -------------------------------------------------------------------------------- /static/lib/codemirror/theme/cobalt.css: -------------------------------------------------------------------------------- 1 | .cm-s-cobalt.CodeMirror { background: #002240; color: white; } 2 | .cm-s-cobalt div.CodeMirror-selected { background: #b36539 !important; } 3 | .cm-s-cobalt.CodeMirror ::selection { background: rgba(179, 101, 57, .99); } 4 | .cm-s-cobalt.CodeMirror ::-moz-selection { background: rgba(179, 101, 57, .99); } 5 | .cm-s-cobalt .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; } 6 | .cm-s-cobalt .CodeMirror-guttermarker { color: #ffee80; } 7 | .cm-s-cobalt .CodeMirror-guttermarker-subtle { color: #d0d0d0; } 8 | .cm-s-cobalt .CodeMirror-linenumber { color: #d0d0d0; } 9 | .cm-s-cobalt .CodeMirror-cursor { border-left: 1px solid white !important; } 10 | 11 | .cm-s-cobalt span.cm-comment { color: #08f; } 12 | .cm-s-cobalt span.cm-atom { color: #845dc4; } 13 | .cm-s-cobalt span.cm-number, .cm-s-cobalt span.cm-attribute { color: #ff80e1; } 14 | .cm-s-cobalt span.cm-keyword { color: #ffee80; } 15 | .cm-s-cobalt span.cm-string { color: #3ad900; } 16 | .cm-s-cobalt span.cm-meta { color: #ff9d00; } 17 | .cm-s-cobalt span.cm-variable-2, .cm-s-cobalt span.cm-tag { color: #9effff; } 18 | .cm-s-cobalt span.cm-variable-3, .cm-s-cobalt span.cm-def { color: white; } 19 | .cm-s-cobalt span.cm-bracket { color: #d8d8d8; } 20 | .cm-s-cobalt span.cm-builtin, .cm-s-cobalt span.cm-special { color: #ff9e59; } 21 | .cm-s-cobalt span.cm-link { color: #845dc4; } 22 | .cm-s-cobalt span.cm-error { color: #9d1e15; } 23 | 24 | .cm-s-cobalt .CodeMirror-activeline-background {background: #002D57 !important;} 25 | .cm-s-cobalt .CodeMirror-matchingbracket {outline:1px solid grey;color:white !important} 26 | -------------------------------------------------------------------------------- /static/css/editormd.logo.min.css: -------------------------------------------------------------------------------- 1 | /*! Editor.md v1.5.0 | editormd.logo.min.css | Open source online markdown editor. | MIT License | By: Pandao | https://github.com/pandao/editor.md | 2015-06-09 */ 2 | /*! prefixes.scss v0.1.0 | Author: Pandao | https://github.com/pandao/prefixes.scss | MIT license | Copyright (c) 2015 */@font-face{font-family:editormd-logo;src:url(../fonts/editormd-logo.eot?-5y8q6h);src:url(.../fonts/editormd-logo.eot?#iefix-5y8q6h)format("embedded-opentype"),url(../fonts/editormd-logo.woff?-5y8q6h)format("woff"),url(../fonts/editormd-logo.ttf?-5y8q6h)format("truetype"),url(../fonts/editormd-logo.svg?-5y8q6h#icomoon)format("svg");font-weight:400;font-style:normal}.editormd-logo,.editormd-logo-1x,.editormd-logo-2x,.editormd-logo-3x,.editormd-logo-4x,.editormd-logo-5x,.editormd-logo-6x,.editormd-logo-7x,.editormd-logo-8x{font-family:editormd-logo;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;font-size:inherit;line-height:1;display:inline-block;text-rendering:auto;vertical-align:inherit;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.editormd-logo-1x:before,.editormd-logo-2x:before,.editormd-logo-3x:before,.editormd-logo-4x:before,.editormd-logo-5x:before,.editormd-logo-6x:before,.editormd-logo-7x:before,.editormd-logo-8x:before,.editormd-logo:before{content:"\e1987"}.editormd-logo-1x{font-size:1em}.editormd-logo-lg{font-size:1.2em}.editormd-logo-2x{font-size:2em}.editormd-logo-3x{font-size:3em}.editormd-logo-4x{font-size:4em}.editormd-logo-5x{font-size:5em}.editormd-logo-6x{font-size:6em}.editormd-logo-7x{font-size:7em}.editormd-logo-8x{font-size:8em}.editormd-logo-color{color:#2196F3} -------------------------------------------------------------------------------- /static/lib/codemirror/mode/solr/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Solr mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 20 | 33 | 34 |
35 |

Solr mode

36 | 37 |
38 | 47 |
48 | 49 | 55 | 56 |

MIME types defined: text/x-solr.

57 |
58 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/z80/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Z80 assembly mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Z80 assembly mode

27 | 28 | 29 |
44 | 45 | 50 | 51 |

MIME type defined: text/x-z80.

52 |
53 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/ecl/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: ECL mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

ECL mode

27 |
45 | 48 | 49 |

Based on CodeMirror's clike mode. For more information see HPCC Systems web site.

50 |

MIME types defined: text/x-ecl.

51 | 52 |
53 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/rust/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Rust mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Rust mode

27 | 28 | 29 |
52 | 53 | 58 | 59 |

MIME types defined: text/x-rustsrc.

60 |
61 | -------------------------------------------------------------------------------- /static/lib/codemirror/addon/scroll/simplescrollbars.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-simplescroll-horizontal div, .CodeMirror-simplescroll-vertical div { 2 | position: absolute; 3 | background: #ccc; 4 | -moz-box-sizing: border-box; 5 | box-sizing: border-box; 6 | border: 1px solid #bbb; 7 | border-radius: 2px; 8 | } 9 | 10 | .CodeMirror-simplescroll-horizontal, .CodeMirror-simplescroll-vertical { 11 | position: absolute; 12 | z-index: 6; 13 | background: #eee; 14 | } 15 | 16 | .CodeMirror-simplescroll-horizontal { 17 | bottom: 0; left: 0; 18 | height: 8px; 19 | } 20 | .CodeMirror-simplescroll-horizontal div { 21 | bottom: 0; 22 | height: 100%; 23 | } 24 | 25 | .CodeMirror-simplescroll-vertical { 26 | right: 0; top: 0; 27 | width: 8px; 28 | } 29 | .CodeMirror-simplescroll-vertical div { 30 | right: 0; 31 | width: 100%; 32 | } 33 | 34 | 35 | .CodeMirror-overlayscroll .CodeMirror-scrollbar-filler, .CodeMirror-overlayscroll .CodeMirror-gutter-filler { 36 | display: none; 37 | } 38 | 39 | .CodeMirror-overlayscroll-horizontal div, .CodeMirror-overlayscroll-vertical div { 40 | position: absolute; 41 | background: #bcd; 42 | border-radius: 3px; 43 | } 44 | 45 | .CodeMirror-overlayscroll-horizontal, .CodeMirror-overlayscroll-vertical { 46 | position: absolute; 47 | z-index: 6; 48 | } 49 | 50 | .CodeMirror-overlayscroll-horizontal { 51 | bottom: 0; left: 0; 52 | height: 6px; 53 | } 54 | .CodeMirror-overlayscroll-horizontal div { 55 | bottom: 0; 56 | height: 100%; 57 | } 58 | 59 | .CodeMirror-overlayscroll-vertical { 60 | right: 0; top: 0; 61 | width: 6px; 62 | } 63 | .CodeMirror-overlayscroll-vertical div { 64 | right: 0; 65 | width: 100%; 66 | } 67 | -------------------------------------------------------------------------------- /static/lib/codemirror/theme/monokai.css: -------------------------------------------------------------------------------- 1 | /* Based on Sublime Text's Monokai theme */ 2 | 3 | .cm-s-monokai.CodeMirror {background: #272822; color: #f8f8f2;} 4 | .cm-s-monokai div.CodeMirror-selected {background: #49483E !important;} 5 | .cm-s-monokai.CodeMirror ::selection { background: rgba(73, 72, 62, .99); } 6 | .cm-s-monokai.CodeMirror ::-moz-selection { background: rgba(73, 72, 62, .99); } 7 | .cm-s-monokai .CodeMirror-gutters {background: #272822; border-right: 0px;} 8 | .cm-s-monokai .CodeMirror-guttermarker { color: white; } 9 | .cm-s-monokai .CodeMirror-guttermarker-subtle { color: #d0d0d0; } 10 | .cm-s-monokai .CodeMirror-linenumber {color: #d0d0d0;} 11 | .cm-s-monokai .CodeMirror-cursor {border-left: 1px solid #f8f8f0 !important;} 12 | 13 | .cm-s-monokai span.cm-comment {color: #75715e;} 14 | .cm-s-monokai span.cm-atom {color: #ae81ff;} 15 | .cm-s-monokai span.cm-number {color: #ae81ff;} 16 | 17 | .cm-s-monokai span.cm-property, .cm-s-monokai span.cm-attribute {color: #a6e22e;} 18 | .cm-s-monokai span.cm-keyword {color: #f92672;} 19 | .cm-s-monokai span.cm-string {color: #e6db74;} 20 | 21 | .cm-s-monokai span.cm-variable {color: #a6e22e;} 22 | .cm-s-monokai span.cm-variable-2 {color: #9effff;} 23 | .cm-s-monokai span.cm-def {color: #fd971f;} 24 | .cm-s-monokai span.cm-bracket {color: #f8f8f2;} 25 | .cm-s-monokai span.cm-tag {color: #f92672;} 26 | .cm-s-monokai span.cm-link {color: #ae81ff;} 27 | .cm-s-monokai span.cm-error {background: #f92672; color: #f8f8f0;} 28 | 29 | .cm-s-monokai .CodeMirror-activeline-background {background: #373831 !important;} 30 | .cm-s-monokai .CodeMirror-matchingbracket { 31 | text-decoration: underline; 32 | color: white !important; 33 | } 34 | -------------------------------------------------------------------------------- /static/lib/codemirror/theme/rubyblue.css: -------------------------------------------------------------------------------- 1 | .cm-s-rubyblue.CodeMirror { background: #112435; color: white; } 2 | .cm-s-rubyblue div.CodeMirror-selected { background: #38566F !important; } 3 | .cm-s-rubyblue.CodeMirror ::selection { background: rgba(56, 86, 111, 0.99); } 4 | .cm-s-rubyblue.CodeMirror ::-moz-selection { background: rgba(56, 86, 111, 0.99); } 5 | .cm-s-rubyblue .CodeMirror-gutters { background: #1F4661; border-right: 7px solid #3E7087; } 6 | .cm-s-rubyblue .CodeMirror-guttermarker { color: white; } 7 | .cm-s-rubyblue .CodeMirror-guttermarker-subtle { color: #3E7087; } 8 | .cm-s-rubyblue .CodeMirror-linenumber { color: white; } 9 | .cm-s-rubyblue .CodeMirror-cursor { border-left: 1px solid white !important; } 10 | 11 | .cm-s-rubyblue span.cm-comment { color: #999; font-style:italic; line-height: 1em; } 12 | .cm-s-rubyblue span.cm-atom { color: #F4C20B; } 13 | .cm-s-rubyblue span.cm-number, .cm-s-rubyblue span.cm-attribute { color: #82C6E0; } 14 | .cm-s-rubyblue span.cm-keyword { color: #F0F; } 15 | .cm-s-rubyblue span.cm-string { color: #F08047; } 16 | .cm-s-rubyblue span.cm-meta { color: #F0F; } 17 | .cm-s-rubyblue span.cm-variable-2, .cm-s-rubyblue span.cm-tag { color: #7BD827; } 18 | .cm-s-rubyblue span.cm-variable-3, .cm-s-rubyblue span.cm-def { color: white; } 19 | .cm-s-rubyblue span.cm-bracket { color: #F0F; } 20 | .cm-s-rubyblue span.cm-link { color: #F4C20B; } 21 | .cm-s-rubyblue span.CodeMirror-matchingbracket { color:#F0F !important; } 22 | .cm-s-rubyblue span.cm-builtin, .cm-s-rubyblue span.cm-special { color: #FF9D00; } 23 | .cm-s-rubyblue span.cm-error { color: #AF2018; } 24 | 25 | .cm-s-rubyblue .CodeMirror-activeline-background {background: #173047 !important;} 26 | -------------------------------------------------------------------------------- /static/lib/codemirror/addon/display/fullscreen.js: -------------------------------------------------------------------------------- 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 | })(function(CodeMirror) { 12 | "use strict"; 13 | 14 | CodeMirror.defineOption("fullScreen", false, function(cm, val, old) { 15 | if (old == CodeMirror.Init) old = false; 16 | if (!old == !val) return; 17 | if (val) setFullscreen(cm); 18 | else setNormal(cm); 19 | }); 20 | 21 | function setFullscreen(cm) { 22 | var wrap = cm.getWrapperElement(); 23 | cm.state.fullScreenRestore = {scrollTop: window.pageYOffset, scrollLeft: window.pageXOffset, 24 | width: wrap.style.width, height: wrap.style.height}; 25 | wrap.style.width = ""; 26 | wrap.style.height = "auto"; 27 | wrap.className += " CodeMirror-fullscreen"; 28 | document.documentElement.style.overflow = "hidden"; 29 | cm.refresh(); 30 | } 31 | 32 | function setNormal(cm) { 33 | var wrap = cm.getWrapperElement(); 34 | wrap.className = wrap.className.replace(/\s*CodeMirror-fullscreen\b/, ""); 35 | document.documentElement.style.overflow = ""; 36 | var info = cm.state.fullScreenRestore; 37 | wrap.style.width = info.width; wrap.style.height = info.height; 38 | window.scrollTo(info.scrollLeft, info.scrollTop); 39 | cm.refresh(); 40 | } 41 | }); 42 | -------------------------------------------------------------------------------- /static/lib/codemirror/theme/night.css: -------------------------------------------------------------------------------- 1 | /* Loosely based on the Midnight Textmate theme */ 2 | 3 | .cm-s-night.CodeMirror { background: #0a001f; color: #f8f8f8; } 4 | .cm-s-night div.CodeMirror-selected { background: #447 !important; } 5 | .cm-s-night.CodeMirror ::selection { background: rgba(68, 68, 119, .99); } 6 | .cm-s-night.CodeMirror ::-moz-selection { background: rgba(68, 68, 119, .99); } 7 | .cm-s-night .CodeMirror-gutters { background: #0a001f; border-right: 1px solid #aaa; } 8 | .cm-s-night .CodeMirror-guttermarker { color: white; } 9 | .cm-s-night .CodeMirror-guttermarker-subtle { color: #bbb; } 10 | .cm-s-night .CodeMirror-linenumber { color: #f8f8f8; } 11 | .cm-s-night .CodeMirror-cursor { border-left: 1px solid white !important; } 12 | 13 | .cm-s-night span.cm-comment { color: #6900a1; } 14 | .cm-s-night span.cm-atom { color: #845dc4; } 15 | .cm-s-night span.cm-number, .cm-s-night span.cm-attribute { color: #ffd500; } 16 | .cm-s-night span.cm-keyword { color: #599eff; } 17 | .cm-s-night span.cm-string { color: #37f14a; } 18 | .cm-s-night span.cm-meta { color: #7678e2; } 19 | .cm-s-night span.cm-variable-2, .cm-s-night span.cm-tag { color: #99b2ff; } 20 | .cm-s-night span.cm-variable-3, .cm-s-night span.cm-def { color: white; } 21 | .cm-s-night span.cm-bracket { color: #8da6ce; } 22 | .cm-s-night span.cm-comment { color: #6900a1; } 23 | .cm-s-night span.cm-builtin, .cm-s-night span.cm-special { color: #ff9e59; } 24 | .cm-s-night span.cm-link { color: #845dc4; } 25 | .cm-s-night span.cm-error { color: #9d1e15; } 26 | 27 | .cm-s-night .CodeMirror-activeline-background {background: #1C005A !important;} 28 | .cm-s-night .CodeMirror-matchingbracket {outline:1px solid grey; color:white !important;} 29 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/turtle/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Turtle mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Turtle mode

27 |
41 | 47 | 48 |

MIME types defined: text/turtle.

49 | 50 |
51 | -------------------------------------------------------------------------------- /static/css/bookstack.css: -------------------------------------------------------------------------------- 1 | body{margin:0px;padding: 0px;padding-bottom: 100px; -webkit-overflow-scrolling : touch;} 2 | img{max-width: 100%;} 3 | .editormd-preview-container, .editormd-html-preview{ 4 | padding: 15px;width: auto;max-width: 1000px;margin: 0 auto;line-height: 180%; 5 | } 6 | #bookstack-menu{ 7 | position: fixed;;bottom: 50px;right: 15px;z-index: 9999; 8 | box-shadow: 0px 0px 10px #ccc;background-color: #ffffff;border-radius: 4px; 9 | } 10 | #bookstack-menu ul,#bookstack-menu li{list-style: none;padding: 0px;margin:0px;} 11 | #bookstack-menu a{color: #8d8687;display: block;width: 50px;height: 50px;text-align: center;line-height: 50px;font-size: 22px;} 12 | #bookstack-menu a:hover{color: #00a8c6;} 13 | #bookstack-menu li{border-bottom: 1px solid #efefef;position: relative;} 14 | #bookstack-menu li:last-of-type{border-bottom: 0px;} 15 | #bookstack-menu li .tips{position: absolute;right: 50px;width: 100px;top:0px;line-height: 50px;text-align: right;padding-right: 5px;color: #8d8687;display: none;} 16 | #bookstack-menu li:hover .tips{display: block;} 17 | .bookstack-loading{width: 200px;text-align: center;margin: 0 auto;padding:250px 0px;} 18 | 19 | #bookstack-render-summary{ 20 | width: 280px;overflow: scroll;box-shadow: 0px 0px 10px #ccc; 21 | position: fixed;right: -1000px;bottom: 0px;top:0px; 22 | transition-duration: 500ms; 23 | color: #333; 24 | padding-bottom: 50px; 25 | } 26 | #bookstack-render-summary a{display: block;white-space: nowrap;} 27 | #bookstack-render-summary li{line-height: 200%;} 28 | #bookstack-render-summary.show{ 29 | right: 0px !important; 30 | } 31 | 32 | 33 | 34 | @media (max-width: 756px) { 35 | #bookstack-menu li .tips{display: none !important;;} 36 | } -------------------------------------------------------------------------------- /static/lib/codemirror/addon/scroll/scrollpastend.js: -------------------------------------------------------------------------------- 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 | })(function(CodeMirror) { 12 | "use strict"; 13 | 14 | CodeMirror.defineOption("scrollPastEnd", false, function(cm, val, old) { 15 | if (old && old != CodeMirror.Init) { 16 | cm.off("change", onChange); 17 | cm.off("refresh", updateBottomMargin); 18 | cm.display.lineSpace.parentNode.style.paddingBottom = ""; 19 | cm.state.scrollPastEndPadding = null; 20 | } 21 | if (val) { 22 | cm.on("change", onChange); 23 | cm.on("refresh", updateBottomMargin); 24 | updateBottomMargin(cm); 25 | } 26 | }); 27 | 28 | function onChange(cm, change) { 29 | if (CodeMirror.changeEnd(change).line == cm.lastLine()) 30 | updateBottomMargin(cm); 31 | } 32 | 33 | function updateBottomMargin(cm) { 34 | var padding = ""; 35 | if (cm.lineCount() > 1) { 36 | var totalH = cm.display.scroller.clientHeight - 30, 37 | lastLineH = cm.getLineHandle(cm.lastLine()).height; 38 | padding = (totalH - lastLineH) + "px"; 39 | } 40 | if (cm.state.scrollPastEndPadding != padding) { 41 | cm.state.scrollPastEndPadding = padding; 42 | cm.display.lineSpace.parentNode.style.paddingBottom = padding; 43 | cm.setSize(); 44 | } 45 | } 46 | }); 47 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/pascal/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Pascal mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Pascal mode

27 | 28 | 29 |
52 | 53 | 59 | 60 |

MIME types defined: text/x-pascal.

61 |
62 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/pig/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Pig Latin mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Pig Latin mode

27 |
39 | 40 | 47 | 48 |

49 | Simple mode that handles Pig Latin language. 50 |

51 | 52 |

MIME type defined: text/x-pig 53 | (PIG code) 54 | 55 |

56 | -------------------------------------------------------------------------------- /static/plugins/test-plugin/test-plugin.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Test plugin for Editor.md 3 | * 4 | * @file test-plugin.js 5 | * @author pandao 6 | * @version 1.2.0 7 | * @updateTime 2015-03-07 8 | * {@link https://github.com/pandao/editor.md} 9 | * @license MIT 10 | */ 11 | 12 | (function() { 13 | 14 | var factory = function (exports) { 15 | 16 | var $ = jQuery; // if using module loader(Require.js/Sea.js). 17 | 18 | exports.testPlugin = function(){ 19 | alert("testPlugin"); 20 | }; 21 | 22 | exports.fn.testPluginMethodA = function() { 23 | /* 24 | var _this = this; // this == the current instance object of Editor.md 25 | var lang = _this.lang; 26 | var settings = _this.settings; 27 | var editor = this.editor; 28 | var cursor = cm.getCursor(); 29 | var selection = cm.getSelection(); 30 | var classPrefix = this.classPrefix; 31 | 32 | cm.focus(); 33 | */ 34 | //.... 35 | 36 | alert("testPluginMethodA"); 37 | }; 38 | 39 | }; 40 | 41 | // CommonJS/Node.js 42 | if (typeof require === "function" && typeof exports === "object" && typeof module === "object") 43 | { 44 | module.exports = factory; 45 | } 46 | else if (typeof define === "function") // AMD/CMD/Sea.js 47 | { 48 | if (define.amd) { // for Require.js 49 | 50 | define(["editormd"], function(editormd) { 51 | factory(editormd); 52 | }); 53 | 54 | } else { // for Sea.js 55 | define(function(require) { 56 | var editormd = require("./../../editormd"); 57 | factory(editormd); 58 | }); 59 | } 60 | } 61 | else 62 | { 63 | factory(window.editormd); 64 | } 65 | 66 | })(); 67 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/vbscript/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: VBScript mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

VBScript mode

27 | 28 | 29 |
46 | 47 | 53 | 54 |

MIME types defined: text/vbscript.

55 |
56 | -------------------------------------------------------------------------------- /static/lib/codemirror/theme/the-matrix.css: -------------------------------------------------------------------------------- 1 | .cm-s-the-matrix.CodeMirror { background: #000000; color: #00FF00; } 2 | .cm-s-the-matrix div.CodeMirror-selected { background: #2D2D2D !important; } 3 | .cm-s-the-matrix.CodeMirror ::selection { background: rgba(45, 45, 45, 0.99); } 4 | .cm-s-the-matrix.CodeMirror ::-moz-selection { background: rgba(45, 45, 45, 0.99); } 5 | .cm-s-the-matrix .CodeMirror-gutters { background: #060; border-right: 2px solid #00FF00; } 6 | .cm-s-the-matrix .CodeMirror-guttermarker { color: #0f0; } 7 | .cm-s-the-matrix .CodeMirror-guttermarker-subtle { color: white; } 8 | .cm-s-the-matrix .CodeMirror-linenumber { color: #FFFFFF; } 9 | .cm-s-the-matrix .CodeMirror-cursor { border-left: 1px solid #00FF00 !important; } 10 | 11 | .cm-s-the-matrix span.cm-keyword {color: #008803; font-weight: bold;} 12 | .cm-s-the-matrix span.cm-atom {color: #3FF;} 13 | .cm-s-the-matrix span.cm-number {color: #FFB94F;} 14 | .cm-s-the-matrix span.cm-def {color: #99C;} 15 | .cm-s-the-matrix span.cm-variable {color: #F6C;} 16 | .cm-s-the-matrix span.cm-variable-2 {color: #C6F;} 17 | .cm-s-the-matrix span.cm-variable-3 {color: #96F;} 18 | .cm-s-the-matrix span.cm-property {color: #62FFA0;} 19 | .cm-s-the-matrix span.cm-operator {color: #999} 20 | .cm-s-the-matrix span.cm-comment {color: #CCCCCC;} 21 | .cm-s-the-matrix span.cm-string {color: #39C;} 22 | .cm-s-the-matrix span.cm-meta {color: #C9F;} 23 | .cm-s-the-matrix span.cm-qualifier {color: #FFF700;} 24 | .cm-s-the-matrix span.cm-builtin {color: #30a;} 25 | .cm-s-the-matrix span.cm-bracket {color: #cc7;} 26 | .cm-s-the-matrix span.cm-tag {color: #FFBD40;} 27 | .cm-s-the-matrix span.cm-attribute {color: #FFF700;} 28 | .cm-s-the-matrix span.cm-error {color: #FF0000;} 29 | 30 | .cm-s-the-matrix .CodeMirror-activeline-background {background: #040;} 31 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/gherkin/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Gherkin mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Gherkin mode

27 |
42 | 45 | 46 |

MIME types defined: text/x-feature.

47 | 48 |
49 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/properties/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Properties files mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Properties files mode

27 |
46 | 49 | 50 |

MIME types defined: text/x-properties, 51 | text/x-ini.

52 | 53 |
54 | -------------------------------------------------------------------------------- /static/lib/codemirror/theme/colorforth.css: -------------------------------------------------------------------------------- 1 | .cm-s-colorforth.CodeMirror { background: #000000; color: #f8f8f8; } 2 | .cm-s-colorforth .CodeMirror-gutters { background: #0a001f; border-right: 1px solid #aaa; } 3 | .cm-s-colorforth .CodeMirror-guttermarker { color: #FFBD40; } 4 | .cm-s-colorforth .CodeMirror-guttermarker-subtle { color: #78846f; } 5 | .cm-s-colorforth .CodeMirror-linenumber { color: #bababa; } 6 | .cm-s-colorforth .CodeMirror-cursor { border-left: 1px solid white !important; } 7 | 8 | .cm-s-colorforth span.cm-comment { color: #ededed; } 9 | .cm-s-colorforth span.cm-def { color: #ff1c1c; font-weight:bold; } 10 | .cm-s-colorforth span.cm-keyword { color: #ffd900; } 11 | .cm-s-colorforth span.cm-builtin { color: #00d95a; } 12 | .cm-s-colorforth span.cm-variable { color: #73ff00; } 13 | .cm-s-colorforth span.cm-string { color: #007bff; } 14 | .cm-s-colorforth span.cm-number { color: #00c4ff; } 15 | .cm-s-colorforth span.cm-atom { color: #606060; } 16 | 17 | .cm-s-colorforth span.cm-variable-2 { color: #EEE; } 18 | .cm-s-colorforth span.cm-variable-3 { color: #DDD; } 19 | .cm-s-colorforth span.cm-property {} 20 | .cm-s-colorforth span.cm-operator {} 21 | 22 | .cm-s-colorforth span.cm-meta { color: yellow; } 23 | .cm-s-colorforth span.cm-qualifier { color: #FFF700; } 24 | .cm-s-colorforth span.cm-bracket { color: #cc7; } 25 | .cm-s-colorforth span.cm-tag { color: #FFBD40; } 26 | .cm-s-colorforth span.cm-attribute { color: #FFF700; } 27 | .cm-s-colorforth span.cm-error { color: #f00; } 28 | 29 | .cm-s-colorforth .CodeMirror-selected { background: #333d53 !important; } 30 | 31 | .cm-s-colorforth span.cm-compilation { background: rgba(255, 255, 255, 0.12); } 32 | 33 | .cm-s-colorforth .CodeMirror-activeline-background {background: #253540 !important;} 34 | -------------------------------------------------------------------------------- /static/lib/codemirror/addon/fold/indent-fold.js: -------------------------------------------------------------------------------- 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 | })(function(CodeMirror) { 12 | "use strict"; 13 | 14 | CodeMirror.registerHelper("fold", "indent", function(cm, start) { 15 | var tabSize = cm.getOption("tabSize"), firstLine = cm.getLine(start.line); 16 | if (!/\S/.test(firstLine)) return; 17 | var getIndent = function(line) { 18 | return CodeMirror.countColumn(line, null, tabSize); 19 | }; 20 | var myIndent = getIndent(firstLine); 21 | var lastLineInFold = null; 22 | // Go through lines until we find a line that definitely doesn't belong in 23 | // the block we're folding, or to the end. 24 | for (var i = start.line + 1, end = cm.lastLine(); i <= end; ++i) { 25 | var curLine = cm.getLine(i); 26 | var curIndent = getIndent(curLine); 27 | if (curIndent > myIndent) { 28 | // Lines with a greater indent are considered part of the block. 29 | lastLineInFold = i; 30 | } else if (!/\S/.test(curLine)) { 31 | // Empty lines might be breaks within the block we're trying to fold. 32 | } else { 33 | // A non-empty line at an indent equal to or less than ours marks the 34 | // start of another block. 35 | break; 36 | } 37 | } 38 | if (lastLineInFold) return { 39 | from: CodeMirror.Pos(start.line, firstLine.length), 40 | to: CodeMirror.Pos(lastLineInFold, cm.getLine(lastLineInFold).length) 41 | }; 42 | }); 43 | 44 | }); 45 | -------------------------------------------------------------------------------- /static/lib/codemirror/addon/fold/markdown-fold.js: -------------------------------------------------------------------------------- 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 | })(function(CodeMirror) { 12 | "use strict"; 13 | 14 | CodeMirror.registerHelper("fold", "markdown", function(cm, start) { 15 | var maxDepth = 100; 16 | 17 | function isHeader(lineNo) { 18 | var tokentype = cm.getTokenTypeAt(CodeMirror.Pos(lineNo, 0)); 19 | return tokentype && /\bheader\b/.test(tokentype); 20 | } 21 | 22 | function headerLevel(lineNo, line, nextLine) { 23 | var match = line && line.match(/^#+/); 24 | if (match && isHeader(lineNo)) return match[0].length; 25 | match = nextLine && nextLine.match(/^[=\-]+\s*$/); 26 | if (match && isHeader(lineNo + 1)) return nextLine[0] == "=" ? 1 : 2; 27 | return maxDepth; 28 | } 29 | 30 | var firstLine = cm.getLine(start.line), nextLine = cm.getLine(start.line + 1); 31 | var level = headerLevel(start.line, firstLine, nextLine); 32 | if (level === maxDepth) return undefined; 33 | 34 | var lastLineNo = cm.lastLine(); 35 | var end = start.line, nextNextLine = cm.getLine(end + 2); 36 | while (end < lastLineNo) { 37 | if (headerLevel(end + 1, nextLine, nextNextLine) <= level) break; 38 | ++end; 39 | nextLine = nextNextLine; 40 | nextNextLine = cm.getLine(end + 2); 41 | } 42 | 43 | return { 44 | from: CodeMirror.Pos(start.line, firstLine.length), 45 | to: CodeMirror.Pos(end, cm.getLine(end).length) 46 | }; 47 | }); 48 | 49 | }); 50 | -------------------------------------------------------------------------------- /static/lib/codemirror/addon/hint/anyword-hint.js: -------------------------------------------------------------------------------- 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 | })(function(CodeMirror) { 12 | "use strict"; 13 | 14 | var WORD = /[\w$]+/, RANGE = 500; 15 | 16 | CodeMirror.registerHelper("hint", "anyword", function(editor, options) { 17 | var word = options && options.word || WORD; 18 | var range = options && options.range || RANGE; 19 | var cur = editor.getCursor(), curLine = editor.getLine(cur.line); 20 | var end = cur.ch, start = end; 21 | while (start && word.test(curLine.charAt(start - 1))) --start; 22 | var curWord = start != end && curLine.slice(start, end); 23 | 24 | var list = [], seen = {}; 25 | var re = new RegExp(word.source, "g"); 26 | for (var dir = -1; dir <= 1; dir += 2) { 27 | var line = cur.line, endLine = Math.min(Math.max(line + dir * range, editor.firstLine()), editor.lastLine()) + dir; 28 | for (; line != endLine; line += dir) { 29 | var text = editor.getLine(line), m; 30 | while (m = re.exec(text)) { 31 | if (line == cur.line && m[0] === curWord) continue; 32 | if ((!curWord || m[0].lastIndexOf(curWord, 0) == 0) && !Object.prototype.hasOwnProperty.call(seen, m[0])) { 33 | seen[m[0]] = true; 34 | list.push(m[0]); 35 | } 36 | } 37 | } 38 | } 39 | return {list: list, from: CodeMirror.Pos(cur.line, start), to: CodeMirror.Pos(cur.line, end)}; 40 | }); 41 | }); 42 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/javascript/typescript.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: TypeScript mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

TypeScript mode

27 | 28 | 29 |
51 | 52 | 59 | 60 |

This is a specialization of the JavaScript mode.

61 |
62 | -------------------------------------------------------------------------------- /static/lib/codemirror/theme/blackboard.css: -------------------------------------------------------------------------------- 1 | /* Port of TextMate's Blackboard theme */ 2 | 3 | .cm-s-blackboard.CodeMirror { background: #0C1021; color: #F8F8F8; } 4 | .cm-s-blackboard .CodeMirror-selected { background: #253B76 !important; } 5 | .cm-s-blackboard.CodeMirror ::selection { background: rgba(37, 59, 118, .99); } 6 | .cm-s-blackboard.CodeMirror ::-moz-selection { background: rgba(37, 59, 118, .99); } 7 | .cm-s-blackboard .CodeMirror-gutters { background: #0C1021; border-right: 0; } 8 | .cm-s-blackboard .CodeMirror-guttermarker { color: #FBDE2D; } 9 | .cm-s-blackboard .CodeMirror-guttermarker-subtle { color: #888; } 10 | .cm-s-blackboard .CodeMirror-linenumber { color: #888; } 11 | .cm-s-blackboard .CodeMirror-cursor { border-left: 1px solid #A7A7A7 !important; } 12 | 13 | .cm-s-blackboard .cm-keyword { color: #FBDE2D; } 14 | .cm-s-blackboard .cm-atom { color: #D8FA3C; } 15 | .cm-s-blackboard .cm-number { color: #D8FA3C; } 16 | .cm-s-blackboard .cm-def { color: #8DA6CE; } 17 | .cm-s-blackboard .cm-variable { color: #FF6400; } 18 | .cm-s-blackboard .cm-operator { color: #FBDE2D;} 19 | .cm-s-blackboard .cm-comment { color: #AEAEAE; } 20 | .cm-s-blackboard .cm-string { color: #61CE3C; } 21 | .cm-s-blackboard .cm-string-2 { color: #61CE3C; } 22 | .cm-s-blackboard .cm-meta { color: #D8FA3C; } 23 | .cm-s-blackboard .cm-builtin { color: #8DA6CE; } 24 | .cm-s-blackboard .cm-tag { color: #8DA6CE; } 25 | .cm-s-blackboard .cm-attribute { color: #8DA6CE; } 26 | .cm-s-blackboard .cm-header { color: #FF6400; } 27 | .cm-s-blackboard .cm-hr { color: #AEAEAE; } 28 | .cm-s-blackboard .cm-link { color: #8DA6CE; } 29 | .cm-s-blackboard .cm-error { background: #9D1E15; color: #F8F8F8; } 30 | 31 | .cm-s-blackboard .CodeMirror-activeline-background {background: #3C3636 !important;} 32 | .cm-s-blackboard .CodeMirror-matchingbracket {outline:1px solid grey;color:white !important} -------------------------------------------------------------------------------- /static/lib/codemirror/mode/sass/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Sass mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 25 | 26 |
27 |

Sass mode

28 |
58 | 64 | 65 |

MIME types defined: text/x-sass.

66 |
67 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/perl/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Perl mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Perl mode

27 | 28 | 29 |
67 | 68 | 73 | 74 |

MIME types defined: text/x-perl.

75 |
76 | -------------------------------------------------------------------------------- /static/lib/codemirror/theme/3024-day.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Name: 3024 day 4 | Author: Jan T. Sott (http://github.com/idleberg) 5 | 6 | CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) 7 | Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) 8 | 9 | */ 10 | 11 | .cm-s-3024-day.CodeMirror {background: #f7f7f7; color: #3a3432;} 12 | .cm-s-3024-day div.CodeMirror-selected {background: #d6d5d4 !important;} 13 | .cm-s-3024-day.CodeMirror ::selection { background: #d6d5d4; } 14 | .cm-s-3024-day.CodeMirror ::-moz-selection { background: #d9d9d9; } 15 | 16 | .cm-s-3024-day .CodeMirror-gutters {background: #f7f7f7; border-right: 0px;} 17 | .cm-s-3024-day .CodeMirror-guttermarker { color: #db2d20; } 18 | .cm-s-3024-day .CodeMirror-guttermarker-subtle { color: #807d7c; } 19 | .cm-s-3024-day .CodeMirror-linenumber {color: #807d7c;} 20 | 21 | .cm-s-3024-day .CodeMirror-cursor {border-left: 1px solid #5c5855 !important;} 22 | 23 | .cm-s-3024-day span.cm-comment {color: #cdab53;} 24 | .cm-s-3024-day span.cm-atom {color: #a16a94;} 25 | .cm-s-3024-day span.cm-number {color: #a16a94;} 26 | 27 | .cm-s-3024-day span.cm-property, .cm-s-3024-day span.cm-attribute {color: #01a252;} 28 | .cm-s-3024-day span.cm-keyword {color: #db2d20;} 29 | .cm-s-3024-day span.cm-string {color: #fded02;} 30 | 31 | .cm-s-3024-day span.cm-variable {color: #01a252;} 32 | .cm-s-3024-day span.cm-variable-2 {color: #01a0e4;} 33 | .cm-s-3024-day span.cm-def {color: #e8bbd0;} 34 | .cm-s-3024-day span.cm-bracket {color: #3a3432;} 35 | .cm-s-3024-day span.cm-tag {color: #db2d20;} 36 | .cm-s-3024-day span.cm-link {color: #a16a94;} 37 | .cm-s-3024-day span.cm-error {background: #db2d20; color: #5c5855;} 38 | 39 | .cm-s-3024-day .CodeMirror-activeline-background {background: #e8f2ff !important;} 40 | .cm-s-3024-day .CodeMirror-matchingbracket { text-decoration: underline; color: #a16a94 !important;} 41 | -------------------------------------------------------------------------------- /static/lib/codemirror/theme/tomorrow-night-bright.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Name: Tomorrow Night - Bright 4 | Author: Chris Kempson 5 | 6 | Port done by Gerard Braad 7 | 8 | */ 9 | 10 | .cm-s-tomorrow-night-bright.CodeMirror {background: #000000; color: #eaeaea;} 11 | .cm-s-tomorrow-night-bright div.CodeMirror-selected {background: #424242 !important;} 12 | .cm-s-tomorrow-night-bright .CodeMirror-gutters {background: #000000; border-right: 0px;} 13 | .cm-s-tomorrow-night-bright .CodeMirror-guttermarker { color: #e78c45; } 14 | .cm-s-tomorrow-night-bright .CodeMirror-guttermarker-subtle { color: #777; } 15 | .cm-s-tomorrow-night-bright .CodeMirror-linenumber {color: #424242;} 16 | .cm-s-tomorrow-night-bright .CodeMirror-cursor {border-left: 1px solid #6A6A6A !important;} 17 | 18 | .cm-s-tomorrow-night-bright span.cm-comment {color: #d27b53;} 19 | .cm-s-tomorrow-night-bright span.cm-atom {color: #a16a94;} 20 | .cm-s-tomorrow-night-bright span.cm-number {color: #a16a94;} 21 | 22 | .cm-s-tomorrow-night-bright span.cm-property, .cm-s-tomorrow-night-bright span.cm-attribute {color: #99cc99;} 23 | .cm-s-tomorrow-night-bright span.cm-keyword {color: #d54e53;} 24 | .cm-s-tomorrow-night-bright span.cm-string {color: #e7c547;} 25 | 26 | .cm-s-tomorrow-night-bright span.cm-variable {color: #b9ca4a;} 27 | .cm-s-tomorrow-night-bright span.cm-variable-2 {color: #7aa6da;} 28 | .cm-s-tomorrow-night-bright span.cm-def {color: #e78c45;} 29 | .cm-s-tomorrow-night-bright span.cm-bracket {color: #eaeaea;} 30 | .cm-s-tomorrow-night-bright span.cm-tag {color: #d54e53;} 31 | .cm-s-tomorrow-night-bright span.cm-link {color: #a16a94;} 32 | .cm-s-tomorrow-night-bright span.cm-error {background: #d54e53; color: #6A6A6A;} 33 | 34 | .cm-s-tomorrow-night-bright .CodeMirror-activeline-background {background: #2a2a2a !important;} 35 | .cm-s-tomorrow-night-bright .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} 36 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/idl/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: IDL mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

IDL mode

27 | 28 |
52 | 62 | 63 |

MIME types defined: text/x-idl.

64 |
65 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/dart/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Dart mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Dart mode

27 |
28 | 62 |
63 | 64 | 70 | 71 |
72 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/xml/test.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function() { 5 | var mode = CodeMirror.getMode({indentUnit: 2}, "xml"), mname = "xml"; 6 | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), mname); } 7 | 8 | MT("matching", 9 | "[tag&bracket <][tag top][tag&bracket >]", 10 | " text", 11 | " [tag&bracket <][tag inner][tag&bracket />]", 12 | "[tag&bracket ]"); 13 | 14 | MT("nonmatching", 15 | "[tag&bracket <][tag top][tag&bracket >]", 16 | " [tag&bracket <][tag inner][tag&bracket />]", 17 | " [tag&bracket ]"); 18 | 19 | MT("doctype", 20 | "[meta ]", 21 | "[tag&bracket <][tag top][tag&bracket />]"); 22 | 23 | MT("cdata", 24 | "[tag&bracket <][tag top][tag&bracket >]", 25 | " [atom ]", 27 | "[tag&bracket ]"); 28 | 29 | // HTML tests 30 | mode = CodeMirror.getMode({indentUnit: 2}, "text/html"); 31 | 32 | MT("selfclose", 33 | "[tag&bracket <][tag html][tag&bracket >]", 34 | " [tag&bracket <][tag link] [attribute rel]=[string stylesheet] [attribute href]=[string \"/foobar\"][tag&bracket >]", 35 | "[tag&bracket ]"); 36 | 37 | MT("list", 38 | "[tag&bracket <][tag ol][tag&bracket >]", 39 | " [tag&bracket <][tag li][tag&bracket >]one", 40 | " [tag&bracket <][tag li][tag&bracket >]two", 41 | "[tag&bracket ]"); 42 | 43 | MT("valueless", 44 | "[tag&bracket <][tag input] [attribute type]=[string checkbox] [attribute checked][tag&bracket />]"); 45 | 46 | MT("pThenArticle", 47 | "[tag&bracket <][tag p][tag&bracket >]", 48 | " foo", 49 | "[tag&bracket <][tag article][tag&bracket >]bar"); 50 | 51 | })(); 52 | -------------------------------------------------------------------------------- /static/lib/codemirror/theme/paraiso-dark.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Name: Paraíso (Dark) 4 | Author: Jan T. Sott 5 | 6 | Color scheme by Jan T. Sott (https://github.com/idleberg/Paraiso-CodeMirror) 7 | Inspired by the art of Rubens LP (http://www.rubenslp.com.br) 8 | 9 | */ 10 | 11 | .cm-s-paraiso-dark.CodeMirror {background: #2f1e2e; color: #b9b6b0;} 12 | .cm-s-paraiso-dark div.CodeMirror-selected {background: #41323f !important;} 13 | .cm-s-paraiso-dark.CodeMirror ::selection { background: rgba(65, 50, 63, .99); } 14 | .cm-s-paraiso-dark.CodeMirror ::-moz-selection { background: rgba(65, 50, 63, .99); } 15 | .cm-s-paraiso-dark .CodeMirror-gutters {background: #2f1e2e; border-right: 0px;} 16 | .cm-s-paraiso-dark .CodeMirror-guttermarker { color: #ef6155; } 17 | .cm-s-paraiso-dark .CodeMirror-guttermarker-subtle { color: #776e71; } 18 | .cm-s-paraiso-dark .CodeMirror-linenumber {color: #776e71;} 19 | .cm-s-paraiso-dark .CodeMirror-cursor {border-left: 1px solid #8d8687 !important;} 20 | 21 | .cm-s-paraiso-dark span.cm-comment {color: #e96ba8;} 22 | .cm-s-paraiso-dark span.cm-atom {color: #815ba4;} 23 | .cm-s-paraiso-dark span.cm-number {color: #815ba4;} 24 | 25 | .cm-s-paraiso-dark span.cm-property, .cm-s-paraiso-dark span.cm-attribute {color: #48b685;} 26 | .cm-s-paraiso-dark span.cm-keyword {color: #ef6155;} 27 | .cm-s-paraiso-dark span.cm-string {color: #fec418;} 28 | 29 | .cm-s-paraiso-dark span.cm-variable {color: #48b685;} 30 | .cm-s-paraiso-dark span.cm-variable-2 {color: #06b6ef;} 31 | .cm-s-paraiso-dark span.cm-def {color: #f99b15;} 32 | .cm-s-paraiso-dark span.cm-bracket {color: #b9b6b0;} 33 | .cm-s-paraiso-dark span.cm-tag {color: #ef6155;} 34 | .cm-s-paraiso-dark span.cm-link {color: #815ba4;} 35 | .cm-s-paraiso-dark span.cm-error {background: #ef6155; color: #8d8687;} 36 | 37 | .cm-s-paraiso-dark .CodeMirror-activeline-background {background: #4D344A !important;} 38 | .cm-s-paraiso-dark .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} 39 | -------------------------------------------------------------------------------- /static/lib/codemirror/theme/paraiso-light.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Name: Paraíso (Light) 4 | Author: Jan T. Sott 5 | 6 | Color scheme by Jan T. Sott (https://github.com/idleberg/Paraiso-CodeMirror) 7 | Inspired by the art of Rubens LP (http://www.rubenslp.com.br) 8 | 9 | */ 10 | 11 | .cm-s-paraiso-light.CodeMirror {background: #e7e9db; color: #41323f;} 12 | .cm-s-paraiso-light div.CodeMirror-selected {background: #b9b6b0 !important;} 13 | .cm-s-paraiso-light.CodeMirror ::selection { background: #b9b6b0; } 14 | .cm-s-paraiso-light.CodeMirror ::-moz-selection { background: #b9b6b0; } 15 | .cm-s-paraiso-light .CodeMirror-gutters {background: #e7e9db; border-right: 0px;} 16 | .cm-s-paraiso-light .CodeMirror-guttermarker { color: black; } 17 | .cm-s-paraiso-light .CodeMirror-guttermarker-subtle { color: #8d8687; } 18 | .cm-s-paraiso-light .CodeMirror-linenumber {color: #8d8687;} 19 | .cm-s-paraiso-light .CodeMirror-cursor {border-left: 1px solid #776e71 !important;} 20 | 21 | .cm-s-paraiso-light span.cm-comment {color: #e96ba8;} 22 | .cm-s-paraiso-light span.cm-atom {color: #815ba4;} 23 | .cm-s-paraiso-light span.cm-number {color: #815ba4;} 24 | 25 | .cm-s-paraiso-light span.cm-property, .cm-s-paraiso-light span.cm-attribute {color: #48b685;} 26 | .cm-s-paraiso-light span.cm-keyword {color: #ef6155;} 27 | .cm-s-paraiso-light span.cm-string {color: #fec418;} 28 | 29 | .cm-s-paraiso-light span.cm-variable {color: #48b685;} 30 | .cm-s-paraiso-light span.cm-variable-2 {color: #06b6ef;} 31 | .cm-s-paraiso-light span.cm-def {color: #f99b15;} 32 | .cm-s-paraiso-light span.cm-bracket {color: #41323f;} 33 | .cm-s-paraiso-light span.cm-tag {color: #ef6155;} 34 | .cm-s-paraiso-light span.cm-link {color: #815ba4;} 35 | .cm-s-paraiso-light span.cm-error {background: #ef6155; color: #776e71;} 36 | 37 | .cm-s-paraiso-light .CodeMirror-activeline-background {background: #CFD1C4 !important;} 38 | .cm-s-paraiso-light .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} 39 | -------------------------------------------------------------------------------- /static/lib/codemirror/addon/edit/continuelist.js: -------------------------------------------------------------------------------- 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 | })(function(CodeMirror) { 12 | "use strict"; 13 | 14 | var listRE = /^(\s*)(>[> ]*|[*+-]\s|(\d+)\.)(\s*)/, 15 | emptyListRE = /^(\s*)(>[> ]*|[*+-]|(\d+)\.)(\s*)$/, 16 | unorderedListRE = /[*+-]\s/; 17 | 18 | CodeMirror.commands.newlineAndIndentContinueMarkdownList = function(cm) { 19 | if (cm.getOption("disableInput")) return CodeMirror.Pass; 20 | var ranges = cm.listSelections(), replacements = []; 21 | for (var i = 0; i < ranges.length; i++) { 22 | var pos = ranges[i].head, match; 23 | var eolState = cm.getStateAfter(pos.line); 24 | var inList = eolState.list !== false; 25 | var inQuote = eolState.quote !== false; 26 | 27 | if (!ranges[i].empty() || (!inList && !inQuote) || !(match = cm.getLine(pos.line).match(listRE))) { 28 | cm.execCommand("newlineAndIndent"); 29 | return; 30 | } 31 | if (cm.getLine(pos.line).match(emptyListRE)) { 32 | cm.replaceRange("", { 33 | line: pos.line, ch: 0 34 | }, { 35 | line: pos.line, ch: pos.ch + 1 36 | }); 37 | replacements[i] = "\n"; 38 | 39 | } else { 40 | var indent = match[1], after = match[4]; 41 | var bullet = unorderedListRE.test(match[2]) || match[2].indexOf(">") >= 0 42 | ? match[2] 43 | : (parseInt(match[3], 10) + 1) + "."; 44 | 45 | replacements[i] = "\n" + indent + bullet + after; 46 | } 47 | } 48 | 49 | cm.replaceSelections(replacements); 50 | }; 51 | }); 52 | -------------------------------------------------------------------------------- /static/lib/codemirror/theme/3024-night.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Name: 3024 night 4 | Author: Jan T. Sott (http://github.com/idleberg) 5 | 6 | CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) 7 | Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) 8 | 9 | */ 10 | 11 | .cm-s-3024-night.CodeMirror {background: #090300; color: #d6d5d4;} 12 | .cm-s-3024-night div.CodeMirror-selected {background: #3a3432 !important;} 13 | .cm-s-3024-night.CodeMirror ::selection { background: rgba(58, 52, 50, .99); } 14 | .cm-s-3024-night.CodeMirror ::-moz-selection { background: rgba(58, 52, 50, .99); } 15 | .cm-s-3024-night .CodeMirror-gutters {background: #090300; border-right: 0px;} 16 | .cm-s-3024-night .CodeMirror-guttermarker { color: #db2d20; } 17 | .cm-s-3024-night .CodeMirror-guttermarker-subtle { color: #5c5855; } 18 | .cm-s-3024-night .CodeMirror-linenumber {color: #5c5855;} 19 | 20 | .cm-s-3024-night .CodeMirror-cursor {border-left: 1px solid #807d7c !important;} 21 | 22 | .cm-s-3024-night span.cm-comment {color: #cdab53;} 23 | .cm-s-3024-night span.cm-atom {color: #a16a94;} 24 | .cm-s-3024-night span.cm-number {color: #a16a94;} 25 | 26 | .cm-s-3024-night span.cm-property, .cm-s-3024-night span.cm-attribute {color: #01a252;} 27 | .cm-s-3024-night span.cm-keyword {color: #db2d20;} 28 | .cm-s-3024-night span.cm-string {color: #fded02;} 29 | 30 | .cm-s-3024-night span.cm-variable {color: #01a252;} 31 | .cm-s-3024-night span.cm-variable-2 {color: #01a0e4;} 32 | .cm-s-3024-night span.cm-def {color: #e8bbd0;} 33 | .cm-s-3024-night span.cm-bracket {color: #d6d5d4;} 34 | .cm-s-3024-night span.cm-tag {color: #db2d20;} 35 | .cm-s-3024-night span.cm-link {color: #a16a94;} 36 | .cm-s-3024-night span.cm-error {background: #db2d20; color: #807d7c;} 37 | 38 | .cm-s-3024-night .CodeMirror-activeline-background {background: #2F2F2F !important;} 39 | .cm-s-3024-night .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} 40 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/jinja2/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Jinja2 mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Jinja2 mode

27 |
49 | 54 |
55 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/css/less_test.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function() { 5 | "use strict"; 6 | 7 | var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-less"); 8 | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "less"); } 9 | 10 | MT("variable", 11 | "[variable-2 @base]: [atom #f04615];", 12 | "[qualifier .class] {", 13 | " [property width]: [variable percentage]([number 0.5]); [comment // returns `50%`]", 14 | " [property color]: [variable saturate]([variable-2 @base], [number 5%]);", 15 | "}"); 16 | 17 | MT("amp", 18 | "[qualifier .child], [qualifier .sibling] {", 19 | " [qualifier .parent] [atom &] {", 20 | " [property color]: [keyword black];", 21 | " }", 22 | " [atom &] + [atom &] {", 23 | " [property color]: [keyword red];", 24 | " }", 25 | "}"); 26 | 27 | MT("mixin", 28 | "[qualifier .mixin] ([variable dark]; [variable-2 @color]) {", 29 | " [property color]: [variable darken]([variable-2 @color], [number 10%]);", 30 | "}", 31 | "[qualifier .mixin] ([variable light]; [variable-2 @color]) {", 32 | " [property color]: [variable lighten]([variable-2 @color], [number 10%]);", 33 | "}", 34 | "[qualifier .mixin] ([variable-2 @_]; [variable-2 @color]) {", 35 | " [property display]: [atom block];", 36 | "}", 37 | "[variable-2 @switch]: [variable light];", 38 | "[qualifier .class] {", 39 | " [qualifier .mixin]([variable-2 @switch]; [atom #888]);", 40 | "}"); 41 | 42 | MT("nest", 43 | "[qualifier .one] {", 44 | " [def @media] ([property width]: [number 400px]) {", 45 | " [property font-size]: [number 1.2em];", 46 | " [def @media] [attribute print] [keyword and] [property color] {", 47 | " [property color]: [keyword blue];", 48 | " }", 49 | " }", 50 | "}"); 51 | })(); 52 | -------------------------------------------------------------------------------- /static/lib/codemirror/theme/base16-dark.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Name: Base16 Default Dark 4 | Author: Chris Kempson (http://chriskempson.com) 5 | 6 | CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-chrome-devtools) 7 | Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) 8 | 9 | */ 10 | 11 | .cm-s-base16-dark.CodeMirror {background: #151515; color: #e0e0e0;} 12 | .cm-s-base16-dark div.CodeMirror-selected {background: #303030 !important;} 13 | .cm-s-base16-dark.CodeMirror ::selection { background: rgba(48, 48, 48, .99); } 14 | .cm-s-base16-dark.CodeMirror ::-moz-selection { background: rgba(48, 48, 48, .99); } 15 | .cm-s-base16-dark .CodeMirror-gutters {background: #151515; border-right: 0px;} 16 | .cm-s-base16-dark .CodeMirror-guttermarker { color: #ac4142; } 17 | .cm-s-base16-dark .CodeMirror-guttermarker-subtle { color: #505050; } 18 | .cm-s-base16-dark .CodeMirror-linenumber {color: #505050;} 19 | .cm-s-base16-dark .CodeMirror-cursor {border-left: 1px solid #b0b0b0 !important;} 20 | 21 | .cm-s-base16-dark span.cm-comment {color: #8f5536;} 22 | .cm-s-base16-dark span.cm-atom {color: #aa759f;} 23 | .cm-s-base16-dark span.cm-number {color: #aa759f;} 24 | 25 | .cm-s-base16-dark span.cm-property, .cm-s-base16-dark span.cm-attribute {color: #90a959;} 26 | .cm-s-base16-dark span.cm-keyword {color: #ac4142;} 27 | .cm-s-base16-dark span.cm-string {color: #f4bf75;} 28 | 29 | .cm-s-base16-dark span.cm-variable {color: #90a959;} 30 | .cm-s-base16-dark span.cm-variable-2 {color: #6a9fb5;} 31 | .cm-s-base16-dark span.cm-def {color: #d28445;} 32 | .cm-s-base16-dark span.cm-bracket {color: #e0e0e0;} 33 | .cm-s-base16-dark span.cm-tag {color: #ac4142;} 34 | .cm-s-base16-dark span.cm-link {color: #aa759f;} 35 | .cm-s-base16-dark span.cm-error {background: #ac4142; color: #b0b0b0;} 36 | 37 | .cm-s-base16-dark .CodeMirror-activeline-background {background: #202020 !important;} 38 | .cm-s-base16-dark .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} 39 | -------------------------------------------------------------------------------- /static/lib/codemirror/theme/base16-light.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Name: Base16 Default Light 4 | Author: Chris Kempson (http://chriskempson.com) 5 | 6 | CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-chrome-devtools) 7 | Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) 8 | 9 | */ 10 | 11 | .cm-s-base16-light.CodeMirror {background: #f5f5f5; color: #202020;} 12 | .cm-s-base16-light div.CodeMirror-selected {background: #e0e0e0 !important;} 13 | .cm-s-base16-light.CodeMirror ::selection { background: #e0e0e0; } 14 | .cm-s-base16-light.CodeMirror ::-moz-selection { background: #e0e0e0; } 15 | .cm-s-base16-light .CodeMirror-gutters {background: #f5f5f5; border-right: 0px;} 16 | .cm-s-base16-light .CodeMirror-guttermarker { color: #ac4142; } 17 | .cm-s-base16-light .CodeMirror-guttermarker-subtle { color: #b0b0b0; } 18 | .cm-s-base16-light .CodeMirror-linenumber {color: #b0b0b0;} 19 | .cm-s-base16-light .CodeMirror-cursor {border-left: 1px solid #505050 !important;} 20 | 21 | .cm-s-base16-light span.cm-comment {color: #8f5536;} 22 | .cm-s-base16-light span.cm-atom {color: #aa759f;} 23 | .cm-s-base16-light span.cm-number {color: #aa759f;} 24 | 25 | .cm-s-base16-light span.cm-property, .cm-s-base16-light span.cm-attribute {color: #90a959;} 26 | .cm-s-base16-light span.cm-keyword {color: #ac4142;} 27 | .cm-s-base16-light span.cm-string {color: #f4bf75;} 28 | 29 | .cm-s-base16-light span.cm-variable {color: #90a959;} 30 | .cm-s-base16-light span.cm-variable-2 {color: #6a9fb5;} 31 | .cm-s-base16-light span.cm-def {color: #d28445;} 32 | .cm-s-base16-light span.cm-bracket {color: #202020;} 33 | .cm-s-base16-light span.cm-tag {color: #ac4142;} 34 | .cm-s-base16-light span.cm-link {color: #aa759f;} 35 | .cm-s-base16-light span.cm-error {background: #ac4142; color: #505050;} 36 | 37 | .cm-s-base16-light .CodeMirror-activeline-background {background: #DDDCDC !important;} 38 | .cm-s-base16-light .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} 39 | -------------------------------------------------------------------------------- /static/lib/codemirror/theme/vibrant-ink.css: -------------------------------------------------------------------------------- 1 | /* Taken from the popular Visual Studio Vibrant Ink Schema */ 2 | 3 | .cm-s-vibrant-ink.CodeMirror { background: black; color: white; } 4 | .cm-s-vibrant-ink .CodeMirror-selected { background: #35493c !important; } 5 | .cm-s-vibrant-ink.CodeMirror ::selection { background: rgba(53, 73, 60, 0.99); } 6 | .cm-s-vibrant-ink.CodeMirror ::-moz-selection { background: rgba(53, 73, 60, 0.99); } 7 | 8 | .cm-s-vibrant-ink .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; } 9 | .cm-s-vibrant-ink .CodeMirror-guttermarker { color: white; } 10 | .cm-s-vibrant-ink .CodeMirror-guttermarker-subtle { color: #d0d0d0; } 11 | .cm-s-vibrant-ink .CodeMirror-linenumber { color: #d0d0d0; } 12 | .cm-s-vibrant-ink .CodeMirror-cursor { border-left: 1px solid white !important; } 13 | 14 | .cm-s-vibrant-ink .cm-keyword { color: #CC7832; } 15 | .cm-s-vibrant-ink .cm-atom { color: #FC0; } 16 | .cm-s-vibrant-ink .cm-number { color: #FFEE98; } 17 | .cm-s-vibrant-ink .cm-def { color: #8DA6CE; } 18 | .cm-s-vibrant-ink span.cm-variable-2, .cm-s-vibrant span.cm-tag { color: #FFC66D } 19 | .cm-s-vibrant-ink span.cm-variable-3, .cm-s-vibrant span.cm-def { color: #FFC66D } 20 | .cm-s-vibrant-ink .cm-operator { color: #888; } 21 | .cm-s-vibrant-ink .cm-comment { color: gray; font-weight: bold; } 22 | .cm-s-vibrant-ink .cm-string { color: #A5C25C } 23 | .cm-s-vibrant-ink .cm-string-2 { color: red } 24 | .cm-s-vibrant-ink .cm-meta { color: #D8FA3C; } 25 | .cm-s-vibrant-ink .cm-builtin { color: #8DA6CE; } 26 | .cm-s-vibrant-ink .cm-tag { color: #8DA6CE; } 27 | .cm-s-vibrant-ink .cm-attribute { color: #8DA6CE; } 28 | .cm-s-vibrant-ink .cm-header { color: #FF6400; } 29 | .cm-s-vibrant-ink .cm-hr { color: #AEAEAE; } 30 | .cm-s-vibrant-ink .cm-link { color: blue; } 31 | .cm-s-vibrant-ink .cm-error { border-bottom: 1px solid red; } 32 | 33 | .cm-s-vibrant-ink .CodeMirror-activeline-background {background: #27282E !important;} 34 | .cm-s-vibrant-ink .CodeMirror-matchingbracket {outline:1px solid grey; color:white !important;} 35 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/shell/test.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function() { 5 | var mode = CodeMirror.getMode({}, "shell"); 6 | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } 7 | 8 | MT("var", 9 | "text [def $var] text"); 10 | MT("varBraces", 11 | "text[def ${var}]text"); 12 | MT("varVar", 13 | "text [def $a$b] text"); 14 | MT("varBracesVarBraces", 15 | "text[def ${a}${b}]text"); 16 | 17 | MT("singleQuotedVar", 18 | "[string 'text $var text']"); 19 | MT("singleQuotedVarBraces", 20 | "[string 'text ${var} text']"); 21 | 22 | MT("doubleQuotedVar", 23 | '[string "text ][def $var][string text"]'); 24 | MT("doubleQuotedVarBraces", 25 | '[string "text][def ${var}][string text"]'); 26 | MT("doubleQuotedVarPunct", 27 | '[string "text ][def $@][string text"]'); 28 | MT("doubleQuotedVarVar", 29 | '[string "][def $a$b][string "]'); 30 | MT("doubleQuotedVarBracesVarBraces", 31 | '[string "][def ${a}${b}][string "]'); 32 | 33 | MT("notAString", 34 | "text\\'text"); 35 | MT("escapes", 36 | "outside\\'\\\"\\`\\\\[string \"inside\\`\\'\\\"\\\\`\\$notAVar\"]outside\\$\\(notASubShell\\)"); 37 | 38 | MT("subshell", 39 | "[builtin echo] [quote $(whoami)] s log, stardate [quote `date`]."); 40 | MT("doubleQuotedSubshell", 41 | "[builtin echo] [string \"][quote $(whoami)][string 's log, stardate `date`.\"]"); 42 | 43 | MT("hashbang", 44 | "[meta #!/bin/bash]"); 45 | MT("comment", 46 | "text [comment # Blurb]"); 47 | 48 | MT("numbers", 49 | "[number 0] [number 1] [number 2]"); 50 | MT("keywords", 51 | "[keyword while] [atom true]; [keyword do]", 52 | " [builtin sleep] [number 3]", 53 | "[keyword done]"); 54 | MT("options", 55 | "[builtin ls] [attribute -l] [attribute --human-readable]"); 56 | MT("operator", 57 | "[def var][operator =]value"); 58 | })(); 59 | -------------------------------------------------------------------------------- /static/lib/codemirror/theme/mbo.css: -------------------------------------------------------------------------------- 1 | /****************************************************************/ 2 | /* Based on mbonaci's Brackets mbo theme */ 3 | /* https://github.com/mbonaci/global/blob/master/Mbo.tmTheme */ 4 | /* Create your own: http://tmtheme-editor.herokuapp.com */ 5 | /****************************************************************/ 6 | 7 | .cm-s-mbo.CodeMirror {background: #2c2c2c; color: #ffffec;} 8 | .cm-s-mbo div.CodeMirror-selected {background: #716C62 !important;} 9 | .cm-s-mbo.CodeMirror ::selection { background: rgba(113, 108, 98, .99); } 10 | .cm-s-mbo.CodeMirror ::-moz-selection { background: rgba(113, 108, 98, .99); } 11 | .cm-s-mbo .CodeMirror-gutters {background: #4e4e4e; border-right: 0px;} 12 | .cm-s-mbo .CodeMirror-guttermarker { color: white; } 13 | .cm-s-mbo .CodeMirror-guttermarker-subtle { color: grey; } 14 | .cm-s-mbo .CodeMirror-linenumber {color: #dadada;} 15 | .cm-s-mbo .CodeMirror-cursor {border-left: 1px solid #ffffec !important;} 16 | 17 | .cm-s-mbo span.cm-comment {color: #95958a;} 18 | .cm-s-mbo span.cm-atom {color: #00a8c6;} 19 | .cm-s-mbo span.cm-number {color: #00a8c6;} 20 | 21 | .cm-s-mbo span.cm-property, .cm-s-mbo span.cm-attribute {color: #9ddfe9;} 22 | .cm-s-mbo span.cm-keyword {color: #ffb928;} 23 | .cm-s-mbo span.cm-string {color: #ffcf6c;} 24 | .cm-s-mbo span.cm-string.cm-property {color: #ffffec;} 25 | 26 | .cm-s-mbo span.cm-variable {color: #ffffec;} 27 | .cm-s-mbo span.cm-variable-2 {color: #00a8c6;} 28 | .cm-s-mbo span.cm-def {color: #ffffec;} 29 | .cm-s-mbo span.cm-bracket {color: #fffffc; font-weight: bold;} 30 | .cm-s-mbo span.cm-tag {color: #9ddfe9;} 31 | .cm-s-mbo span.cm-link {color: #f54b07;} 32 | .cm-s-mbo span.cm-error {border-bottom: #636363; color: #ffffec;} 33 | .cm-s-mbo span.cm-qualifier {color: #ffffec;} 34 | 35 | .cm-s-mbo .CodeMirror-activeline-background {background: #494b41 !important;} 36 | .cm-s-mbo .CodeMirror-matchingbracket {color: #222 !important;} 37 | .cm-s-mbo .CodeMirror-matchingtag {background: rgba(255, 255, 255, .37);} 38 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/dart/dart.js: -------------------------------------------------------------------------------- 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"), require("../clike/clike")); 7 | else if (typeof define == "function" && define.amd) // AMD 8 | define(["../../lib/codemirror", "../clike/clike"], mod); 9 | else // Plain browser env 10 | mod(CodeMirror); 11 | })(function(CodeMirror) { 12 | "use strict"; 13 | 14 | var keywords = ("this super static final const abstract class extends external factory " + 15 | "implements get native operator set typedef with enum throw rethrow " + 16 | "assert break case continue default in return new deferred async await " + 17 | "try catch finally do else for if switch while import library export " + 18 | "part of show hide is").split(" "); 19 | var blockKeywords = "try catch finally do else for if switch while".split(" "); 20 | var atoms = "true false null".split(" "); 21 | var builtins = "void bool num int double dynamic var String".split(" "); 22 | 23 | function set(words) { 24 | var obj = {}; 25 | for (var i = 0; i < words.length; ++i) obj[words[i]] = true; 26 | return obj; 27 | } 28 | 29 | CodeMirror.defineMIME("application/dart", { 30 | name: "clike", 31 | keywords: set(keywords), 32 | multiLineStrings: true, 33 | blockKeywords: set(blockKeywords), 34 | builtin: set(builtins), 35 | atoms: set(atoms), 36 | hooks: { 37 | "@": function(stream) { 38 | stream.eatWhile(/[\w\$_]/); 39 | return "meta"; 40 | } 41 | } 42 | }); 43 | 44 | CodeMirror.registerHelper("hintWords", "application/dart", keywords.concat(atoms).concat(builtins)); 45 | 46 | // This is needed to make loading through meta.js work. 47 | CodeMirror.defineMode("dart", function(conf) { 48 | return CodeMirror.getMode(conf, "application/dart"); 49 | }, "clike"); 50 | }); 51 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/sparql/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: SPARQL mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 25 | 26 |
27 |

SPARQL mode

28 |
52 | 58 | 59 |

MIME types defined: application/sparql-query.

60 | 61 |
62 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/shell/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Shell mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 14 | 27 | 28 |
29 |

Shell mode

30 | 31 | 32 | 56 | 57 | 64 | 65 |

MIME types defined: text/x-sh.

66 |
67 | -------------------------------------------------------------------------------- /static/lib/codemirror/theme/twilight.css: -------------------------------------------------------------------------------- 1 | .cm-s-twilight.CodeMirror { background: #141414; color: #f7f7f7; } /**/ 2 | .cm-s-twilight .CodeMirror-selected { background: #323232 !important; } /**/ 3 | .cm-s-twilight.CodeMirror ::selection { background: rgba(50, 50, 50, 0.99); } 4 | .cm-s-twilight.CodeMirror ::-moz-selection { background: rgba(50, 50, 50, 0.99); } 5 | 6 | .cm-s-twilight .CodeMirror-gutters { background: #222; border-right: 1px solid #aaa; } 7 | .cm-s-twilight .CodeMirror-guttermarker { color: white; } 8 | .cm-s-twilight .CodeMirror-guttermarker-subtle { color: #aaa; } 9 | .cm-s-twilight .CodeMirror-linenumber { color: #aaa; } 10 | .cm-s-twilight .CodeMirror-cursor { border-left: 1px solid white !important; } 11 | 12 | .cm-s-twilight .cm-keyword { color: #f9ee98; } /**/ 13 | .cm-s-twilight .cm-atom { color: #FC0; } 14 | .cm-s-twilight .cm-number { color: #ca7841; } /**/ 15 | .cm-s-twilight .cm-def { color: #8DA6CE; } 16 | .cm-s-twilight span.cm-variable-2, .cm-s-twilight span.cm-tag { color: #607392; } /**/ 17 | .cm-s-twilight span.cm-variable-3, .cm-s-twilight span.cm-def { color: #607392; } /**/ 18 | .cm-s-twilight .cm-operator { color: #cda869; } /**/ 19 | .cm-s-twilight .cm-comment { color:#777; font-style:italic; font-weight:normal; } /**/ 20 | .cm-s-twilight .cm-string { color:#8f9d6a; font-style:italic; } /**/ 21 | .cm-s-twilight .cm-string-2 { color:#bd6b18 } /*?*/ 22 | .cm-s-twilight .cm-meta { background-color:#141414; color:#f7f7f7; } /*?*/ 23 | .cm-s-twilight .cm-builtin { color: #cda869; } /*?*/ 24 | .cm-s-twilight .cm-tag { color: #997643; } /**/ 25 | .cm-s-twilight .cm-attribute { color: #d6bb6d; } /*?*/ 26 | .cm-s-twilight .cm-header { color: #FF6400; } 27 | .cm-s-twilight .cm-hr { color: #AEAEAE; } 28 | .cm-s-twilight .cm-link { color:#ad9361; font-style:italic; text-decoration:none; } /**/ 29 | .cm-s-twilight .cm-error { border-bottom: 1px solid red; } 30 | 31 | .cm-s-twilight .CodeMirror-activeline-background {background: #27282E !important;} 32 | .cm-s-twilight .CodeMirror-matchingbracket {outline:1px solid grey; color:white !important;} 33 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/django/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Django template mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 27 | 28 |
29 |

Django template mode

30 |
50 | 51 | 59 | 60 |

Mode for HTML with embedded Django template markup.

61 | 62 |

MIME types defined: text/x-django

63 |
64 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/tornado/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Tornado template mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 27 | 28 |
29 |

Tornado template mode

30 |
50 | 51 | 59 | 60 |

Mode for HTML with embedded Tornado template markup.

61 | 62 |

MIME types defined: text/x-tornado

63 |
64 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by .ignore support plugin (hsz.mobi) 2 | ### Windows template 3 | # Windows thumbnail cache files 4 | Thumbs.db 5 | ehthumbs.db 6 | ehthumbs_vista.db 7 | 8 | # Dump file 9 | *.stackdump 10 | 11 | # Folder config file 12 | [Dd]esktop.ini 13 | 14 | # Recycle Bin used on file shares 15 | $RECYCLE.BIN/ 16 | 17 | # Windows Installer files 18 | *.cab 19 | *.msi 20 | *.msm 21 | *.msp 22 | 23 | # Windows shortcuts 24 | *.lnk 25 | ### Go template 26 | # Binaries for programs and plugins 27 | *.exe 28 | *.dll 29 | *.so 30 | *.dylib 31 | 32 | # Test binary, build with `go test -c` 33 | *.test 34 | 35 | # Output of the go coverage tool, specifically when used with LiteIDE 36 | *.out 37 | 38 | # Project-local glide cache, RE: https://github.com/Masterminds/glide/issues/736 39 | .glide/ 40 | ### JetBrains template 41 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm 42 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 43 | 44 | # User-specific stuff: 45 | .idea/**/workspace.xml 46 | .idea/**/tasks.xml 47 | .idea/dictionaries 48 | 49 | # Sensitive or high-churn files: 50 | .idea/**/dataSources/ 51 | .idea/**/dataSources.ids 52 | .idea/**/dataSources.xml 53 | .idea/**/dataSources.local.xml 54 | .idea/**/sqlDataSources.xml 55 | .idea/**/dynamic.xml 56 | .idea/**/uiDesigner.xml 57 | 58 | # Gradle: 59 | .idea/**/gradle.xml 60 | .idea/**/libraries 61 | 62 | # CMake 63 | cmake-build-debug/ 64 | 65 | # Mongo Explorer plugin: 66 | .idea/**/mongoSettings.xml 67 | 68 | ## File-based project format: 69 | *.iws 70 | 71 | ## Plugin-specific files: 72 | 73 | # IntelliJ 74 | out/ 75 | 76 | # mpeltonen/sbt-idea plugin 77 | .idea_modules/ 78 | 79 | # JIRA plugin 80 | atlassian-ide-plugin.xml 81 | 82 | # Cursive Clojure plugin 83 | .idea/replstate.xml 84 | 85 | # Crashlytics plugin (for Android Studio and IntelliJ) 86 | com_crashlytics_export_strings.xml 87 | crashlytics.properties 88 | crashlytics-build.properties 89 | fabric.properties 90 | 91 | .gitignore 92 | .idea/ 93 | books/ 94 | 95 | BookStack.exe~ 96 | 97 | BookStack -------------------------------------------------------------------------------- /static/lib/codemirror/theme/midnight.css: -------------------------------------------------------------------------------- 1 | /* Based on the theme at http://bonsaiden.github.com/JavaScript-Garden */ 2 | 3 | /**/ 4 | .cm-s-midnight span.CodeMirror-matchhighlight { background: #494949; } 5 | .cm-s-midnight.CodeMirror-focused span.CodeMirror-matchhighlight { background: #314D67 !important; } 6 | 7 | /**/ 8 | .cm-s-midnight .CodeMirror-activeline-background {background: #253540 !important;} 9 | 10 | .cm-s-midnight.CodeMirror { 11 | background: #0F192A; 12 | color: #D1EDFF; 13 | } 14 | 15 | .cm-s-midnight.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;} 16 | 17 | .cm-s-midnight div.CodeMirror-selected {background: #314D67 !important;} 18 | .cm-s-midnight.CodeMirror ::selection { background: rgba(49, 77, 103, .99); } 19 | .cm-s-midnight.CodeMirror ::-moz-selection { background: rgba(49, 77, 103, .99); } 20 | .cm-s-midnight .CodeMirror-gutters {background: #0F192A; border-right: 1px solid;} 21 | .cm-s-midnight .CodeMirror-guttermarker { color: white; } 22 | .cm-s-midnight .CodeMirror-guttermarker-subtle { color: #d0d0d0; } 23 | .cm-s-midnight .CodeMirror-linenumber {color: #D0D0D0;} 24 | .cm-s-midnight .CodeMirror-cursor { 25 | border-left: 1px solid #F8F8F0 !important; 26 | } 27 | 28 | .cm-s-midnight span.cm-comment {color: #428BDD;} 29 | .cm-s-midnight span.cm-atom {color: #AE81FF;} 30 | .cm-s-midnight span.cm-number {color: #D1EDFF;} 31 | 32 | .cm-s-midnight span.cm-property, .cm-s-midnight span.cm-attribute {color: #A6E22E;} 33 | .cm-s-midnight span.cm-keyword {color: #E83737;} 34 | .cm-s-midnight span.cm-string {color: #1DC116;} 35 | 36 | .cm-s-midnight span.cm-variable {color: #FFAA3E;} 37 | .cm-s-midnight span.cm-variable-2 {color: #FFAA3E;} 38 | .cm-s-midnight span.cm-def {color: #4DD;} 39 | .cm-s-midnight span.cm-bracket {color: #D1EDFF;} 40 | .cm-s-midnight span.cm-tag {color: #449;} 41 | .cm-s-midnight span.cm-link {color: #AE81FF;} 42 | .cm-s-midnight span.cm-error {background: #F92672; color: #F8F8F0;} 43 | 44 | .cm-s-midnight .CodeMirror-matchingbracket { 45 | text-decoration: underline; 46 | color: white !important; 47 | } 48 | -------------------------------------------------------------------------------- /books/gulp-book/chapter1.md: -------------------------------------------------------------------------------- 1 | 安装 Node 和 gulp 2 | ================ 3 | 4 | gulp 是基于 node 实现的,那么我们就需要先安装 node。 5 | 6 | > Node 是一个基于Chrome JavaScript V8引擎建立的一个平台,可以利用它实现 Web服务,做类似PHP的事。 7 | 8 | 打开 https://nodejs.org/ 点击绿色的 **INSTALL** 按钮下载安装 node。 9 | 10 | [访问论坛获取帮助](https://github.com/nimojs/gulp-book/issues/10) 11 | 12 | 13 | 14 | 使用终端/命令行 15 | ------------- 16 | 17 | ### 命令行 18 | 在 Windows 中可按 徽标键(alt键左边)+ R 打开输入 `cmd` + Enter 打开命令行。 19 | 20 | ### 终端(Mac) 21 | 打开 Launchpad(像火箭一样的图标),在屏幕上方搜索框中输入 `终端` + Enter 打开终端。 22 | 23 | ### 查看 node 版本号 24 | 在终端/命令行中输入 `node -v` 检测node是否安装成功,安装成功会显示出 node 的版本号。 25 | 26 | ### 跳转目录 27 | 终端/命令行 中可使用 `cd 目录名` 跳转至指定目录,Mac 中还可以使用 `ls` 查看当前目录下的文件列表。 28 | 29 | #### Windows 30 | Windows 下可使用如下命令跳转至指定目录: 31 | 32 | ``` 33 | // 跳转至 C 盘根目录 34 | cd c:\ 35 | // 跳转至当前目录的 demo 文件夹 36 | cd demo 37 | // 跳转至上一级 38 | cd .. 39 | ``` 40 | 41 | #### Mac 42 | Mac 中建议只在 Documents 目录下进行文件操作。 43 | 44 | ``` 45 | // 跳转至文档目录 46 | cd /Users/你的用户名/Documents/ 47 | // 或第一次打开终端时直接输入 48 | cd Documents 49 | // 查看目录下文件列表 50 | ls 51 | // 创建文件夹 52 | mkdir demo 53 | // 跳转至当前目录下的 demo 文件夹 54 | cd demo 55 | // 跳转至上级目录 56 | cd .. 57 | ``` 58 | 59 | ### 退出运行状态 60 | 如果你在命令行中启动了一些一直运行的命令,你的命令行会进入“运行”状态,此时你不可以在命令行进行其他操作。可通过 `Ctrl + C` 停止 gulp。(Mac 中使用 `control + C`) 61 | 62 | 后面的章节中如果代码中存在 `gulp.watch` 并在命令行运行了 `gulp` 则需要使用 `Ctrl + C` 退出任务。 63 | 64 | npm 模块管理器 65 | ------------- 66 | 如果你了解 npm 则跳过此章节 67 | 68 | 若你不了解npm 请阅读 [npm模块管理器](http://javascript.ruanyifeng.com/nodejs/npm.html) 69 | 70 | 安装 gulp 71 | ---- 72 | 73 | npm 是 node 的包管理工具,可以利用它安装 gulp 所需的包。(在安装 node 时已经自动安装了 npm) 74 | 75 | 在命令行输入 76 | 77 | ``` 78 | npm install -g gulp 79 | ``` 80 | 81 | 若一直没安装成功,请[使用 cnpm 安装](https://github.com/nimojs/blog/issues/20)(npm的国内加速镜像) 82 | 83 | 意思是:使用 npm 安装全局性的(`-g`) gulp 包。 84 | 85 | > 如果你安装失败,请输入`sudo npm install -g gulp `使用管理员权限安装。(可能会要求输入密码) 86 | 87 | 安装时请注意命令行的提示信息,安装完成后可在命令行输入 `gulp -v` 以确认安装成功。 88 | 89 | 至此,我们完成了准备工作。接着让 gulp 开始帮我们干活吧! 90 | 91 | [访问论坛获取帮助](https://github.com/nimojs/gulp-book/issues/10) 92 | 93 | [阅读下一章节:使用 gulp 压缩JS](chapter2.md) 94 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/forth/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Forth mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 18 | 31 | 32 |
33 | 34 |

Forth mode

35 | 36 |
57 |
58 | 59 | 70 | 71 |

Simple mode that handle Forth-Syntax (Forth on WikiPedia).

72 | 73 |

MIME types defined: text/x-forth.

74 | 75 |
76 | -------------------------------------------------------------------------------- /books/gulp-book/README.md: -------------------------------------------------------------------------------- 1 | gulp 入门指南 2 | =========== 3 | 4 | gulp 是基于 node 实现 Web 前端自动化开发的工具,利用它能够极大的提高开发效率。 5 | 6 | 在 Web 前端开发工作中有很多“重复工作”,比如压缩CSS/JS文件。而这些工作都是有规律的。找到这些规律,并编写 gulp 配置代码,让 gulp 自动执行这些“重复工作”。 7 | 8 | 点击右上角的 **[Watch](https://github.com/nimojs/gulp-book/subscription)** 订阅本书,点击 Star 收藏本书。 9 | 10 | - [订阅本书](https://github.com/nimojs/gulp-book/issues/7) 11 | - [论坛](https://github.com/nimojs/gulp-book/issues) 12 | 13 | **因为 Node 的全局包安装都是在C盘,所有请在C盘使用 gulp 以方便熟悉 gulp ** 14 | 15 | > 相关教程:[webpack-book](https://github.com/nimojs/webpack-book) 16 | 17 | ## 目录 18 | 19 | - [安装 Node 和 gulp](chapter1.md) 20 | - [使用 gulp 压缩 JS](chapter2.md) 21 | - [使用 gulp 压缩 CSS](chapter3.md) 22 | - [使用 gulp 压缩图片](chapter4.md) 23 | - [使用 gulp 编译 LESS](chapter5.md) 24 | - [使用 gulp 编译 Sass](chapter6.md) 25 | - [使用 gulp 构建一个项目](chapter7.md) 26 | 27 | 28 | 29 | 30 | 将规律转换为 gulp 代码 31 | ------------------- 32 | 33 | 现有目录结构如下: 34 | 35 | ``` 36 | └── js/ 37 | └── a.js 38 | ``` 39 | 40 | ### 规律 41 | 42 | 1. 找到 js/目录下的所有 .js 文件 43 | 2. 压缩这些 js 文件 44 | 3. 将压缩后的代码另存在 dist/js/ 目录下 45 | 46 | ### 编写 gulp 代码 47 | 48 | ```js 49 | // 压缩 JavaScript 文件 50 | gulp.task('script', function() { 51 | // 1. 找到 52 | gulp.src('js/*.js') 53 | // 2. 压缩 54 | .pipe(uglify()) 55 | // 3. 另存 56 | .pipe(gulp.dest('dist/js')); 57 | }); 58 | ``` 59 | 60 | ### 代码执行结果 61 | 62 | 代码执行后文件结构 63 | 64 | ``` 65 | └── js/ 66 | │ └── a.js 67 | └── dist/ 68 | └── js/ 69 | └── a.js 70 | ``` 71 | 72 | a.js 压缩前 73 | ``` 74 | function demo (msg) { 75 | alert('--------\r\n' + msg + '\r\n--------') 76 | } 77 | 78 | demo('Hi') 79 | ``` 80 | a.js 压缩后 81 | ``` 82 | function demo(n){alert("--------\r\n"+n+"\r\n--------")}demo("Hi"); 83 | ``` 84 | 85 | 此时 `dist/js` 目录下的 `.js` 文件都是压缩后的版本。 86 | 87 | 你还可以监控 `js/` 目录下的 js 文件,当某个文件被修改时,自动压缩修改文件。启动 gulp 后就可以让它帮助你自动构建 Web 项目。 88 | 89 | ----------------- 90 | 91 | gulp 还可以做很多事,例如: 92 | 93 | 1. 压缩CSS 94 | 2. 压缩图片 95 | 3. 编译Sass/LESS 96 | 4. 编译CoffeeScript 97 | 5. markdown 转换为 html 98 | 99 | [开始阅读:安装 Node 和 gulp](chapter1.md) 100 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/gas/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Gas mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Gas mode

27 |
28 | 50 |
51 | 52 | 58 | 59 |

Handles AT&T assembler syntax (more specifically this handles 60 | the GNU Assembler (gas) syntax.) 61 | It takes a single optional configuration parameter: 62 | architecture, which can be one of "ARM", 63 | "ARMv6" or "x86". 64 | Including the parameter adds syntax for the registers and special 65 | directives for the supplied architecture. 66 | 67 |

MIME types defined: text/x-gas

68 |
69 | -------------------------------------------------------------------------------- /static/lib/codemirror/theme/zenburn.css: -------------------------------------------------------------------------------- 1 | /** 2 | * " 3 | * Using Zenburn color palette from the Emacs Zenburn Theme 4 | * https://github.com/bbatsov/zenburn-emacs/blob/master/zenburn-theme.el 5 | * 6 | * Also using parts of https://github.com/xavi/coderay-lighttable-theme 7 | * " 8 | * From: https://github.com/wisenomad/zenburn-lighttable-theme/blob/master/zenburn.css 9 | */ 10 | 11 | .cm-s-zenburn .CodeMirror-gutters { background: #3f3f3f !important; } 12 | .cm-s-zenburn .CodeMirror-foldgutter-open, .CodeMirror-foldgutter-folded { color: #999; } 13 | .cm-s-zenburn .CodeMirror-cursor { border-left: 1px solid white !important; } 14 | .cm-s-zenburn { background-color: #3f3f3f; color: #dcdccc; } 15 | .cm-s-zenburn span.cm-builtin { color: #dcdccc; font-weight: bold; } 16 | .cm-s-zenburn span.cm-comment { color: #7f9f7f; } 17 | .cm-s-zenburn span.cm-keyword { color: #f0dfaf; font-weight: bold; } 18 | .cm-s-zenburn span.cm-atom { color: #bfebbf; } 19 | .cm-s-zenburn span.cm-def { color: #dcdccc; } 20 | .cm-s-zenburn span.cm-variable { color: #dfaf8f; } 21 | .cm-s-zenburn span.cm-variable-2 { color: #dcdccc; } 22 | .cm-s-zenburn span.cm-string { color: #cc9393; } 23 | .cm-s-zenburn span.cm-string-2 { color: #cc9393; } 24 | .cm-s-zenburn span.cm-number { color: #dcdccc; } 25 | .cm-s-zenburn span.cm-tag { color: #93e0e3; } 26 | .cm-s-zenburn span.cm-property { color: #dfaf8f; } 27 | .cm-s-zenburn span.cm-attribute { color: #dfaf8f; } 28 | .cm-s-zenburn span.cm-qualifier { color: #7cb8bb; } 29 | .cm-s-zenburn span.cm-meta { color: #f0dfaf; } 30 | .cm-s-zenburn span.cm-header { color: #f0efd0; } 31 | .cm-s-zenburn span.cm-operator { color: #f0efd0; } 32 | .cm-s-zenburn span.CodeMirror-matchingbracket { box-sizing: border-box; background: transparent; border-bottom: 1px solid; } 33 | .cm-s-zenburn span.CodeMirror-nonmatchingbracket { border-bottom: 1px solid; background: none; } 34 | .cm-s-zenburn .CodeMirror-activeline { background: #000000; } 35 | .cm-s-zenburn .CodeMirror-activeline-background { background: #000000; } 36 | .cm-s-zenburn .CodeMirror-selected { background: #545454; } 37 | .cm-s-zenburn .CodeMirror-focused .CodeMirror-selected { background: #4f4f4f; } 38 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/toml/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: TOML Mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

TOML Mode

27 |
64 | 70 |

The TOML Mode

71 |

Created by Forbes Lindesay.

72 |

MIME type defined: text/x-toml.

73 |
74 | -------------------------------------------------------------------------------- /static/lib/codemirror/theme/erlang-dark.css: -------------------------------------------------------------------------------- 1 | .cm-s-erlang-dark.CodeMirror { background: #002240; color: white; } 2 | .cm-s-erlang-dark div.CodeMirror-selected { background: #b36539 !important; } 3 | .cm-s-erlang-dark.CodeMirror ::selection { background: rgba(179, 101, 57, .99); } 4 | .cm-s-erlang-dark.CodeMirror ::-moz-selection { background: rgba(179, 101, 57, .99); } 5 | .cm-s-erlang-dark .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; } 6 | .cm-s-erlang-dark .CodeMirror-guttermarker { color: white; } 7 | .cm-s-erlang-dark .CodeMirror-guttermarker-subtle { color: #d0d0d0; } 8 | .cm-s-erlang-dark .CodeMirror-linenumber { color: #d0d0d0; } 9 | .cm-s-erlang-dark .CodeMirror-cursor { border-left: 1px solid white !important; } 10 | 11 | .cm-s-erlang-dark span.cm-atom { color: #f133f1; } 12 | .cm-s-erlang-dark span.cm-attribute { color: #ff80e1; } 13 | .cm-s-erlang-dark span.cm-bracket { color: #ff9d00; } 14 | .cm-s-erlang-dark span.cm-builtin { color: #eaa; } 15 | .cm-s-erlang-dark span.cm-comment { color: #77f; } 16 | .cm-s-erlang-dark span.cm-def { color: #e7a; } 17 | .cm-s-erlang-dark span.cm-keyword { color: #ffee80; } 18 | .cm-s-erlang-dark span.cm-meta { color: #50fefe; } 19 | .cm-s-erlang-dark span.cm-number { color: #ffd0d0; } 20 | .cm-s-erlang-dark span.cm-operator { color: #d55; } 21 | .cm-s-erlang-dark span.cm-property { color: #ccc; } 22 | .cm-s-erlang-dark span.cm-qualifier { color: #ccc; } 23 | .cm-s-erlang-dark span.cm-quote { color: #ccc; } 24 | .cm-s-erlang-dark span.cm-special { color: #ffbbbb; } 25 | .cm-s-erlang-dark span.cm-string { color: #3ad900; } 26 | .cm-s-erlang-dark span.cm-string-2 { color: #ccc; } 27 | .cm-s-erlang-dark span.cm-tag { color: #9effff; } 28 | .cm-s-erlang-dark span.cm-variable { color: #50fe50; } 29 | .cm-s-erlang-dark span.cm-variable-2 { color: #e0e; } 30 | .cm-s-erlang-dark span.cm-variable-3 { color: #ccc; } 31 | .cm-s-erlang-dark span.cm-error { color: #9d1e15; } 32 | 33 | .cm-s-erlang-dark .CodeMirror-activeline-background {background: #013461 !important;} 34 | .cm-s-erlang-dark .CodeMirror-matchingbracket {outline:1px solid grey; color:white !important;} 35 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/tiki/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Tiki wiki mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 25 | 26 |
27 |

Tiki wiki mode

28 | 29 | 30 |
87 | 88 | 94 | 95 |
96 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/cypher/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Cypher Mode for CodeMirror 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 17 | 30 | 31 |
32 |

Cypher Mode for CodeMirror

33 |
34 | 40 |
41 |

MIME types defined: 42 | application/x-cypher-query 43 |

44 | 62 | 63 |
64 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/octave/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Octave mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Octave mode

27 | 28 |
71 | 81 | 82 |

MIME types defined: text/x-octave.

83 |
84 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/pegjs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | CodeMirror: PEG.js Mode 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 28 | 29 |
30 |

PEG.js Mode

31 |
56 | 62 |

The PEG.js Mode

63 |

Created by Forbes Lindesay.

64 |
65 | 66 | 67 | -------------------------------------------------------------------------------- /static/lib/codemirror/addon/hint/css-hint.js: -------------------------------------------------------------------------------- 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"), require("../../mode/css/css")); 7 | else if (typeof define == "function" && define.amd) // AMD 8 | define(["../../lib/codemirror", "../../mode/css/css"], mod); 9 | else // Plain browser env 10 | mod(CodeMirror); 11 | })(function(CodeMirror) { 12 | "use strict"; 13 | 14 | var pseudoClasses = {link: 1, visited: 1, active: 1, hover: 1, focus: 1, 15 | "first-letter": 1, "first-line": 1, "first-child": 1, 16 | before: 1, after: 1, lang: 1}; 17 | 18 | CodeMirror.registerHelper("hint", "css", function(cm) { 19 | var cur = cm.getCursor(), token = cm.getTokenAt(cur); 20 | var inner = CodeMirror.innerMode(cm.getMode(), token.state); 21 | if (inner.mode.name != "css") return; 22 | 23 | var start = token.start, end = cur.ch, word = token.string.slice(0, end - start); 24 | if (/[^\w$_-]/.test(word)) { 25 | word = ""; start = end = cur.ch; 26 | } 27 | 28 | var spec = CodeMirror.resolveMode("text/css"); 29 | 30 | var result = []; 31 | function add(keywords) { 32 | for (var name in keywords) 33 | if (!word || name.lastIndexOf(word, 0) == 0) 34 | result.push(name); 35 | } 36 | 37 | var st = inner.state.state; 38 | if (st == "pseudo" || token.type == "variable-3") { 39 | add(pseudoClasses); 40 | } else if (st == "block" || st == "maybeprop") { 41 | add(spec.propertyKeywords); 42 | } else if (st == "prop" || st == "parens" || st == "at" || st == "params") { 43 | add(spec.valueKeywords); 44 | add(spec.colorKeywords); 45 | } else if (st == "media" || st == "media_parens") { 46 | add(spec.mediaTypes); 47 | add(spec.mediaFeatures); 48 | } 49 | 50 | if (result.length) return { 51 | list: result, 52 | from: CodeMirror.Pos(cur.line, start), 53 | to: CodeMirror.Pos(cur.line, end) 54 | }; 55 | }); 56 | }); 57 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/xml/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: XML mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

XML mode

27 |
39 | 45 |

The XML mode supports two configuration parameters:

46 |
47 |
htmlMode (boolean)
48 |
This switches the mode to parse HTML instead of XML. This 49 | means attributes do not have to be quoted, and some elements 50 | (such as br) do not require a closing tag.
51 |
alignCDATA (boolean)
52 |
Setting this to true will force the opening tag of CDATA 53 | blocks to not be indented.
54 |
55 | 56 |

MIME types defined: application/xml, text/html.

57 |
58 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/smalltalk/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Smalltalk mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 16 | 29 | 30 |
31 |

Smalltalk mode

32 |
55 | 56 | 64 | 65 |

Simple Smalltalk mode.

66 | 67 |

MIME types defined: text/x-stsrc.

68 |
69 | -------------------------------------------------------------------------------- /static/lib/codemirror/addon/display/placeholder.js: -------------------------------------------------------------------------------- 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 | })(function(CodeMirror) { 12 | CodeMirror.defineOption("placeholder", "", function(cm, val, old) { 13 | var prev = old && old != CodeMirror.Init; 14 | if (val && !prev) { 15 | cm.on("blur", onBlur); 16 | cm.on("change", onChange); 17 | onChange(cm); 18 | } else if (!val && prev) { 19 | cm.off("blur", onBlur); 20 | cm.off("change", onChange); 21 | clearPlaceholder(cm); 22 | var wrapper = cm.getWrapperElement(); 23 | wrapper.className = wrapper.className.replace(" CodeMirror-empty", ""); 24 | } 25 | 26 | if (val && !cm.hasFocus()) onBlur(cm); 27 | }); 28 | 29 | function clearPlaceholder(cm) { 30 | if (cm.state.placeholder) { 31 | cm.state.placeholder.parentNode.removeChild(cm.state.placeholder); 32 | cm.state.placeholder = null; 33 | } 34 | } 35 | function setPlaceholder(cm) { 36 | clearPlaceholder(cm); 37 | var elt = cm.state.placeholder = document.createElement("pre"); 38 | elt.style.cssText = "height: 0; overflow: visible"; 39 | elt.className = "CodeMirror-placeholder"; 40 | elt.appendChild(document.createTextNode(cm.getOption("placeholder"))); 41 | cm.display.lineSpace.insertBefore(elt, cm.display.lineSpace.firstChild); 42 | } 43 | 44 | function onBlur(cm) { 45 | if (isEmpty(cm)) setPlaceholder(cm); 46 | } 47 | function onChange(cm) { 48 | var wrapper = cm.getWrapperElement(), empty = isEmpty(cm); 49 | wrapper.className = wrapper.className.replace(" CodeMirror-empty", "") + (empty ? " CodeMirror-empty" : ""); 50 | 51 | if (empty) setPlaceholder(cm); 52 | else clearPlaceholder(cm); 53 | } 54 | 55 | function isEmpty(cm) { 56 | return (cm.lineCount() === 1) && (cm.getLine(0) === ""); 57 | } 58 | }); 59 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/htmlembedded/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Html Embedded Scripts mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 28 | 29 |
30 |

Html Embedded Scripts mode

31 |
43 | 44 | 52 | 53 |

Mode for html embedded scripts like JSP and ASP.NET. Depends on HtmlMixed which in turn depends on 54 | JavaScript, CSS and XML.
Other dependancies include those of the scriping language chosen.

55 | 56 |

MIME types defined: application/x-aspx (ASP.NET), 57 | application/x-ejs (Embedded Javascript), application/x-jsp (JavaServer Pages)

58 |
59 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/soy/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Soy (Closure Template) mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 29 | 30 |
31 |

Soy (Closure Template) mode

32 |
55 | 56 | 65 | 66 |

A mode for Closure Templates (Soy).

67 |

MIME type defined: text/x-soy.

68 |
69 | -------------------------------------------------------------------------------- /static/lib/codemirror/addon/tern/tern.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-Tern-completion { 2 | padding-left: 22px; 3 | position: relative; 4 | } 5 | .CodeMirror-Tern-completion:before { 6 | position: absolute; 7 | left: 2px; 8 | bottom: 2px; 9 | border-radius: 50%; 10 | font-size: 12px; 11 | font-weight: bold; 12 | height: 15px; 13 | width: 15px; 14 | line-height: 16px; 15 | text-align: center; 16 | color: white; 17 | -moz-box-sizing: border-box; 18 | box-sizing: border-box; 19 | } 20 | .CodeMirror-Tern-completion-unknown:before { 21 | content: "?"; 22 | background: #4bb; 23 | } 24 | .CodeMirror-Tern-completion-object:before { 25 | content: "O"; 26 | background: #77c; 27 | } 28 | .CodeMirror-Tern-completion-fn:before { 29 | content: "F"; 30 | background: #7c7; 31 | } 32 | .CodeMirror-Tern-completion-array:before { 33 | content: "A"; 34 | background: #c66; 35 | } 36 | .CodeMirror-Tern-completion-number:before { 37 | content: "1"; 38 | background: #999; 39 | } 40 | .CodeMirror-Tern-completion-string:before { 41 | content: "S"; 42 | background: #999; 43 | } 44 | .CodeMirror-Tern-completion-bool:before { 45 | content: "B"; 46 | background: #999; 47 | } 48 | 49 | .CodeMirror-Tern-completion-guess { 50 | color: #999; 51 | } 52 | 53 | .CodeMirror-Tern-tooltip { 54 | border: 1px solid silver; 55 | border-radius: 3px; 56 | color: #444; 57 | padding: 2px 5px; 58 | font-size: 90%; 59 | font-family: monospace; 60 | background-color: white; 61 | white-space: pre-wrap; 62 | 63 | max-width: 40em; 64 | position: absolute; 65 | z-index: 10; 66 | -webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2); 67 | -moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2); 68 | box-shadow: 2px 3px 5px rgba(0,0,0,.2); 69 | 70 | transition: opacity 1s; 71 | -moz-transition: opacity 1s; 72 | -webkit-transition: opacity 1s; 73 | -o-transition: opacity 1s; 74 | -ms-transition: opacity 1s; 75 | } 76 | 77 | .CodeMirror-Tern-hint-doc { 78 | max-width: 25em; 79 | margin-top: -3px; 80 | } 81 | 82 | .CodeMirror-Tern-fname { color: black; } 83 | .CodeMirror-Tern-farg { color: #70a; } 84 | .CodeMirror-Tern-farg-current { text-decoration: underline; } 85 | .CodeMirror-Tern-type { color: #07c; } 86 | .CodeMirror-Tern-fhint-guess { opacity: .7; } 87 | -------------------------------------------------------------------------------- /static/lib/codemirror/addon/fold/comment-fold.js: -------------------------------------------------------------------------------- 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 | })(function(CodeMirror) { 12 | "use strict"; 13 | 14 | CodeMirror.registerGlobalHelper("fold", "comment", function(mode) { 15 | return mode.blockCommentStart && mode.blockCommentEnd; 16 | }, function(cm, start) { 17 | var mode = cm.getModeAt(start), startToken = mode.blockCommentStart, endToken = mode.blockCommentEnd; 18 | if (!startToken || !endToken) return; 19 | var line = start.line, lineText = cm.getLine(line); 20 | 21 | var startCh; 22 | for (var at = start.ch, pass = 0;;) { 23 | var found = at <= 0 ? -1 : lineText.lastIndexOf(startToken, at - 1); 24 | if (found == -1) { 25 | if (pass == 1) return; 26 | pass = 1; 27 | at = lineText.length; 28 | continue; 29 | } 30 | if (pass == 1 && found < start.ch) return; 31 | if (/comment/.test(cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1)))) { 32 | startCh = found + startToken.length; 33 | break; 34 | } 35 | at = found - 1; 36 | } 37 | 38 | var depth = 1, lastLine = cm.lastLine(), end, endCh; 39 | outer: for (var i = line; i <= lastLine; ++i) { 40 | var text = cm.getLine(i), pos = i == line ? startCh : 0; 41 | for (;;) { 42 | var nextOpen = text.indexOf(startToken, pos), nextClose = text.indexOf(endToken, pos); 43 | if (nextOpen < 0) nextOpen = text.length; 44 | if (nextClose < 0) nextClose = text.length; 45 | pos = Math.min(nextOpen, nextClose); 46 | if (pos == text.length) break; 47 | if (pos == nextOpen) ++depth; 48 | else if (!--depth) { end = i; endCh = pos; break outer; } 49 | ++pos; 50 | } 51 | } 52 | if (end == null || line == end && endCh == startCh) return; 53 | return {from: CodeMirror.Pos(line, startCh), 54 | to: CodeMirror.Pos(end, endCh)}; 55 | }); 56 | 57 | }); 58 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/css/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: CSS mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 27 | 28 |
29 |

CSS mode

30 |
65 | 70 | 71 |

MIME types defined: text/css, text/x-scss (demo), text/x-less (demo).

72 | 73 |

Parsing/Highlighting Tests: normal, verbose.

74 | 75 |
76 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/php/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: PHP mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 30 | 31 |
32 |

PHP mode

33 |
48 | 49 | 58 | 59 |

Simple HTML/PHP mode based on 60 | the C-like mode. Depends on XML, 61 | JavaScript, CSS, HTMLMixed, and C-like modes.

62 | 63 |

MIME types defined: application/x-httpd-php (HTML with PHP code), text/x-php (plain, non-wrapped PHP code).

64 |
65 | -------------------------------------------------------------------------------- /static/lib/codemirror/theme/tomorrow-night-eighties.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Name: Tomorrow Night - Eighties 4 | Author: Chris Kempson 5 | 6 | CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) 7 | Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) 8 | 9 | */ 10 | 11 | .cm-s-tomorrow-night-eighties.CodeMirror {background: #000000; color: #CCCCCC;} 12 | .cm-s-tomorrow-night-eighties div.CodeMirror-selected {background: #2D2D2D !important;} 13 | .cm-s-tomorrow-night-eighties.CodeMirror ::selection { background: rgba(45, 45, 45, 0.99); } 14 | .cm-s-tomorrow-night-eighties.CodeMirror ::-moz-selection { background: rgba(45, 45, 45, 0.99); } 15 | .cm-s-tomorrow-night-eighties .CodeMirror-gutters {background: #000000; border-right: 0px;} 16 | .cm-s-tomorrow-night-eighties .CodeMirror-guttermarker { color: #f2777a; } 17 | .cm-s-tomorrow-night-eighties .CodeMirror-guttermarker-subtle { color: #777; } 18 | .cm-s-tomorrow-night-eighties .CodeMirror-linenumber {color: #515151;} 19 | .cm-s-tomorrow-night-eighties .CodeMirror-cursor {border-left: 1px solid #6A6A6A !important;} 20 | 21 | .cm-s-tomorrow-night-eighties span.cm-comment {color: #d27b53;} 22 | .cm-s-tomorrow-night-eighties span.cm-atom {color: #a16a94;} 23 | .cm-s-tomorrow-night-eighties span.cm-number {color: #a16a94;} 24 | 25 | .cm-s-tomorrow-night-eighties span.cm-property, .cm-s-tomorrow-night-eighties span.cm-attribute {color: #99cc99;} 26 | .cm-s-tomorrow-night-eighties span.cm-keyword {color: #f2777a;} 27 | .cm-s-tomorrow-night-eighties span.cm-string {color: #ffcc66;} 28 | 29 | .cm-s-tomorrow-night-eighties span.cm-variable {color: #99cc99;} 30 | .cm-s-tomorrow-night-eighties span.cm-variable-2 {color: #6699cc;} 31 | .cm-s-tomorrow-night-eighties span.cm-def {color: #f99157;} 32 | .cm-s-tomorrow-night-eighties span.cm-bracket {color: #CCCCCC;} 33 | .cm-s-tomorrow-night-eighties span.cm-tag {color: #f2777a;} 34 | .cm-s-tomorrow-night-eighties span.cm-link {color: #a16a94;} 35 | .cm-s-tomorrow-night-eighties span.cm-error {background: #f2777a; color: #6A6A6A;} 36 | 37 | .cm-s-tomorrow-night-eighties .CodeMirror-activeline-background {background: #343600 !important;} 38 | .cm-s-tomorrow-night-eighties .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} 39 | -------------------------------------------------------------------------------- /static/lib/codemirror/mode/modelica/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Modelica mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 27 | 28 |
29 |

Modelica mode

30 | 31 |
52 | 53 | 62 | 63 |

Simple mode that tries to handle Modelica as well as it can.

64 | 65 |

MIME types defined: text/x-modelica 66 | (Modlica code).

67 |
68 | -------------------------------------------------------------------------------- /books/gulp-book/chapter5.md: -------------------------------------------------------------------------------- 1 | 使用 gulp 编译 LESS 2 | ================ 3 | 4 | [访问论坛获取帮助](https://github.com/nimojs/gulp-book/issues/14) 5 | 6 | 请务必理解如下章节后阅读此章节: 7 | 8 | 1. [安装 Node 和 gulp](chapter1.md) 9 | 2. [使用 gulp 压缩 JS](chapter2.md) 10 | 11 | ---------- 12 | 13 | > Less 是一门 CSS 预处理语言,它扩充了 CSS 语言,增加了诸如变量、混合(mixin)、函数等功能,让 CSS 更易维护。 14 | 15 | 16 | 安装 17 | --- 18 | 19 | ``` 20 | npm install gulp-less 21 | ``` 22 | 23 | 基本用法 24 | ------- 25 | 26 | 你可以 [下载所有示例代码](https://github.com/nimojs/gulp-book/archive/master.zip) - [或在线查看代码](https://github.com/nimojs/gulp-book/tree/master/demo/chapter5) 27 | 28 | ```js 29 | // 获取 gulp 30 | var gulp = require('gulp') 31 | // 获取 gulp-less 模块 32 | var less = require('gulp-less') 33 | 34 | // 编译less 35 | // 在命令行输入 gulp less 启动此任务 36 | gulp.task('less', function () { 37 | // 1. 找到 less 文件 38 | gulp.src('less/**.less') 39 | // 2. 编译为css 40 | .pipe(less()) 41 | // 3. 另存文件 42 | .pipe(gulp.dest('dist/css')) 43 | }); 44 | 45 | // 在命令行使用 gulp auto 启动此任务 46 | gulp.task('auto', function () { 47 | // 监听文件修改,当文件被修改则执行 less 任务 48 | gulp.watch('less/**.less', ['less']) 49 | }) 50 | 51 | // 使用 gulp.task('default') 定义默认任务 52 | // 在命令行使用 gulp 启动 less 任务和 auto 任务 53 | gulp.task('default', ['less', 'auto']) 54 | ``` 55 | 56 | 你可以访问 [gulp-less](https://github.com/plus3network/gulp-less) 以查看更多用法。 57 | 58 | LESS 代码和编译后的CSS代码 59 | ---------- 60 | 61 | [less/a.less](https://github.com/nimojs/gulp-book/tree/master/demo/chapter5/less/a.less) 62 | 63 | ```css 64 | .less{ 65 | a{ 66 | color:pink; 67 | } 68 | } 69 | ``` 70 | [less/import.less](https://github.com/nimojs/gulp-book/tree/master/demo/chapter5/less/import.less) 71 | 72 | 73 | ```css 74 | @import "a.less"; 75 | .import{ 76 | a{ 77 | color:red; 78 | } 79 | } 80 | ``` 81 | [less/a.css](https://github.com/nimojs/gulp-book/tree/master/demo/chapter5/dist/css/a.css) 82 | 83 | ```css 84 | .less a { 85 | color: pink; 86 | } 87 | ``` 88 | [less/import.css](https://github.com/nimojs/gulp-book/tree/master/demo/chapter5/dist/css/import.css) 89 | 90 | ```css 91 | .less a { 92 | color: pink; 93 | } 94 | .import a{ 95 | color: red; 96 | } 97 | ``` 98 | 99 | [访问论坛获取帮助](https://github.com/nimojs/gulp-book/issues/14) 100 | 101 | [接着阅读:使用 gulp 编译 Sass](chapter6.md) 102 | -------------------------------------------------------------------------------- /static/lib/codemirror/theme/xq-light.css: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2011 by MarkLogic Corporation 3 | Author: Mike Brevoort 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | */ 23 | .cm-s-xq-light span.cm-keyword {line-height: 1em; font-weight: bold; color: #5A5CAD; } 24 | .cm-s-xq-light span.cm-atom {color: #6C8CD5;} 25 | .cm-s-xq-light span.cm-number {color: #164;} 26 | .cm-s-xq-light span.cm-def {text-decoration:underline;} 27 | .cm-s-xq-light span.cm-variable {color: black; } 28 | .cm-s-xq-light span.cm-variable-2 {color:black;} 29 | .cm-s-xq-light span.cm-variable-3 {color: black; } 30 | .cm-s-xq-light span.cm-property {} 31 | .cm-s-xq-light span.cm-operator {} 32 | .cm-s-xq-light span.cm-comment {color: #0080FF; font-style: italic;} 33 | .cm-s-xq-light span.cm-string {color: red;} 34 | .cm-s-xq-light span.cm-meta {color: yellow;} 35 | .cm-s-xq-light span.cm-qualifier {color: grey} 36 | .cm-s-xq-light span.cm-builtin {color: #7EA656;} 37 | .cm-s-xq-light span.cm-bracket {color: #cc7;} 38 | .cm-s-xq-light span.cm-tag {color: #3F7F7F;} 39 | .cm-s-xq-light span.cm-attribute {color: #7F007F;} 40 | .cm-s-xq-light span.cm-error {color: #f00;} 41 | 42 | .cm-s-xq-light .CodeMirror-activeline-background {background: #e8f2ff !important;} 43 | .cm-s-xq-light .CodeMirror-matchingbracket {outline:1px solid grey;color:black !important;background:yellow;} --------------------------------------------------------------------------------