lines-engine 0.6.2 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/.gitignore +1 -0
- data/CHANGELOG.md +10 -3
- data/Gemfile +1 -0
- data/Gemfile.lock +10 -6
- data/app/assets/images/favicon.ico +0 -0
- data/app/assets/images/gplus.svg +17 -0
- data/app/assets/javascripts/lines/admin/admin.js +299 -0
- data/app/assets/javascripts/lines/{autosize.min.js → admin/autosize.min.js} +0 -0
- data/app/assets/javascripts/lines/admin/navbar.js +51 -0
- data/app/assets/javascripts/lines/{pictures.js.coffee → admin/pictures.js.coffee} +2 -1
- data/app/assets/javascripts/lines/application.js +3 -0
- data/app/assets/javascripts/lines/articles.js.coffee +1 -0
- data/app/assets/javascripts/lines/viewer.js.coffee +3 -0
- data/app/assets/stylesheets/lines/admin/admin.scss +609 -0
- data/app/assets/stylesheets/lines/admin/variables_and_mixins.scss +36 -0
- data/app/assets/stylesheets/lines/application.scss +2 -13
- data/app/assets/stylesheets/lines/article.scss +165 -69
- data/app/assets/stylesheets/lines/fonts.scss +2 -2
- data/app/assets/stylesheets/lines/footer.scss +10 -56
- data/app/assets/stylesheets/lines/general.scss +18 -13
- data/app/assets/stylesheets/lines/media_queries.scss +5 -1
- data/app/assets/stylesheets/lines/messages.scss +28 -0
- data/app/assets/stylesheets/lines/navbar.scss +199 -122
- data/app/assets/stylesheets/lines/pagination.scss +8 -31
- data/app/assets/stylesheets/lines/pygments.css.erb +1 -2
- data/app/assets/stylesheets/lines/variables_and_mixins.scss +4 -0
- data/app/controllers/lines/admin/articles_controller.rb +8 -6
- data/app/controllers/lines/admin/authors_controller.rb +2 -2
- data/app/controllers/lines/admin/pictures_controller.rb +1 -1
- data/app/controllers/lines/application_controller.rb +1 -1
- data/app/controllers/lines/articles_controller.rb +3 -1
- data/app/controllers/lines/password_resets_controller.rb +4 -7
- data/app/controllers/lines/sessions_controller.rb +3 -3
- data/app/helpers/lines/application_helper.rb +25 -4
- data/app/mailers/lines/user_mailer.rb +1 -1
- data/app/models/lines/article.rb +13 -3
- data/app/models/lines/user.rb +2 -2
- data/app/uploaders/picture_uploader.rb +1 -1
- data/app/views/layouts/lines/_markdown_cheatsheet.html.erb +72 -0
- data/app/views/layouts/lines/admin.html.erb +15 -4
- data/app/views/layouts/lines/application.html.erb +16 -4
- data/app/views/layouts/lines/preview.html.erb +30 -2
- data/app/views/lines/admin/articles/_form.html.erb +50 -148
- data/app/views/lines/admin/articles/_picture_box.html.erb +37 -8
- data/app/views/lines/admin/articles/edit.html.erb +2 -12
- data/app/views/lines/admin/articles/index.html.erb +40 -28
- data/app/views/lines/admin/articles/new.html.erb +3 -10
- data/app/views/lines/admin/articles/show.html.erb +6 -4
- data/app/views/lines/admin/authors/_form.html.erb +12 -41
- data/app/views/lines/admin/authors/index.html.erb +18 -13
- data/app/views/lines/admin/authors/show.html.erb +19 -48
- data/app/views/lines/admin/pictures/_picture.html.erb +5 -4
- data/app/views/lines/admin/pictures/create.js.erb +1 -1
- data/app/views/lines/admin/pictures/destroy.js.erb +1 -1
- data/app/views/lines/articles/_article.html.erb +10 -6
- data/app/views/lines/articles/_article_collection.html.erb +1 -1
- data/app/views/lines/articles/_article_small.html.erb +9 -7
- data/app/views/lines/articles/index.atom.builder +10 -9
- data/app/views/lines/articles/index.html.erb +2 -2
- data/app/views/lines/articles/show.html.erb +5 -1
- data/app/views/lines/password_resets/edit.html.erb +25 -12
- data/app/views/lines/password_resets/new.html.erb +14 -8
- data/app/views/lines/sessions/new.html.erb +6 -10
- data/app/views/lines/shared/_flash.html.erb +1 -1
- data/app/views/lines/shared/_footer.html.erb +5 -28
- data/app/views/lines/user_mailer/password_reset.html.erb +6 -5
- data/app/views/lines/user_mailer/password_reset.text.erb +8 -4
- data/config/lines_config.yml +15 -14
- data/config/routes.rb +2 -2
- data/db/seeds.rb +5 -5
- data/lib/lines/engine.rb +1 -1
- data/lib/lines/version.rb +1 -1
- data/lines.gemspec +1 -1
- data/public/codemirror/.gitattributes +8 -0
- data/public/codemirror/.gitignore +8 -0
- data/public/codemirror/.npmignore +9 -0
- data/public/codemirror/.travis.yml +4 -0
- data/public/codemirror/AUTHORS +474 -0
- data/public/codemirror/CONTRIBUTING.md +88 -0
- data/public/codemirror/LICENSE +19 -0
- data/public/codemirror/README.md +27 -0
- data/public/codemirror/addon/comment/comment.js +183 -0
- data/public/codemirror/addon/comment/continuecomment.js +85 -0
- data/public/codemirror/addon/dialog/dialog.css +32 -0
- data/public/codemirror/addon/dialog/dialog.js +157 -0
- data/public/codemirror/addon/display/fullscreen.css +6 -0
- data/public/codemirror/addon/display/fullscreen.js +41 -0
- data/public/codemirror/addon/display/panel.js +112 -0
- data/public/codemirror/addon/display/placeholder.js +58 -0
- data/public/codemirror/addon/display/rulers.js +63 -0
- data/public/codemirror/addon/edit/closebrackets.js +185 -0
- data/public/codemirror/addon/edit/closetag.js +166 -0
- data/public/codemirror/addon/edit/continuelist.js +51 -0
- data/public/codemirror/addon/edit/matchbrackets.js +120 -0
- data/public/codemirror/addon/edit/matchtags.js +66 -0
- data/public/codemirror/addon/edit/trailingspace.js +27 -0
- data/public/codemirror/addon/fold/brace-fold.js +105 -0
- data/public/codemirror/addon/fold/comment-fold.js +57 -0
- data/public/codemirror/addon/fold/foldcode.js +149 -0
- data/public/codemirror/addon/fold/foldgutter.css +20 -0
- data/public/codemirror/addon/fold/foldgutter.js +146 -0
- data/public/codemirror/addon/fold/indent-fold.js +44 -0
- data/public/codemirror/addon/fold/markdown-fold.js +49 -0
- data/public/codemirror/addon/fold/xml-fold.js +182 -0
- data/public/codemirror/addon/hint/anyword-hint.js +41 -0
- data/public/codemirror/addon/hint/css-hint.js +60 -0
- data/public/codemirror/addon/hint/html-hint.js +348 -0
- data/public/codemirror/addon/hint/javascript-hint.js +146 -0
- data/public/codemirror/addon/hint/show-hint.css +38 -0
- data/public/codemirror/addon/hint/show-hint.js +386 -0
- data/public/codemirror/addon/hint/sql-hint.js +254 -0
- data/public/codemirror/addon/hint/xml-hint.js +110 -0
- data/public/codemirror/addon/lint/coffeescript-lint.js +41 -0
- data/public/codemirror/addon/lint/css-lint.js +35 -0
- data/public/codemirror/addon/lint/javascript-lint.js +136 -0
- data/public/codemirror/addon/lint/json-lint.js +31 -0
- data/public/codemirror/addon/lint/lint.css +73 -0
- data/public/codemirror/addon/lint/lint.js +207 -0
- data/public/codemirror/addon/lint/yaml-lint.js +28 -0
- data/public/codemirror/addon/merge/merge.css +112 -0
- data/public/codemirror/addon/merge/merge.js +775 -0
- data/public/codemirror/addon/mode/loadmode.js +64 -0
- data/public/codemirror/addon/mode/multiplex.js +123 -0
- data/public/codemirror/addon/mode/multiplex_test.js +33 -0
- data/public/codemirror/addon/mode/overlay.js +85 -0
- data/public/codemirror/addon/mode/simple.js +213 -0
- data/public/codemirror/addon/runmode/colorize.js +40 -0
- data/public/codemirror/addon/runmode/runmode-standalone.js +157 -0
- data/public/codemirror/addon/runmode/runmode.js +72 -0
- data/public/codemirror/addon/runmode/runmode.node.js +178 -0
- data/public/codemirror/addon/scroll/annotatescrollbar.js +115 -0
- data/public/codemirror/addon/scroll/scrollpastend.js +46 -0
- data/public/codemirror/addon/scroll/simplescrollbars.css +66 -0
- data/public/codemirror/addon/scroll/simplescrollbars.js +147 -0
- data/public/codemirror/addon/search/match-highlighter.js +128 -0
- data/public/codemirror/addon/search/matchesonscrollbar.css +8 -0
- data/public/codemirror/addon/search/matchesonscrollbar.js +97 -0
- data/public/codemirror/addon/search/search.js +202 -0
- data/public/codemirror/addon/search/searchcursor.js +189 -0
- data/public/codemirror/addon/selection/active-line.js +71 -0
- data/public/codemirror/addon/selection/mark-selection.js +118 -0
- data/public/codemirror/addon/selection/selection-pointer.js +98 -0
- data/public/codemirror/addon/tern/tern.css +87 -0
- data/public/codemirror/addon/tern/tern.js +699 -0
- data/public/codemirror/addon/tern/worker.js +44 -0
- data/public/codemirror/addon/wrap/hardwrap.js +139 -0
- data/public/codemirror/bin/authors.sh +6 -0
- data/public/codemirror/bin/compress +92 -0
- data/public/codemirror/bin/lint +3 -0
- data/public/codemirror/bin/release +45 -0
- data/public/codemirror/bin/source-highlight +51 -0
- data/public/codemirror/bower.json +17 -0
- data/public/codemirror/demo/activeline.html +78 -0
- data/public/codemirror/demo/anywordhint.html +79 -0
- data/public/codemirror/demo/bidi.html +74 -0
- data/public/codemirror/demo/btree.html +85 -0
- data/public/codemirror/demo/buffers.html +109 -0
- data/public/codemirror/demo/changemode.html +58 -0
- data/public/codemirror/demo/closebrackets.html +52 -0
- data/public/codemirror/demo/closetag.html +41 -0
- data/public/codemirror/demo/complete.html +79 -0
- data/public/codemirror/demo/emacs.html +75 -0
- data/public/codemirror/demo/folding.html +95 -0
- data/public/codemirror/demo/fullscreen.html +83 -0
- data/public/codemirror/demo/hardwrap.html +72 -0
- data/public/codemirror/demo/html5complete.html +56 -0
- data/public/codemirror/demo/indentwrap.html +59 -0
- data/public/codemirror/demo/lint.html +171 -0
- data/public/codemirror/demo/loadmode.html +72 -0
- data/public/codemirror/demo/marker.html +52 -0
- data/public/codemirror/demo/markselection.html +52 -0
- data/public/codemirror/demo/matchhighlighter.html +47 -0
- data/public/codemirror/demo/matchtags.html +48 -0
- data/public/codemirror/demo/merge.html +122 -0
- data/public/codemirror/demo/multiplex.html +75 -0
- data/public/codemirror/demo/mustache.html +69 -0
- data/public/codemirror/demo/panel.html +136 -0
- data/public/codemirror/demo/placeholder.html +45 -0
- data/public/codemirror/demo/preview.html +87 -0
- data/public/codemirror/demo/requirejs.html +70 -0
- data/public/codemirror/demo/resize.html +51 -0
- data/public/codemirror/demo/rulers.html +49 -0
- data/public/codemirror/demo/runmode.html +62 -0
- data/public/codemirror/demo/search.html +95 -0
- data/public/codemirror/demo/simplemode.html +186 -0
- data/public/codemirror/demo/simplescrollbars.html +82 -0
- data/public/codemirror/demo/spanaffectswrapping_shim.html +85 -0
- data/public/codemirror/demo/sublime.html +76 -0
- data/public/codemirror/demo/tern.html +133 -0
- data/public/codemirror/demo/theme.html +152 -0
- data/public/codemirror/demo/trailingspace.html +48 -0
- data/public/codemirror/demo/variableheight.html +67 -0
- data/public/codemirror/demo/vim.html +104 -0
- data/public/codemirror/demo/visibletabs.html +62 -0
- data/public/codemirror/demo/widget.html +85 -0
- data/public/codemirror/demo/xmlcomplete.html +119 -0
- data/public/codemirror/doc/activebookmark.js +57 -0
- data/public/codemirror/doc/compress.html +329 -0
- data/public/codemirror/doc/docs.css +271 -0
- data/public/codemirror/doc/internals.html +503 -0
- data/public/codemirror/doc/logo.png +0 -0
- data/public/codemirror/doc/logo.svg +181 -0
- data/public/codemirror/doc/manual.html +3327 -0
- data/public/codemirror/doc/realworld.html +174 -0
- data/public/codemirror/doc/releases.html +1116 -0
- data/public/codemirror/doc/reporting.html +61 -0
- data/public/codemirror/doc/upgrade_v2.2.html +96 -0
- data/public/codemirror/doc/upgrade_v3.html +230 -0
- data/public/codemirror/doc/upgrade_v4.html +144 -0
- data/public/codemirror/doc/yinyang.png +0 -0
- data/public/codemirror/index.html +199 -0
- data/public/codemirror/keymap/emacs.js +412 -0
- data/public/codemirror/keymap/sublime.js +555 -0
- data/public/codemirror/keymap/vim.js +5060 -0
- data/public/codemirror/lib/codemirror.css +332 -0
- data/public/codemirror/lib/codemirror.js +8788 -0
- data/public/codemirror/mode/apl/apl.js +174 -0
- data/public/codemirror/mode/apl/index.html +72 -0
- data/public/codemirror/mode/asciiarmor/asciiarmor.js +73 -0
- data/public/codemirror/mode/asciiarmor/index.html +46 -0
- data/public/codemirror/mode/asn.1/asn.1.js +204 -0
- data/public/codemirror/mode/asn.1/index.html +78 -0
- data/public/codemirror/mode/asterisk/asterisk.js +196 -0
- data/public/codemirror/mode/asterisk/index.html +154 -0
- data/public/codemirror/mode/brainfuck/brainfuck.js +85 -0
- data/public/codemirror/mode/brainfuck/index.html +85 -0
- data/public/codemirror/mode/clike/clike.js +604 -0
- data/public/codemirror/mode/clike/index.html +252 -0
- data/public/codemirror/mode/clike/scala.html +767 -0
- data/public/codemirror/mode/clike/test.js +33 -0
- data/public/codemirror/mode/clojure/clojure.js +244 -0
- data/public/codemirror/mode/clojure/index.html +88 -0
- data/public/codemirror/mode/cmake/cmake.js +97 -0
- data/public/codemirror/mode/cmake/index.html +129 -0
- data/public/codemirror/mode/cobol/cobol.js +255 -0
- data/public/codemirror/mode/cobol/index.html +210 -0
- data/public/codemirror/mode/coffeescript/coffeescript.js +369 -0
- data/public/codemirror/mode/coffeescript/index.html +740 -0
- data/public/codemirror/mode/commonlisp/commonlisp.js +123 -0
- data/public/codemirror/mode/commonlisp/index.html +177 -0
- data/public/codemirror/mode/css/css.js +756 -0
- data/public/codemirror/mode/css/index.html +75 -0
- data/public/codemirror/mode/css/less.html +152 -0
- data/public/codemirror/mode/css/less_test.js +54 -0
- data/public/codemirror/mode/css/scss.html +157 -0
- data/public/codemirror/mode/css/scss_test.js +110 -0
- data/public/codemirror/mode/css/test.js +188 -0
- data/public/codemirror/mode/cypher/cypher.js +146 -0
- data/public/codemirror/mode/cypher/index.html +63 -0
- data/public/codemirror/mode/d/d.js +218 -0
- data/public/codemirror/mode/d/index.html +273 -0
- data/public/codemirror/mode/dart/dart.js +50 -0
- data/public/codemirror/mode/dart/index.html +71 -0
- data/public/codemirror/mode/diff/diff.js +47 -0
- data/public/codemirror/mode/diff/index.html +117 -0
- data/public/codemirror/mode/django/django.js +350 -0
- data/public/codemirror/mode/django/index.html +73 -0
- data/public/codemirror/mode/dockerfile/dockerfile.js +76 -0
- data/public/codemirror/mode/dockerfile/index.html +73 -0
- data/public/codemirror/mode/dtd/dtd.js +142 -0
- data/public/codemirror/mode/dtd/index.html +89 -0
- data/public/codemirror/mode/dylan/dylan.js +291 -0
- data/public/codemirror/mode/dylan/index.html +407 -0
- data/public/codemirror/mode/ebnf/ebnf.js +195 -0
- data/public/codemirror/mode/ebnf/index.html +102 -0
- data/public/codemirror/mode/ecl/ecl.js +206 -0
- data/public/codemirror/mode/ecl/index.html +52 -0
- data/public/codemirror/mode/eiffel/eiffel.js +160 -0
- data/public/codemirror/mode/eiffel/index.html +429 -0
- data/public/codemirror/mode/elm/elm.js +205 -0
- data/public/codemirror/mode/elm/index.html +61 -0
- data/public/codemirror/mode/erlang/erlang.js +618 -0
- data/public/codemirror/mode/erlang/index.html +76 -0
- data/public/codemirror/mode/factor/factor.js +83 -0
- data/public/codemirror/mode/factor/index.html +77 -0
- data/public/codemirror/mode/forth/forth.js +180 -0
- data/public/codemirror/mode/forth/index.html +75 -0
- data/public/codemirror/mode/fortran/fortran.js +188 -0
- data/public/codemirror/mode/fortran/index.html +81 -0
- data/public/codemirror/mode/gas/gas.js +345 -0
- data/public/codemirror/mode/gas/index.html +68 -0
- data/public/codemirror/mode/gfm/gfm.js +124 -0
- data/public/codemirror/mode/gfm/index.html +93 -0
- data/public/codemirror/mode/gfm/test.js +213 -0
- data/public/codemirror/mode/gherkin/gherkin.js +178 -0
- data/public/codemirror/mode/gherkin/index.html +48 -0
- data/public/codemirror/mode/go/go.js +185 -0
- data/public/codemirror/mode/go/index.html +85 -0
- data/public/codemirror/mode/groovy/groovy.js +230 -0
- data/public/codemirror/mode/groovy/index.html +84 -0
- data/public/codemirror/mode/haml/haml.js +159 -0
- data/public/codemirror/mode/haml/index.html +79 -0
- data/public/codemirror/mode/haml/test.js +97 -0
- data/public/codemirror/mode/handlebars/handlebars.js +53 -0
- data/public/codemirror/mode/handlebars/index.html +83 -0
- data/public/codemirror/mode/haskell/haskell.js +267 -0
- data/public/codemirror/mode/haskell/index.html +73 -0
- data/public/codemirror/mode/haxe/haxe.js +518 -0
- data/public/codemirror/mode/haxe/index.html +124 -0
- data/public/codemirror/mode/htmlembedded/htmlembedded.js +28 -0
- data/public/codemirror/mode/htmlembedded/index.html +59 -0
- data/public/codemirror/mode/htmlmixed/htmlmixed.js +121 -0
- data/public/codemirror/mode/htmlmixed/index.html +89 -0
- data/public/codemirror/mode/http/http.js +113 -0
- data/public/codemirror/mode/http/index.html +45 -0
- data/public/codemirror/mode/idl/idl.js +290 -0
- data/public/codemirror/mode/idl/index.html +64 -0
- data/public/codemirror/mode/index.html +149 -0
- data/public/codemirror/mode/jade/index.html +70 -0
- data/public/codemirror/mode/jade/jade.js +590 -0
- data/public/codemirror/mode/javascript/index.html +114 -0
- data/public/codemirror/mode/javascript/javascript.js +704 -0
- data/public/codemirror/mode/javascript/json-ld.html +72 -0
- data/public/codemirror/mode/javascript/test.js +205 -0
- data/public/codemirror/mode/javascript/typescript.html +61 -0
- data/public/codemirror/mode/jinja2/index.html +54 -0
- data/public/codemirror/mode/jinja2/jinja2.js +142 -0
- data/public/codemirror/mode/julia/index.html +195 -0
- data/public/codemirror/mode/julia/julia.js +299 -0
- data/public/codemirror/mode/kotlin/index.html +89 -0
- data/public/codemirror/mode/kotlin/kotlin.js +284 -0
- data/public/codemirror/mode/livescript/index.html +459 -0
- data/public/codemirror/mode/livescript/livescript.js +280 -0
- data/public/codemirror/mode/lua/index.html +85 -0
- data/public/codemirror/mode/lua/lua.js +159 -0
- data/public/codemirror/mode/markdown/index.html +359 -0
- data/public/codemirror/mode/markdown/markdown.js +781 -0
- data/public/codemirror/mode/markdown/test.js +792 -0
- data/public/codemirror/mode/mathematica/index.html +72 -0
- data/public/codemirror/mode/mathematica/mathematica.js +175 -0
- data/public/codemirror/mode/meta.js +190 -0
- data/public/codemirror/mode/mirc/index.html +160 -0
- data/public/codemirror/mode/mirc/mirc.js +193 -0
- data/public/codemirror/mode/mllike/index.html +179 -0
- data/public/codemirror/mode/mllike/mllike.js +205 -0
- data/public/codemirror/mode/modelica/index.html +67 -0
- data/public/codemirror/mode/modelica/modelica.js +245 -0
- data/public/codemirror/mode/mumps/index.html +85 -0
- data/public/codemirror/mode/mumps/mumps.js +148 -0
- data/public/codemirror/mode/nginx/index.html +181 -0
- data/public/codemirror/mode/nginx/nginx.js +178 -0
- data/public/codemirror/mode/ntriples/index.html +45 -0
- data/public/codemirror/mode/ntriples/ntriples.js +186 -0
- data/public/codemirror/mode/octave/index.html +83 -0
- data/public/codemirror/mode/octave/octave.js +135 -0
- data/public/codemirror/mode/pascal/index.html +61 -0
- data/public/codemirror/mode/pascal/pascal.js +109 -0
- data/public/codemirror/mode/pegjs/index.html +66 -0
- data/public/codemirror/mode/pegjs/pegjs.js +114 -0
- data/public/codemirror/mode/perl/index.html +75 -0
- data/public/codemirror/mode/perl/perl.js +837 -0
- data/public/codemirror/mode/php/index.html +64 -0
- data/public/codemirror/mode/php/php.js +230 -0
- data/public/codemirror/mode/php/test.js +154 -0
- data/public/codemirror/mode/pig/index.html +55 -0
- data/public/codemirror/mode/pig/pig.js +178 -0
- data/public/codemirror/mode/properties/index.html +53 -0
- data/public/codemirror/mode/properties/properties.js +78 -0
- data/public/codemirror/mode/puppet/index.html +121 -0
- data/public/codemirror/mode/puppet/puppet.js +220 -0
- data/public/codemirror/mode/python/index.html +198 -0
- data/public/codemirror/mode/python/python.js +358 -0
- data/public/codemirror/mode/q/index.html +144 -0
- data/public/codemirror/mode/q/q.js +139 -0
- data/public/codemirror/mode/r/index.html +85 -0
- data/public/codemirror/mode/r/r.js +162 -0
- data/public/codemirror/mode/rpm/changes/index.html +66 -0
- data/public/codemirror/mode/rpm/index.html +149 -0
- data/public/codemirror/mode/rpm/rpm.js +101 -0
- data/public/codemirror/mode/rst/index.html +535 -0
- data/public/codemirror/mode/rst/rst.js +557 -0
- data/public/codemirror/mode/ruby/index.html +183 -0
- data/public/codemirror/mode/ruby/ruby.js +285 -0
- data/public/codemirror/mode/ruby/test.js +14 -0
- data/public/codemirror/mode/rust/index.html +60 -0
- data/public/codemirror/mode/rust/rust.js +451 -0
- data/public/codemirror/mode/sass/index.html +66 -0
- data/public/codemirror/mode/sass/sass.js +414 -0
- data/public/codemirror/mode/scheme/index.html +77 -0
- data/public/codemirror/mode/scheme/scheme.js +249 -0
- data/public/codemirror/mode/shell/index.html +66 -0
- data/public/codemirror/mode/shell/shell.js +139 -0
- data/public/codemirror/mode/shell/test.js +58 -0
- data/public/codemirror/mode/sieve/index.html +93 -0
- data/public/codemirror/mode/sieve/sieve.js +193 -0
- data/public/codemirror/mode/slim/index.html +96 -0
- data/public/codemirror/mode/slim/slim.js +575 -0
- data/public/codemirror/mode/slim/test.js +96 -0
- data/public/codemirror/mode/smalltalk/index.html +68 -0
- data/public/codemirror/mode/smalltalk/smalltalk.js +168 -0
- data/public/codemirror/mode/smarty/index.html +138 -0
- data/public/codemirror/mode/smarty/smarty.js +225 -0
- data/public/codemirror/mode/solr/index.html +57 -0
- data/public/codemirror/mode/solr/solr.js +104 -0
- data/public/codemirror/mode/soy/index.html +68 -0
- data/public/codemirror/mode/soy/soy.js +198 -0
- data/public/codemirror/mode/sparql/index.html +61 -0
- data/public/codemirror/mode/sparql/sparql.js +174 -0
- data/public/codemirror/mode/spreadsheet/index.html +42 -0
- data/public/codemirror/mode/spreadsheet/spreadsheet.js +109 -0
- data/public/codemirror/mode/sql/index.html +84 -0
- data/public/codemirror/mode/sql/sql.js +391 -0
- data/public/codemirror/mode/stex/index.html +110 -0
- data/public/codemirror/mode/stex/stex.js +251 -0
- data/public/codemirror/mode/stex/test.js +123 -0
- data/public/codemirror/mode/stylus/index.html +106 -0
- data/public/codemirror/mode/stylus/stylus.js +768 -0
- data/public/codemirror/mode/swift/index.html +88 -0
- data/public/codemirror/mode/swift/swift.js +203 -0
- data/public/codemirror/mode/tcl/index.html +142 -0
- data/public/codemirror/mode/tcl/tcl.js +147 -0
- data/public/codemirror/mode/textile/index.html +191 -0
- data/public/codemirror/mode/textile/test.js +417 -0
- data/public/codemirror/mode/textile/textile.js +469 -0
- data/public/codemirror/mode/tiddlywiki/index.html +154 -0
- data/public/codemirror/mode/tiddlywiki/tiddlywiki.css +14 -0
- data/public/codemirror/mode/tiddlywiki/tiddlywiki.js +358 -0
- data/public/codemirror/mode/tiki/index.html +95 -0
- data/public/codemirror/mode/tiki/tiki.css +26 -0
- data/public/codemirror/mode/tiki/tiki.js +312 -0
- data/public/codemirror/mode/toml/index.html +73 -0
- data/public/codemirror/mode/toml/toml.js +88 -0
- data/public/codemirror/mode/tornado/index.html +63 -0
- data/public/codemirror/mode/tornado/tornado.js +68 -0
- data/public/codemirror/mode/troff/index.html +146 -0
- data/public/codemirror/mode/troff/troff.js +82 -0
- data/public/codemirror/mode/ttcn-cfg/index.html +115 -0
- data/public/codemirror/mode/ttcn-cfg/ttcn-cfg.js +214 -0
- data/public/codemirror/mode/ttcn/index.html +118 -0
- data/public/codemirror/mode/ttcn/ttcn.js +283 -0
- data/public/codemirror/mode/turtle/index.html +50 -0
- data/public/codemirror/mode/turtle/turtle.js +162 -0
- data/public/codemirror/mode/twig/index.html +45 -0
- data/public/codemirror/mode/twig/twig.js +132 -0
- data/public/codemirror/mode/vb/index.html +102 -0
- data/public/codemirror/mode/vb/vb.js +276 -0
- data/public/codemirror/mode/vbscript/index.html +55 -0
- data/public/codemirror/mode/vbscript/vbscript.js +350 -0
- data/public/codemirror/mode/velocity/index.html +118 -0
- data/public/codemirror/mode/velocity/velocity.js +201 -0
- data/public/codemirror/mode/verilog/index.html +120 -0
- data/public/codemirror/mode/verilog/test.js +273 -0
- data/public/codemirror/mode/verilog/verilog.js +537 -0
- data/public/codemirror/mode/vhdl/index.html +95 -0
- data/public/codemirror/mode/vhdl/vhdl.js +189 -0
- data/public/codemirror/mode/xml/index.html +57 -0
- data/public/codemirror/mode/xml/test.js +51 -0
- data/public/codemirror/mode/xml/xml.js +385 -0
- data/public/codemirror/mode/xquery/index.html +210 -0
- data/public/codemirror/mode/xquery/test.js +67 -0
- data/public/codemirror/mode/xquery/xquery.js +437 -0
- data/public/codemirror/mode/yaml/index.html +80 -0
- data/public/codemirror/mode/yaml/yaml.js +117 -0
- data/public/codemirror/mode/z80/index.html +53 -0
- data/public/codemirror/mode/z80/z80.js +116 -0
- data/public/codemirror/package.json +20 -0
- data/public/codemirror/test/comment_test.js +100 -0
- data/public/codemirror/test/doc_test.js +371 -0
- data/public/codemirror/test/driver.js +138 -0
- data/public/codemirror/test/emacs_test.js +147 -0
- data/public/codemirror/test/index.html +241 -0
- data/public/codemirror/test/lint.js +11 -0
- data/public/codemirror/test/mode_test.css +23 -0
- data/public/codemirror/test/mode_test.js +192 -0
- data/public/codemirror/test/multi_test.js +285 -0
- data/public/codemirror/test/phantom_driver.js +31 -0
- data/public/codemirror/test/run.js +31 -0
- data/public/codemirror/test/scroll_test.js +115 -0
- data/public/codemirror/test/search_test.js +62 -0
- data/public/codemirror/test/sql-hint-test.js +189 -0
- data/public/codemirror/test/sublime_test.js +303 -0
- data/public/codemirror/test/test.js +2142 -0
- data/public/codemirror/test/vim_test.js +3955 -0
- data/public/codemirror/theme/3024-day.css +41 -0
- data/public/codemirror/theme/3024-night.css +39 -0
- data/public/codemirror/theme/ambiance-mobile.css +5 -0
- data/public/codemirror/theme/ambiance.css +76 -0
- data/public/codemirror/theme/base16-dark.css +38 -0
- data/public/codemirror/theme/base16-light.css +38 -0
- data/public/codemirror/theme/blackboard.css +32 -0
- data/public/codemirror/theme/cobalt.css +25 -0
- data/public/codemirror/theme/colorforth.css +33 -0
- data/public/codemirror/theme/dracula.css +87 -0
- data/public/codemirror/theme/eclipse.css +23 -0
- data/public/codemirror/theme/elegant.css +13 -0
- data/public/codemirror/theme/erlang-dark.css +34 -0
- data/public/codemirror/theme/icecoder.css +42 -0
- data/public/codemirror/theme/lesser-dark.css +47 -0
- data/public/codemirror/theme/lines.css +109 -0
- data/public/codemirror/theme/liquibyte.css +95 -0
- data/public/codemirror/theme/material.css +105 -0
- data/public/codemirror/theme/mbo.css +37 -0
- data/public/codemirror/theme/mdn-like.css +46 -0
- data/public/codemirror/theme/midnight.css +47 -0
- data/public/codemirror/theme/monokai.css +35 -0
- data/public/codemirror/theme/neat.css +12 -0
- data/public/codemirror/theme/neo.css +43 -0
- data/public/codemirror/theme/night.css +28 -0
- data/public/codemirror/theme/paraiso-dark.css +38 -0
- data/public/codemirror/theme/paraiso-light.css +38 -0
- data/public/codemirror/theme/pastel-on-dark.css +53 -0
- data/public/codemirror/theme/rubyblue.css +25 -0
- data/public/codemirror/theme/seti.css +88 -0
- data/public/codemirror/theme/solarized.css +165 -0
- data/public/codemirror/theme/the-matrix.css +30 -0
- data/public/codemirror/theme/tomorrow-night-bright.css +35 -0
- data/public/codemirror/theme/tomorrow-night-eighties.css +38 -0
- data/public/codemirror/theme/ttcn.css +65 -0
- data/public/codemirror/theme/twilight.css +32 -0
- data/public/codemirror/theme/vibrant-ink.css +34 -0
- data/public/codemirror/theme/xq-dark.css +53 -0
- data/public/codemirror/theme/xq-light.css +43 -0
- data/public/codemirror/theme/yeti.css +86 -0
- data/public/codemirror/theme/zenburn.css +37 -0
- data/public/fira-mono/FiraMono-Bold.eot +0 -0
- data/public/fira-mono/FiraMono-Bold.otf +0 -0
- data/public/fira-mono/FiraMono-Bold.ttf +0 -0
- data/public/fira-mono/FiraMono-Bold.woff +0 -0
- data/public/fira-mono/FiraMono-Medium.eot +0 -0
- data/public/fira-mono/FiraMono-Medium.otf +0 -0
- data/public/fira-mono/FiraMono-Medium.ttf +0 -0
- data/public/fira-mono/FiraMono-Medium.woff +0 -0
- data/public/fira-mono/FiraMono-Regular.eot +0 -0
- data/public/fira-mono/FiraMono-Regular.otf +0 -0
- data/public/fira-mono/FiraMono-Regular.ttf +0 -0
- data/public/fira-mono/FiraMono-Regular.woff +0 -0
- data/public/fira-mono/fira-mono.css +32 -0
- data/public/heroes/lines_default_01.png +0 -0
- data/public/heroes/lines_default_02.png +0 -0
- data/public/heroes/lines_default_03.png +0 -0
- data/public/iconfont/iconfont.css +48 -0
- data/public/iconfont/iconfont.eot +0 -0
- data/public/iconfont/iconfont.svg +18 -0
- data/public/iconfont/iconfont.ttf +0 -0
- data/public/iconfont/iconfont.woff +0 -0
- data/spec/dummy/config/environments/test.rb +3 -1
- data/spec/dummy/db/migrate/20140505122014_base_migration.rb +84 -0
- data/spec/dummy/db/migrate/20140702160602_acts_as_taggable_on_migration.acts_as_taggable_on_engine.rb +31 -0
- data/spec/dummy/db/migrate/20140702160603_add_missing_unique_indices.acts_as_taggable_on_engine.rb +20 -0
- data/spec/dummy/db/migrate/20140702160604_add_taggings_counter_cache_to_tags.acts_as_taggable_on_engine.rb +15 -0
- data/spec/dummy/db/migrate/20141027143656_add_teaser_to_article.rb +5 -0
- data/spec/dummy/db/migrate/20150421093311_add_reset_password_fields_to_users.rb +6 -0
- data/spec/dummy/db/schema.rb +50 -50
- data/spec/dummy/db/seeds.rb +5 -5
- data/spec/factories/users.rb +1 -1
- data/spec/features/article_spec.rb +4 -4
- data/spec/features/password_reset_spec.rb +17 -17
- data/spec/features/user_logs_in_spec.rb +6 -8
- data/spec/mailers/lines/user_mailer_spec.rb +1 -1
- data/spec/models/article_spec.rb +6 -6
- data/spec/support/auth_macros.rb +2 -2
- metadata +492 -26
- metadata.gz.sig +0 -0
- data/app/assets/images/ic_gplus.png +0 -0
- data/app/assets/images/ic_gplus_hover.png +0 -0
- data/app/assets/images/logo.png +0 -0
- data/app/assets/images/logo_opoloo.png +0 -0
- data/app/assets/images/signet.png +0 -0
- data/app/assets/javascripts/lines/admin.js +0 -201
- data/app/assets/stylesheets/lines/admin.scss +0 -970
- data/app/views/layouts/lines/_messages.html.erb +0 -8
- data/app/views/lines/admin/articles/_formatting_guide.html.erb +0 -89
- data/public/heroes/001.jpg +0 -0
- data/public/heroes/001_dark.jpg +0 -0
- data/public/heroes/002.jpg +0 -0
- data/public/heroes/002_dark.jpg +0 -0
- data/public/heroes/003.jpg +0 -0
- data/public/heroes/003_dark.jpg +0 -0
- data/spec/dummy/config/lines_config.yml +0 -58
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
|
|
3
|
+
<title>CodeMirror: Simple Mode Demo</title>
|
|
4
|
+
<meta charset="utf-8"/>
|
|
5
|
+
<link rel=stylesheet href="../doc/docs.css">
|
|
6
|
+
|
|
7
|
+
<link rel="stylesheet" href="../lib/codemirror.css">
|
|
8
|
+
<script src="../lib/codemirror.js"></script>
|
|
9
|
+
<script src="../addon/mode/simple.js"></script>
|
|
10
|
+
<script src="../mode/xml/xml.js"></script>
|
|
11
|
+
<style type="text/css">
|
|
12
|
+
.CodeMirror {border: 1px solid silver; margin-bottom: 1em; }
|
|
13
|
+
dt { text-indent: -2em; padding-left: 2em; margin-top: 1em; }
|
|
14
|
+
dd { margin-left: 1.5em; margin-bottom: 1em; }
|
|
15
|
+
dt {margin-top: 1em;}
|
|
16
|
+
</style>
|
|
17
|
+
|
|
18
|
+
<div id=nav>
|
|
19
|
+
<a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../doc/logo.png"></a>
|
|
20
|
+
|
|
21
|
+
<ul>
|
|
22
|
+
<li><a href="../index.html">Home</a>
|
|
23
|
+
<li><a href="../doc/manual.html">Manual</a>
|
|
24
|
+
<li><a href="https://github.com/codemirror/codemirror">Code</a>
|
|
25
|
+
</ul>
|
|
26
|
+
<ul>
|
|
27
|
+
<li><a class=active href="#">Simple Mode</a>
|
|
28
|
+
</ul>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
<article>
|
|
32
|
+
<h2>Simple Mode Demo</h2>
|
|
33
|
+
|
|
34
|
+
<p>The <a href="../addon/mode/simple.js"><code>mode/simple</code></a>
|
|
35
|
+
addon allows CodeMirror modes to be specified using a relatively simple
|
|
36
|
+
declarative format. This format is not as powerful as writing code
|
|
37
|
+
directly against the <a href="../doc/manual.html#modeapi">mode
|
|
38
|
+
interface</a>, but is a lot easier to get started with, and
|
|
39
|
+
sufficiently expressive for many simple language modes.</p>
|
|
40
|
+
|
|
41
|
+
<p>This interface is still in flux. It is unlikely to be scrapped or
|
|
42
|
+
overhauled completely, so do start writing code against it, but
|
|
43
|
+
details might change as it stabilizes, and you might have to tweak
|
|
44
|
+
your code when upgrading.</p>
|
|
45
|
+
|
|
46
|
+
<p>Simple modes (loosely based on
|
|
47
|
+
the <a href="https://github.com/mozilla/skywriter/wiki/Common-JavaScript-Syntax-Highlighting-Specification">Common
|
|
48
|
+
JavaScript Syntax Highlighting Specification</a>, which never took
|
|
49
|
+
off), are state machines, where each state has a number of rules that
|
|
50
|
+
match tokens. A rule describes a type of token that may occur in the
|
|
51
|
+
current state, and possibly a transition to another state caused by
|
|
52
|
+
that token.</p>
|
|
53
|
+
|
|
54
|
+
<p>The <code>CodeMirror.defineSimpleMode(name, states)</code> method
|
|
55
|
+
takes a mode name and an object that describes the mode's states. The
|
|
56
|
+
editor below shows an example of such a mode (and is itself
|
|
57
|
+
highlighted by the mode shown in it).</p>
|
|
58
|
+
|
|
59
|
+
<div id="code"></div>
|
|
60
|
+
|
|
61
|
+
<p>Each state is an array of rules. A rule may have the following properties:</p>
|
|
62
|
+
|
|
63
|
+
<dl>
|
|
64
|
+
<dt><code><strong>regex</strong>: string | RegExp</code></dt>
|
|
65
|
+
<dd>The regular expression that matches the token. May be a string
|
|
66
|
+
or a regex object. When a regex, the <code>ignoreCase</code> flag
|
|
67
|
+
will be taken into account when matching the token. This regex
|
|
68
|
+
should only capture groups when the <code>token</code> property is
|
|
69
|
+
an array.</dd>
|
|
70
|
+
<dt><code><strong>token</strong></code>: string | null</dt>
|
|
71
|
+
<dd>An optional token style. Multiple styles can be specified by
|
|
72
|
+
separating them with dots or spaces. When the <code>regex</code> for
|
|
73
|
+
this rule captures groups, it must capture <em>all</em> of the
|
|
74
|
+
string (since JS provides no way to find out where a group matched),
|
|
75
|
+
and this property must hold an array of token styles that has one
|
|
76
|
+
style for each matched group.</dd>
|
|
77
|
+
<dt><code><strong>sol</strong></code>: boolean</dt>
|
|
78
|
+
<dd>When true, this token will only match at the start of the line.
|
|
79
|
+
(The <code>^</code> regexp marker doesn't work as you'd expect in
|
|
80
|
+
this context because of limitations in JavaScript's RegExp
|
|
81
|
+
API.)</dd>
|
|
82
|
+
<dt><code><strong>next</strong>: string</code></dt>
|
|
83
|
+
<dd>When a <code>next</code> property is present, the mode will
|
|
84
|
+
transfer to the state named by the property when the token is
|
|
85
|
+
encountered.</dd>
|
|
86
|
+
<dt><code><strong>push</strong>: string</code></dt>
|
|
87
|
+
<dd>Like <code>next</code>, but instead replacing the current state
|
|
88
|
+
by the new state, the current state is kept on a stack, and can be
|
|
89
|
+
returned to with the <code>pop</code> directive.</dd>
|
|
90
|
+
<dt><code><strong>pop</strong>: bool</code></dt>
|
|
91
|
+
<dd>When true, and there is another state on the state stack, will
|
|
92
|
+
cause the mode to pop that state off the stack and transition to
|
|
93
|
+
it.</dd>
|
|
94
|
+
<dt><code><strong>mode</strong>: {spec, end, persistent}</code></dt>
|
|
95
|
+
<dd>Can be used to embed another mode inside a mode. When present,
|
|
96
|
+
must hold an object with a <code>spec</code> property that describes
|
|
97
|
+
the embedded mode, and an optional <code>end</code> end property
|
|
98
|
+
that specifies the regexp that will end the extent of the mode. When
|
|
99
|
+
a <code>persistent</code> property is set (and true), the nested
|
|
100
|
+
mode's state will be preserved between occurrences of the mode.</dd>
|
|
101
|
+
<dt><code><strong>indent</strong>: bool</code></dt>
|
|
102
|
+
<dd>When true, this token changes the indentation to be one unit
|
|
103
|
+
more than the current line's indentation.</dd>
|
|
104
|
+
<dt><code><strong>dedent</strong>: bool</code></dt>
|
|
105
|
+
<dd>When true, this token will pop one scope off the indentation
|
|
106
|
+
stack.</dd>
|
|
107
|
+
<dt><code><strong>dedentIfLineStart</strong>: bool</code></dt>
|
|
108
|
+
<dd>If a token has its <code>dedent</code> property set, it will, by
|
|
109
|
+
default, cause lines where it appears at the start to be dedented.
|
|
110
|
+
Set this property to false to prevent that behavior.</dd>
|
|
111
|
+
</dl>
|
|
112
|
+
|
|
113
|
+
<p>The <code>meta</code> property of the states object is special, and
|
|
114
|
+
will not be interpreted as a state. Instead, properties set on it will
|
|
115
|
+
be set on the mode, which is useful for properties
|
|
116
|
+
like <a href="../doc/manual.html#addon_comment"><code>lineComment</code></a>,
|
|
117
|
+
which sets the comment style for a mode. The simple mode addon also
|
|
118
|
+
recognizes a few such properties:</p>
|
|
119
|
+
|
|
120
|
+
<dl>
|
|
121
|
+
<dt><code><strong>dontIndentStates</strong>: array<string></code></dt>
|
|
122
|
+
<dd>An array of states in which the mode's auto-indentation should
|
|
123
|
+
not take effect. Usually used for multi-line comment and string
|
|
124
|
+
states.</dd>
|
|
125
|
+
</dl>
|
|
126
|
+
|
|
127
|
+
<script id="modecode">/* Example definition of a simple mode that understands a subset of
|
|
128
|
+
* JavaScript:
|
|
129
|
+
*/
|
|
130
|
+
|
|
131
|
+
CodeMirror.defineSimpleMode("simplemode", {
|
|
132
|
+
// The start state contains the rules that are intially used
|
|
133
|
+
start: [
|
|
134
|
+
// The regex matches the token, the token property contains the type
|
|
135
|
+
{regex: /"(?:[^\\]|\\.)*?"/, token: "string"},
|
|
136
|
+
// You can match multiple tokens at once. Note that the captured
|
|
137
|
+
// groups must span the whole string in this case
|
|
138
|
+
{regex: /(function)(\s+)([a-z$][\w$]*)/,
|
|
139
|
+
token: ["keyword", null, "variable-2"]},
|
|
140
|
+
// Rules are matched in the order in which they appear, so there is
|
|
141
|
+
// no ambiguity between this one and the one above
|
|
142
|
+
{regex: /(?:function|var|return|if|for|while|else|do|this)\b/,
|
|
143
|
+
token: "keyword"},
|
|
144
|
+
{regex: /true|false|null|undefined/, token: "atom"},
|
|
145
|
+
{regex: /0x[a-f\d]+|[-+]?(?:\.\d+|\d+\.?\d*)(?:e[-+]?\d+)?/i,
|
|
146
|
+
token: "number"},
|
|
147
|
+
{regex: /\/\/.*/, token: "comment"},
|
|
148
|
+
{regex: /\/(?:[^\\]|\\.)*?\//, token: "variable-3"},
|
|
149
|
+
// A next property will cause the mode to move to a different state
|
|
150
|
+
{regex: /\/\*/, token: "comment", next: "comment"},
|
|
151
|
+
{regex: /[-+\/*=<>!]+/, token: "operator"},
|
|
152
|
+
// indent and dedent properties guide autoindentation
|
|
153
|
+
{regex: /[\{\[\(]/, indent: true},
|
|
154
|
+
{regex: /[\}\]\)]/, dedent: true},
|
|
155
|
+
{regex: /[a-z$][\w$]*/, token: "variable"},
|
|
156
|
+
// You can embed other modes with the mode property. This rule
|
|
157
|
+
// causes all code between << and >> to be highlighted with the XML
|
|
158
|
+
// mode.
|
|
159
|
+
{regex: /<</, token: "meta", mode: {spec: "xml", end: />>/}}
|
|
160
|
+
],
|
|
161
|
+
// The multi-line comment state.
|
|
162
|
+
comment: [
|
|
163
|
+
{regex: /.*?\*\//, token: "comment", next: "start"},
|
|
164
|
+
{regex: /.*/, token: "comment"}
|
|
165
|
+
],
|
|
166
|
+
// The meta property contains global information about the mode. It
|
|
167
|
+
// can contain properties like lineComment, which are supported by
|
|
168
|
+
// all modes, and also directives like dontIndentStates, which are
|
|
169
|
+
// specific to simple modes.
|
|
170
|
+
meta: {
|
|
171
|
+
dontIndentStates: ["comment"],
|
|
172
|
+
lineComment: "//"
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
</script>
|
|
176
|
+
|
|
177
|
+
<script>
|
|
178
|
+
var sc = document.getElementById("modecode");
|
|
179
|
+
var code = document.getElementById("code");
|
|
180
|
+
var editor = CodeMirror(code, {
|
|
181
|
+
value: (sc.textContent || sc.innerText || sc.innerHTML),
|
|
182
|
+
mode: "simplemode"
|
|
183
|
+
});
|
|
184
|
+
</script>
|
|
185
|
+
|
|
186
|
+
</article>
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
|
|
3
|
+
<title>CodeMirror: Simple Scrollbar Demo</title>
|
|
4
|
+
<meta charset="utf-8"/>
|
|
5
|
+
<link rel=stylesheet href="../doc/docs.css">
|
|
6
|
+
|
|
7
|
+
<link rel="stylesheet" href="../lib/codemirror.css">
|
|
8
|
+
<link rel="stylesheet" href="../addon/scroll/simplescrollbars.css">
|
|
9
|
+
<script src="../lib/codemirror.js"></script>
|
|
10
|
+
<script src="../mode/markdown/markdown.js"></script>
|
|
11
|
+
<script src="../mode/xml/xml.js"></script>
|
|
12
|
+
<script src="../addon/scroll/simplescrollbars.js"></script>
|
|
13
|
+
|
|
14
|
+
<div id=nav>
|
|
15
|
+
<a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../doc/logo.png"></a>
|
|
16
|
+
|
|
17
|
+
<ul>
|
|
18
|
+
<li><a href="../index.html">Home</a>
|
|
19
|
+
<li><a href="../doc/manual.html">Manual</a>
|
|
20
|
+
<li><a href="https://github.com/codemirror/codemirror">Code</a>
|
|
21
|
+
</ul>
|
|
22
|
+
<ul>
|
|
23
|
+
<li><a class=active href="#">Simple Scrollbar</a>
|
|
24
|
+
</ul>
|
|
25
|
+
</div>
|
|
26
|
+
|
|
27
|
+
<article>
|
|
28
|
+
<h2>Simple Scrollbar Demo</h2>
|
|
29
|
+
<form><textarea id="code" name="code"># Custom Scrollbars
|
|
30
|
+
|
|
31
|
+
This is a piece of text that creates scrollbars
|
|
32
|
+
|
|
33
|
+
Lorem ipsum dolor sit amet, turpis nec facilisis neque vestibulum adipiscing, magna nunc est luctus orci a,
|
|
34
|
+
aliquam duis ad volutpat nostra. Vestibulum ultricies suspendisse commodo volutpat pede sed. Bibendum odio
|
|
35
|
+
dignissim, ad vitae mollis ac sed nibh quis, suspendisse diam, risus quas blandit phasellus luctus nec,
|
|
36
|
+
integer nunc vitae posuere scelerisque. Lobortis quam porta conubia nulla. Et nisl ac, imperdiet vitae ac.
|
|
37
|
+
Parturient sit. Et vestibulum euismod, rutrum nunc libero mauris purus convallis. Cum id adipiscing et eget
|
|
38
|
+
pretium rutrum, ultrices sapien magnis fringilla sit lorem, eu vitae scelerisque ipsum aliquet, magna sed
|
|
39
|
+
fusce vel.
|
|
40
|
+
|
|
41
|
+
Lectus ultricies libero dolor convallis, sed etiam vel hendrerit egestas viverra, at urna mauris, eget
|
|
42
|
+
vulputate dolor voluptatem, nulla eget sollicitudin. Sed tincidunt, elit sociis. Mattis mi tortor dui id
|
|
43
|
+
sodales mi, maecenas nam fringilla risus turpis mauris praesent, imperdiet maecenas ultrices nonummy tellus
|
|
44
|
+
quis est. Scelerisque nec pharetra quis varius fringilla. Varius vestibulum non dictum pharetra, tincidunt in
|
|
45
|
+
vestibulum iaculis molestie, id condimentum blandit elit urna magna pulvinar, quam suspendisse pellentesque
|
|
46
|
+
donec. Vel amet ad ac. Nec aut viverra, morbi mi neque massa, turpis enim proin. Tellus eu, fermentum velit
|
|
47
|
+
est convallis aliquam velit, rutrum in diam lacus, praesent tempor pellentesque dictum semper augue. Felis
|
|
48
|
+
explicabo massa amet lectus phasellus dolor. Ut lorem quis arcu neque felis ultricies, senectus vitae
|
|
49
|
+
curabitur sed pellentesque et, id sed risus in sed ac accumsan, blandit arcu quam duis nunc.
|
|
50
|
+
|
|
51
|
+
Sed leo sollicitudin odio vitae, purus sit egestas, justo eros inceptos auctor fermentum lectus. Ligula luctus
|
|
52
|
+
turpis, quod massa vitae elementum orci, nullam fringilla elit tortor. Justo ante tempor amet quam posuere
|
|
53
|
+
volutpat. Facilisis pede erat ut hac ultrices ipsum, wisi duis sit metus. Dolor vitae est sed sed vitae. Sed
|
|
54
|
+
eu ligula, morbi vestibulum nunc nibh velit ut taciti, ligula elit semper sagittis in, auctor arcu vel eget.
|
|
55
|
+
Mauris at vitae nec suspendisse et, aenean proin blandit suscipit. Morbi quam, dolor ultricies. Viverra
|
|
56
|
+
tempus. Suspendisse sit dapibus, ac fuga aenean, magna nisl nonummy augue posuere, dictum ut fuga velit
|
|
57
|
+
parturient augue interdum, mattis sit tellus.
|
|
58
|
+
|
|
59
|
+
Vehicula commodo tempus curabitur eros, lacinia erat vulputate lorem vel fermentum donec, lectus sed conubia
|
|
60
|
+
id pellentesque. Vel senectus donec pede aliquet dolor sit, nec vivamus justo placerat interdum maecenas,
|
|
61
|
+
sodales euismod. Quis netus sapien amet, vestibulum quam nec amet lacinia, quis aliquet, tempor vivamus tellus
|
|
62
|
+
enim, suscipit quis eleifend. Amet class phasellus orci pretium, risus in nulla. Neque sit ullamcorper,
|
|
63
|
+
ultricies platea id nec suspendisse ac. Et elementum. Dictum nam, ut dui fermentum egestas facilisis elit
|
|
64
|
+
augue, adipiscing donec ipsum erat nam pellentesque convallis, vestibulum vestibulum risus id nulla ut mauris,
|
|
65
|
+
curabitur aute aptent. Ultrices orci wisi dui ipsum praesent, pharetra felis eu quis. Est fringilla etiam,
|
|
66
|
+
maxime sem dapibus et eget, mi enim dignissim nec pretium, augue vehicula, volutpat proin. Et occaecati
|
|
67
|
+
lobortis viverra, cum in sed, vivamus tellus. Libero at malesuada est vivamus leo tortor.
|
|
68
|
+
</textarea></form>
|
|
69
|
+
|
|
70
|
+
<p>The <a href="../doc/manual.html#addon_simplescrollbars"><code>simplescrollbars</code></a> addon defines two
|
|
71
|
+
styles of non-native scrollbars: <a href="javascript:editor.setOption('scrollbarStyle', 'simple')"><code>"simple"</code></a> and <a href="javascript:editor.setOption('scrollbarStyle', 'overlay')"><code>"overlay"</code></a> (click to try), which can be passed to
|
|
72
|
+
the <a href="../doc/manual.html#option_scrollbarStyle"><code>scrollbarStyle</code></a> option. These implement
|
|
73
|
+
the scrollbar using DOM elements, allowing more control over
|
|
74
|
+
its <a href="../addon/scroll/simplescrollbars.css">appearance</a>.</p>
|
|
75
|
+
|
|
76
|
+
<script>
|
|
77
|
+
var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
|
|
78
|
+
lineNumbers: true,
|
|
79
|
+
scrollbarStyle: "simple"
|
|
80
|
+
});
|
|
81
|
+
</script>
|
|
82
|
+
</article>
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
|
|
3
|
+
<title>CodeMirror: Automatically derive odd wrapping behavior for your browser</title>
|
|
4
|
+
<meta charset="utf-8"/>
|
|
5
|
+
<link rel=stylesheet href="../doc/docs.css">
|
|
6
|
+
|
|
7
|
+
<div id=nav>
|
|
8
|
+
<a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../doc/logo.png"></a>
|
|
9
|
+
|
|
10
|
+
<ul>
|
|
11
|
+
<li><a href="../index.html">Home</a>
|
|
12
|
+
<li><a href="../doc/manual.html">Manual</a>
|
|
13
|
+
<li><a href="https://github.com/codemirror/codemirror">Code</a>
|
|
14
|
+
</ul>
|
|
15
|
+
<ul>
|
|
16
|
+
<li><a class=active href="#">Automatically derive odd wrapping behavior for your browser</a>
|
|
17
|
+
</ul>
|
|
18
|
+
</div>
|
|
19
|
+
|
|
20
|
+
<article>
|
|
21
|
+
<h2>Automatically derive odd wrapping behavior for your browser</h2>
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
<p>This is a hack to automatically derive
|
|
25
|
+
a <code>spanAffectsWrapping</code> regexp for a browser. See the
|
|
26
|
+
comments above that variable
|
|
27
|
+
in <a href="../lib/codemirror.js"><code>lib/codemirror.js</code></a>
|
|
28
|
+
for some more details.</p>
|
|
29
|
+
|
|
30
|
+
<div style="white-space: pre-wrap; width: 50px;" id="area"></div>
|
|
31
|
+
<pre id="output"></pre>
|
|
32
|
+
|
|
33
|
+
<script id="script">
|
|
34
|
+
var a = document.getElementById("area"), bad = Object.create(null);
|
|
35
|
+
var chars = "a~`!@#$%^&*()-_=+}{[]\\|'\"/?.>,<:;", l = chars.length;
|
|
36
|
+
for (var x = 0; x < l; ++x) for (var y = 0; y < l; ++y) {
|
|
37
|
+
var s1 = "foooo" + chars.charAt(x), s2 = chars.charAt(y) + "br";
|
|
38
|
+
a.appendChild(document.createTextNode(s1 + s2));
|
|
39
|
+
var h1 = a.offsetHeight;
|
|
40
|
+
a.innerHTML = "";
|
|
41
|
+
a.appendChild(document.createElement("span")).appendChild(document.createTextNode(s1));
|
|
42
|
+
a.appendChild(document.createElement("span")).appendChild(document.createTextNode(s2));
|
|
43
|
+
if (a.offsetHeight != h1)
|
|
44
|
+
bad[chars.charAt(x)] = (bad[chars.charAt(x)] || "") + chars.charAt(y);
|
|
45
|
+
a.innerHTML = "";
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
var re = "";
|
|
49
|
+
function toREElt(str) {
|
|
50
|
+
if (str.length > 1) {
|
|
51
|
+
var invert = false;
|
|
52
|
+
if (str.length > chars.length * .6) {
|
|
53
|
+
invert = true;
|
|
54
|
+
var newStr = "";
|
|
55
|
+
for (var i = 0; i < l; ++i) if (str.indexOf(chars.charAt(i)) == -1) newStr += chars.charAt(i);
|
|
56
|
+
str = newStr;
|
|
57
|
+
}
|
|
58
|
+
str = str.replace(/[\-\.\]\"\'\\\/\^a]/g, function(orig) { return orig == "a" ? "\\w" : "\\" + orig; });
|
|
59
|
+
return "[" + (invert ? "^" : "") + str + "]";
|
|
60
|
+
} else if (str == "a") {
|
|
61
|
+
return "\\w";
|
|
62
|
+
} else if (/[?$*()+{}[\]\.|/\'\"]/.test(str)) {
|
|
63
|
+
return "\\" + str;
|
|
64
|
+
} else {
|
|
65
|
+
return str;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
var newRE = "";
|
|
70
|
+
for (;;) {
|
|
71
|
+
var left = null;
|
|
72
|
+
for (var left in bad) break;
|
|
73
|
+
if (left == null) break;
|
|
74
|
+
var right = bad[left];
|
|
75
|
+
delete bad[left];
|
|
76
|
+
for (var other in bad) if (bad[other] == right) {
|
|
77
|
+
left += other;
|
|
78
|
+
delete bad[other];
|
|
79
|
+
}
|
|
80
|
+
newRE += (newRE ? "|" : "") + toREElt(left) + toREElt(right);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
document.getElementById("output").appendChild(document.createTextNode("Your regexp is: " + (newRE || "^$")));
|
|
84
|
+
</script>
|
|
85
|
+
</article>
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
|
|
3
|
+
<title>CodeMirror: Sublime Text bindings demo</title>
|
|
4
|
+
<meta charset="utf-8"/>
|
|
5
|
+
<link rel=stylesheet href="../doc/docs.css">
|
|
6
|
+
|
|
7
|
+
<link rel="stylesheet" href="../lib/codemirror.css">
|
|
8
|
+
<link rel="stylesheet" href="../addon/fold/foldgutter.css">
|
|
9
|
+
<link rel="stylesheet" href="../addon/dialog/dialog.css">
|
|
10
|
+
<link rel="stylesheet" href="../theme/monokai.css">
|
|
11
|
+
<script src="../lib/codemirror.js"></script>
|
|
12
|
+
<script src="../addon/search/searchcursor.js"></script>
|
|
13
|
+
<script src="../addon/search/search.js"></script>
|
|
14
|
+
<script src="../addon/dialog/dialog.js"></script>
|
|
15
|
+
<script src="../addon/edit/matchbrackets.js"></script>
|
|
16
|
+
<script src="../addon/edit/closebrackets.js"></script>
|
|
17
|
+
<script src="../addon/comment/comment.js"></script>
|
|
18
|
+
<script src="../addon/wrap/hardwrap.js"></script>
|
|
19
|
+
<script src="../addon/fold/foldcode.js"></script>
|
|
20
|
+
<script src="../addon/fold/brace-fold.js"></script>
|
|
21
|
+
<script src="../mode/javascript/javascript.js"></script>
|
|
22
|
+
<script src="../keymap/sublime.js"></script>
|
|
23
|
+
<style type="text/css">
|
|
24
|
+
.CodeMirror {border-top: 1px solid #eee; border-bottom: 1px solid #eee; line-height: 1.3; height: 500px}
|
|
25
|
+
.CodeMirror-linenumbers { padding: 0 8px; }
|
|
26
|
+
</style>
|
|
27
|
+
<div id=nav>
|
|
28
|
+
<a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../doc/logo.png"></a>
|
|
29
|
+
|
|
30
|
+
<ul>
|
|
31
|
+
<li><a href="../index.html">Home</a>
|
|
32
|
+
<li><a href="../doc/manual.html">Manual</a>
|
|
33
|
+
<li><a href="https://github.com/codemirror/codemirror">Code</a>
|
|
34
|
+
</ul>
|
|
35
|
+
<ul>
|
|
36
|
+
<li><a class=active href="#">Sublime bindings</a>
|
|
37
|
+
</ul>
|
|
38
|
+
</div>
|
|
39
|
+
|
|
40
|
+
<article>
|
|
41
|
+
<h2>Sublime Text bindings demo</h2>
|
|
42
|
+
|
|
43
|
+
<p>The <code>sublime</code> keymap defines many Sublime Text-specific
|
|
44
|
+
bindings for CodeMirror. See the code below for an overview.</p>
|
|
45
|
+
|
|
46
|
+
<p>Enable the keymap by
|
|
47
|
+
loading <a href="../keymap/sublime.js"><code>keymap/sublime.js</code></a>
|
|
48
|
+
and setting
|
|
49
|
+
the <a href="../doc/manual.html#option_keyMap"><code>keyMap</code></a>
|
|
50
|
+
option to <code>"sublime"</code>.</p>
|
|
51
|
+
|
|
52
|
+
<p>(A lot of the search functionality is still missing.)
|
|
53
|
+
|
|
54
|
+
<script>
|
|
55
|
+
var value = "// The bindings defined specifically in the Sublime Text mode\nvar bindings = {\n";
|
|
56
|
+
var map = CodeMirror.keyMap.sublime;
|
|
57
|
+
for (var key in map) {
|
|
58
|
+
var val = map[key];
|
|
59
|
+
if (key != "fallthrough" && val != "..." && (!/find/.test(val) || /findUnder/.test(val)))
|
|
60
|
+
value += " \"" + key + "\": \"" + val + "\",\n";
|
|
61
|
+
}
|
|
62
|
+
value += "}\n\n// The implementation of joinLines\n";
|
|
63
|
+
value += CodeMirror.commands.joinLines.toString().replace(/^function\s*\(/, "function joinLines(").replace(/\n /g, "\n") + "\n";
|
|
64
|
+
var editor = CodeMirror(document.body.getElementsByTagName("article")[0], {
|
|
65
|
+
value: value,
|
|
66
|
+
lineNumbers: true,
|
|
67
|
+
mode: "javascript",
|
|
68
|
+
keyMap: "sublime",
|
|
69
|
+
autoCloseBrackets: true,
|
|
70
|
+
matchBrackets: true,
|
|
71
|
+
showCursorWhenSelecting: true,
|
|
72
|
+
theme: "monokai"
|
|
73
|
+
});
|
|
74
|
+
</script>
|
|
75
|
+
|
|
76
|
+
</article>
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
|
|
3
|
+
<title>CodeMirror: Tern Demo</title>
|
|
4
|
+
<meta charset="utf-8"/>
|
|
5
|
+
<link rel=stylesheet href="../doc/docs.css">
|
|
6
|
+
|
|
7
|
+
<link rel="stylesheet" href="../lib/codemirror.css">
|
|
8
|
+
<link rel="stylesheet" href="../addon/dialog/dialog.css">
|
|
9
|
+
<link rel="stylesheet" href="../addon/hint/show-hint.css">
|
|
10
|
+
<link rel="stylesheet" href="../addon/tern/tern.css">
|
|
11
|
+
<script src="../lib/codemirror.js"></script>
|
|
12
|
+
<script src="../mode/javascript/javascript.js"></script>
|
|
13
|
+
<script src="../addon/dialog/dialog.js"></script>
|
|
14
|
+
<script src="../addon/hint/show-hint.js"></script>
|
|
15
|
+
<script src="../addon/tern/tern.js"></script>
|
|
16
|
+
<script src="http://ternjs.net/node_modules/acorn/dist/acorn.js"></script>
|
|
17
|
+
<script src="http://ternjs.net/node_modules/acorn/dist/acorn_loose.js"></script>
|
|
18
|
+
<script src="http://ternjs.net/node_modules/acorn/dist/walk.js"></script>
|
|
19
|
+
<script src="http://ternjs.net/doc/demo/polyfill.js"></script>
|
|
20
|
+
<script src="http://ternjs.net/lib/signal.js"></script>
|
|
21
|
+
<script src="http://ternjs.net/lib/tern.js"></script>
|
|
22
|
+
<script src="http://ternjs.net/lib/def.js"></script>
|
|
23
|
+
<script src="http://ternjs.net/lib/comment.js"></script>
|
|
24
|
+
<script src="http://ternjs.net/lib/infer.js"></script>
|
|
25
|
+
<script src="http://ternjs.net/plugin/doc_comment.js"></script>
|
|
26
|
+
<style>
|
|
27
|
+
.CodeMirror {border: 1px solid #ddd;}
|
|
28
|
+
</style>
|
|
29
|
+
<div id=nav>
|
|
30
|
+
<a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../doc/logo.png"></a>
|
|
31
|
+
|
|
32
|
+
<ul>
|
|
33
|
+
<li><a href="../index.html">Home</a>
|
|
34
|
+
<li><a href="../doc/manual.html">Manual</a>
|
|
35
|
+
<li><a href="https://github.com/codemirror/codemirror">Code</a>
|
|
36
|
+
</ul>
|
|
37
|
+
<ul>
|
|
38
|
+
<li><a class=active href="#">Tern</a>
|
|
39
|
+
</ul>
|
|
40
|
+
</div>
|
|
41
|
+
|
|
42
|
+
<article>
|
|
43
|
+
<h2>Tern Demo</h2>
|
|
44
|
+
<form><textarea id="code" name="code">// Use ctrl-space to complete something
|
|
45
|
+
// Put the cursor in or after an expression, press ctrl-o to
|
|
46
|
+
// find its type
|
|
47
|
+
|
|
48
|
+
var foo = ["array", "of", "strings"];
|
|
49
|
+
var bar = foo.slice(0, 2).join("").split("a")[0];
|
|
50
|
+
|
|
51
|
+
// Works for locally defined types too.
|
|
52
|
+
|
|
53
|
+
function CTor() { this.size = 10; }
|
|
54
|
+
CTor.prototype.hallo = "hallo";
|
|
55
|
+
|
|
56
|
+
var baz = new CTor;
|
|
57
|
+
baz.
|
|
58
|
+
|
|
59
|
+
// You can press ctrl-q when the cursor is on a variable name to
|
|
60
|
+
// rename it. Try it with CTor...
|
|
61
|
+
|
|
62
|
+
// When the cursor is in an argument list, the arguments are
|
|
63
|
+
// shown below the editor.
|
|
64
|
+
|
|
65
|
+
[1].reduce( );
|
|
66
|
+
|
|
67
|
+
// And a little more advanced code...
|
|
68
|
+
|
|
69
|
+
(function(exports) {
|
|
70
|
+
exports.randomElt = function(arr) {
|
|
71
|
+
return arr[Math.floor(arr.length * Math.random())];
|
|
72
|
+
};
|
|
73
|
+
exports.strList = "foo".split("");
|
|
74
|
+
exports.intList = exports.strList.map(function(s) { return s.charCodeAt(0); });
|
|
75
|
+
})(window.myMod = {});
|
|
76
|
+
|
|
77
|
+
var randomStr = myMod.randomElt(myMod.strList);
|
|
78
|
+
var randomInt = myMod.randomElt(myMod.intList);
|
|
79
|
+
</textarea></p>
|
|
80
|
+
|
|
81
|
+
<p>Demonstrates integration of <a href="http://ternjs.net/">Tern</a>
|
|
82
|
+
and CodeMirror. The following keys are bound:</p>
|
|
83
|
+
|
|
84
|
+
<dl>
|
|
85
|
+
<dt>Ctrl-Space</dt><dd>Autocomplete</dd>
|
|
86
|
+
<dt>Ctrl-O</dt><dd>Find docs for the expression at the cursor</dd>
|
|
87
|
+
<dt>Ctrl-I</dt><dd>Find type at cursor</dd>
|
|
88
|
+
<dt>Alt-.</dt><dd>Jump to definition (Alt-, to jump back)</dd>
|
|
89
|
+
<dt>Ctrl-Q</dt><dd>Rename variable</dd>
|
|
90
|
+
<dt>Ctrl-.</dt><dd>Select all occurrences of a variable</dd>
|
|
91
|
+
</dl>
|
|
92
|
+
|
|
93
|
+
<p>Documentation is sparse for now. See the top of
|
|
94
|
+
the <a href="../addon/tern/tern.js">script</a> for a rough API
|
|
95
|
+
overview.</p>
|
|
96
|
+
|
|
97
|
+
<script>
|
|
98
|
+
function getURL(url, c) {
|
|
99
|
+
var xhr = new XMLHttpRequest();
|
|
100
|
+
xhr.open("get", url, true);
|
|
101
|
+
xhr.send();
|
|
102
|
+
xhr.onreadystatechange = function() {
|
|
103
|
+
if (xhr.readyState != 4) return;
|
|
104
|
+
if (xhr.status < 400) return c(null, xhr.responseText);
|
|
105
|
+
var e = new Error(xhr.responseText || "No response");
|
|
106
|
+
e.status = xhr.status;
|
|
107
|
+
c(e);
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
var server;
|
|
112
|
+
getURL("http://ternjs.net/defs/ecma5.json", function(err, code) {
|
|
113
|
+
if (err) throw new Error("Request for ecma5.json: " + err);
|
|
114
|
+
server = new CodeMirror.TernServer({defs: [JSON.parse(code)]});
|
|
115
|
+
editor.setOption("extraKeys", {
|
|
116
|
+
"Ctrl-Space": function(cm) { server.complete(cm); },
|
|
117
|
+
"Ctrl-I": function(cm) { server.showType(cm); },
|
|
118
|
+
"Ctrl-O": function(cm) { server.showDocs(cm); },
|
|
119
|
+
"Alt-.": function(cm) { server.jumpToDef(cm); },
|
|
120
|
+
"Alt-,": function(cm) { server.jumpBack(cm); },
|
|
121
|
+
"Ctrl-Q": function(cm) { server.rename(cm); },
|
|
122
|
+
"Ctrl-.": function(cm) { server.selectName(cm); }
|
|
123
|
+
})
|
|
124
|
+
editor.on("cursorActivity", function(cm) { server.updateArgHints(cm); });
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
|
|
128
|
+
lineNumbers: true,
|
|
129
|
+
mode: "javascript"
|
|
130
|
+
});
|
|
131
|
+
</script>
|
|
132
|
+
|
|
133
|
+
</article>
|