├── .gitattributes ├── .gitignore ├── README.md ├── app ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-36.pyc │ ├── commands.cpython-36.pyc │ ├── fakes.cpython-36.pyc │ ├── models.cpython-36.pyc │ └── timer.cpython-36.pyc ├── auth │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-36.pyc │ │ ├── errors.cpython-36.pyc │ │ ├── forms.cpython-36.pyc │ │ └── views.cpython-36.pyc │ ├── errors.py │ ├── forms.py │ └── views.py ├── commands.py ├── fakes.py ├── main │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-36.pyc │ │ ├── errors.cpython-36.pyc │ │ ├── forms.cpython-36.pyc │ │ └── views.cpython-36.pyc │ ├── errors.py │ ├── forms.py │ └── views.py ├── models.py ├── static │ ├── editormd │ │ ├── .gitignore │ │ ├── .jshintrc │ │ ├── BUGS.md │ │ ├── CHANGE.md │ │ ├── Gulpfile.js │ │ ├── LICENSE │ │ ├── README.md │ │ ├── bower.json │ │ ├── css │ │ │ ├── editormd.css │ │ │ ├── editormd.logo.css │ │ │ ├── editormd.logo.min.css │ │ │ ├── editormd.min.css │ │ │ ├── editormd.preview.css │ │ │ └── editormd.preview.min.css │ │ ├── docs │ │ │ ├── editormd.js.html │ │ │ ├── fonts │ │ │ │ ├── OpenSans-Bold-webfont.eot │ │ │ │ ├── OpenSans-Bold-webfont.svg │ │ │ │ ├── OpenSans-Bold-webfont.woff │ │ │ │ ├── OpenSans-BoldItalic-webfont.eot │ │ │ │ ├── OpenSans-BoldItalic-webfont.svg │ │ │ │ ├── OpenSans-BoldItalic-webfont.woff │ │ │ │ ├── OpenSans-Italic-webfont.eot │ │ │ │ ├── OpenSans-Italic-webfont.svg │ │ │ │ ├── OpenSans-Italic-webfont.woff │ │ │ │ ├── OpenSans-Light-webfont.eot │ │ │ │ ├── OpenSans-Light-webfont.svg │ │ │ │ ├── OpenSans-Light-webfont.woff │ │ │ │ ├── OpenSans-LightItalic-webfont.eot │ │ │ │ ├── OpenSans-LightItalic-webfont.svg │ │ │ │ ├── OpenSans-LightItalic-webfont.woff │ │ │ │ ├── OpenSans-Regular-webfont.eot │ │ │ │ ├── OpenSans-Regular-webfont.svg │ │ │ │ └── OpenSans-Regular-webfont.woff │ │ │ ├── index.html │ │ │ ├── scripts │ │ │ │ ├── linenumber.js │ │ │ │ └── prettify │ │ │ │ │ ├── Apache-License-2.0.txt │ │ │ │ │ ├── lang-css.js │ │ │ │ │ └── prettify.js │ │ │ └── styles │ │ │ │ ├── jsdoc-default.css │ │ │ │ ├── prettify-jsdoc.css │ │ │ │ └── prettify-tomorrow.css │ │ ├── editormd.amd.js │ │ ├── editormd.amd.min.js │ │ ├── editormd.js │ │ ├── editormd.min.js │ │ ├── examples │ │ │ ├── @links.html │ │ │ ├── auto-height.html │ │ │ ├── change-mode.html │ │ │ ├── code-fold.html │ │ │ ├── css │ │ │ │ └── style.css │ │ │ ├── custom-keyboard-shortcuts.html │ │ │ ├── custom-toolbar.html │ │ │ ├── define-plugin.html │ │ │ ├── delay-renderer-preview.html │ │ │ ├── dynamic-create-editormd.html │ │ │ ├── emoji.html │ │ │ ├── extends.html │ │ │ ├── external-use.html │ │ │ ├── flowchart.html │ │ │ ├── form-get-value.html │ │ │ ├── full.html │ │ │ ├── goto-line.html │ │ │ ├── html-preview-markdown-to-html-custom-toc-container.html │ │ │ ├── html-preview-markdown-to-html.html │ │ │ ├── html-tags-decode.html │ │ │ ├── image-cross-domain-upload.html │ │ │ ├── image-upload.html │ │ │ ├── images │ │ │ │ ├── 4.jpg │ │ │ │ ├── 7.jpg │ │ │ │ ├── 8.jpg │ │ │ │ └── editormd-screenshot.png │ │ │ ├── index.html │ │ │ ├── js │ │ │ │ ├── jquery.min.js │ │ │ │ ├── require.min.js │ │ │ │ ├── sea.js │ │ │ │ ├── seajs-main.js │ │ │ │ └── zepto.min.js │ │ │ ├── katex.html │ │ │ ├── manually-load-modules.html │ │ │ ├── multi-editormd.html │ │ │ ├── multi-languages.html │ │ │ ├── on-off.html │ │ │ ├── onchange.html │ │ │ ├── onfullscreen.html │ │ │ ├── onload.html │ │ │ ├── onpreviewing-onpreviewed.html │ │ │ ├── onresize.html │ │ │ ├── onscroll-onpreviewscroll.html │ │ │ ├── onwatch-onunwatch.html │ │ │ ├── page-break.html │ │ │ ├── php │ │ │ │ ├── cross-domain-upload.php │ │ │ │ ├── editormd.uploader.class.php │ │ │ │ ├── post.php │ │ │ │ ├── upload.php │ │ │ │ └── upload_callback.html │ │ │ ├── readonly.html │ │ │ ├── resettings.html │ │ │ ├── search-replace.html │ │ │ ├── sequence-diagram.html │ │ │ ├── set-get-replace-selection.html │ │ │ ├── simple.html │ │ │ ├── sync-scrolling.html │ │ │ ├── task-lists.html │ │ │ ├── test.md │ │ │ ├── themes.html │ │ │ ├── toc.html │ │ │ ├── toolbar-auto-fixed.html │ │ │ ├── use-requirejs.html │ │ │ ├── use-seajs.html │ │ │ └── use-zepto.html │ │ ├── fonts │ │ │ ├── FontAwesome.otf │ │ │ ├── editormd-logo.eot │ │ │ ├── editormd-logo.svg │ │ │ ├── editormd-logo.ttf │ │ │ ├── editormd-logo.woff │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.svg │ │ │ ├── fontawesome-webfont.ttf │ │ │ ├── fontawesome-webfont.woff │ │ │ └── fontawesome-webfont.woff2 │ │ ├── images │ │ │ ├── loading.gif │ │ │ ├── loading@2x.gif │ │ │ ├── loading@3x.gif │ │ │ └── logos │ │ │ │ ├── editormd-favicon-16x16.ico │ │ │ │ ├── editormd-favicon-24x24.ico │ │ │ │ ├── editormd-favicon-32x32.ico │ │ │ │ ├── editormd-favicon-48x48.ico │ │ │ │ ├── editormd-favicon-64x64.ico │ │ │ │ ├── editormd-logo-114x114.png │ │ │ │ ├── editormd-logo-120x120.png │ │ │ │ ├── editormd-logo-144x144.png │ │ │ │ ├── editormd-logo-16x16.png │ │ │ │ ├── editormd-logo-180x180.png │ │ │ │ ├── editormd-logo-240x240.png │ │ │ │ ├── editormd-logo-24x24.png │ │ │ │ ├── editormd-logo-320x320.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 │ │ │ │ └── vi.png │ │ ├── languages │ │ │ ├── en.js │ │ │ └── zh-tw.js │ │ ├── lib │ │ │ ├── codemirror │ │ │ │ ├── AUTHORS │ │ │ │ ├── LICENSE │ │ │ │ ├── README.md │ │ │ │ ├── addon │ │ │ │ │ ├── comment │ │ │ │ │ │ ├── comment.js │ │ │ │ │ │ └── continuecomment.js │ │ │ │ │ ├── dialog │ │ │ │ │ │ ├── dialog.css │ │ │ │ │ │ └── dialog.js │ │ │ │ │ ├── display │ │ │ │ │ │ ├── fullscreen.css │ │ │ │ │ │ ├── fullscreen.js │ │ │ │ │ │ ├── panel.js │ │ │ │ │ │ ├── placeholder.js │ │ │ │ │ │ └── rulers.js │ │ │ │ │ ├── edit │ │ │ │ │ │ ├── closebrackets.js │ │ │ │ │ │ ├── closetag.js │ │ │ │ │ │ ├── continuelist.js │ │ │ │ │ │ ├── matchbrackets.js │ │ │ │ │ │ ├── matchtags.js │ │ │ │ │ │ └── trailingspace.js │ │ │ │ │ ├── fold │ │ │ │ │ │ ├── brace-fold.js │ │ │ │ │ │ ├── comment-fold.js │ │ │ │ │ │ ├── foldcode.js │ │ │ │ │ │ ├── foldgutter.css │ │ │ │ │ │ ├── foldgutter.js │ │ │ │ │ │ ├── indent-fold.js │ │ │ │ │ │ ├── markdown-fold.js │ │ │ │ │ │ └── xml-fold.js │ │ │ │ │ ├── hint │ │ │ │ │ │ ├── anyword-hint.js │ │ │ │ │ │ ├── css-hint.js │ │ │ │ │ │ ├── html-hint.js │ │ │ │ │ │ ├── javascript-hint.js │ │ │ │ │ │ ├── show-hint.css │ │ │ │ │ │ ├── show-hint.js │ │ │ │ │ │ ├── sql-hint.js │ │ │ │ │ │ └── xml-hint.js │ │ │ │ │ ├── lint │ │ │ │ │ │ ├── coffeescript-lint.js │ │ │ │ │ │ ├── css-lint.js │ │ │ │ │ │ ├── javascript-lint.js │ │ │ │ │ │ ├── json-lint.js │ │ │ │ │ │ ├── lint.css │ │ │ │ │ │ ├── lint.js │ │ │ │ │ │ └── yaml-lint.js │ │ │ │ │ ├── merge │ │ │ │ │ │ ├── merge.css │ │ │ │ │ │ └── merge.js │ │ │ │ │ ├── mode │ │ │ │ │ │ ├── loadmode.js │ │ │ │ │ │ ├── multiplex.js │ │ │ │ │ │ ├── multiplex_test.js │ │ │ │ │ │ ├── overlay.js │ │ │ │ │ │ └── simple.js │ │ │ │ │ ├── runmode │ │ │ │ │ │ ├── colorize.js │ │ │ │ │ │ ├── runmode-standalone.js │ │ │ │ │ │ ├── runmode.js │ │ │ │ │ │ └── runmode.node.js │ │ │ │ │ ├── scroll │ │ │ │ │ │ ├── annotatescrollbar.js │ │ │ │ │ │ ├── scrollpastend.js │ │ │ │ │ │ ├── simplescrollbars.css │ │ │ │ │ │ └── simplescrollbars.js │ │ │ │ │ ├── search │ │ │ │ │ │ ├── match-highlighter.js │ │ │ │ │ │ ├── matchesonscrollbar.css │ │ │ │ │ │ ├── matchesonscrollbar.js │ │ │ │ │ │ ├── search.js │ │ │ │ │ │ └── searchcursor.js │ │ │ │ │ ├── selection │ │ │ │ │ │ ├── active-line.js │ │ │ │ │ │ ├── mark-selection.js │ │ │ │ │ │ └── selection-pointer.js │ │ │ │ │ ├── tern │ │ │ │ │ │ ├── tern.css │ │ │ │ │ │ ├── tern.js │ │ │ │ │ │ └── worker.js │ │ │ │ │ └── wrap │ │ │ │ │ │ └── hardwrap.js │ │ │ │ ├── addons.min.js │ │ │ │ ├── bower.json │ │ │ │ ├── codemirror.min.css │ │ │ │ ├── codemirror.min.js │ │ │ │ ├── lib │ │ │ │ │ ├── codemirror.css │ │ │ │ │ └── codemirror.js │ │ │ │ ├── mode │ │ │ │ │ ├── apl │ │ │ │ │ │ ├── apl.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── asterisk │ │ │ │ │ │ ├── asterisk.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── clike │ │ │ │ │ │ ├── clike.js │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── scala.html │ │ │ │ │ ├── clojure │ │ │ │ │ │ ├── clojure.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── cobol │ │ │ │ │ │ ├── cobol.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── coffeescript │ │ │ │ │ │ ├── coffeescript.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── commonlisp │ │ │ │ │ │ ├── commonlisp.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── css │ │ │ │ │ │ ├── css.js │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── less.html │ │ │ │ │ │ ├── less_test.js │ │ │ │ │ │ ├── scss.html │ │ │ │ │ │ ├── scss_test.js │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── cypher │ │ │ │ │ │ ├── cypher.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── d │ │ │ │ │ │ ├── d.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── dart │ │ │ │ │ │ ├── dart.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── diff │ │ │ │ │ │ ├── diff.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── django │ │ │ │ │ │ ├── django.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── dockerfile │ │ │ │ │ │ ├── dockerfile.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── dtd │ │ │ │ │ │ ├── dtd.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── dylan │ │ │ │ │ │ ├── dylan.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── ebnf │ │ │ │ │ │ ├── ebnf.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── ecl │ │ │ │ │ │ ├── ecl.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── eiffel │ │ │ │ │ │ ├── eiffel.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── erlang │ │ │ │ │ │ ├── erlang.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── forth │ │ │ │ │ │ ├── forth.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── fortran │ │ │ │ │ │ ├── fortran.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── gas │ │ │ │ │ │ ├── gas.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── gfm │ │ │ │ │ │ ├── gfm.js │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── gherkin │ │ │ │ │ │ ├── gherkin.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── go │ │ │ │ │ │ ├── go.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── groovy │ │ │ │ │ │ ├── groovy.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── haml │ │ │ │ │ │ ├── haml.js │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── haskell │ │ │ │ │ │ ├── haskell.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── haxe │ │ │ │ │ │ ├── haxe.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── htmlembedded │ │ │ │ │ │ ├── htmlembedded.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── htmlmixed │ │ │ │ │ │ ├── htmlmixed.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── http │ │ │ │ │ │ ├── http.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── idl │ │ │ │ │ │ ├── idl.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── index.html │ │ │ │ │ ├── jade │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── jade.js │ │ │ │ │ ├── javascript │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── javascript.js │ │ │ │ │ │ ├── json-ld.html │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── typescript.html │ │ │ │ │ ├── jinja2 │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── jinja2.js │ │ │ │ │ ├── julia │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── julia.js │ │ │ │ │ ├── kotlin │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── kotlin.js │ │ │ │ │ ├── livescript │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── livescript.js │ │ │ │ │ ├── lua │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── lua.js │ │ │ │ │ ├── markdown │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── markdown.js │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── meta.js │ │ │ │ │ ├── mirc │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── mirc.js │ │ │ │ │ ├── mllike │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── mllike.js │ │ │ │ │ ├── modelica │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── modelica.js │ │ │ │ │ ├── nginx │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── nginx.js │ │ │ │ │ ├── ntriples │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── ntriples.js │ │ │ │ │ ├── octave │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── octave.js │ │ │ │ │ ├── pascal │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── pascal.js │ │ │ │ │ ├── pegjs │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── pegjs.js │ │ │ │ │ ├── perl │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── perl.js │ │ │ │ │ ├── php │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── php.js │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── pig │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── pig.js │ │ │ │ │ ├── properties │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── properties.js │ │ │ │ │ ├── puppet │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── puppet.js │ │ │ │ │ ├── python │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── python.js │ │ │ │ │ ├── q │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── q.js │ │ │ │ │ ├── r │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── r.js │ │ │ │ │ ├── rpm │ │ │ │ │ │ ├── changes │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── rpm.js │ │ │ │ │ ├── rst │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── rst.js │ │ │ │ │ ├── ruby │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── ruby.js │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── rust │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── rust.js │ │ │ │ │ ├── sass │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── sass.js │ │ │ │ │ ├── scheme │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── scheme.js │ │ │ │ │ ├── shell │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── shell.js │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── sieve │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── sieve.js │ │ │ │ │ ├── slim │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── slim.js │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── smalltalk │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── smalltalk.js │ │ │ │ │ ├── smarty │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── smarty.js │ │ │ │ │ ├── smartymixed │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── smartymixed.js │ │ │ │ │ ├── solr │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── solr.js │ │ │ │ │ ├── soy │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── soy.js │ │ │ │ │ ├── sparql │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── sparql.js │ │ │ │ │ ├── spreadsheet │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── spreadsheet.js │ │ │ │ │ ├── sql │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── sql.js │ │ │ │ │ ├── stex │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── stex.js │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── stylus │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── stylus.js │ │ │ │ │ ├── tcl │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── tcl.js │ │ │ │ │ ├── textile │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── textile.js │ │ │ │ │ ├── tiddlywiki │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── tiddlywiki.css │ │ │ │ │ │ └── tiddlywiki.js │ │ │ │ │ ├── tiki │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── tiki.css │ │ │ │ │ │ └── tiki.js │ │ │ │ │ ├── toml │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── toml.js │ │ │ │ │ ├── tornado │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── tornado.js │ │ │ │ │ ├── turtle │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── turtle.js │ │ │ │ │ ├── vb │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── vb.js │ │ │ │ │ ├── vbscript │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── vbscript.js │ │ │ │ │ ├── velocity │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── velocity.js │ │ │ │ │ ├── verilog │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── verilog.js │ │ │ │ │ ├── xml │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── xml.js │ │ │ │ │ ├── xquery │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── xquery.js │ │ │ │ │ ├── yaml │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── yaml.js │ │ │ │ │ └── z80 │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── z80.js │ │ │ │ ├── modes.min.js │ │ │ │ ├── package.json │ │ │ │ └── theme │ │ │ │ │ ├── 3024-day.css │ │ │ │ │ ├── 3024-night.css │ │ │ │ │ ├── ambiance-mobile.css │ │ │ │ │ ├── ambiance.css │ │ │ │ │ ├── base16-dark.css │ │ │ │ │ ├── base16-light.css │ │ │ │ │ ├── blackboard.css │ │ │ │ │ ├── cobalt.css │ │ │ │ │ ├── colorforth.css │ │ │ │ │ ├── eclipse.css │ │ │ │ │ ├── elegant.css │ │ │ │ │ ├── erlang-dark.css │ │ │ │ │ ├── lesser-dark.css │ │ │ │ │ ├── mbo.css │ │ │ │ │ ├── mdn-like.css │ │ │ │ │ ├── midnight.css │ │ │ │ │ ├── monokai.css │ │ │ │ │ ├── neat.css │ │ │ │ │ ├── neo.css │ │ │ │ │ ├── night.css │ │ │ │ │ ├── paraiso-dark.css │ │ │ │ │ ├── paraiso-light.css │ │ │ │ │ ├── pastel-on-dark.css │ │ │ │ │ ├── rubyblue.css │ │ │ │ │ ├── solarized.css │ │ │ │ │ ├── the-matrix.css │ │ │ │ │ ├── tomorrow-night-bright.css │ │ │ │ │ ├── tomorrow-night-eighties.css │ │ │ │ │ ├── twilight.css │ │ │ │ │ ├── vibrant-ink.css │ │ │ │ │ ├── xq-dark.css │ │ │ │ │ ├── xq-light.css │ │ │ │ │ └── zenburn.css │ │ │ ├── flowchart.min.js │ │ │ ├── jquery.flowchart.min.js │ │ │ ├── marked.min.js │ │ │ ├── prettify.min.js │ │ │ ├── raphael.min.js │ │ │ ├── sequence-diagram.min.js │ │ │ └── underscore.min.js │ │ ├── package.json │ │ ├── plugins │ │ │ ├── code-block-dialog │ │ │ │ └── code-block-dialog.js │ │ │ ├── emoji-dialog │ │ │ │ ├── emoji-dialog.js │ │ │ │ └── emoji.json │ │ │ ├── goto-line-dialog │ │ │ │ └── goto-line-dialog.js │ │ │ ├── help-dialog │ │ │ │ ├── help-dialog.js │ │ │ │ └── help.md │ │ │ ├── html-entities-dialog │ │ │ │ ├── html-entities-dialog.js │ │ │ │ └── html-entities.json │ │ │ ├── image-dialog │ │ │ │ └── image-dialog.js │ │ │ ├── link-dialog │ │ │ │ └── link-dialog.js │ │ │ ├── plugin-template.js │ │ │ ├── preformatted-text-dialog │ │ │ │ └── preformatted-text-dialog.js │ │ │ ├── reference-link-dialog │ │ │ │ └── reference-link-dialog.js │ │ │ ├── table-dialog │ │ │ │ └── table-dialog.js │ │ │ └── test-plugin │ │ │ │ └── test-plugin.js │ │ ├── scss │ │ │ ├── editormd.codemirror.scss │ │ │ ├── editormd.dialog.scss │ │ │ ├── editormd.form.scss │ │ │ ├── editormd.grid.scss │ │ │ ├── editormd.logo.scss │ │ │ ├── editormd.menu.scss │ │ │ ├── editormd.preview.scss │ │ │ ├── editormd.preview.themes.scss │ │ │ ├── editormd.scss │ │ │ ├── editormd.tab.scss │ │ │ ├── editormd.themes.scss │ │ │ ├── font-awesome.scss │ │ │ ├── github-markdown.scss │ │ │ ├── lib │ │ │ │ ├── prefixes.scss │ │ │ │ └── variables.scss │ │ │ └── prettify.scss │ │ ├── src │ │ │ └── editormd.js │ │ └── tests │ │ │ ├── bootstrap-test.html │ │ │ ├── codemirror-searchbox-test.html │ │ │ ├── codemirror-test.html │ │ │ ├── css │ │ │ ├── bootstrap-theme.min.css │ │ │ └── bootstrap.min.css │ │ │ ├── js │ │ │ ├── bootstrap.min.js │ │ │ └── searchbox.js │ │ │ ├── katex-tests.html │ │ │ ├── marked-@at-test.html │ │ │ ├── marked-emoji-test.html │ │ │ ├── marked-heading-link-test.html │ │ │ ├── marked-todo-list-test.html │ │ │ └── qunit │ │ │ ├── qunit-1.16.0.css │ │ │ └── qunit-1.16.0.js │ ├── highlight │ │ ├── highlight.pack.js │ │ ├── highlightjs-line-numbers.min.js │ │ └── styles │ │ │ ├── atom-one-dark-reasonable.css │ │ │ ├── atom-one-dark.css │ │ │ ├── atom-one-light.css │ │ │ └── vs2015.css │ ├── img │ │ ├── 2021_05_24.jpg │ │ ├── avata.jpg │ │ ├── comment_avata.jpg │ │ ├── default_avata_bg.jpg │ │ ├── error.gif │ │ ├── favicon.ico │ │ └── logo.png │ ├── jquery │ │ ├── jquery.js │ │ ├── jquery.min.js │ │ └── jquery.min.map │ ├── layui │ │ ├── css │ │ │ ├── layui.css │ │ │ ├── layui.mobile.css │ │ │ └── modules │ │ │ │ ├── code.css │ │ │ │ ├── laydate │ │ │ │ └── default │ │ │ │ │ └── laydate.css │ │ │ │ └── layer │ │ │ │ └── default │ │ │ │ ├── icon-ext.png │ │ │ │ ├── icon.png │ │ │ │ ├── layer.css │ │ │ │ ├── loading-0.gif │ │ │ │ ├── loading-1.gif │ │ │ │ └── loading-2.gif │ │ ├── font │ │ │ ├── iconfont.eot │ │ │ ├── iconfont.svg │ │ │ ├── iconfont.ttf │ │ │ ├── iconfont.woff │ │ │ └── iconfont.woff2 │ │ ├── images │ │ │ └── face │ │ │ │ ├── 0.gif │ │ │ │ ├── 1.gif │ │ │ │ ├── 10.gif │ │ │ │ ├── 11.gif │ │ │ │ ├── 12.gif │ │ │ │ ├── 13.gif │ │ │ │ ├── 14.gif │ │ │ │ ├── 15.gif │ │ │ │ ├── 16.gif │ │ │ │ ├── 17.gif │ │ │ │ ├── 18.gif │ │ │ │ ├── 19.gif │ │ │ │ ├── 2.gif │ │ │ │ ├── 20.gif │ │ │ │ ├── 21.gif │ │ │ │ ├── 22.gif │ │ │ │ ├── 23.gif │ │ │ │ ├── 24.gif │ │ │ │ ├── 25.gif │ │ │ │ ├── 26.gif │ │ │ │ ├── 27.gif │ │ │ │ ├── 28.gif │ │ │ │ ├── 29.gif │ │ │ │ ├── 3.gif │ │ │ │ ├── 30.gif │ │ │ │ ├── 31.gif │ │ │ │ ├── 32.gif │ │ │ │ ├── 33.gif │ │ │ │ ├── 34.gif │ │ │ │ ├── 35.gif │ │ │ │ ├── 36.gif │ │ │ │ ├── 37.gif │ │ │ │ ├── 38.gif │ │ │ │ ├── 39.gif │ │ │ │ ├── 4.gif │ │ │ │ ├── 40.gif │ │ │ │ ├── 41.gif │ │ │ │ ├── 42.gif │ │ │ │ ├── 43.gif │ │ │ │ ├── 44.gif │ │ │ │ ├── 45.gif │ │ │ │ ├── 46.gif │ │ │ │ ├── 47.gif │ │ │ │ ├── 48.gif │ │ │ │ ├── 49.gif │ │ │ │ ├── 5.gif │ │ │ │ ├── 50.gif │ │ │ │ ├── 51.gif │ │ │ │ ├── 52.gif │ │ │ │ ├── 53.gif │ │ │ │ ├── 54.gif │ │ │ │ ├── 55.gif │ │ │ │ ├── 56.gif │ │ │ │ ├── 57.gif │ │ │ │ ├── 58.gif │ │ │ │ ├── 59.gif │ │ │ │ ├── 6.gif │ │ │ │ ├── 60.gif │ │ │ │ ├── 61.gif │ │ │ │ ├── 62.gif │ │ │ │ ├── 63.gif │ │ │ │ ├── 64.gif │ │ │ │ ├── 65.gif │ │ │ │ ├── 66.gif │ │ │ │ ├── 67.gif │ │ │ │ ├── 68.gif │ │ │ │ ├── 69.gif │ │ │ │ ├── 7.gif │ │ │ │ ├── 70.gif │ │ │ │ ├── 71.gif │ │ │ │ ├── 8.gif │ │ │ │ └── 9.gif │ │ ├── lay │ │ │ └── modules │ │ │ │ ├── carousel.js │ │ │ │ ├── code.js │ │ │ │ ├── colorpicker.js │ │ │ │ ├── element.js │ │ │ │ ├── flow.js │ │ │ │ ├── form.js │ │ │ │ ├── jquery.js │ │ │ │ ├── laydate.js │ │ │ │ ├── layedit.js │ │ │ │ ├── layer.js │ │ │ │ ├── laypage.js │ │ │ │ ├── laytpl.js │ │ │ │ ├── mobile.js │ │ │ │ ├── rate.js │ │ │ │ ├── slider.js │ │ │ │ ├── table.js │ │ │ │ ├── transfer.js │ │ │ │ ├── tree.js │ │ │ │ ├── upload.js │ │ │ │ └── util.js │ │ ├── layui.all.js │ │ └── layui.js │ ├── main.css │ └── uploads │ │ └── 2021 │ │ └── 04 │ │ ├── Qt离线安装包下载20210411131218.png │ │ ├── avata220210413010442.jpg │ │ ├── avata220210413131540.jpg │ │ ├── bash20210413131338.png │ │ ├── df20210411132216.PNG │ │ ├── fdtab20210411132303.PNG │ │ ├── frame20210411131827.png │ │ ├── gdb报错20210411130730.JPG │ │ ├── git-command20210412001641.jpg │ │ ├── git-command20210413131348.jpg │ │ ├── github创建仓库20210413131324.PNG │ │ ├── glibc错误20210411130743.JPG │ │ ├── kodexplorer20210411131555.PNG │ │ ├── login20210411131742.PNG │ │ ├── lsblk20210411132200.PNG │ │ ├── net20210411132328.PNG │ │ ├── nextcloud20210411131506.PNG │ │ ├── pydio20210411131605.PNG │ │ ├── raspberry-pi-os镜像20210411131711.PNG │ │ ├── raspi-config20210411132047.PNG │ │ ├── raspi-config220210411132058.PNG │ │ ├── remote-development20210411131023.png │ │ ├── seafile20210411131545.PNG │ │ ├── sources20210411132140.list │ │ ├── ssh20210411131721.PNG │ │ ├── title20210411131638.PNG │ │ ├── uuid20210411132249.PNG │ │ ├── vnc120210411132118.PNG │ │ ├── wrtest20210411132340.PNG │ │ ├── 前台正文20210411202134.png │ │ ├── 前台留言20210411202209.png │ │ ├── 前台笔记20210411202152.png │ │ ├── 前台首页20210411202117.png │ │ ├── 前台首页220210411202534.png │ │ ├── 后台撰写页20210411202257.png │ │ ├── 后台管理页20210411202312.png │ │ ├── 后台首页20210411202244.png │ │ ├── 安装脚本20210411131734.PNG │ │ ├── 官网下载源码20210411131204.PNG │ │ ├── 最终20210411131416.PNG │ │ ├── 查看20210411131408.PNG │ │ ├── 结构20210411130635.png │ │ ├── 缺少jre20210411131229.png │ │ ├── 网卡20210411131126.JPG │ │ ├── 远程插件20210411131113.JPG │ │ └── 连接成功20210411131048.JPG ├── templates │ ├── 404.html │ ├── 500.html │ ├── _macros.html │ ├── _sidebar.html │ ├── _sidebar_note.html │ ├── about.html │ ├── admin │ │ ├── base.html │ │ ├── categorys.html │ │ ├── comments.html │ │ ├── editnote.html │ │ ├── editpost.html │ │ ├── index.html │ │ ├── login.html │ │ ├── messages.html │ │ ├── notes.html │ │ ├── posts.html │ │ ├── setting.html │ │ ├── tags.html │ │ ├── writenote.html │ │ └── writepost.html │ ├── archive.html │ ├── base.html │ ├── category.html │ ├── category_note.html │ ├── index.html │ ├── message.html │ ├── note.html │ ├── post.html │ ├── search_note.html │ ├── search_post.html │ ├── tag.html │ └── tag_note.html └── timer.py ├── blog.sqlite ├── config.py ├── manage.py ├── requirements.txt ├── snapshot ├── 前台正文.png ├── 前台留言.png ├── 前台笔记.png ├── 前台首页.png ├── 前台首页2.png ├── 后台撰写页.png ├── 后台管理页.png └── 后台首页.png ├── uwsgi.ini ├── uwsgi_nginx.conf └── windows下运行项目需要 ├── readme.txt └── sqlite3.dll /.gitattributes: -------------------------------------------------------------------------------- 1 | *.js linguist-language=Python 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /__pycache__ 2 | /.idea 3 | /venv -------------------------------------------------------------------------------- /app/__init__.py: -------------------------------------------------------------------------------- 1 | # -*— coding:utf-8 -*— 2 | from flask import Flask 3 | from flask_sqlalchemy import SQLAlchemy 4 | from flask_login import LoginManager 5 | from flask_apscheduler import APScheduler 6 | 7 | from config import config 8 | from config import SchedulerConfig 9 | 10 | db = SQLAlchemy() 11 | login_manager = LoginManager() 12 | login_manager.session_protection = 'strong' 13 | login_manager.login_message = '请先登录' 14 | login_manager.login_view = 'auth.login' 15 | scheduler = APScheduler() 16 | 17 | def create_app(config_name): 18 | # 工厂方式创建 flask 实例 19 | app = Flask(__name__,static_folder='static', static_url_path='') 20 | 21 | # 从配置类中加载配置 22 | app.config.from_object(config[config_name]) 23 | config[config_name].init_app(app) 24 | app.config.from_object(SchedulerConfig()) 25 | 26 | # 初始化用到的各个模块(关联到当前app) 27 | db.init_app(app) 28 | db.app = app 29 | login_manager.init_app(app) 30 | scheduler.init_app(app) 31 | scheduler.start() 32 | 33 | # 注册蓝图(导入包初始化模块__init__中的内容时,需要加‘.’) 34 | from .main import main as main_bp 35 | from .auth import auth as auth_bp 36 | app.register_blueprint(main_bp) 37 | app.register_blueprint(auth_bp,url_prefix='/admin') 38 | 39 | # 返回 flask 实例 40 | return app 41 | 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /app/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /app/__pycache__/commands.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/__pycache__/commands.cpython-36.pyc -------------------------------------------------------------------------------- /app/__pycache__/fakes.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/__pycache__/fakes.cpython-36.pyc -------------------------------------------------------------------------------- /app/__pycache__/models.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/__pycache__/models.cpython-36.pyc -------------------------------------------------------------------------------- /app/__pycache__/timer.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/__pycache__/timer.cpython-36.pyc -------------------------------------------------------------------------------- /app/auth/__init__.py: -------------------------------------------------------------------------------- 1 | # -*— coding:utf-8 -*— 2 | from flask import Blueprint 3 | 4 | auth = Blueprint('auth',__name__) 5 | 6 | from . import views, forms, errors 7 | -------------------------------------------------------------------------------- /app/auth/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/auth/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /app/auth/__pycache__/errors.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/auth/__pycache__/errors.cpython-36.pyc -------------------------------------------------------------------------------- /app/auth/__pycache__/forms.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/auth/__pycache__/forms.cpython-36.pyc -------------------------------------------------------------------------------- /app/auth/__pycache__/views.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/auth/__pycache__/views.cpython-36.pyc -------------------------------------------------------------------------------- /app/auth/errors.py: -------------------------------------------------------------------------------- 1 | # -*— coding:utf-8 -*— 2 | from flask import render_template 3 | from . import auth 4 | 5 | @auth.app_errorhandler(404) 6 | def page_no_found(e): 7 | return render_template('404.html'),404 8 | 9 | @auth.app_errorhandler(500) 10 | def internal_server_error(e): 11 | return render_template('500.html'),500 -------------------------------------------------------------------------------- /app/auth/forms.py: -------------------------------------------------------------------------------- 1 | # -*— coding:utf-8 -*— 2 | from flask_wtf import FlaskForm 3 | from wtforms import StringField, SubmitField, SelectField, PasswordField, TextAreaField 4 | from wtforms.validators import DataRequired,Length 5 | from app.models import Category 6 | 7 | 8 | class LoginForm(FlaskForm): 9 | username = StringField('用户名', validators=[DataRequired(), Length(max=64)]) 10 | password = PasswordField('密码', validators=[DataRequired()]) 11 | submit = SubmitField('登录') 12 | 13 | 14 | class SettingForm(FlaskForm): 15 | title = StringField('标题', validators=[DataRequired(),Length(max=64)]) 16 | subtitle = StringField('副标题', validators=[Length(max=64)]) 17 | nickname = StringField('昵称', validators=[DataRequired(), Length(max=64)]) 18 | about = TextAreaField('关于',validators=[DataRequired()]) 19 | old_password = PasswordField('原密码') 20 | new_password = PasswordField('新密码') 21 | submit = SubmitField('修改') 22 | 23 | 24 | class PostForm(FlaskForm): 25 | title = StringField('标题', validators=[DataRequired(), Length(max=256)]) 26 | content_md = TextAreaField('正文', validators=[DataRequired()]) 27 | category = SelectField('分类', coerce=int) 28 | tags = StringField('标签') 29 | submit = SubmitField('发布内容') 30 | 31 | def __init__(self): 32 | super(PostForm, self).__init__() 33 | self.category.choices = [(c.id, c.name) for c in Category.query.order_by('id')] 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /app/main/__init__.py: -------------------------------------------------------------------------------- 1 | # -*— coding:utf-8 -*— 2 | from flask import Blueprint 3 | 4 | main = Blueprint('main',__name__) 5 | 6 | from . import views, forms, errors 7 | -------------------------------------------------------------------------------- /app/main/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/main/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /app/main/__pycache__/errors.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/main/__pycache__/errors.cpython-36.pyc -------------------------------------------------------------------------------- /app/main/__pycache__/forms.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/main/__pycache__/forms.cpython-36.pyc -------------------------------------------------------------------------------- /app/main/__pycache__/views.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/main/__pycache__/views.cpython-36.pyc -------------------------------------------------------------------------------- /app/main/errors.py: -------------------------------------------------------------------------------- 1 | # -*— coding:utf-8 -*— 2 | from flask import render_template 3 | from . import main 4 | 5 | @main.app_errorhandler(404) 6 | def page_no_found(e): 7 | return render_template('404.html'),404 8 | 9 | @main.app_errorhandler(500) 10 | def internal_server_error(e): 11 | return render_template('500.html'),500 -------------------------------------------------------------------------------- /app/main/forms.py: -------------------------------------------------------------------------------- 1 | # -*— coding:utf-8 -*— 2 | from flask_wtf import FlaskForm 3 | from wtforms import StringField, SubmitField 4 | from wtforms.validators import DataRequired 5 | 6 | 7 | class SearchForm(FlaskForm): 8 | keyword = StringField('关键词', validators=[DataRequired()]) 9 | submit = SubmitField('搜索') 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/static/editormd/.gitignore: -------------------------------------------------------------------------------- 1 | logs 2 | *.log 3 | *.pid 4 | *.seed 5 | node_modules/ 6 | .sass-cache/ 7 | research/ 8 | test/ 9 | backup/ 10 | examples/uploads/**/* 11 | *.bat 12 | *.sh 13 | .project 14 | .url 15 | css/*.map -------------------------------------------------------------------------------- /app/static/editormd/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "esnext": true, 3 | "bitwise": true, 4 | "camelcase": true, 5 | "curly": true, 6 | "eqeqeq": true, 7 | "immed": true, 8 | "indent": 4, 9 | "latedef": true, 10 | "newcap": true, 11 | "noarg": true, 12 | "quotmark": "double", 13 | "regexp": true, 14 | "undef": true, 15 | "unused": true, 16 | "strict": true, 17 | "trailing": true, 18 | "smarttabs": true, 19 | "white": true 20 | } -------------------------------------------------------------------------------- /app/static/editormd/BUGS.md: -------------------------------------------------------------------------------- 1 | #Bugs 2 | 3 | > 说明:删除线表示已经解决。 4 | 5 | ####IE8 6 | 7 | - ~~不能加载;~~ 8 | - flowChart(流程图)、sequenceDiagram(序列图)不支持IE8; 9 | - ~~不支持Markdown转HTML页面解析预览;~~ 10 | 11 | ####IE8 & IE9 & IE10 12 | 13 | - KaTeX会出现解析错误,但不影响程序运行; 14 | 15 | ####Sea.js 16 | 17 | - ~~Raphael.js无法加载;~~ 18 | 19 | ####Require.js 20 | 21 | - ~~CodeMirror编辑器的代码无法高亮;~~ 22 | - ~~sequenceDiagram不支持: `Uncaught TypeError: Cannot call method 'isArray' of undefined.`~~ 23 | -------------------------------------------------------------------------------- /app/static/editormd/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 pandao 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 | 23 | -------------------------------------------------------------------------------- /app/static/editormd/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "editor.md", 3 | "version": "1.5.0", 4 | "homepage": "https://github.com/pandao/editor.md", 5 | "authors": [ 6 | "Pandao " 7 | ], 8 | "description": "Open source online markdown editor.", 9 | "keywords": [ 10 | "editor.md", 11 | "markdown", 12 | "editor" 13 | ], 14 | "license": "MIT", 15 | "ignore": [ 16 | "**/.*", 17 | "research", 18 | "docs", 19 | "node_modules", 20 | "bower_components", 21 | "test", 22 | "tests" 23 | ] 24 | } 25 | -------------------------------------------------------------------------------- /app/static/editormd/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} -------------------------------------------------------------------------------- /app/static/editormd/docs/fonts/OpenSans-Bold-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/docs/fonts/OpenSans-Bold-webfont.eot -------------------------------------------------------------------------------- /app/static/editormd/docs/fonts/OpenSans-Bold-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/docs/fonts/OpenSans-Bold-webfont.woff -------------------------------------------------------------------------------- /app/static/editormd/docs/fonts/OpenSans-BoldItalic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/docs/fonts/OpenSans-BoldItalic-webfont.eot -------------------------------------------------------------------------------- /app/static/editormd/docs/fonts/OpenSans-BoldItalic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/docs/fonts/OpenSans-BoldItalic-webfont.woff -------------------------------------------------------------------------------- /app/static/editormd/docs/fonts/OpenSans-Italic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/docs/fonts/OpenSans-Italic-webfont.eot -------------------------------------------------------------------------------- /app/static/editormd/docs/fonts/OpenSans-Italic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/docs/fonts/OpenSans-Italic-webfont.woff -------------------------------------------------------------------------------- /app/static/editormd/docs/fonts/OpenSans-Light-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/docs/fonts/OpenSans-Light-webfont.eot -------------------------------------------------------------------------------- /app/static/editormd/docs/fonts/OpenSans-Light-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/docs/fonts/OpenSans-Light-webfont.woff -------------------------------------------------------------------------------- /app/static/editormd/docs/fonts/OpenSans-LightItalic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/docs/fonts/OpenSans-LightItalic-webfont.eot -------------------------------------------------------------------------------- /app/static/editormd/docs/fonts/OpenSans-LightItalic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/docs/fonts/OpenSans-LightItalic-webfont.woff -------------------------------------------------------------------------------- /app/static/editormd/docs/fonts/OpenSans-Regular-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/docs/fonts/OpenSans-Regular-webfont.eot -------------------------------------------------------------------------------- /app/static/editormd/docs/fonts/OpenSans-Regular-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/docs/fonts/OpenSans-Regular-webfont.woff -------------------------------------------------------------------------------- /app/static/editormd/docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JSDoc: Home 6 | 7 | 8 | 9 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 |

Home

21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 |

30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 |
51 | 52 | 55 | 56 |
57 | 58 | 61 | 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /app/static/editormd/docs/scripts/linenumber.js: -------------------------------------------------------------------------------- 1 | /*global document */ 2 | (function() { 3 | var source = document.getElementsByClassName('prettyprint source linenums'); 4 | var i = 0; 5 | var lineNumber = 0; 6 | var lineId; 7 | var lines; 8 | var totalLines; 9 | var anchorHash; 10 | 11 | if (source && source[0]) { 12 | anchorHash = document.location.hash.substring(1); 13 | lines = source[0].getElementsByTagName('li'); 14 | totalLines = lines.length; 15 | 16 | for (; i < totalLines; i++) { 17 | lineNumber++; 18 | lineId = 'line' + lineNumber; 19 | lines[i].id = lineId; 20 | if (lineId === anchorHash) { 21 | lines[i].className += ' selected'; 22 | } 23 | } 24 | } 25 | })(); 26 | -------------------------------------------------------------------------------- /app/static/editormd/docs/scripts/prettify/lang-css.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n "]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com", 2 | /^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); 3 | -------------------------------------------------------------------------------- /app/static/editormd/examples/code-fold.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Code folding - Editor.md examples 6 | 7 | 8 | 9 | 10 | 11 |
12 |
13 |

Code folding

14 |

Switch code folding : Press Ctrl + Q / Command + Q

15 |
16 |
17 | 18 |
19 |
20 | 21 | 22 | 43 | 44 | -------------------------------------------------------------------------------- /app/static/editormd/examples/dynamic-create-editormd.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 动态创建 Editor.md - Editor.md examples 6 | 7 | 8 | 9 | 10 | 11 |
12 |
13 |

动态创建 Editor.md

14 |

Dynamic create Editor.md

15 |
16 |
17 | 18 | 19 |
20 |
21 |
22 | 23 | 24 | 46 | 47 | -------------------------------------------------------------------------------- /app/static/editormd/examples/flowchart.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | FlowChart - Editor.md examples 6 | 7 | 8 | 9 | 10 | 11 |
12 |
13 |

FlowChart 流程图

14 |

Based on flowchart.js:http://adrai.github.io/flowchart.js/

15 |
16 |
17 | 37 |
38 |
39 | 40 | 41 | 42 | 52 | 53 | -------------------------------------------------------------------------------- /app/static/editormd/examples/images/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/examples/images/4.jpg -------------------------------------------------------------------------------- /app/static/editormd/examples/images/7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/examples/images/7.jpg -------------------------------------------------------------------------------- /app/static/editormd/examples/images/8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/examples/images/8.jpg -------------------------------------------------------------------------------- /app/static/editormd/examples/images/editormd-screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/examples/images/editormd-screenshot.png -------------------------------------------------------------------------------- /app/static/editormd/examples/onchange.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Onchange - Editor.md examples 6 | 7 | 8 | 9 | 10 | 11 |
12 |
13 |

Onchange event

14 |

Plaese press F12, open the develop tools.

15 |

16 |
17 |
18 | 29 |
30 |
31 | 32 | 33 | 48 | 49 | -------------------------------------------------------------------------------- /app/static/editormd/examples/onresize.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Onresize - Editor.md examples 6 | 7 | 8 | 9 | 10 | 11 |
12 |
13 |

Onresize event handle

14 |

Plaese press F12, open the develop tools.

15 |
16 |
17 | 31 |
32 |
33 | 34 | 35 | 48 | 49 | -------------------------------------------------------------------------------- /app/static/editormd/examples/onwatch-onunwatch.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Onwatch / Onunwatch - Editor.md examples 6 | 7 | 8 | 9 | 10 | 11 |
12 |
13 |

Onwatch / Onunwatch event handle

14 |

Plaese press F12, open the develop tools.

15 |
16 |
17 | 31 |
32 |
33 | 34 | 35 | 50 | 51 | -------------------------------------------------------------------------------- /app/static/editormd/examples/php/cross-domain-upload.php: -------------------------------------------------------------------------------- 1 | array('gif', 'jpg', 'jpeg', 'png', 'bmp', 'webp') 28 | ); 29 | 30 | $name = 'editormd-image-file'; // file input name 31 | $callbackUrl = $_GET['callback']; 32 | 33 | if (isset($_FILES[$name])) 34 | { 35 | $imageUploader = new EditorMdUploader($savePath, $saveURL, $formats['image'], false); // Ymdhis表示按日期生成文件名,利用date()函数 36 | 37 | $imageUploader->config(array( 38 | 'maxSize' => 1024, // 允许上传的最大文件大小,以KB为单位,默认值为1024 39 | 'cover' => true // 是否覆盖同名文件,默认为true 40 | )); 41 | 42 | $imageUploader->redirect = true; 43 | $imageUploader->redirectURL = $callbackUrl . (empty(parse_url($callbackUrl)['query']) ? '?' : '&') . 'dialog_id=' . $_GET['dialog_id'] . '&temp=' . date('ymdhis'); 44 | 45 | if ($imageUploader->upload($name)) 46 | { 47 | $imageUploader->message('上传成功!', 1); 48 | } 49 | else 50 | { 51 | $imageUploader->message('上传失败!', 0); 52 | } 53 | } 54 | ?> -------------------------------------------------------------------------------- /app/static/editormd/examples/php/post.php: -------------------------------------------------------------------------------- 1 | "; 7 | echo htmlspecialchars($_POST["test-editormd-markdown-doc"]); 8 | 9 | if(isset($_POST["test-editormd-html-code"])) { 10 | echo "

"; 11 | echo htmlspecialchars($_POST["test-editormd-html-code"]); 12 | } 13 | 14 | echo ""; 15 | } 16 | 17 | exit; 18 | ?> -------------------------------------------------------------------------------- /app/static/editormd/examples/php/upload.php: -------------------------------------------------------------------------------- 1 | array('gif', 'jpg', 'jpeg', 'png', 'bmp') 29 | ); 30 | 31 | $name = 'editormd-image-file'; 32 | 33 | if (isset($_FILES[$name])) 34 | { 35 | $imageUploader = new EditorMdUploader($savePath, $saveURL, $formats['image'], false); // Ymdhis表示按日期生成文件名,利用date()函数 36 | 37 | $imageUploader->config(array( 38 | 'maxSize' => 1024, // 允许上传的最大文件大小,以KB为单位,默认值为1024 39 | 'cover' => true // 是否覆盖同名文件,默认为true 40 | )); 41 | 42 | if ($imageUploader->upload($name)) 43 | { 44 | $imageUploader->message('上传成功!', 1); 45 | } 46 | else 47 | { 48 | $imageUploader->message('上传失败!', 0); 49 | } 50 | } 51 | ?> -------------------------------------------------------------------------------- /app/static/editormd/examples/php/upload_callback.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 | 34 | 35 | -------------------------------------------------------------------------------- /app/static/editormd/examples/sequence-diagram.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SequenceDiagram - Editor.md examples 6 | 7 | 8 | 9 | 10 | 11 |
12 |
13 |

SequenceDiagram 时序图/序列图

14 |

Based on SequenceDiagram.js:http://bramp.github.io/js-sequence-diagrams/

15 |
16 |
17 | 49 |
50 |
51 | 52 | 53 | 54 | 64 | 65 | -------------------------------------------------------------------------------- /app/static/editormd/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /app/static/editormd/fonts/editormd-logo.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/fonts/editormd-logo.eot -------------------------------------------------------------------------------- /app/static/editormd/fonts/editormd-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Generated by IcoMoon 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /app/static/editormd/fonts/editormd-logo.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/fonts/editormd-logo.ttf -------------------------------------------------------------------------------- /app/static/editormd/fonts/editormd-logo.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/fonts/editormd-logo.woff -------------------------------------------------------------------------------- /app/static/editormd/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /app/static/editormd/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /app/static/editormd/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /app/static/editormd/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /app/static/editormd/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/images/loading.gif -------------------------------------------------------------------------------- /app/static/editormd/images/loading@2x.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/images/loading@2x.gif -------------------------------------------------------------------------------- /app/static/editormd/images/loading@3x.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/images/loading@3x.gif -------------------------------------------------------------------------------- /app/static/editormd/images/logos/editormd-favicon-16x16.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/images/logos/editormd-favicon-16x16.ico -------------------------------------------------------------------------------- /app/static/editormd/images/logos/editormd-favicon-24x24.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/images/logos/editormd-favicon-24x24.ico -------------------------------------------------------------------------------- /app/static/editormd/images/logos/editormd-favicon-32x32.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/images/logos/editormd-favicon-32x32.ico -------------------------------------------------------------------------------- /app/static/editormd/images/logos/editormd-favicon-48x48.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/images/logos/editormd-favicon-48x48.ico -------------------------------------------------------------------------------- /app/static/editormd/images/logos/editormd-favicon-64x64.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/images/logos/editormd-favicon-64x64.ico -------------------------------------------------------------------------------- /app/static/editormd/images/logos/editormd-logo-114x114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/images/logos/editormd-logo-114x114.png -------------------------------------------------------------------------------- /app/static/editormd/images/logos/editormd-logo-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/images/logos/editormd-logo-120x120.png -------------------------------------------------------------------------------- /app/static/editormd/images/logos/editormd-logo-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/images/logos/editormd-logo-144x144.png -------------------------------------------------------------------------------- /app/static/editormd/images/logos/editormd-logo-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/images/logos/editormd-logo-16x16.png -------------------------------------------------------------------------------- /app/static/editormd/images/logos/editormd-logo-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/images/logos/editormd-logo-180x180.png -------------------------------------------------------------------------------- /app/static/editormd/images/logos/editormd-logo-240x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/images/logos/editormd-logo-240x240.png -------------------------------------------------------------------------------- /app/static/editormd/images/logos/editormd-logo-24x24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/images/logos/editormd-logo-24x24.png -------------------------------------------------------------------------------- /app/static/editormd/images/logos/editormd-logo-320x320.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/images/logos/editormd-logo-320x320.png -------------------------------------------------------------------------------- /app/static/editormd/images/logos/editormd-logo-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/images/logos/editormd-logo-32x32.png -------------------------------------------------------------------------------- /app/static/editormd/images/logos/editormd-logo-48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/images/logos/editormd-logo-48x48.png -------------------------------------------------------------------------------- /app/static/editormd/images/logos/editormd-logo-57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/images/logos/editormd-logo-57x57.png -------------------------------------------------------------------------------- /app/static/editormd/images/logos/editormd-logo-64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/images/logos/editormd-logo-64x64.png -------------------------------------------------------------------------------- /app/static/editormd/images/logos/editormd-logo-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/images/logos/editormd-logo-72x72.png -------------------------------------------------------------------------------- /app/static/editormd/images/logos/editormd-logo-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/images/logos/editormd-logo-96x96.png -------------------------------------------------------------------------------- /app/static/editormd/images/logos/vi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/editormd/images/logos/vi.png -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | } -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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} -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/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)})); -------------------------------------------------------------------------------- /app/static/editormd/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "editor.md", 3 | "version": "1.5.0", 4 | "description": "Open source online markdown editor.", 5 | "directories": { 6 | "doc": "docs", 7 | "example": "examples", 8 | "test": "tests" 9 | }, 10 | "scripts": { 11 | "test": "echo \"Error: no test specified\" && exit 1" 12 | }, 13 | "repository": { 14 | "type": "git", 15 | "url": "https://github.com/pandao/editor.md.git" 16 | }, 17 | "keywords": [ 18 | "editor.md", 19 | "markdown", 20 | "editor" 21 | ], 22 | "author": "Pandao", 23 | "license": "MIT", 24 | "bugs": { 25 | "url": "https://github.com/pandao/editor.md/issues" 26 | }, 27 | "homepage": "https://github.com/pandao/editor.md", 28 | "devDependencies": { 29 | "dateformatter": "^0.1.0", 30 | "gulp": "^3.8.11", 31 | "gulp-concat": "^2.4.2", 32 | "gulp-header": "^1.2.2", 33 | "gulp-jshint": "^1.9.0", 34 | "gulp-minify-css": "^0.4.4", 35 | "gulp-notify": "^2.1.0", 36 | "gulp-rename": "^1.2.0", 37 | "gulp-replace": "^0.5.3", 38 | "gulp-ruby-sass": "^1.0.1", 39 | "gulp-uglifyjs": "^0.6.1", 40 | "gulp-util": "^3.0.1" 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /app/static/editormd/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 | -------------------------------------------------------------------------------- /app/static/editormd/scss/editormd.grid.scss: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | 3 | .editormd-grid-table { 4 | width: 99%; 5 | display: table; 6 | border: 1px solid #ddd; 7 | border-collapse: collapse; 8 | } 9 | 10 | .editormd-grid-table-row { 11 | width: 100%; 12 | display: table-row; 13 | 14 | a { 15 | font-size: 1.4em; 16 | width: 5%; 17 | height: 36px; 18 | color: #999; 19 | text-align: center; 20 | display: table-cell; 21 | vertical-align: middle; 22 | border: 1px solid #ddd; 23 | text-decoration: none; 24 | @include transition(background-color 300ms ease-out, color 100ms ease-in); 25 | 26 | &.selected { 27 | color: #666; 28 | background-color: #eee; 29 | } 30 | 31 | &:hover { 32 | color: #777; 33 | background-color: #f6f6f6; 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /app/static/editormd/scss/editormd.tab.scss: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | 3 | .editormd-tab { 4 | } 5 | 6 | .editormd-tab-head { 7 | list-style: none; 8 | border-bottom: 1px solid #ddd; 9 | 10 | li { 11 | display: inline-block; 12 | 13 | a { 14 | color: #999; 15 | display: block; 16 | padding: 6px 12px 5px; 17 | text-align: center; 18 | text-decoration: none; 19 | margin-bottom: -1px; 20 | border: 1px solid #ddd; 21 | @include border-top-left-radius(3px); 22 | @include border-top-right-radius(3px); 23 | background: #f6f6f6; 24 | @include transition(all 300ms ease-out); 25 | 26 | &:hover { 27 | color: #666; 28 | background: #eee; 29 | } 30 | } 31 | 32 | &.active a { 33 | color: #666; 34 | background: #fff; 35 | border-bottom-color: #fff; 36 | } 37 | } 38 | 39 | li + li { 40 | margin-left: 3px; 41 | } 42 | } 43 | 44 | .editormd-tab-container { 45 | } 46 | 47 | .editormd-tab-box { 48 | padding: 20px 0; 49 | } -------------------------------------------------------------------------------- /app/static/editormd/scss/editormd.themes.scss: -------------------------------------------------------------------------------- 1 | /* Editor.md Dark theme */ 2 | 3 | #{$prefix}theme-dark { 4 | border-color: #1a1a17; 5 | 6 | #{$prefix}toolbar { 7 | background: #1A1A17; 8 | border-color: #1a1a17; 9 | } 10 | 11 | #{$prefix}menu > li > a { 12 | color: #777; 13 | border-color: #1a1a17; 14 | 15 | &:hover, &.active { 16 | border-color: #333; 17 | background: #333; 18 | } 19 | } 20 | 21 | #{$prefix}menu > li.divider { 22 | border-right: 1px solid #111; 23 | } 24 | 25 | .CodeMirror { 26 | border-right: 1px solid rgba(0,0,0,0.1); 27 | } 28 | } -------------------------------------------------------------------------------- /app/static/editormd/scss/lib/variables.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | // Global Variables 4 | 5 | $prefix : ".editormd-"; 6 | $color : #666; 7 | $mainColor : #2196F3; 8 | $primaryColor : $mainColor; 9 | $secondColor : #33CC66; 10 | $thirdColor : #999999; 11 | $borderColor : #ddd; -------------------------------------------------------------------------------- /app/static/editormd/scss/prettify.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /*! Pretty printing styles. Used with prettify.js. */ 4 | /* SPAN elements with the classes below are added by prettyprint. */ 5 | .pln { color: #000 } /* plain text */ 6 | 7 | @media screen { 8 | .str { color: #080 } /* string content */ 9 | .kwd { color: #008 } /* a keyword */ 10 | .com { color: #800 } /* a comment */ 11 | .typ { color: #606 } /* a type name */ 12 | .lit { color: #066 } /* a literal value */ 13 | /* punctuation, lisp open bracket, lisp close bracket */ 14 | .pun, .opn, .clo { color: #660 } 15 | .tag { color: #008 } /* a markup tag name */ 16 | .atn { color: #606 } /* a markup attribute name */ 17 | .atv { color: #080 } /* a markup attribute value */ 18 | .dec, .var { color: #606 } /* a declaration; a variable name */ 19 | .fun { color: red } /* a function name */ 20 | } 21 | 22 | /* Use higher contrast and text-weight for printable form. */ 23 | @media print, projection { 24 | .str { color: #060 } 25 | .kwd { color: #006; font-weight: bold } 26 | .com { color: #600; font-style: italic } 27 | .typ { color: #404; font-weight: bold } 28 | .lit { color: #044 } 29 | .pun, .opn, .clo { color: #440 } 30 | .tag { color: #006; font-weight: bold } 31 | .atn { color: #404 } 32 | .atv { color: #060 } 33 | } 34 | 35 | /* Put a border around prettyprinted code snippets. */ 36 | pre.prettyprint { padding: 2px; border: 1px solid #888 } 37 | 38 | /* Specify class=linenums on a pre to get line numbering */ 39 | ol.linenums { margin-top: 0; margin-bottom: 0 } /* IE indents via margin-left */ 40 | li.L0, 41 | li.L1, 42 | li.L2, 43 | li.L3, 44 | li.L5, 45 | li.L6, 46 | li.L7, 47 | li.L8 { list-style-type: none } 48 | /* Alternate shading for lines */ 49 | li.L1, 50 | li.L3, 51 | li.L5, 52 | li.L7, 53 | li.L9 { background: #eee } -------------------------------------------------------------------------------- /app/static/highlight/styles/atom-one-dark-reasonable.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Atom One Dark With support for ReasonML by Gidi Morris, based off work by Daniel Gamage 4 | 5 | Original One Dark Syntax theme from https://github.com/atom/one-dark-syntax 6 | 7 | */ 8 | .hljs { 9 | display: block; 10 | overflow-x: auto; 11 | padding: 0.5em; 12 | color: #abb2bf; 13 | background: #282c34; 14 | } 15 | .hljs-keyword, .hljs-operator { 16 | color: #F92672; 17 | } 18 | .hljs-pattern-match { 19 | color: #F92672; 20 | } 21 | .hljs-pattern-match .hljs-constructor { 22 | color: #61aeee; 23 | } 24 | .hljs-function { 25 | color: #61aeee; 26 | } 27 | .hljs-function .hljs-params { 28 | color: #A6E22E; 29 | } 30 | .hljs-function .hljs-params .hljs-typing { 31 | color: #FD971F; 32 | } 33 | .hljs-module-access .hljs-module { 34 | color: #7e57c2; 35 | } 36 | .hljs-constructor { 37 | color: #e2b93d; 38 | } 39 | .hljs-constructor .hljs-string { 40 | color: #9CCC65; 41 | } 42 | .hljs-comment, .hljs-quote { 43 | color: #b18eb1; 44 | font-style: italic; 45 | } 46 | .hljs-doctag, .hljs-formula { 47 | color: #c678dd; 48 | } 49 | .hljs-section, .hljs-name, .hljs-selector-tag, .hljs-deletion, .hljs-subst { 50 | color: #e06c75; 51 | } 52 | .hljs-literal { 53 | color: #56b6c2; 54 | } 55 | .hljs-string, .hljs-regexp, .hljs-addition, .hljs-attribute, .hljs-meta-string { 56 | color: #98c379; 57 | } 58 | .hljs-built_in, .hljs-class .hljs-title { 59 | color: #e6c07b; 60 | } 61 | .hljs-attr, .hljs-variable, .hljs-template-variable, .hljs-type, .hljs-selector-class, .hljs-selector-attr, .hljs-selector-pseudo, .hljs-number { 62 | color: #d19a66; 63 | } 64 | .hljs-symbol, .hljs-bullet, .hljs-link, .hljs-meta, .hljs-selector-id, .hljs-title { 65 | color: #61aeee; 66 | } 67 | .hljs-emphasis { 68 | font-style: italic; 69 | } 70 | .hljs-strong { 71 | font-weight: bold; 72 | } 73 | .hljs-link { 74 | text-decoration: underline; 75 | } 76 | -------------------------------------------------------------------------------- /app/static/highlight/styles/atom-one-light.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Atom One Light by Daniel Gamage 4 | Original One Light Syntax theme from https://github.com/atom/one-light-syntax 5 | 6 | base: #fafafa 7 | mono-1: #383a42 8 | mono-2: #686b77 9 | mono-3: #a0a1a7 10 | hue-1: #0184bb 11 | hue-2: #4078f2 12 | hue-3: #a626a4 13 | hue-4: #50a14f 14 | hue-5: #e45649 15 | hue-5-2: #c91243 16 | hue-6: #986801 17 | hue-6-2: #c18401 18 | 19 | */ 20 | 21 | .hljs { 22 | display: block; 23 | overflow-x: auto; 24 | padding: 0.5em; 25 | color: #383a42; 26 | background: #fafafa; 27 | } 28 | 29 | .hljs-comment, 30 | .hljs-quote { 31 | color: #a0a1a7; 32 | font-style: italic; 33 | } 34 | 35 | .hljs-doctag, 36 | .hljs-keyword, 37 | .hljs-formula { 38 | color: #a626a4; 39 | } 40 | 41 | .hljs-section, 42 | .hljs-name, 43 | .hljs-selector-tag, 44 | .hljs-deletion, 45 | .hljs-subst { 46 | color: #e45649; 47 | } 48 | 49 | .hljs-literal { 50 | color: #0184bb; 51 | } 52 | 53 | .hljs-string, 54 | .hljs-regexp, 55 | .hljs-addition, 56 | .hljs-attribute, 57 | .hljs-meta-string { 58 | color: #50a14f; 59 | } 60 | 61 | .hljs-built_in, 62 | .hljs-class .hljs-title { 63 | color: #c18401; 64 | } 65 | 66 | .hljs-attr, 67 | .hljs-variable, 68 | .hljs-template-variable, 69 | .hljs-type, 70 | .hljs-selector-class, 71 | .hljs-selector-attr, 72 | .hljs-selector-pseudo, 73 | .hljs-number { 74 | color: #986801; 75 | } 76 | 77 | .hljs-symbol, 78 | .hljs-bullet, 79 | .hljs-link, 80 | .hljs-meta, 81 | .hljs-selector-id, 82 | .hljs-title { 83 | color: #4078f2; 84 | } 85 | 86 | .hljs-emphasis { 87 | font-style: italic; 88 | } 89 | 90 | .hljs-strong { 91 | font-weight: bold; 92 | } 93 | 94 | .hljs-link { 95 | text-decoration: underline; 96 | } 97 | -------------------------------------------------------------------------------- /app/static/img/2021_05_24.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/img/2021_05_24.jpg -------------------------------------------------------------------------------- /app/static/img/avata.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/img/avata.jpg -------------------------------------------------------------------------------- /app/static/img/comment_avata.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/img/comment_avata.jpg -------------------------------------------------------------------------------- /app/static/img/default_avata_bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/img/default_avata_bg.jpg -------------------------------------------------------------------------------- /app/static/img/error.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/img/error.gif -------------------------------------------------------------------------------- /app/static/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/img/favicon.ico -------------------------------------------------------------------------------- /app/static/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/img/logo.png -------------------------------------------------------------------------------- /app/static/layui/css/modules/code.css: -------------------------------------------------------------------------------- 1 | /** layui-v2.5.7 MIT License */ 2 | html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-h3,.layui-code-view{position:relative;font-size:12px}.layui-code-view{display:block;margin:10px 0;padding:0;border:1px solid #e2e2e2;border-left-width:6px;background-color:#F2F2F2;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:32px;line-height:32px;border-bottom:1px solid #e2e2e2}.layui-code-h3 a{position:absolute;right:10px;top:0;color:#999}.layui-code-view .layui-code-ol{position:relative;overflow:auto}.layui-code-view .layui-code-ol li{position:relative;margin-left:45px;line-height:20px;padding:0 5px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view pre{margin:0}.layui-code-notepad{border:1px solid #0C0C0C;border-left-color:#3F3F3F;background-color:#0C0C0C;color:#C2BE9E}.layui-code-notepad .layui-code-h3{border-bottom:none}.layui-code-notepad .layui-code-ol li{background-color:#3F3F3F;border-left:none} -------------------------------------------------------------------------------- /app/static/layui/css/modules/layer/default/icon-ext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/css/modules/layer/default/icon-ext.png -------------------------------------------------------------------------------- /app/static/layui/css/modules/layer/default/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/css/modules/layer/default/icon.png -------------------------------------------------------------------------------- /app/static/layui/css/modules/layer/default/loading-0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/css/modules/layer/default/loading-0.gif -------------------------------------------------------------------------------- /app/static/layui/css/modules/layer/default/loading-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/css/modules/layer/default/loading-1.gif -------------------------------------------------------------------------------- /app/static/layui/css/modules/layer/default/loading-2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/css/modules/layer/default/loading-2.gif -------------------------------------------------------------------------------- /app/static/layui/font/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/font/iconfont.eot -------------------------------------------------------------------------------- /app/static/layui/font/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/font/iconfont.ttf -------------------------------------------------------------------------------- /app/static/layui/font/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/font/iconfont.woff -------------------------------------------------------------------------------- /app/static/layui/font/iconfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/font/iconfont.woff2 -------------------------------------------------------------------------------- /app/static/layui/images/face/0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/0.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/1.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/10.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/10.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/11.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/11.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/12.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/12.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/13.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/13.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/14.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/14.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/15.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/15.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/16.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/16.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/17.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/17.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/18.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/18.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/19.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/19.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/2.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/20.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/20.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/21.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/21.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/22.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/22.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/23.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/23.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/24.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/24.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/25.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/25.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/26.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/26.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/27.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/27.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/28.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/28.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/29.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/29.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/3.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/30.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/30.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/31.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/31.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/32.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/32.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/33.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/33.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/34.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/34.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/35.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/35.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/36.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/36.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/37.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/37.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/38.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/38.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/39.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/39.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/4.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/40.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/40.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/41.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/41.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/42.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/42.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/43.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/43.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/44.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/44.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/45.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/45.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/46.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/46.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/47.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/47.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/48.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/48.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/49.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/49.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/5.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/50.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/50.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/51.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/51.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/52.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/52.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/53.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/53.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/54.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/54.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/55.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/55.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/56.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/56.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/57.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/57.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/58.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/58.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/59.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/59.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/6.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/60.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/60.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/61.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/61.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/62.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/62.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/63.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/63.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/64.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/64.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/65.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/65.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/66.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/66.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/67.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/67.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/68.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/68.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/69.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/69.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/7.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/7.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/70.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/70.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/71.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/71.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/8.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/8.gif -------------------------------------------------------------------------------- /app/static/layui/images/face/9.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/layui/images/face/9.gif -------------------------------------------------------------------------------- /app/static/layui/lay/modules/code.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.5.7 MIT License */ 2 | ;layui.define("jquery",function(e){"use strict";var a=layui.$,l="http://www.layui.com/doc/modules/code.html";e("code",function(e){var t=[];e=e||{},e.elem=a(e.elem||".layui-code"),e.about=!("about"in e)||e.about,e.elem.each(function(){t.push(this)}),layui.each(t.reverse(),function(t,i){var c=a(i),o=c.html();(c.attr("lay-encode")||e.encode)&&(o=o.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")),c.html('
  1. '+o.replace(/[\r\t\n]+/g,"
  2. ")+"
"),c.find(">.layui-code-h3")[0]||c.prepend('

'+(c.attr("lay-title")||e.title||"code")+(e.about?'layui.code':"")+"

");var d=c.find(">.layui-code-ol");c.addClass("layui-box layui-code-view"),(c.attr("lay-skin")||e.skin)&&c.addClass("layui-code-"+(c.attr("lay-skin")||e.skin)),(d.find("li").length/100|0)>0&&d.css("margin-left",(d.find("li").length/100|0)+"px"),(c.attr("lay-height")||e.height)&&d.css("max-height",c.attr("lay-height")||e.height)})})}).addcss("modules/code.css","skincodecss"); -------------------------------------------------------------------------------- /app/static/layui/lay/modules/flow.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.5.7 MIT License */ 2 | ;layui.define("jquery",function(e){"use strict";var l=layui.$,o=function(e){},t='';o.prototype.load=function(e){var o,i,n,r,a=this,c=0;e=e||{};var f=l(e.elem);if(f[0]){var m=l(e.scrollElem||document),u=e.mb||50,s=!("isAuto"in e)||e.isAuto,v=e.end||"没有更多了",y=e.scrollElem&&e.scrollElem!==document,d="加载更多",h=l('");f.find(".layui-flow-more")[0]||f.append(h);var p=function(e,t){e=l(e),h.before(e),t=0==t||null,t?h.html(v):h.find("a").html(d),i=t,o=null,n&&n()},g=function(){o=!0,h.find("a").html(t),"function"==typeof e.done&&e.done(++c,p)};if(g(),h.find("a").on("click",function(){l(this);i||o||g()}),e.isLazyimg)var n=a.lazyimg({elem:e.elem+" img",scrollElem:e.scrollElem});return s?(m.on("scroll",function(){var e=l(this),t=e.scrollTop();r&&clearTimeout(r),!i&&f.width()&&(r=setTimeout(function(){var i=y?e.height():l(window).height(),n=y?e.prop("scrollHeight"):document.documentElement.scrollHeight;n-t-i<=u&&(o||g())},100))}),a):a}},o.prototype.lazyimg=function(e){var o,t=this,i=0;e=e||{};var n=l(e.scrollElem||document),r=e.elem||"img",a=e.scrollElem&&e.scrollElem!==document,c=function(e,l){var o=n.scrollTop(),r=o+l,c=a?function(){return e.offset().top-n.offset().top+o}():e.offset().top;if(c>=o&&c<=r&&!e.attr("src")){var m=e.attr("lay-src");layui.img(m,function(){var l=t.lazyimg.elem.eq(i);e.attr("src",m).removeAttr("lay-src"),l[0]&&f(l),i++})}},f=function(e,o){var f=a?(o||n).height():l(window).height(),m=n.scrollTop(),u=m+f;if(t.lazyimg.elem=l(r),e)c(e,f);else for(var s=0;su)break}};if(f(),!o){var m;n.on("scroll",function(){var e=l(this);m&&clearTimeout(m),m=setTimeout(function(){f(null,e)},50)}),o=!0}return f},e("flow",new o)}); -------------------------------------------------------------------------------- /app/static/layui/lay/modules/laytpl.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.5.7 MIT License */ 2 | ;layui.define(function(e){"use strict";var r={open:"{{",close:"}}"},c={exp:function(e){return new RegExp(e,"g")},query:function(e,c,t){var o=["#([\\s\\S])+?","([^{#}])*?"][e||0];return n((c||"")+r.open+o+r.close+(t||""))},escape:function(e){return String(e||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")},error:function(e,r){var c="Laytpl Error:";return"object"==typeof console&&console.error(c+e+"\n"+(r||"")),c+e}},n=c.exp,t=function(e){this.tpl=e};t.pt=t.prototype,window.errors=0,t.pt.parse=function(e,t){var o=this,p=e,a=n("^"+r.open+"#",""),l=n(r.close+"$","");e=e.replace(/\s+|\r|\t|\n/g," ").replace(n(r.open+"#"),r.open+"# ").replace(n(r.close+"}"),"} "+r.close).replace(/\\/g,"\\\\").replace(n(r.open+"!(.+?)!"+r.close),function(e){return e=e.replace(n("^"+r.open+"!"),"").replace(n("!"+r.close),"").replace(n(r.open+"|"+r.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(c.query(),function(e){return e=e.replace(a,"").replace(l,""),'";'+e.replace(/\\/g,"")+';view+="'}).replace(c.query(1),function(e){var c='"+(';return e.replace(/\s/g,"")===r.open+r.close?"":(e=e.replace(n(r.open+"|"+r.close),""),/^=/.test(e)&&(e=e.replace(/^=/,""),c='"+_escape_('),c+e.replace(/\\/g,"")+')+"')}),e='"use strict";var view = "'+e+'";return view;';try{return o.cache=e=new Function("d, _escape_",e),e(t,c.escape)}catch(u){return delete o.cache,c.error(u,p)}},t.pt.render=function(e,r){var n,t=this;return e?(n=t.cache?t.cache(e,c.escape):t.parse(t.tpl,e),r?void r(n):n):c.error("no data")};var o=function(e){return"string"!=typeof e?c.error("Template not found"):new t(e)};o.config=function(e){e=e||{};for(var c in e)r[c]=e[c]},o.v="1.2.0",e("laytpl",o)}); -------------------------------------------------------------------------------- /app/static/uploads/2021/04/Qt离线安装包下载20210411131218.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/Qt离线安装包下载20210411131218.png -------------------------------------------------------------------------------- /app/static/uploads/2021/04/avata220210413010442.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/avata220210413010442.jpg -------------------------------------------------------------------------------- /app/static/uploads/2021/04/avata220210413131540.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/avata220210413131540.jpg -------------------------------------------------------------------------------- /app/static/uploads/2021/04/bash20210413131338.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/bash20210413131338.png -------------------------------------------------------------------------------- /app/static/uploads/2021/04/df20210411132216.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/df20210411132216.PNG -------------------------------------------------------------------------------- /app/static/uploads/2021/04/fdtab20210411132303.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/fdtab20210411132303.PNG -------------------------------------------------------------------------------- /app/static/uploads/2021/04/frame20210411131827.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/frame20210411131827.png -------------------------------------------------------------------------------- /app/static/uploads/2021/04/gdb报错20210411130730.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/gdb报错20210411130730.JPG -------------------------------------------------------------------------------- /app/static/uploads/2021/04/git-command20210412001641.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/git-command20210412001641.jpg -------------------------------------------------------------------------------- /app/static/uploads/2021/04/git-command20210413131348.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/git-command20210413131348.jpg -------------------------------------------------------------------------------- /app/static/uploads/2021/04/github创建仓库20210413131324.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/github创建仓库20210413131324.PNG -------------------------------------------------------------------------------- /app/static/uploads/2021/04/glibc错误20210411130743.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/glibc错误20210411130743.JPG -------------------------------------------------------------------------------- /app/static/uploads/2021/04/kodexplorer20210411131555.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/kodexplorer20210411131555.PNG -------------------------------------------------------------------------------- /app/static/uploads/2021/04/login20210411131742.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/login20210411131742.PNG -------------------------------------------------------------------------------- /app/static/uploads/2021/04/lsblk20210411132200.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/lsblk20210411132200.PNG -------------------------------------------------------------------------------- /app/static/uploads/2021/04/net20210411132328.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/net20210411132328.PNG -------------------------------------------------------------------------------- /app/static/uploads/2021/04/nextcloud20210411131506.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/nextcloud20210411131506.PNG -------------------------------------------------------------------------------- /app/static/uploads/2021/04/pydio20210411131605.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/pydio20210411131605.PNG -------------------------------------------------------------------------------- /app/static/uploads/2021/04/raspberry-pi-os镜像20210411131711.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/raspberry-pi-os镜像20210411131711.PNG -------------------------------------------------------------------------------- /app/static/uploads/2021/04/raspi-config20210411132047.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/raspi-config20210411132047.PNG -------------------------------------------------------------------------------- /app/static/uploads/2021/04/raspi-config220210411132058.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/raspi-config220210411132058.PNG -------------------------------------------------------------------------------- /app/static/uploads/2021/04/remote-development20210411131023.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/remote-development20210411131023.png -------------------------------------------------------------------------------- /app/static/uploads/2021/04/seafile20210411131545.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/seafile20210411131545.PNG -------------------------------------------------------------------------------- /app/static/uploads/2021/04/sources20210411132140.list: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/sources20210411132140.list -------------------------------------------------------------------------------- /app/static/uploads/2021/04/ssh20210411131721.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/ssh20210411131721.PNG -------------------------------------------------------------------------------- /app/static/uploads/2021/04/title20210411131638.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/title20210411131638.PNG -------------------------------------------------------------------------------- /app/static/uploads/2021/04/uuid20210411132249.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/uuid20210411132249.PNG -------------------------------------------------------------------------------- /app/static/uploads/2021/04/vnc120210411132118.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/vnc120210411132118.PNG -------------------------------------------------------------------------------- /app/static/uploads/2021/04/wrtest20210411132340.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/wrtest20210411132340.PNG -------------------------------------------------------------------------------- /app/static/uploads/2021/04/前台正文20210411202134.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/前台正文20210411202134.png -------------------------------------------------------------------------------- /app/static/uploads/2021/04/前台留言20210411202209.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/前台留言20210411202209.png -------------------------------------------------------------------------------- /app/static/uploads/2021/04/前台笔记20210411202152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/前台笔记20210411202152.png -------------------------------------------------------------------------------- /app/static/uploads/2021/04/前台首页20210411202117.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/前台首页20210411202117.png -------------------------------------------------------------------------------- /app/static/uploads/2021/04/前台首页220210411202534.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/前台首页220210411202534.png -------------------------------------------------------------------------------- /app/static/uploads/2021/04/后台撰写页20210411202257.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/后台撰写页20210411202257.png -------------------------------------------------------------------------------- /app/static/uploads/2021/04/后台管理页20210411202312.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/后台管理页20210411202312.png -------------------------------------------------------------------------------- /app/static/uploads/2021/04/后台首页20210411202244.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/后台首页20210411202244.png -------------------------------------------------------------------------------- /app/static/uploads/2021/04/安装脚本20210411131734.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/安装脚本20210411131734.PNG -------------------------------------------------------------------------------- /app/static/uploads/2021/04/官网下载源码20210411131204.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/官网下载源码20210411131204.PNG -------------------------------------------------------------------------------- /app/static/uploads/2021/04/最终20210411131416.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/最终20210411131416.PNG -------------------------------------------------------------------------------- /app/static/uploads/2021/04/查看20210411131408.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/查看20210411131408.PNG -------------------------------------------------------------------------------- /app/static/uploads/2021/04/结构20210411130635.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/结构20210411130635.png -------------------------------------------------------------------------------- /app/static/uploads/2021/04/缺少jre20210411131229.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/缺少jre20210411131229.png -------------------------------------------------------------------------------- /app/static/uploads/2021/04/网卡20210411131126.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/网卡20210411131126.JPG -------------------------------------------------------------------------------- /app/static/uploads/2021/04/远程插件20210411131113.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/远程插件20210411131113.JPG -------------------------------------------------------------------------------- /app/static/uploads/2021/04/连接成功20210411131048.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/app/static/uploads/2021/04/连接成功20210411131048.JPG -------------------------------------------------------------------------------- /app/templates/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {% block head %} 5 | {% block title %} 6 | 404 Error 7 | {% endblock title %} 8 | 9 | {% block metas %} 10 | 11 | 12 | {% endblock metas %} 13 | 14 | {% block styles %} 15 | 16 | 17 | {% endblock styles %} 18 | {% endblock head %} 19 | 20 | 21 | {% block body %} 22 |
23 |
24 |

您访问的内容不见啦,404 Error...

25 |
26 |
27 | 28 |
29 | 返回首页 30 |
31 | {% endblock body %} 32 | 33 | -------------------------------------------------------------------------------- /app/templates/500.html: -------------------------------------------------------------------------------- 1 | {% extends '404.html' %} 2 | 3 | {% block title %} 4 | 500 Errors 5 | {% endblock title %} 6 | 7 | {% block body %} 8 |
9 |
10 |

服务器出错啦,500 Error...

11 |
12 |
13 | 14 |
15 | 返回首页 16 |
17 | {% endblock body %} -------------------------------------------------------------------------------- /app/templates/about.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% block content %} 4 | 5 |
6 | 7 |
8 | 9 | 首页 10 | 关于 11 | 12 |
13 | 14 |
15 | 16 |
17 |
18 |
19 |

关于作者

20 |
21 |
22 |

{{ admin.about }}

23 |
24 |
25 |
26 | 27 | {% include '_sidebar.html' %} 28 |
29 |
30 | {% endblock content %} -------------------------------------------------------------------------------- /app/templates/admin/index.html: -------------------------------------------------------------------------------- 1 | {% extends 'admin/base.html' %}} 2 | 3 | {% block content %} 4 | 5 |
6 |
7 |

当前共有{{ info["post_num"] }}篇文章,{{ info["note_num"] }}条笔记, 8 | {{ info["category_num"] }}个分类,{{ info["tag_num"] }}个文章标签, 9 | {{ info["comment_num"] }}条评论,{{ info["message_num"] }}条留言,加油吧~

10 | 14 |
15 |

最近发布的文章

16 |
    17 | {% for post in posts %} 18 |
  • {{ post.date|strftime("%Y-%m-%d") }} {{ post.title }}
  • 19 | {% endfor %} 20 |
21 |
22 |
23 |
24 | 25 | {% endblock content %} -------------------------------------------------------------------------------- /app/templates/archive.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% block content %} 4 | 5 |
6 | 7 |
8 | 9 | 首页 10 | 归档 11 | 12 |
13 | 14 |
15 | 16 |
17 | {% if not arch_list.items() %} 18 |
19 |

一片文章也没有呢~

20 |
21 | {% else %} 22 |
23 | {% for key,value in arch_list.items() %} 24 |
25 |

{{ key }}

26 |
    27 | {% for val in value %} 28 |
  •  {{ val.title }}
  • 29 | {% endfor %} 30 |
31 |
32 | {% endfor %} 33 |
34 | {% endif %} 35 |
36 | 37 | {% include '_sidebar.html' %} 38 |
39 |
40 | {% endblock content %} -------------------------------------------------------------------------------- /app/timer.py: -------------------------------------------------------------------------------- 1 | # -*— coding:utf-8 -*— 2 | from .models import Post, Note 3 | from config import Config 4 | from datetime import datetime 5 | import requests 6 | #定义任务执行程序 7 | def post_baidu_urls(): 8 | # 提交收录链接 9 | url = 'http://data.zz.baidu.com/urls?site=https://www.tryblog.top&token=GNsd5RAc8GUDZsiT' 10 | cposts = Post.query.all() 11 | cnotes = len(Note.query.all()) 12 | if (cnotes % Config.FLASKY_POSTS_PER_PAGE) != 0: 13 | pages = int(cnotes / Config.FLASKY_POSTS_PER_PAGE) + 1 14 | else: 15 | pages = cnotes / Config.FLASKY_POSTS_PER_PAGE 16 | data = '' 17 | for post in cposts: 18 | data = data + '\nhttps://www.tryblog.top/post' + str(post.id) + '.html' 19 | for page in range(pages): 20 | data = data + '\nhttps://www.tryblog.top/note' + str(page+1) + '.html' 21 | headers = {'User-Agent': 'curl/7.12.1', 22 | 'Host': 'data.zz.baidu.com', 23 | 'Content-Type': 'text/plain', 24 | 'Content-Length': str(len(data))} 25 | res = requests.post(url=url, headers=headers, data=data) 26 | print(res.text) 27 | file = open('site.log', 'a') 28 | file.write(datetime.now().strftime("%Y-%m-%d %H:%M:%S") + ' 推送链接:' + data + '\n' 29 | + '提交状态:' + res.text + '\n\n') 30 | file.close() -------------------------------------------------------------------------------- /blog.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/blog.sqlite -------------------------------------------------------------------------------- /manage.py: -------------------------------------------------------------------------------- 1 | # -*— coding:utf-8 -*— 2 | import os 3 | from app import create_app,db 4 | from app.commands import register_commands 5 | from flask_migrate import Migrate 6 | from flask_script import Manager 7 | from bs4 import BeautifulSoup 8 | 9 | # 不同配置选用不同的数据库 10 | app = create_app('development') 11 | migrate = Migrate(app,db) 12 | manager = Manager(app) 13 | 14 | # 注册自定义命令 15 | register_commands(app) 16 | 17 | #------------------------------------------------ 自定义jinja2过滤器 ----------------------------------------------# 18 | # 蓝本中是不能定义过滤器的 19 | # 格式化日期时间 20 | @app.template_filter('strftime') 21 | def _jinja2_filter_datetime(date, fmt=None): 22 | if fmt is None: 23 | fmt = '%Y-%m-%d %H:%M:%S' 24 | return date.strftime(fmt) 25 | 26 | # html中提取纯文本 27 | @app.template_filter('content_text') 28 | def _jinja2_filter_content_text(content): 29 | return ''.join(BeautifulSoup(content,features="html.parser").findAll(text=True)) 30 | 31 | # 提取某一分类文章中的非草稿文章 32 | @app.template_filter('notdraft') 33 | def _jinja2_filter_notdraft(posts): 34 | realposts = [] 35 | for post in posts: 36 | if not post.draft_flag: 37 | realposts.append(post) 38 | return realposts 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | alembic==1.5.6 2 | APScheduler==3.7.0 3 | asgiref==3.3.1 4 | beautifulsoup4==4.9.3 5 | blinker==1.4 6 | certifi==2020.12.5 7 | chardet==4.0.0 8 | click==7.1.2 9 | coverage==5.4 10 | cycler==0.10.0 11 | dnspython==2.1.0 12 | dominate==2.6.0 13 | email-validator==1.1.2 14 | Faker==6.6.3 15 | Flask==1.1.2 16 | Flask-APScheduler==1.12.2 17 | Flask-Bootstrap==3.3.7.1 18 | Flask-Images==3.0.2 19 | Flask-Login==0.5.0 20 | Flask-Mail==0.9.1 21 | Flask-Migrate==2.6.0 22 | Flask-Moment==0.11.0 23 | Flask-PageDown==0.3.0 24 | Flask-Script==2.0.6 25 | Flask-SQLAlchemy==2.4.4 26 | Flask-Uploads==0.2.1 27 | Flask-WTF==0.14.3 28 | ForgeryPy==0.1 29 | freetype-py==2.2.0 30 | future==0.18.2 31 | idna==2.10 32 | image==1.5.33 33 | imbalanced-learn==0.7.0 34 | importlib-metadata==3.4.0 35 | itsdangerous==1.1.0 36 | Jinja2==2.11.3 37 | jinja2-markdown==0.0.3 38 | joblib==1.0.1 39 | json-tricks==3.15.5 40 | jsonify==0.5 41 | Mako==1.1.4 42 | Markdown==3.3.3 43 | MarkupSafe==1.1.1 44 | mccabe==0.6.1 45 | numpy==1.19.5 46 | olefile==0.46 47 | packaging==20.9 48 | Pillow==8.2.0 49 | pillowcase==2.0.0 50 | pyglet==1.5.14 51 | Pygments==2.8.1 52 | PyMySQL==1.0.2 53 | pyparsing==2.4.7 54 | python-dateutil==2.8.1 55 | python-dotenv==0.15.0 56 | python-editor==1.0.4 57 | pytz==2021.1 58 | requests==2.25.1 59 | scikit-learn==0.24.1 60 | scipy==1.5.4 61 | six==1.15.0 62 | soupsieve==2.2.1 63 | SQLAlchemy==1.3.23 64 | sqlparse==0.4.1 65 | text-unidecode==1.3 66 | threadpoolctl==2.1.0 67 | typed-ast==1.4.1 68 | typing-extensions==3.7.4.3 69 | tzlocal==2.1 70 | unrar==0.4 71 | urllib3==1.26.3 72 | visitor==0.1.3 73 | webencodings==0.5.1 74 | Werkzeug==1.0.1 75 | wincertstore==0.2 76 | wrapt==1.11.2 77 | WTForms==2.3.3 78 | zipp==3.4.0 79 | -------------------------------------------------------------------------------- /snapshot/前台正文.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/snapshot/前台正文.png -------------------------------------------------------------------------------- /snapshot/前台留言.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/snapshot/前台留言.png -------------------------------------------------------------------------------- /snapshot/前台笔记.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/snapshot/前台笔记.png -------------------------------------------------------------------------------- /snapshot/前台首页.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/snapshot/前台首页.png -------------------------------------------------------------------------------- /snapshot/前台首页2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/snapshot/前台首页2.png -------------------------------------------------------------------------------- /snapshot/后台撰写页.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/snapshot/后台撰写页.png -------------------------------------------------------------------------------- /snapshot/后台管理页.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/snapshot/后台管理页.png -------------------------------------------------------------------------------- /snapshot/后台首页.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/snapshot/后台首页.png -------------------------------------------------------------------------------- /uwsgi.ini: -------------------------------------------------------------------------------- 1 | [uwsgi] 2 | #配合nginx使用 3 | socket = 127.0.0.1:8000 4 | #项目路径 5 | chdir = /var/www/blog 6 | wsgi-file= /var/www/blog/manage.py 7 | callable = app 8 | #指定工作进程 9 | processes = 4 10 | #主进程 11 | master = true 12 | #每个工作进程有2个线程 13 | threads = 2 14 | #指的后台启动 日志输出的地方 15 | daemonize = uwsgi.log 16 | #保存主进程的进程号 17 | pidfile = uwsgi.pid 18 | #虚拟环境环境路径 19 | virtualenv = /var/www/blog/venv 20 | -------------------------------------------------------------------------------- /uwsgi_nginx.conf: -------------------------------------------------------------------------------- 1 | #监控80端口,强制跳转到443端口 2 | server { 3 | listen 80; 4 | server_name tryblog.top; 5 | rewrite ^(.*)$ https://www.$server_name$1 permanent; 6 | } 7 | 8 | # server { 9 | # listen 80; 10 | # server_name www.tryblog.top; 11 | # charset utf-8; 12 | # client_max_body_size 75M; 13 | # location / { 14 | # alias /var/www/blog/app/static; 15 | # # 伪静态 16 | # rewrite ^(.*)post([0-9]+)\.html$ $1post/$2; 17 | # rewrite ^(.*)note([0-9]+)\.html$ $1note/$2; 18 | # include uwsgi_params; 19 | # uwsgi_pass 127.0.0.1:8000; 20 | # uwsgi_param UWSGI_PYHOME /var/www/blog/venv; #虚拟环境目录 21 | # uwsgi_param UWSGI_CHDIR /var/www/blog; # 应用根目录 22 | # uwsgi_param UWSGI_SCRIPT manage:app; # 启动程序 23 | # } 24 | # } 25 | 26 | server{ 27 | listen 443 ssl ; 28 | server_name www.tryblog.top; 29 | 30 | ssl on; 31 | #证书文件 32 | ssl_certificate /var/www/blog/ssl/tryblog.top.pem; 33 | ssl_certificate_key /var/www/blog/ssl/tryblog.top.key; 34 | ssl_session_timeout 5m; 35 | ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 36 | #密码加密方式 37 | ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; 38 | #依赖SSLv3和TLSv1协议的服务器密码将优先于客户端密码 39 | ssl_prefer_server_ciphers on; 40 | 41 | charset utf-8; 42 | client_max_body_size 75M; 43 | 44 | location / { 45 | alias /var/www/blog/app/static; 46 | # 伪静态 47 | rewrite ^(.*)post([0-9]+)\.html$ $1post/$2; 48 | rewrite ^(.*)note([0-9]+)\.html$ $1note/$2; 49 | include uwsgi_params; 50 | uwsgi_pass 127.0.0.1:8000; 51 | uwsgi_param UWSGI_PYHOME /var/www/blog/venv; #虚拟环境目录 52 | uwsgi_param UWSGI_CHDIR /var/www/blog; # 应用根目录 53 | uwsgi_param UWSGI_SCRIPT manage:app; # 启动程序 54 | } 55 | } 56 | 57 | # 开启gzip压缩 58 | gzip on; 59 | gzip_min_length 1k; 60 | gzip_buffers 4 16k; 61 | gzip_comp_level 6; 62 | gzip_types text/plain text/css text/xml text/javascript application/json application/x-javascript application/javascript application/xml application/xml+rss; 63 | 64 | -------------------------------------------------------------------------------- /windows下运行项目需要/readme.txt: -------------------------------------------------------------------------------- 1 | 在windows下的pycharm中打开本项目时,在建立虚拟环境venv之后,需将sqlite3.dll拷贝至venv/Scripts中,否则数据库将无法正常运行,表现为浏览器报‘server internal error’。 -------------------------------------------------------------------------------- /windows下运行项目需要/sqlite3.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bricker11/flask-blog/b23f33455c6a93b2b4680a5122f37b891fe0157a/windows下运行项目需要/sqlite3.dll --------------------------------------------------------------------------------