├── .gitignore ├── .nvmrc ├── .travis.yml ├── Gruntfile.js ├── LICENSE ├── README.md ├── admin ├── bulkcreate.js ├── fish.sh ├── loadtest.sh ├── simpleloadtest.py ├── tailaccess.sh └── taillog.sh ├── bower.json ├── content ├── .well-known │ ├── chrome.txt │ └── pki-validation │ │ └── BF5FB477BB7F7A3C9D40C235ADE3FBFD.txt ├── apple-touch-icon.png ├── data │ └── animals ├── dir.html ├── editor.apcache ├── editor.html ├── favicon.ico ├── framed.html ├── image │ ├── adventure.png │ ├── art.png │ ├── blockicon.png │ ├── blockmode.png │ ├── bluearrow.png │ ├── checker.png │ ├── codeicon.png │ ├── copy.png │ ├── crushall.sh │ ├── dgpencil-128.png │ ├── dgpencil-16.png │ ├── dgpencil-192.png │ ├── dgpencil-256.png │ ├── dgpencil-32.png │ ├── dgpencil-48.png │ ├── dgpencil-512.png │ ├── dgpencil-64.png │ ├── dgpencil-96.png │ ├── dir-128.png │ ├── dpencil-128.png │ ├── dpencil-16.png │ ├── dpencil-192.png │ ├── dpencil-256.png │ ├── dpencil-32.png │ ├── dpencil-48.png │ ├── dpencil-512.png │ ├── dpencil-64.png │ ├── dpencil-96.png │ ├── file-128.png │ ├── file-coffee.png │ ├── file-css.png │ ├── file-generic.png │ ├── file-html.png │ ├── file-image.png │ ├── file-js.png │ ├── file-json.png │ ├── file-pencil.png │ ├── file-txt.png │ ├── file-xml.png │ ├── folder_32.png │ ├── gearicon.png │ ├── gray_pencil_16.png │ ├── grid.png │ ├── music.png │ ├── new-128.png │ ├── pencil_16.png │ ├── pencil_192.png │ ├── pencil_32.png │ ├── pencil_48.png │ ├── pencil_64.png │ ├── pencil_avatar.png │ ├── shavings.jpg │ ├── team.jpg │ ├── textmode.png │ ├── turtleicon.png │ ├── user-128.png │ ├── vpencil-10-32.png │ ├── vpencil-128.png │ ├── vpencil-15-48.png │ ├── vpencil-154-512.png │ ├── vpencil-16.png │ ├── vpencil-192.png │ ├── vpencil-20-64.png │ ├── vpencil-256.png │ ├── vpencil-29-96.png │ ├── vpencil-32.png │ ├── vpencil-39-128.png │ ├── vpencil-48.png │ ├── vpencil-5-16.png │ ├── vpencil-512.png │ ├── vpencil-58-192.png │ ├── vpencil-64.png │ ├── vpencil-77-256.png │ └── vpencil-96.png ├── lib │ ├── ace │ │ ├── ace.js │ │ ├── ext-beautify.js │ │ ├── ext-chromevox.js │ │ ├── ext-elastic_tabstops_lite.js │ │ ├── ext-emmet.js │ │ ├── ext-error_marker.js │ │ ├── ext-keybinding_menu.js │ │ ├── ext-language_tools.js │ │ ├── ext-linking.js │ │ ├── ext-modelist.js │ │ ├── ext-old_ie.js │ │ ├── ext-searchbox.js │ │ ├── ext-settings_menu.js │ │ ├── ext-spellcheck.js │ │ ├── ext-split.js │ │ ├── ext-static_highlight.js │ │ ├── ext-statusbar.js │ │ ├── ext-textarea.js │ │ ├── ext-themelist.js │ │ ├── ext-whitespace.js │ │ ├── keybinding-emacs.js │ │ ├── keybinding-vim.js │ │ ├── mode-abap.js │ │ ├── mode-abc.js │ │ ├── mode-actionscript.js │ │ ├── mode-ada.js │ │ ├── mode-apache_conf.js │ │ ├── mode-applescript.js │ │ ├── mode-asciidoc.js │ │ ├── mode-assembly_x86.js │ │ ├── mode-autohotkey.js │ │ ├── mode-batchfile.js │ │ ├── mode-c9search.js │ │ ├── mode-c_cpp.js │ │ ├── mode-cirru.js │ │ ├── mode-clojure.js │ │ ├── mode-cobol.js │ │ ├── mode-coffee.js │ │ ├── mode-coldfusion.js │ │ ├── mode-csharp.js │ │ ├── mode-css.js │ │ ├── mode-curly.js │ │ ├── mode-d.js │ │ ├── mode-dart.js │ │ ├── mode-diff.js │ │ ├── mode-django.js │ │ ├── mode-dockerfile.js │ │ ├── mode-dot.js │ │ ├── mode-eiffel.js │ │ ├── mode-ejs.js │ │ ├── mode-elixir.js │ │ ├── mode-elm.js │ │ ├── mode-erlang.js │ │ ├── mode-forth.js │ │ ├── mode-ftl.js │ │ ├── mode-gcode.js │ │ ├── mode-gherkin.js │ │ ├── mode-gitignore.js │ │ ├── mode-glsl.js │ │ ├── mode-golang.js │ │ ├── mode-groovy.js │ │ ├── mode-haml.js │ │ ├── mode-handlebars.js │ │ ├── mode-haskell.js │ │ ├── mode-haxe.js │ │ ├── mode-html.js │ │ ├── mode-html_ruby.js │ │ ├── mode-ini.js │ │ ├── mode-io.js │ │ ├── mode-jack.js │ │ ├── mode-jade.js │ │ ├── mode-java.js │ │ ├── mode-javascript.js │ │ ├── mode-json.js │ │ ├── mode-jsoniq.js │ │ ├── mode-jsp.js │ │ ├── mode-jsx.js │ │ ├── mode-julia.js │ │ ├── mode-latex.js │ │ ├── mode-lean.js │ │ ├── mode-less.js │ │ ├── mode-liquid.js │ │ ├── mode-lisp.js │ │ ├── mode-live_script.js │ │ ├── mode-livescript.js │ │ ├── mode-logiql.js │ │ ├── mode-lsl.js │ │ ├── mode-lua.js │ │ ├── mode-luapage.js │ │ ├── mode-lucene.js │ │ ├── mode-makefile.js │ │ ├── mode-markdown.js │ │ ├── mode-mask.js │ │ ├── mode-matlab.js │ │ ├── mode-mel.js │ │ ├── mode-mips_assembler.js │ │ ├── mode-mipsassembler.js │ │ ├── mode-mushcode.js │ │ ├── mode-mysql.js │ │ ├── mode-nix.js │ │ ├── mode-objectivec.js │ │ ├── mode-ocaml.js │ │ ├── mode-pascal.js │ │ ├── mode-perl.js │ │ ├── mode-pgsql.js │ │ ├── mode-php.js │ │ ├── mode-plain_text.js │ │ ├── mode-powershell.js │ │ ├── mode-praat.js │ │ ├── mode-prolog.js │ │ ├── mode-properties.js │ │ ├── mode-protobuf.js │ │ ├── mode-python.js │ │ ├── mode-r.js │ │ ├── mode-rdoc.js │ │ ├── mode-rhtml.js │ │ ├── mode-ruby.js │ │ ├── mode-rust.js │ │ ├── mode-sass.js │ │ ├── mode-scad.js │ │ ├── mode-scala.js │ │ ├── mode-scheme.js │ │ ├── mode-scss.js │ │ ├── mode-sh.js │ │ ├── mode-sjs.js │ │ ├── mode-smarty.js │ │ ├── mode-snippets.js │ │ ├── mode-soy_template.js │ │ ├── mode-space.js │ │ ├── mode-sql.js │ │ ├── mode-stylus.js │ │ ├── mode-svg.js │ │ ├── mode-tcl.js │ │ ├── mode-tex.js │ │ ├── mode-text.js │ │ ├── mode-textile.js │ │ ├── mode-toml.js │ │ ├── mode-twig.js │ │ ├── mode-typescript.js │ │ ├── mode-vala.js │ │ ├── mode-vbscript.js │ │ ├── mode-velocity.js │ │ ├── mode-verilog.js │ │ ├── mode-vhdl.js │ │ ├── mode-xml.js │ │ ├── mode-xquery.js │ │ ├── mode-yaml.js │ │ ├── snippets │ │ │ ├── abap.js │ │ │ ├── abc.js │ │ │ ├── actionscript.js │ │ │ ├── ada.js │ │ │ ├── apache_conf.js │ │ │ ├── applescript.js │ │ │ ├── asciidoc.js │ │ │ ├── assembly_x86.js │ │ │ ├── autohotkey.js │ │ │ ├── batchfile.js │ │ │ ├── c9search.js │ │ │ ├── c_cpp.js │ │ │ ├── cirru.js │ │ │ ├── clojure.js │ │ │ ├── cobol.js │ │ │ ├── coffee.js │ │ │ ├── coldfusion.js │ │ │ ├── csharp.js │ │ │ ├── css.js │ │ │ ├── curly.js │ │ │ ├── d.js │ │ │ ├── dart.js │ │ │ ├── diff.js │ │ │ ├── django.js │ │ │ ├── dockerfile.js │ │ │ ├── dot.js │ │ │ ├── eiffel.js │ │ │ ├── ejs.js │ │ │ ├── elixir.js │ │ │ ├── elm.js │ │ │ ├── erlang.js │ │ │ ├── forth.js │ │ │ ├── ftl.js │ │ │ ├── gcode.js │ │ │ ├── gherkin.js │ │ │ ├── gitignore.js │ │ │ ├── glsl.js │ │ │ ├── golang.js │ │ │ ├── groovy.js │ │ │ ├── haml.js │ │ │ ├── handlebars.js │ │ │ ├── haskell.js │ │ │ ├── haxe.js │ │ │ ├── html.js │ │ │ ├── html_ruby.js │ │ │ ├── ini.js │ │ │ ├── io.js │ │ │ ├── jack.js │ │ │ ├── jade.js │ │ │ ├── java.js │ │ │ ├── javascript.js │ │ │ ├── json.js │ │ │ ├── jsoniq.js │ │ │ ├── jsp.js │ │ │ ├── jsx.js │ │ │ ├── julia.js │ │ │ ├── latex.js │ │ │ ├── lean.js │ │ │ ├── less.js │ │ │ ├── liquid.js │ │ │ ├── lisp.js │ │ │ ├── live_script.js │ │ │ ├── livescript.js │ │ │ ├── logiql.js │ │ │ ├── lsl.js │ │ │ ├── lua.js │ │ │ ├── luapage.js │ │ │ ├── lucene.js │ │ │ ├── makefile.js │ │ │ ├── markdown.js │ │ │ ├── mask.js │ │ │ ├── matlab.js │ │ │ ├── mel.js │ │ │ ├── mips_assembler.js │ │ │ ├── mipsassembler.js │ │ │ ├── mushcode.js │ │ │ ├── mysql.js │ │ │ ├── nix.js │ │ │ ├── objectivec.js │ │ │ ├── ocaml.js │ │ │ ├── pascal.js │ │ │ ├── perl.js │ │ │ ├── pgsql.js │ │ │ ├── php.js │ │ │ ├── plain_text.js │ │ │ ├── powershell.js │ │ │ ├── praat.js │ │ │ ├── prolog.js │ │ │ ├── properties.js │ │ │ ├── protobuf.js │ │ │ ├── python.js │ │ │ ├── r.js │ │ │ ├── rdoc.js │ │ │ ├── rhtml.js │ │ │ ├── ruby.js │ │ │ ├── rust.js │ │ │ ├── sass.js │ │ │ ├── scad.js │ │ │ ├── scala.js │ │ │ ├── scheme.js │ │ │ ├── scss.js │ │ │ ├── sh.js │ │ │ ├── sjs.js │ │ │ ├── smarty.js │ │ │ ├── snippets.js │ │ │ ├── soy_template.js │ │ │ ├── space.js │ │ │ ├── sql.js │ │ │ ├── stylus.js │ │ │ ├── svg.js │ │ │ ├── tcl.js │ │ │ ├── tex.js │ │ │ ├── text.js │ │ │ ├── textile.js │ │ │ ├── toml.js │ │ │ ├── twig.js │ │ │ ├── typescript.js │ │ │ ├── vala.js │ │ │ ├── vbscript.js │ │ │ ├── velocity.js │ │ │ ├── verilog.js │ │ │ ├── vhdl.js │ │ │ ├── xml.js │ │ │ ├── xquery.js │ │ │ └── yaml.js │ │ ├── theme-ambiance.js │ │ ├── theme-chaos.js │ │ ├── theme-chrome.js │ │ ├── theme-clouds.js │ │ ├── theme-clouds_midnight.js │ │ ├── theme-cobalt.js │ │ ├── theme-crimson_editor.js │ │ ├── theme-dawn.js │ │ ├── theme-dreamweaver.js │ │ ├── theme-eclipse.js │ │ ├── theme-github.js │ │ ├── theme-idle_fingers.js │ │ ├── theme-katzenmilch.js │ │ ├── theme-kr.js │ │ ├── theme-kr_theme.js │ │ ├── theme-kuroir.js │ │ ├── theme-merbivore.js │ │ ├── theme-merbivore_soft.js │ │ ├── theme-mono_industrial.js │ │ ├── theme-monokai.js │ │ ├── theme-pastel_on_dark.js │ │ ├── theme-solarized_dark.js │ │ ├── theme-solarized_light.js │ │ ├── theme-terminal.js │ │ ├── theme-textmate.js │ │ ├── theme-tomorrow.js │ │ ├── theme-tomorrow_night.js │ │ ├── theme-tomorrow_night_blue.js │ │ ├── theme-tomorrow_night_bright.js │ │ ├── theme-tomorrow_night_eighties.js │ │ ├── theme-twilight.js │ │ ├── theme-vibrant_ink.js │ │ ├── theme-xcode.js │ │ ├── worker-coffee.js │ │ ├── worker-css.js │ │ ├── worker-html.js │ │ ├── worker-javascript.js │ │ ├── worker-json.js │ │ ├── worker-lua.js │ │ ├── worker-php.js │ │ ├── worker-xml.js │ │ └── worker-xquery.js │ ├── almond.js │ ├── angles.coffee │ ├── angles.cs │ ├── bootstrap │ │ ├── .bower.json │ │ ├── Gruntfile.js │ │ ├── LICENSE │ │ ├── README.md │ │ ├── bower.json │ │ ├── dist │ │ │ ├── css │ │ │ │ ├── bootstrap-theme.css │ │ │ │ ├── bootstrap-theme.css.map │ │ │ │ ├── bootstrap-theme.min.css │ │ │ │ ├── bootstrap.css │ │ │ │ ├── bootstrap.css.map │ │ │ │ └── bootstrap.min.css │ │ │ ├── fonts │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ │ └── glyphicons-halflings-regular.woff2 │ │ │ └── js │ │ │ │ ├── bootstrap.js │ │ │ │ ├── bootstrap.min.js │ │ │ │ └── npm.js │ │ ├── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ └── glyphicons-halflings-regular.woff2 │ │ ├── grunt │ │ │ ├── .jshintrc │ │ │ ├── bs-commonjs-generator.js │ │ │ ├── bs-glyphicons-data-generator.js │ │ │ ├── bs-lessdoc-parser.js │ │ │ ├── bs-raw-files-generator.js │ │ │ ├── configBridge.json │ │ │ └── sauce_browsers.yml │ │ ├── js │ │ │ ├── .jscsrc │ │ │ ├── .jshintrc │ │ │ ├── affix.js │ │ │ ├── alert.js │ │ │ ├── button.js │ │ │ ├── carousel.js │ │ │ ├── collapse.js │ │ │ ├── dropdown.js │ │ │ ├── modal.js │ │ │ ├── popover.js │ │ │ ├── scrollspy.js │ │ │ ├── tab.js │ │ │ ├── tooltip.js │ │ │ └── transition.js │ │ ├── less │ │ │ ├── .csscomb.json │ │ │ ├── .csslintrc │ │ │ ├── alerts.less │ │ │ ├── badges.less │ │ │ ├── bootstrap.less │ │ │ ├── breadcrumbs.less │ │ │ ├── button-groups.less │ │ │ ├── buttons.less │ │ │ ├── carousel.less │ │ │ ├── close.less │ │ │ ├── code.less │ │ │ ├── component-animations.less │ │ │ ├── dropdowns.less │ │ │ ├── forms.less │ │ │ ├── glyphicons.less │ │ │ ├── grid.less │ │ │ ├── input-groups.less │ │ │ ├── jumbotron.less │ │ │ ├── labels.less │ │ │ ├── list-group.less │ │ │ ├── media.less │ │ │ ├── mixins.less │ │ │ ├── mixins │ │ │ │ ├── alerts.less │ │ │ │ ├── background-variant.less │ │ │ │ ├── border-radius.less │ │ │ │ ├── buttons.less │ │ │ │ ├── center-block.less │ │ │ │ ├── clearfix.less │ │ │ │ ├── forms.less │ │ │ │ ├── gradients.less │ │ │ │ ├── grid-framework.less │ │ │ │ ├── grid.less │ │ │ │ ├── hide-text.less │ │ │ │ ├── image.less │ │ │ │ ├── labels.less │ │ │ │ ├── list-group.less │ │ │ │ ├── nav-divider.less │ │ │ │ ├── nav-vertical-align.less │ │ │ │ ├── opacity.less │ │ │ │ ├── pagination.less │ │ │ │ ├── panels.less │ │ │ │ ├── progress-bar.less │ │ │ │ ├── reset-filter.less │ │ │ │ ├── reset-text.less │ │ │ │ ├── resize.less │ │ │ │ ├── responsive-visibility.less │ │ │ │ ├── size.less │ │ │ │ ├── tab-focus.less │ │ │ │ ├── table-row.less │ │ │ │ ├── text-emphasis.less │ │ │ │ ├── text-overflow.less │ │ │ │ └── vendor-prefixes.less │ │ │ ├── modals.less │ │ │ ├── navbar.less │ │ │ ├── navs.less │ │ │ ├── normalize.less │ │ │ ├── pager.less │ │ │ ├── pagination.less │ │ │ ├── panels.less │ │ │ ├── popovers.less │ │ │ ├── print.less │ │ │ ├── progress-bars.less │ │ │ ├── responsive-embed.less │ │ │ ├── responsive-utilities.less │ │ │ ├── scaffolding.less │ │ │ ├── tables.less │ │ │ ├── theme.less │ │ │ ├── thumbnails.less │ │ │ ├── tooltip.less │ │ │ ├── type.less │ │ │ ├── utilities.less │ │ │ ├── variables.less │ │ │ └── wells.less │ │ ├── package.js │ │ └── package.json │ ├── coffee-script.js │ ├── droplet.css │ ├── droplet.js │ ├── font-awesome │ │ ├── animated.less │ │ ├── bordered-pulled.less │ │ ├── core.less │ │ ├── fixed-width.less │ │ ├── font-awesome.less │ │ ├── icons.less │ │ ├── larger.less │ │ ├── list.less │ │ ├── mixins.less │ │ ├── path.less │ │ ├── rotated-flipped.less │ │ ├── stacked.less │ │ └── variables.less │ ├── html2canvas.js │ ├── iced-coffee-script.js │ ├── jquery-deparam.js │ ├── jquery-turtle.js │ ├── jquery.autocomplete.js │ ├── jquery.autocomplete.min.js │ ├── jquery.js │ ├── keyboard.coffee │ ├── lodash.js │ ├── melt.css │ ├── melt.js │ ├── noturtle.js │ ├── p5.js │ ├── pc_py_wrapper.js │ ├── pencil-tracer.js │ ├── pencilcode.py │ ├── pencilcodeembed.js │ ├── pencilcodeguide.js │ ├── print.coffee │ ├── python-script.js │ ├── qunit-1.12.0.css │ ├── qunit-1.12.0.js │ ├── recolor.coffee │ ├── recolor.js │ ├── require.js │ ├── see.js │ ├── seedrandom.js │ ├── skulpt-stdlib.js │ ├── skulpt.min.js │ ├── socket.io.js │ ├── sourcemap │ │ ├── array-set.js │ │ ├── base64-vlq.js │ │ ├── base64.js │ │ ├── binary-search.js │ │ ├── source-map-consumer.js │ │ └── util.js │ ├── start-ide.js │ ├── tooltipster │ │ ├── css │ │ │ ├── reset.css │ │ │ ├── style.css │ │ │ ├── themes │ │ │ │ ├── tooltipster-light.css │ │ │ │ ├── tooltipster-noir.css │ │ │ │ ├── tooltipster-punk.css │ │ │ │ └── tooltipster-shadow.css │ │ │ └── tooltipster.css │ │ ├── images │ │ │ └── map.png │ │ └── js │ │ │ ├── jquery.tooltipster.js │ │ │ └── jquery.tooltipster.min.js │ └── zeroclipboard │ │ ├── ZeroClipboard.js │ │ └── ZeroClipboard.swf ├── license.html ├── material │ ├── arcs.pdf │ ├── car.pdf │ ├── flower.pdf │ ├── hangman-handout.pdf │ ├── hoc2013 │ │ ├── answers.zip │ │ ├── guide.pdf │ │ └── waiver.pdf │ ├── initial.pdf │ ├── lesson1-handout.pdf │ ├── lesson1-outline.pdf │ ├── lesson2-handout.pdf │ ├── measuring.pdf │ ├── onepencil.jpg │ ├── pencils.jpg │ ├── penciltips.jpg │ ├── reference.pdf │ ├── shaving.jpg │ └── twopencils.jpg ├── privacy.html ├── promoline.html ├── robots.txt ├── src │ ├── FontLoader.js │ ├── advisor.js │ ├── cache.js │ ├── codescan.js │ ├── controller.js │ ├── debug.js │ ├── draw-protractor.js │ ├── editor-main.js │ ├── editor.less │ ├── filetype.js │ ├── gadget.js │ ├── guide.js │ ├── palette.js │ ├── showturtle.js │ ├── storage.js │ ├── thumbnail.js │ ├── view.js │ └── welcome.less ├── team.html ├── terms.html └── welcome.html ├── nginx ├── dir_data.conf ├── dir_util.conf ├── domain_common.conf ├── domain_root.conf ├── domain_user.conf ├── nginx_site.conf ├── ssl_pencilcc.conf ├── ssl_pencilcode.conf └── upstream.conf ├── npm-shrinkwrap.json ├── package.json ├── pencils ├── pencilsock ├── server ├── bad-substrings.txt ├── bad-words.txt ├── config │ ├── development.json │ ├── index.js │ ├── production.json │ ├── sdevelopment.json │ └── test.json ├── devserver-cert.pem ├── devserver-key.pem ├── devserver.js ├── dirloader.js ├── filemeta.js ├── load.js ├── save.js ├── server.js ├── serverbase.js ├── socket.js └── utils.js ├── test ├── aloha.js ├── browse_users.js ├── data │ ├── aaa │ │ ├── first │ │ └── newfile │ ├── bbb │ │ └── newfile │ ├── callie │ │ └── circle │ ├── calvin │ │ └── simple │ ├── carl │ │ └── sample │ ├── ccc │ │ └── newfile │ ├── first │ ├── intro │ ├── livetest │ │ ├── .key │ │ │ └── k123 │ │ ├── .thumb │ │ │ └── first.png │ │ ├── first │ │ ├── hi │ │ └── shapes │ │ │ ├── .thumbs │ │ │ └── test.png │ │ │ └── test │ ├── withpass │ │ ├── .key │ │ │ └── k123 │ │ └── file1 │ └── zzz │ │ ├── anotherfile │ │ └── newfile ├── debug_code.js ├── edit_code.js ├── file_format.js ├── filter_textfield_code.js ├── framed_embed.js ├── html_code.js ├── javascript_code.js ├── lib │ └── testutil.js ├── new_user.js ├── proxy_code.js ├── python_code.js ├── storage_json.js └── wait_code.js └── wsgi ├── bad-substrings.txt ├── bad-words.txt ├── config.py ├── goto.json ├── goto.py ├── img.json ├── img.py ├── load.json ├── load.py ├── save.json └── save.py /.gitignore: -------------------------------------------------------------------------------- 1 | .svn 2 | .DS_Store 3 | node_modules 4 | bower_components 5 | wsgi/config.pyc 6 | local/data 7 | local/cache 8 | content/lib/font-awesome.css 9 | content/builddate.txt 10 | content/editor.css 11 | content/editor.js 12 | content/turtlebits.js 13 | content/welcome.css 14 | content/worker.js 15 | content/.well-known 16 | .DS_Store 17 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | 6 2 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | dist: trusty 2 | sudo: required 3 | addons: 4 | apt: 5 | sources: 6 | - google-chrome 7 | - ubuntu-toolchain-r-test 8 | packages: 9 | - google-chrome-stable 10 | - g++-4.8 11 | env: 12 | - CXX=g++-4.8 13 | 14 | language: node_js 15 | node_js: 16 | - '6' 17 | - '7' 18 | before_script: 19 | - export DISPLAY=:99.0 20 | - sh -e /etc/init.d/xvfb start 21 | - sleep 3 22 | - npm install grunt-cli -g 23 | 24 | notifications: 25 | webhooks: 26 | urls: 27 | - http://fish.pencilcode.net/pull/staging 28 | on_success: always 29 | on_failure: never 30 | on_start: false 31 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 David Bau, Google, and other contributors. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | 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, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /admin/bulkcreate.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | var fs = require('fs'); 4 | var seedrandom = require('../content/lib/seedrandom'); 5 | var filename = process.argv[2]; 6 | 7 | if (!filename) { 8 | console.log('Usage: bulkcreate.js jsonfile'); 9 | console.log('The file should contain an array of {name:, pass:} records.'); 10 | return; 11 | } 12 | 13 | function keyFromPassword(username, p) { 14 | if (!p) { return ''; } 15 | if (/^[0-9]{3}$/.test(p)) { return p; } 16 | var key = ''; 17 | var prng = seedrandom('turtlebits:' + username + ':' + p + '.'); 18 | for (var j = 0; j < 3; j++) { 19 | key += Math.floor(prng() * 10); 20 | } 21 | return key; 22 | } 23 | 24 | var text = fs.readFileSync(filename, 'utf8'); 25 | var accounts = JSON.parse(text); 26 | 27 | var basedir = './'; 28 | 29 | for (var j = 0; j < accounts.length; ++j) { 30 | var a = accounts[j]; 31 | var k = keyFromPassword(accounts[j].name, accounts[j].pass); 32 | fs.mkdirSync(basedir + a.name); 33 | fs.mkdirSync(basedir + a.name + '/.key'); 34 | fs.writeFileSync(basedir + a.name + '/.key/k' + k, ''); 35 | fs.writeFileSync(basedir + a.name + '/intro', 'pen red\nfd 100\n'); 36 | } 37 | -------------------------------------------------------------------------------- /admin/fish.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | GIT="/usr/bin/git" 4 | GRUNT="/usr/local/bin/grunt" 5 | DIR="$( cd "$( dirname "$0" )/.." && pwd )" 6 | cd $DIR 7 | $GIT stash 8 | $GIT pull 9 | $GRUNT 10 | 11 | -------------------------------------------------------------------------------- /admin/loadtest.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd ${0%/*} 4 | PASSFILE=$(mktemp --suffix .json) 5 | 6 | { \ 7 | echo "{"; 8 | ls -1 /mnt/datadisk/data/*/.key/* \ 9 | | sed -e 's/^.*\/\([^/]*\)\/\.key\/k\(.*\)$/"\1": "\2",/' \ 10 | | sed -e '$s/,$//'; \ 11 | echo "}"; \ 12 | } > $PASSFILE 13 | 14 | SERVERS=web1 15 | 16 | if [ `hostname -s` = 'loadtest1' ]; then 17 | PASSFILE=$PASSFILE SERVERS=$SERVERS locust -f simpleloadtest.py --host=http://web --master & 18 | fi 19 | 20 | PASSFILE=$PASSFILE SERVERS=$SERVERS locust -f simpleloadtest.py --host=http://web --slave --master-host=loadtest1 21 | 22 | -------------------------------------------------------------------------------- /admin/tailaccess.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | sudo tail -f /var/log/nginx/access.log 3 | -------------------------------------------------------------------------------- /admin/taillog.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | sudo tail -f /var/log/nginx/access.log | grep --line-buffered " /log" 3 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pencilcode-site", 3 | "version": "0.0.1", 4 | "description": "Website code and config for pencilcode.net.", 5 | "dependencies": { 6 | "ace-builds": "ajaxorg/ace-builds#v1.1.7", 7 | "almond": "latest", 8 | "bootstrap": "latest", 9 | "coffee-script": "dabbler0/coffeescript#astbin", 10 | "devbridge-autocomplete": "latest", 11 | "droplet": "Pencilcode/droplet#master", 12 | "html2canvas": "#0.5.0-alpha1", 13 | "iced-coffee-script": "PencilCode/pencil-coffee-script#pencil", 14 | "jquery": "latest", 15 | "jquery-deparam": "latest", 16 | "jquery-turtle": "PencilCode/jquery-turtle#master", 17 | "lodash": "latest", 18 | "p5": "https://github.com/processing/p5.js/releases/download/0.4.6/p5.js", 19 | "pencil-tracer": "PencilCode/pencil-tracer#master", 20 | "seedrandom": "latest", 21 | "socket.io-client": "#v1.2.0", 22 | "tooltipster": "latest", 23 | "zeroclipboard": "latest" 24 | }, 25 | "resolutions": { 26 | "ace-builds": "v1.1.7" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /content/.well-known/chrome.txt: -------------------------------------------------------------------------------- 1 | https://crbug.com/1224671 -------------------------------------------------------------------------------- /content/.well-known/pki-validation/BF5FB477BB7F7A3C9D40C235ADE3FBFD.txt: -------------------------------------------------------------------------------- 1 | 72877187E968F4C4C3FD1ED08B47CAD558D95477C6E5F337C378C93155CC4E51 comodoca.com 60f9583ca491b -------------------------------------------------------------------------------- /content/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/apple-touch-icon.png -------------------------------------------------------------------------------- /content/data/animals: -------------------------------------------------------------------------------- 1 | alligator 2 | armadillo 3 | bear 4 | beaver 5 | buffalo 6 | butterfly 7 | camel 8 | chicken 9 | chipmunk 10 | clam 11 | cougar 12 | coyote 13 | crocodile 14 | crab 15 | crayfish 16 | crow 17 | dinosaur 18 | dolphin 19 | donkey 20 | dragonfly 21 | deer 22 | duck 23 | eagle 24 | earthworm 25 | elephant 26 | fish 27 | frog 28 | gerbil 29 | giraffe 30 | goat 31 | goose 32 | gopher 33 | hamster 34 | hawk 35 | hedgehog 36 | hippopotamus 37 | horse 38 | jaguar 39 | jellyfish 40 | kangaroo 41 | kitten 42 | koala 43 | leopard 44 | lion 45 | lizard 46 | monkey 47 | moose 48 | mosquito 49 | mouse 50 | octopus 51 | oyster 52 | parrot 53 | panda 54 | panther 55 | pelican 56 | penguin 57 | piglet 58 | pigeon 59 | rabbit 60 | reindeer 61 | rhinoceros 62 | robin 63 | shark 64 | sheep 65 | skunk 66 | snail 67 | snake 68 | spider 69 | squirrel 70 | tiger 71 | tortoise 72 | turkey 73 | turtle 74 | whale 75 | wolf 76 | woodpecker 77 | worm 78 | zebra -------------------------------------------------------------------------------- /content/editor.apcache: -------------------------------------------------------------------------------- 1 | NETWORK: 2 | * 3 | 4 | CACHE: 5 | FALLBACK: 6 | -------------------------------------------------------------------------------- /content/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/favicon.ico -------------------------------------------------------------------------------- /content/image/adventure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/adventure.png -------------------------------------------------------------------------------- /content/image/art.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/art.png -------------------------------------------------------------------------------- /content/image/blockicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/blockicon.png -------------------------------------------------------------------------------- /content/image/blockmode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/blockmode.png -------------------------------------------------------------------------------- /content/image/bluearrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/bluearrow.png -------------------------------------------------------------------------------- /content/image/checker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/checker.png -------------------------------------------------------------------------------- /content/image/codeicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/codeicon.png -------------------------------------------------------------------------------- /content/image/copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/copy.png -------------------------------------------------------------------------------- /content/image/crushall.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | for png in `find $1 -name "*.png"`; 3 | do 4 | echo "crushing $png" 5 | pngcrush -brute "$png" temp.png 6 | mv -f temp.png $png 7 | done; 8 | -------------------------------------------------------------------------------- /content/image/dgpencil-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/dgpencil-128.png -------------------------------------------------------------------------------- /content/image/dgpencil-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/dgpencil-16.png -------------------------------------------------------------------------------- /content/image/dgpencil-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/dgpencil-192.png -------------------------------------------------------------------------------- /content/image/dgpencil-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/dgpencil-256.png -------------------------------------------------------------------------------- /content/image/dgpencil-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/dgpencil-32.png -------------------------------------------------------------------------------- /content/image/dgpencil-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/dgpencil-48.png -------------------------------------------------------------------------------- /content/image/dgpencil-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/dgpencil-512.png -------------------------------------------------------------------------------- /content/image/dgpencil-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/dgpencil-64.png -------------------------------------------------------------------------------- /content/image/dgpencil-96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/dgpencil-96.png -------------------------------------------------------------------------------- /content/image/dir-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/dir-128.png -------------------------------------------------------------------------------- /content/image/dpencil-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/dpencil-128.png -------------------------------------------------------------------------------- /content/image/dpencil-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/dpencil-16.png -------------------------------------------------------------------------------- /content/image/dpencil-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/dpencil-192.png -------------------------------------------------------------------------------- /content/image/dpencil-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/dpencil-256.png -------------------------------------------------------------------------------- /content/image/dpencil-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/dpencil-32.png -------------------------------------------------------------------------------- /content/image/dpencil-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/dpencil-48.png -------------------------------------------------------------------------------- /content/image/dpencil-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/dpencil-512.png -------------------------------------------------------------------------------- /content/image/dpencil-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/dpencil-64.png -------------------------------------------------------------------------------- /content/image/dpencil-96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/dpencil-96.png -------------------------------------------------------------------------------- /content/image/file-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/file-128.png -------------------------------------------------------------------------------- /content/image/file-coffee.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/file-coffee.png -------------------------------------------------------------------------------- /content/image/file-css.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/file-css.png -------------------------------------------------------------------------------- /content/image/file-generic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/file-generic.png -------------------------------------------------------------------------------- /content/image/file-html.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/file-html.png -------------------------------------------------------------------------------- /content/image/file-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/file-image.png -------------------------------------------------------------------------------- /content/image/file-js.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/file-js.png -------------------------------------------------------------------------------- /content/image/file-json.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/file-json.png -------------------------------------------------------------------------------- /content/image/file-pencil.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/file-pencil.png -------------------------------------------------------------------------------- /content/image/file-txt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/file-txt.png -------------------------------------------------------------------------------- /content/image/file-xml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/file-xml.png -------------------------------------------------------------------------------- /content/image/folder_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/folder_32.png -------------------------------------------------------------------------------- /content/image/gearicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/gearicon.png -------------------------------------------------------------------------------- /content/image/gray_pencil_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/gray_pencil_16.png -------------------------------------------------------------------------------- /content/image/grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/grid.png -------------------------------------------------------------------------------- /content/image/music.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/music.png -------------------------------------------------------------------------------- /content/image/new-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/new-128.png -------------------------------------------------------------------------------- /content/image/pencil_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/pencil_16.png -------------------------------------------------------------------------------- /content/image/pencil_192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/pencil_192.png -------------------------------------------------------------------------------- /content/image/pencil_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/pencil_32.png -------------------------------------------------------------------------------- /content/image/pencil_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/pencil_48.png -------------------------------------------------------------------------------- /content/image/pencil_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/pencil_64.png -------------------------------------------------------------------------------- /content/image/pencil_avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/pencil_avatar.png -------------------------------------------------------------------------------- /content/image/shavings.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/shavings.jpg -------------------------------------------------------------------------------- /content/image/team.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/team.jpg -------------------------------------------------------------------------------- /content/image/textmode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/textmode.png -------------------------------------------------------------------------------- /content/image/turtleicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/turtleicon.png -------------------------------------------------------------------------------- /content/image/user-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/user-128.png -------------------------------------------------------------------------------- /content/image/vpencil-10-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/vpencil-10-32.png -------------------------------------------------------------------------------- /content/image/vpencil-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/vpencil-128.png -------------------------------------------------------------------------------- /content/image/vpencil-15-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/vpencil-15-48.png -------------------------------------------------------------------------------- /content/image/vpencil-154-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/vpencil-154-512.png -------------------------------------------------------------------------------- /content/image/vpencil-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/vpencil-16.png -------------------------------------------------------------------------------- /content/image/vpencil-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/vpencil-192.png -------------------------------------------------------------------------------- /content/image/vpencil-20-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/vpencil-20-64.png -------------------------------------------------------------------------------- /content/image/vpencil-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/vpencil-256.png -------------------------------------------------------------------------------- /content/image/vpencil-29-96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/vpencil-29-96.png -------------------------------------------------------------------------------- /content/image/vpencil-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/vpencil-32.png -------------------------------------------------------------------------------- /content/image/vpencil-39-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/vpencil-39-128.png -------------------------------------------------------------------------------- /content/image/vpencil-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/vpencil-48.png -------------------------------------------------------------------------------- /content/image/vpencil-5-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/vpencil-5-16.png -------------------------------------------------------------------------------- /content/image/vpencil-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/vpencil-512.png -------------------------------------------------------------------------------- /content/image/vpencil-58-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/vpencil-58-192.png -------------------------------------------------------------------------------- /content/image/vpencil-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/vpencil-64.png -------------------------------------------------------------------------------- /content/image/vpencil-77-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/vpencil-77-256.png -------------------------------------------------------------------------------- /content/image/vpencil-96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/image/vpencil-96.png -------------------------------------------------------------------------------- /content/lib/ace/ext-error_marker.js: -------------------------------------------------------------------------------- 1 | ; 2 | (function() { 3 | ace.require(["ace/ext/error_marker"], function() {}); 4 | })(); 5 | -------------------------------------------------------------------------------- /content/lib/ace/ext-linking.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/ext/linking",["require","exports","module","ace/editor","ace/config"],function(e,t,n){function i(e){var t=e.editor,n=e.getAccelKey();if(n){var t=e.editor,r=e.getDocumentPosition(),i=t.session,s=i.getTokenAt(r.row,r.column);t._emit("linkHover",{position:r,token:s})}}function s(e){var t=e.getAccelKey(),n=e.getButton();if(n==0&&t){var r=e.editor,i=e.getDocumentPosition(),s=r.session,o=s.getTokenAt(i.row,i.column);r._emit("linkClick",{position:i,token:o})}}var r=e("ace/editor").Editor;e("../config").defineOptions(r.prototype,"editor",{enableLinking:{set:function(e){e?(this.on("click",s),this.on("mousemove",i)):(this.off("click",s),this.off("mousemove",i))},value:!1}})}); 2 | (function() { 3 | ace.require(["ace/ext/linking"], function() {}); 4 | })(); 5 | -------------------------------------------------------------------------------- /content/lib/ace/ext-spellcheck.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/ext/spellcheck",["require","exports","module","ace/lib/event","ace/editor","ace/config"],function(e,t,n){"use strict";var r=e("../lib/event");t.contextMenuHandler=function(e){var t=e.target,n=t.textInput.getElement();if(!t.selection.isEmpty())return;var i=t.getCursorPosition(),s=t.session.getWordRange(i.row,i.column),o=t.session.getTextRange(s);t.session.tokenRe.lastIndex=0;if(!t.session.tokenRe.test(o))return;var u="",a=o+" "+u;n.value=a,n.setSelectionRange(o.length,o.length+1),n.setSelectionRange(0,0),n.setSelectionRange(0,o.length);var f=!1;r.addListener(n,"keydown",function l(){r.removeListener(n,"keydown",l),f=!0}),t.textInput.setInputHandler(function(e){console.log(e,a,n.selectionStart,n.selectionEnd);if(e==a)return"";if(e.lastIndexOf(a,0)===0)return e.slice(a.length);if(e.substr(n.selectionEnd)==a)return e.slice(0,-a.length);if(e.slice(-2)==u){var r=e.slice(0,-2);if(r.slice(-1)==" ")return f?r.substring(0,n.selectionEnd):(r=r.slice(0,-1),t.session.replace(s,r),"")}return e})};var i=e("../editor").Editor;e("../config").defineOptions(i.prototype,"editor",{spellcheck:{set:function(e){var n=this.textInput.getElement();n.spellcheck=!!e,e?this.on("nativecontextmenu",t.contextMenuHandler):this.removeListener("nativecontextmenu",t.contextMenuHandler)},value:!0}})}); 2 | (function() { 3 | ace.require(["ace/ext/spellcheck"], function() {}); 4 | })(); 5 | -------------------------------------------------------------------------------- /content/lib/ace/ext-statusbar.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/ext/statusbar",["require","exports","module","ace/lib/dom","ace/lib/lang"],function(e,t,n){"use strict";var r=e("ace/lib/dom"),i=e("ace/lib/lang"),s=function(e,t){this.element=r.createElement("div"),this.element.className="ace_status-indicator",this.element.style.cssText="display: inline-block;",t.appendChild(this.element);var n=i.delayedCall(function(){this.updateStatus(e)}.bind(this));e.on("changeStatus",function(){n.schedule(100)}),e.on("changeSelection",function(){n.schedule(100)})};(function(){this.updateStatus=function(e){function n(e,n){e&&t.push(e,n||"|")}var t=[];e.$vimModeHandler?n(e.$vimModeHandler.getStatusText()):e.commands.recording&&n("REC");var r=e.selection.lead;n(r.row+":"+r.column," ");if(!e.selection.isEmpty()){var i=e.getSelectionRange();n("("+(i.end.row-i.start.row)+":"+(i.end.column-i.start.column)+")")}t.pop(),this.element.textContent=t.join("")}}).call(s.prototype),t.StatusBar=s}); 2 | (function() { 3 | ace.require(["ace/ext/statusbar"], function() {}); 4 | })(); 5 | -------------------------------------------------------------------------------- /content/lib/ace/ext-themelist.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/ext/themelist",["require","exports","module","ace/lib/fixoldbrowsers"],function(e,t,n){"use strict";e("ace/lib/fixoldbrowsers");var r=[["Chrome"],["Clouds"],["Crimson Editor"],["Dawn"],["Dreamweaver"],["Eclipse"],["GitHub"],["Solarized Light"],["TextMate"],["Tomorrow"],["XCode"],["Kuroir"],["KatzenMilch"],["Ambiance","ambiance","dark"],["Chaos","chaos","dark"],["Clouds Midnight","clouds_midnight","dark"],["Cobalt","cobalt","dark"],["idle Fingers","idle_fingers","dark"],["krTheme","kr_theme","dark"],["Merbivore","merbivore","dark"],["Merbivore Soft","merbivore_soft","dark"],["Mono Industrial","mono_industrial","dark"],["Monokai","monokai","dark"],["Pastel on dark","pastel_on_dark","dark"],["Solarized Dark","solarized_dark","dark"],["Terminal","terminal","dark"],["Tomorrow Night","tomorrow_night","dark"],["Tomorrow Night Blue","tomorrow_night_blue","dark"],["Tomorrow Night Bright","tomorrow_night_bright","dark"],["Tomorrow Night 80s","tomorrow_night_eighties","dark"],["Twilight","twilight","dark"],["Vibrant Ink","vibrant_ink","dark"]];t.themesByName={},t.themes=r.map(function(e){var n=e[1]||e[0].replace(/ /g,"_").toLowerCase(),r={caption:e[0],theme:"ace/theme/"+n,isDark:e[2]=="dark",name:n};return t.themesByName[n]=r,r})}); 2 | (function() { 3 | ace.require(["ace/ext/themelist"], function() {}); 4 | })(); 5 | -------------------------------------------------------------------------------- /content/lib/ace/mode-ada.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/mode/ada_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="abort|else|new|return|abs|elsif|not|reverse|abstract|end|null|accept|entry|select|access|exception|of|separate|aliased|exit|or|some|all|others|subtype|and|for|out|synchronized|array|function|overriding|at|tagged|generic|package|task|begin|goto|pragma|terminate|body|private|then|if|procedure|type|case|in|protected|constant|interface|until||is|raise|use|declare|range|delay|limited|record|when|delta|loop|rem|while|digits|renames|with|do|mod|requeue|xor",t="true|false|null",n="count|min|max|avg|sum|rank|now|coalesce|main",r=this.createKeywordMapper({"support.function":n,keyword:e,"constant.language":t},"identifier",!0);this.$rules={start:[{token:"comment",regex:"--.*$"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}]}};r.inherits(s,i),t.AdaHighlightRules=s}),ace.define("ace/mode/ada",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ada_highlight_rules","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./ada_highlight_rules").AdaHighlightRules,o=e("../range").Range,u=function(){this.HighlightRules=s};r.inherits(u,i),function(){this.lineCommentStart="--",this.$id="ace/mode/ada"}.call(u.prototype),t.Mode=u}) -------------------------------------------------------------------------------- /content/lib/ace/mode-gcode.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/mode/gcode_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="IF|DO|WHILE|ENDWHILE|CALL|ENDIF|SUB|ENDSUB|GOTO|REPEAT|ENDREPEAT|CALL",t="PI",n="ATAN|ABS|ACOS|ASIN|SIN|COS|EXP|FIX|FUP|ROUND|LN|TAN",r=this.createKeywordMapper({"support.function":n,keyword:e,"constant.language":t},"identifier",!0);this.$rules={start:[{token:"comment",regex:"\\(.*\\)"},{token:"comment",regex:"([N])([0-9]+)"},{token:"string",regex:"([G])([0-9]+\\.?[0-9]?)"},{token:"string",regex:"([M])([0-9]+\\.?[0-9]?)"},{token:"constant.numeric",regex:"([-+]?([0-9]*\\.?[0-9]+\\.?))|(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)"},{token:r,regex:"[A-Z]"},{token:"keyword.operator",regex:"EQ|LT|GT|NE|GE|LE|OR|XOR"},{token:"paren.lparen",regex:"[\\[]"},{token:"paren.rparen",regex:"[\\]]"},{token:"text",regex:"\\s+"}]}};r.inherits(s,i),t.GcodeHighlightRules=s}),ace.define("ace/mode/gcode",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/gcode_highlight_rules","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./gcode_highlight_rules").GcodeHighlightRules,o=e("../range").Range,u=function(){this.HighlightRules=s};r.inherits(u,i),function(){this.$id="ace/mode/gcode"}.call(u.prototype),t.Mode=u}) -------------------------------------------------------------------------------- /content/lib/ace/mode-gherkin.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/mode/gherkin_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s="\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})",o=function(){this.$rules={start:[{token:"constant.numeric",regex:"(?:(?:[1-9]\\d*)|(?:0))"},{token:"comment",regex:"#.*$"},{token:"keyword",regex:"Feature:|Background:|Scenario:|Scenario Outline:|Examples:|Given|When|Then|And|But|\\*"},{token:"string",regex:'"{3}',next:"qqstring3"},{token:"string",regex:'"',next:"qqstring"},{token:"comment",regex:"@[A-Za-z0-9]+",next:"start"},{token:"comment",regex:"<.+>"},{token:"comment",regex:"\\| ",next:"table-item"},{token:"comment",regex:"\\|$",next:"start"}],qqstring3:[{token:"constant.language.escape",regex:s},{token:"string",regex:'"{3}',next:"start"},{defaultToken:"string"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],"table-item":[{token:"string",regex:"[A-Za-z0-9 ]*",next:"start"}]}};r.inherits(o,i),t.GherkinHighlightRules=o}),ace.define("ace/mode/gherkin",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/gherkin_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("./gherkin_highlight_rules").GherkinHighlightRules,o=function(){this.HighlightRules=s};r.inherits(o,i),function(){this.lineCommentStart="#",this.$id="ace/mode/gherkin",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=" ",s=this.getTokenizer().getLineTokens(t,e),o=s.tokens;return console.log(e),t.match("[ ]*\\|")&&(r+="| "),o.length&&o[o.length-1].type=="comment"?r:(e=="start"&&(t.match("Scenario:|Feature:|Scenario Outline:|Background:")?r+=i:t.match("(Given|Then).+(:)$|Examples:")?r+=i:t.match("\\*.+")&&(r+="* ")),r)}}.call(o.prototype),t.Mode=o}) -------------------------------------------------------------------------------- /content/lib/ace/mode-gitignore.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/mode/gitignore_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment",regex:/^\s*#.*$/},{token:"keyword",regex:/^\s*!.*$/}]},this.normalizeRules()};s.metaData={fileTypes:["gitignore"],name:"Gitignore"},r.inherits(s,i),t.GitignoreHighlightRules=s}),ace.define("ace/mode/gitignore",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/gitignore_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./gitignore_highlight_rules").GitignoreHighlightRules,o=function(){this.HighlightRules=s};r.inherits(o,i),function(){this.$id="ace/mode/gitignore"}.call(o.prototype),t.Mode=o}) -------------------------------------------------------------------------------- /content/lib/ace/mode-lisp.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/mode/lisp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="case|do|let|loop|if|else|when",t="eq|neq|and|or",n="null|nil",r="cons|car|cdr|cond|lambda|format|setq|setf|quote|eval|append|list|listp|memberp|t|load|progn",i=this.createKeywordMapper({"keyword.control":e,"keyword.operator":t,"constant.language":n,"support.function":r},"identifier",!0);this.$rules={start:[{token:"comment",regex:";.*$"},{token:["storage.type.function-type.lisp","text","entity.name.function.lisp"],regex:"(?:\\b(?:(defun|defmethod|defmacro))\\b)(\\s+)((?:\\w|\\-|\\!|\\?)*)"},{token:["punctuation.definition.constant.character.lisp","constant.character.lisp"],regex:"(#)((?:\\w|[\\\\+-=<>'\"&#])+)"},{token:["punctuation.definition.variable.lisp","variable.other.global.lisp","punctuation.definition.variable.lisp"],regex:"(\\*)(\\S*)(\\*)"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+(?:L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(?:L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:i,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"string",regex:'"(?=.)',next:"qqstring"}],qqstring:[{token:"constant.character.escape.lisp",regex:"\\\\."},{token:"string",regex:'[^"\\\\]+'},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"start"}]}};r.inherits(s,i),t.LispHighlightRules=s}),ace.define("ace/mode/lisp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/lisp_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./lisp_highlight_rules").LispHighlightRules,o=function(){this.HighlightRules=s};r.inherits(o,i),function(){this.lineCommentStart=";",this.$id="ace/mode/lisp"}.call(o.prototype),t.Mode=o}) -------------------------------------------------------------------------------- /content/lib/ace/mode-lucene.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/mode/lucene_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=function(){this.$rules={start:[{token:"constant.character.negation",regex:"[\\-]"},{token:"constant.character.interro",regex:"[\\?]"},{token:"constant.character.asterisk",regex:"[\\*]"},{token:"constant.character.proximity",regex:"~[0-9]+\\b"},{token:"keyword.operator",regex:"(?:AND|OR|NOT)\\b"},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"keyword",regex:"[\\S]+:"},{token:"string",regex:'".*?"'},{token:"text",regex:"\\s+"}]}};r.inherits(o,s),t.LuceneHighlightRules=o}),ace.define("ace/mode/lucene",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/lucene_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./lucene_highlight_rules").LuceneHighlightRules,o=function(){this.HighlightRules=s};r.inherits(o,i),function(){this.$id="ace/mode/lucene"}.call(o.prototype),t.Mode=o}) -------------------------------------------------------------------------------- /content/lib/ace/mode-plain_text.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/mode/plain_text",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/behaviour"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./text_highlight_rules").TextHighlightRules,o=e("./behaviour").Behaviour,u=function(){this.HighlightRules=s,this.$behaviour=new o};r.inherits(u,i),function(){this.type="text",this.getNextLineIndent=function(e,t,n){return""},this.$id="ace/mode/plain_text"}.call(u.prototype),t.Mode=u}) -------------------------------------------------------------------------------- /content/lib/ace/mode-properties.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/mode/properties_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e=/\\u[0-9a-fA-F]{4}|\\/;this.$rules={start:[{token:"comment",regex:/[!#].*$/},{token:"keyword",regex:/[=:]$/},{token:"keyword",regex:/[=:]/,next:"value"},{token:"constant.language.escape",regex:e},{defaultToken:"variable"}],value:[{regex:/\\$/,token:"string",next:"value"},{regex:/$/,token:"string",next:"start"},{token:"constant.language.escape",regex:e},{defaultToken:"string"}]}};r.inherits(s,i),t.PropertiesHighlightRules=s}),ace.define("ace/mode/properties",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/properties_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./properties_highlight_rules").PropertiesHighlightRules,o=function(){this.HighlightRules=s};r.inherits(o,i),function(){this.$id="ace/mode/properties"}.call(o.prototype),t.Mode=o}) -------------------------------------------------------------------------------- /content/lib/ace/mode-scheme.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/mode/scheme_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="case|do|let|loop|if|else|when",t="eq?|eqv?|equal?|and|or|not|null?",n="#t|#f",r="cons|car|cdr|cond|lambda|lambda*|syntax-rules|format|set!|quote|eval|append|list|list?|member?|load",i=this.createKeywordMapper({"keyword.control":e,"keyword.operator":t,"constant.language":n,"support.function":r},"identifier",!0);this.$rules={start:[{token:"comment",regex:";.*$"},{token:["storage.type.function-type.scheme","text","entity.name.function.scheme"],regex:"(?:\\b(?:(define|define-syntax|define-macro))\\b)(\\s+)((?:\\w|\\-|\\!|\\?)*)"},{token:"punctuation.definition.constant.character.scheme",regex:"#:\\S+"},{token:["punctuation.definition.variable.scheme","variable.other.global.scheme","punctuation.definition.variable.scheme"],regex:"(\\*)(\\S*)(\\*)"},{token:"constant.numeric",regex:"#[xXoObB][0-9a-fA-F]+"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?"},{token:i,regex:"[a-zA-Z_#][a-zA-Z0-9_\\-\\?\\!\\*]*"},{token:"string",regex:'"(?=.)',next:"qqstring"}],qqstring:[{token:"constant.character.escape.scheme",regex:"\\\\."},{token:"string",regex:'[^"\\\\]+',merge:!0},{token:"string",regex:"\\\\$",next:"qqstring",merge:!0},{token:"string",regex:'"|$',next:"start",merge:!0}]}};r.inherits(s,i),t.SchemeHighlightRules=s}),ace.define("ace/mode/scheme",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/scheme_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./scheme_highlight_rules").SchemeHighlightRules,o=function(){this.HighlightRules=s};r.inherits(o,i),function(){this.lineCommentStart=";",this.$id="ace/mode/scheme"}.call(o.prototype),t.Mode=o}) -------------------------------------------------------------------------------- /content/lib/ace/mode-sql.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/mode/sql_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="select|insert|update|delete|from|where|and|or|group|by|order|limit|offset|having|as|case|when|else|end|type|left|right|join|on|outer|desc|asc|union",t="true|false|null",n="count|min|max|avg|sum|rank|now|coalesce",r=this.createKeywordMapper({"support.function":n,keyword:e,"constant.language":t},"identifier",!0);this.$rules={start:[{token:"comment",regex:"--.*$"},{token:"comment",start:"/\\*",end:"\\*/"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}]},this.normalizeRules()};r.inherits(s,i),t.SqlHighlightRules=s}),ace.define("ace/mode/sql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sql_highlight_rules","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./sql_highlight_rules").SqlHighlightRules,o=e("../range").Range,u=function(){this.HighlightRules=s};r.inherits(u,i),function(){this.lineCommentStart="--",this.$id="ace/mode/sql"}.call(u.prototype),t.Mode=u}) -------------------------------------------------------------------------------- /content/lib/ace/mode-text.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/lib/ace/mode-text.js -------------------------------------------------------------------------------- /content/lib/ace/mode-textile.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/mode/textile_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:function(e){return e.charAt(0)=="h"?"markup.heading."+e.charAt(1):"markup.heading"},regex:"h1|h2|h3|h4|h5|h6|bq|p|bc|pre",next:"blocktag"},{token:"keyword",regex:"[\\*]+|[#]+"},{token:"text",regex:".+"}],blocktag:[{token:"keyword",regex:"\\. ",next:"start"},{token:"keyword",regex:"\\(",next:"blocktagproperties"}],blocktagproperties:[{token:"keyword",regex:"\\)",next:"blocktag"},{token:"string",regex:"[a-zA-Z0-9\\-_]+"},{token:"keyword",regex:"#"}]}};r.inherits(s,i),t.TextileHighlightRules=s}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/textile",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/textile_highlight_rules","ace/mode/matching_brace_outdent"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./textile_highlight_rules").TextileHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=function(){this.HighlightRules=s,this.$outdent=new o};r.inherits(u,i),function(){this.getNextLineIndent=function(e,t,n){return e=="intag"?n:""},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/textile"}.call(u.prototype),t.Mode=u}) -------------------------------------------------------------------------------- /content/lib/ace/mode-toml.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/mode/toml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e=this.createKeywordMapper({"constant.language.boolean":"true|false"},"identifier"),t="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b";this.$rules={start:[{token:"comment.toml",regex:/#.*$/},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:["variable.keygroup.toml"],regex:"(?:^\\s*)(\\[([^\\]]+)\\])"},{token:e,regex:t},{token:"support.date.toml",regex:"\\d{4}-\\d{2}-\\d{2}(T)\\d{2}:\\d{2}:\\d{2}(Z)"},{token:"constant.numeric.toml",regex:"-?\\d+(\\.?\\d+)?"}],qqstring:[{token:"string",regex:"\\\\$",next:"qqstring"},{token:"constant.language.escape",regex:'\\\\[0tnr"\\\\]'},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}]}};r.inherits(s,i),t.TomlHighlightRules=s}),ace.define("ace/mode/folding/ini",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(){};r.inherits(o,s),function(){this.foldingStartMarker=/^\s*\[([^\])]*)]\s*(?:$|[;#])/,this.getFoldWidgetRange=function(e,t,n){var r=this.foldingStartMarker,s=e.getLine(n),o=s.match(r);if(!o)return;var u=o[1]+".",a=s.length,f=e.getLength(),l=n,c=n;while(++nl){var h=e.getLine(c).length;return new i(l,a,c,h)}}}.call(o.prototype)}),ace.define("ace/mode/toml",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/toml_highlight_rules","ace/mode/folding/ini"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./toml_highlight_rules").TomlHighlightRules,o=e("./folding/ini").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="#",this.$id="ace/mode/toml"}.call(u.prototype),t.Mode=u}) -------------------------------------------------------------------------------- /content/lib/ace/mode-vhdl.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/mode/vhdl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="access|after|ailas|all|architecture|assert|attribute|begin|block|buffer|bus|case|component|configuration|disconnect|downto|else|elsif|end|entity|file|for|function|generate|generic|guarded|if|impure|in|inertial|inout|is|label|linkage|literal|loop|mapnew|next|of|on|open|others|out|port|process|pure|range|record|reject|report|return|select|shared|subtype|then|to|transport|type|unaffected|united|until|wait|when|while|with",t="bit|bit_vector|boolean|character|integer|line|natural|positive|real|register|severity|signal|signed|std_logic|std_logic_vector|string||text|time|unsigned|variable",n="array|constant",r="abs|and|mod|nand|nor|not|rem|rol|ror|sla|sll|srasrl|xnor|xor",i="true|false|null",s=this.createKeywordMapper({"keyword.operator":r,keyword:e,"constant.language":i,"storage.modifier":n,"storage.type":t},"identifier",!0);this.$rules={start:[{token:"comment",regex:"--.*$"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"keyword",regex:"\\s*(?:library|package|use)\\b"},{token:s,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"&|\\*|\\+|\\-|\\/|<|=|>|\\||=>|\\*\\*|:=|\\/=|>=|<=|<>"},{token:"punctuation.operator",regex:"\\'|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[(]"},{token:"paren.rparen",regex:"[\\])]"},{token:"text",regex:"\\s+"}]}};r.inherits(s,i),t.VHDLHighlightRules=s}),ace.define("ace/mode/vhdl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/vhdl_highlight_rules","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./vhdl_highlight_rules").VHDLHighlightRules,o=e("../range").Range,u=function(){this.HighlightRules=s};r.inherits(u,i),function(){this.lineCommentStart="--",this.$id="ace/mode/vhdl"}.call(u.prototype),t.Mode=u}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/abap.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/abap",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="abap"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/abc.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/abc",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='\nsnippet zupfnoter.print\n %%%%hn.print {"startpos": ${1:pos_y}, "t":"${2:title}", "v":[${3:voices}], "s":[[${4:syncvoices}1,2]], "f":[${5:flowlines}], "sf":[${6:subflowlines}], "j":[${7:jumplines}]}\n\nsnippet zupfnoter.note\n %%%%hn.note {"pos": [${1:pos_x},${2:pos_y}], "text": "${3:text}", "style": "${4:style}"}\n\nsnippet zupfnoter.annotation\n %%%%hn.annotation {"id": "${1:id}", "pos": [${2:pos}], "text": "${3:text}"}\n\nsnippet zupfnoter.lyrics\n %%%%hn.lyrics {"pos": [${1:x_pos},${2:y_pos}]}\n\nsnippet zupfnoter.legend\n %%%%hn.legend {"pos": [${1:x_pos},${2:y_pos}]}\n\n\n\nsnippet zupfnoter.target\n "^:${1:target}"\n\nsnippet zupfnoter.goto\n "^@${1:target}@${2:distance}"\n\nsnippet zupfnoter.annotationref\n "^#${1:target}"\n\nsnippet zupfnoter.annotation\n "^!${1:text}@${2:x_offset},${3:y_offset}"\n\n\n',t.scope="abc"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/ada.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/ada",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="ada"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/apache_conf.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/apache_conf",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="apache_conf"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/applescript.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/applescript",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="applescript"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/asciidoc.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/asciidoc",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="asciidoc"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/assembly_x86.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/assembly_x86",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="assembly_x86"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/autohotkey.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/autohotkey",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="autohotkey"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/batchfile.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/batchfile",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="batchfile"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/c9search.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/c9search",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="c9search"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/cirru.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/cirru",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="cirru"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/clojure.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/clojure",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='snippet comm\n (comment\n ${1}\n )\nsnippet condp\n (condp ${1:pred} ${2:expr}\n ${3})\nsnippet def\n (def ${1})\nsnippet defm\n (defmethod ${1:multifn} "${2:doc-string}" ${3:dispatch-val} [${4:args}]\n ${5})\nsnippet defmm\n (defmulti ${1:name} "${2:doc-string}" ${3:dispatch-fn})\nsnippet defma\n (defmacro ${1:name} "${2:doc-string}" ${3:dispatch-fn})\nsnippet defn\n (defn ${1:name} "${2:doc-string}" [${3:arg-list}]\n ${4})\nsnippet defp\n (defprotocol ${1:name}\n ${2})\nsnippet defr\n (defrecord ${1:name} [${2:fields}]\n ${3:protocol}\n ${4})\nsnippet deft\n (deftest ${1:name}\n (is (= ${2:assertion})))\n ${3})\nsnippet is\n (is (= ${1} ${2}))\nsnippet defty\n (deftype ${1:Name} [${2:fields}]\n ${3:Protocol}\n ${4})\nsnippet doseq\n (doseq [${1:elem} ${2:coll}]\n ${3})\nsnippet fn\n (fn [${1:arg-list}] ${2})\nsnippet if\n (if ${1:test-expr}\n ${2:then-expr}\n ${3:else-expr})\nsnippet if-let \n (if-let [${1:result} ${2:test-expr}]\n (${3:then-expr} $1)\n (${4:else-expr}))\nsnippet imp\n (:import [${1:package}])\n & {:keys [${1:keys}] :or {${2:defaults}}}\nsnippet let\n (let [${1:name} ${2:expr}]\n ${3})\nsnippet letfn\n (letfn [(${1:name) [${2:args}]\n ${3})])\nsnippet map\n (map ${1:func} ${2:coll})\nsnippet mapl\n (map #(${1:lambda}) ${2:coll})\nsnippet met\n (${1:name} [${2:this} ${3:args}]\n ${4})\nsnippet ns\n (ns ${1:name}\n ${2})\nsnippet dotimes\n (dotimes [_ 10]\n (time\n (dotimes [_ ${1:times}]\n ${2})))\nsnippet pmethod\n (${1:name} [${2:this} ${3:args}])\nsnippet refer\n (:refer-clojure :exclude [${1}])\nsnippet require\n (:require [${1:namespace} :as [${2}]])\nsnippet use\n (:use [${1:namespace} :only [${2}]])\nsnippet print\n (println ${1})\nsnippet reduce\n (reduce ${1:(fn [p n] ${3})} ${2})\nsnippet when\n (when ${1:test} ${2:body})\nsnippet when-let\n (when-let [${1:result} ${2:test}]\n ${3:body})\n',t.scope="clojure"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/cobol.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/cobol",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="cobol"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/coldfusion.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/coldfusion",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="coldfusion"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/csharp.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/csharp",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="csharp"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/curly.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/curly",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="curly"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/d.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/d",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="d"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/dart.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/dart",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet lib\n library ${1};\n ${2}\nsnippet im\n import '${1}';\n ${2}\nsnippet pa\n part '${1}';\n ${2}\nsnippet pao\n part of ${1};\n ${2}\nsnippet main\n void main() {\n ${1:/* code */}\n }\nsnippet st\n static ${1}\nsnippet fi\n final ${1}\nsnippet re\n return ${1}\nsnippet br\n break;\nsnippet th\n throw ${1}\nsnippet cl\n class ${1:`Filename(\"\", \"untitled\")`} ${2}\nsnippet imp\n implements ${1}\nsnippet ext\n extends ${1}\nsnippet if\n if (${1:true}) {\n ${2}\n }\nsnippet ife\n if (${1:true}) {\n ${2}\n } else {\n ${3}\n }\nsnippet el\n else\nsnippet sw\n switch (${1}) {\n ${2}\n }\nsnippet cs\n case ${1}:\n ${2}\nsnippet de\n default:\n ${1}\nsnippet for\n for (var ${2:i} = 0, len = ${1:things}.length; $2 < len; ${3:++}$2) {\n ${4:$1[$2]}\n }\nsnippet fore\n for (final ${2:item} in ${1:itemList}) {\n ${3:/* code */}\n }\nsnippet wh\n while (${1:/* condition */}) {\n ${2:/* code */}\n }\nsnippet dowh\n do {\n ${2:/* code */}\n } while (${1:/* condition */});\nsnippet as\n assert(${1:/* condition */});\nsnippet try\n try {\n ${2}\n } catch (${1:Exception e}) {\n }\nsnippet tryf\n try {\n ${2}\n } catch (${1:Exception e}) {\n } finally {\n }\n",t.scope="dart"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/diff.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/diff",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='# DEP-3 (http://dep.debian.net/deps/dep3/) style patch header\nsnippet header DEP-3 style header\n Description: ${1}\n Origin: ${2:vendor|upstream|other}, ${3:url of the original patch}\n Bug: ${4:url in upstream bugtracker}\n Forwarded: ${5:no|not-needed|url}\n Author: ${6:`g:snips_author`}\n Reviewed-by: ${7:name and email}\n Last-Update: ${8:`strftime("%Y-%m-%d")`}\n Applied-Upstream: ${9:upstream version|url|commit}\n\n',t.scope="diff"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/dockerfile.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/dockerfile",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="dockerfile"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/dot.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/dot",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="dot"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/eiffel.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/eiffel",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="eiffel"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/ejs.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/ejs",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="ejs"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/elixir.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/elixir",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope=""}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/elm.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/elm",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="elm"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/forth.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/forth",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="forth"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/ftl.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/ftl",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="ftl"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/gcode.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/gcode",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="gcode"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/gherkin.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/gherkin",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="gherkin"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/gitignore.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/gitignore",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="gitignore"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/glsl.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/glsl",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="glsl"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/golang.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/golang",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="golang"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/groovy.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/groovy",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="groovy"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/haml.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/haml",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet t\n %table\n %tr\n %th\n ${1:headers}\n %tr\n %td\n ${2:headers}\nsnippet ul\n %ul\n %li\n ${1:item}\n %li\nsnippet =rp\n = render :partial => '${1:partial}'\nsnippet =rpl\n = render :partial => '${1:partial}', :locals => {}\nsnippet =rpc\n = render :partial => '${1:partial}', :collection => @$1\n\n",t.scope="haml"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/handlebars.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/handlebars",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="handlebars"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/haskell.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/haskell",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet lang\n {-# LANGUAGE ${1:OverloadedStrings} #-}\nsnippet info\n -- |\n -- Module : ${1:Module.Namespace}\n -- Copyright : ${2:Author} ${3:2011-2012}\n -- License : ${4:BSD3}\n --\n -- Maintainer : ${5:email@something.com}\n -- Stability : ${6:experimental}\n -- Portability : ${7:unknown}\n --\n -- ${8:Description}\n --\nsnippet import\n import ${1:Data.Text}\nsnippet import2\n import ${1:Data.Text} (${2:head})\nsnippet importq\n import qualified ${1:Data.Text} as ${2:T}\nsnippet inst\n instance ${1:Monoid} ${2:Type} where\n ${3}\nsnippet type\n type ${1:Type} = ${2:Type}\nsnippet data\n data ${1:Type} = ${2:$1} ${3:Int}\nsnippet newtype\n newtype ${1:Type} = ${2:$1} ${3:Int}\nsnippet class\n class ${1:Class} a where\n ${2}\nsnippet module\n module `substitute(substitute(expand('%:r'), '[/\\\\]','.','g'),'^\\%(\\l*\\.\\)\\?','','')` (\n ) where\n `expand('%') =~ 'Main' ? \"\\n\\nmain = do\\n print \\\"hello world\\\"\" : \"\"`\n\nsnippet const\n ${1:name} :: ${2:a}\n $1 = ${3:undefined}\nsnippet fn\n ${1:fn} :: ${2:a} -> ${3:a}\n $1 ${4} = ${5:undefined}\nsnippet fn2\n ${1:fn} :: ${2:a} -> ${3:a} -> ${4:a}\n $1 ${5} = ${6:undefined}\nsnippet ap\n ${1:map} ${2:fn} ${3:list}\nsnippet do\n do\n \nsnippet \u03bb\n \\${1:x} -> ${2}\nsnippet \\\n \\${1:x} -> ${2}\nsnippet <-\n ${1:a} <- ${2:m a}\nsnippet \u2190\n ${1:a} <- ${2:m a}\nsnippet ->\n ${1:m a} -> ${2:a}\nsnippet \u2192\n ${1:m a} -> ${2:a}\nsnippet tup\n (${1:a}, ${2:b})\nsnippet tup2\n (${1:a}, ${2:b}, ${3:c})\nsnippet tup3\n (${1:a}, ${2:b}, ${3:c}, ${4:d})\nsnippet rec\n ${1:Record} { ${2:recFieldA} = ${3:undefined}\n , ${4:recFieldB} = ${5:undefined}\n }\nsnippet case\n case ${1:something} of\n ${2} -> ${3}\nsnippet let\n let ${1} = ${2}\n in ${3}\nsnippet where\n where\n ${1:fn} = ${2:undefined}\n",t.scope="haskell"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/haxe.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/haxe",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="haxe"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/html_ruby.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/html_ruby",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="html_ruby"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/ini.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/ini",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="ini"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/io.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/io",["require","exports","module"],function(e,t,n){"use strict";t.snippets=[{content:"assertEquals(${1:expected}, ${2:expr})",name:"assertEquals",scope:"io",tabTrigger:"ae"},{content:"${1:${2:newValue} := ${3:Object} }clone do(\n $0\n)",name:"clone do",scope:"io",tabTrigger:"cdo"},{content:'docSlot("${1:slotName}", "${2:documentation}")',name:"docSlot",scope:"io",tabTrigger:"ds"},{content:"(${1:header,}\n ${2:body}\n)$0",keyEquivalent:"@(",name:"Indented Bracketed Line",scope:"io",tabTrigger:"("},{content:"\n $0\n",keyEquivalent:"\r",name:"Special: Return Inside Empty Parenthesis",scope:"io meta.empty-parenthesis.io, io meta.comma-parenthesis.io"},{content:"${1:methodName} := method(${2:args,}\n $0\n)",name:"method",scope:"io",tabTrigger:"m"},{content:'newSlot("${1:slotName}", ${2:defaultValue}, "${3:docString}")$0',name:"newSlot",scope:"io",tabTrigger:"ns"},{content:"${1:name} := Object clone do(\n $0\n)",name:"Object clone do",scope:"io",tabTrigger:"ocdo"},{content:"test${1:SomeFeature} := method(\n $0\n)",name:"testMethod",scope:"io",tabTrigger:"ts"},{content:"${1:Something}Test := ${2:UnitTest} clone do(\n $0\n)",name:"UnitTest",scope:"io",tabTrigger:"ut"}],t.scope="io"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/jack.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/jack",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="jack"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/jade.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/jade",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="jade"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/json.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/json",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="json"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/jsoniq.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/jsoniq",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='snippet for\n for $${1:item} in ${2:expr}\nsnippet return\n return ${1:expr}\nsnippet import\n import module namespace ${1:ns} = "${2:http://www.example.com/}";\nsnippet some\n some $${1:varname} in ${2:expr} satisfies ${3:expr}\nsnippet every\n every $${1:varname} in ${2:expr} satisfies ${3:expr}\nsnippet if\n if(${1:true}) then ${2:expr} else ${3:true}\nsnippet switch\n switch(${1:"foo"})\n case ${2:"foo"}\n return ${3:true}\n default return ${4:false}\nsnippet try\n try { ${1:expr} } catch ${2:*} { ${3:expr} }\nsnippet tumbling\n for tumbling window $${1:varname} in ${2:expr}\n start at $${3:start} when ${4:expr}\n end at $${5:end} when ${6:expr}\n return ${7:expr}\nsnippet sliding\n for sliding window $${1:varname} in ${2:expr}\n start at $${3:start} when ${4:expr}\n end at $${5:end} when ${6:expr}\n return ${7:expr}\nsnippet let\n let $${1:varname} := ${2:expr}\nsnippet group\n group by $${1:varname} := ${2:expr}\nsnippet order\n order by ${1:expr} ${2:descending}\nsnippet stable\n stable order by ${1:expr}\nsnippet count\n count $${1:varname}\nsnippet ordered\n ordered { ${1:expr} }\nsnippet unordered\n unordered { ${1:expr} }\nsnippet treat \n treat as ${1:expr}\nsnippet castable\n castable as ${1:atomicType}\nsnippet cast\n cast as ${1:atomicType}\nsnippet typeswitch\n typeswitch(${1:expr})\n case ${2:type} return ${3:expr}\n default return ${4:expr}\nsnippet var\n declare variable $${1:varname} := ${2:expr};\nsnippet fn\n declare function ${1:ns}:${2:name}(){\n ${3:expr}\n };\nsnippet module\n module namespace ${1:ns} = "${2:http://www.example.com}";\n',t.scope="jsoniq"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/jsx.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/jsx",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="jsx"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/julia.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/julia",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="julia"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/latex.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/latex",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="latex"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/lean.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/lean",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="lean"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/less.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/less",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="less"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/liquid.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/liquid",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="liquid"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/lisp.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/lisp",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="lisp"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/live_script.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/live_script",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope=""}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/livescript.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/livescript",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="livescript"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/logiql.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/logiql",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="logiql"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/lua.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/lua",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet #!\n #!/usr/bin/env lua\n $1\nsnippet local\n local ${1:x} = ${2:1}\nsnippet fun\n function ${1:fname}(${2:...})\n ${3:-- body}\n end\nsnippet for\n for ${1:i}=${2:1},${3:10} do\n ${4:print(i)}\n end\nsnippet forp\n for ${1:i},${2:v} in pairs(${3:table_name}) do\n ${4:-- body}\n end\nsnippet fori\n for ${1:i},${2:v} in ipairs(${3:table_name}) do\n ${4:-- body}\n end\n",t.scope="lua"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/luapage.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/luapage",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="luapage"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/lucene.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/lucene",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="lucene"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/makefile.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/makefile",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet ifeq\n ifeq (${1:cond0},${2:cond1})\n ${3:code}\n endif\n",t.scope="makefile"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/markdown.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/markdown",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='# Markdown\n\n# Includes octopress (http://octopress.org/) snippets\n\nsnippet [\n [${1:text}](http://${2:address} "${3:title}")\nsnippet [*\n [${1:link}](${2:`@*`} "${3:title}")${4}\n\nsnippet [:\n [${1:id}]: http://${2:url} "${3:title}"\nsnippet [:*\n [${1:id}]: ${2:`@*`} "${3:title}"\n\nsnippet ![\n ![${1:alttext}](${2:/images/image.jpg} "${3:title}")\nsnippet ![*\n ![${1:alt}](${2:`@*`} "${3:title}")${4}\n\nsnippet ![:\n ![${1:id}]: ${2:url} "${3:title}"\nsnippet ![:*\n ![${1:id}]: ${2:`@*`} "${3:title}"\n\nsnippet ===\nregex /^/=+/=*//\n ${PREV_LINE/./=/g}\n \n ${0}\nsnippet ---\nregex /^/-+/-*//\n ${PREV_LINE/./-/g}\n \n ${0}\nsnippet blockquote\n {% blockquote %}\n ${1:quote}\n {% endblockquote %}\n\nsnippet blockquote-author\n {% blockquote ${1:author}, ${2:title} %}\n ${3:quote}\n {% endblockquote %}\n\nsnippet blockquote-link\n {% blockquote ${1:author} ${2:URL} ${3:link_text} %}\n ${4:quote}\n {% endblockquote %}\n\nsnippet bt-codeblock-short\n ```\n ${1:code_snippet}\n ```\n\nsnippet bt-codeblock-full\n ``` ${1:language} ${2:title} ${3:URL} ${4:link_text}\n ${5:code_snippet}\n ```\n\nsnippet codeblock-short\n {% codeblock %}\n ${1:code_snippet}\n {% endcodeblock %}\n\nsnippet codeblock-full\n {% codeblock ${1:title} lang:${2:language} ${3:URL} ${4:link_text} %}\n ${5:code_snippet}\n {% endcodeblock %}\n\nsnippet gist-full\n {% gist ${1:gist_id} ${2:filename} %}\n\nsnippet gist-short\n {% gist ${1:gist_id} %}\n\nsnippet img\n {% img ${1:class} ${2:URL} ${3:width} ${4:height} ${5:title_text} ${6:alt_text} %}\n\nsnippet youtube\n {% youtube ${1:video_id} %}\n\n# The quote should appear only once in the text. It is inherently part of it.\n# See http://octopress.org/docs/plugins/pullquote/ for more info.\n\nsnippet pullquote\n {% pullquote %}\n ${1:text} {" ${2:quote} "} ${3:text}\n {% endpullquote %}\n',t.scope="markdown"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/mask.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/mask",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="mask"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/matlab.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/matlab",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="matlab"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/mel.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/mel",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="mel"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/mips_assembler.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/mips_assembler",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="mips_assembler"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/mipsassembler.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/mipsassembler",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope=""}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/mushcode.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/mushcode",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="mushcode"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/mysql.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/mysql",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="mysql"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/nix.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/nix",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="nix"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/objectivec.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/objectivec",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="objectivec"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/ocaml.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/ocaml",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="ocaml"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/pascal.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/pascal",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="pascal"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/pgsql.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/pgsql",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="pgsql"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/plain_text.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/plain_text",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="plain_text"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/powershell.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/powershell",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="powershell"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/praat.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/praat",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="praat"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/prolog.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/prolog",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="prolog"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/properties.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/properties",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="properties"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/protobuf.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/protobuf",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="",t.scope="protobuf"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/rdoc.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/rdoc",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="rdoc"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/rhtml.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/rhtml",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="rhtml"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/rust.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/rust",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="rust"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/sass.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/sass",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="sass"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/scad.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/scad",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="scad"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/scala.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/scala",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="scala"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/scheme.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/scheme",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="scheme"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/scss.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/scss",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="scss"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/sh.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/sh",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='# Shebang. Executing bash via /usr/bin/env makes scripts more portable.\nsnippet #!\n #!/usr/bin/env bash\n \nsnippet if\n if [[ ${1:condition} ]]; then\n ${2:#statements}\n fi\nsnippet elif\n elif [[ ${1:condition} ]]; then\n ${2:#statements}\nsnippet for\n for (( ${2:i} = 0; $2 < ${1:count}; $2++ )); do\n ${3:#statements}\n done\nsnippet fori\n for ${1:needle} in ${2:haystack} ; do\n ${3:#statements}\n done\nsnippet wh\n while [[ ${1:condition} ]]; do\n ${2:#statements}\n done\nsnippet until\n until [[ ${1:condition} ]]; do\n ${2:#statements}\n done\nsnippet case\n case ${1:word} in\n ${2:pattern})\n ${3};;\n esac\nsnippet go \n while getopts \'${1:o}\' ${2:opts} \n do \n case $$2 in\n ${3:o0})\n ${4:#staments};;\n esac\n done\n# Set SCRIPT_DIR variable to directory script is located.\nsnippet sdir\n SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"\n# getopt\nsnippet getopt\n __ScriptVersion="${1:version}"\n\n #=== FUNCTION ================================================================\n # NAME: usage\n # DESCRIPTION: Display usage information.\n #===============================================================================\n function usage ()\n {\n cat <<- EOT\n\n Usage : $${0:0} [options] [--] \n\n Options: \n -h|help Display this message\n -v|version Display script version\n\n EOT\n } # ---------- end of function usage ----------\n\n #-----------------------------------------------------------------------\n # Handle command line arguments\n #-----------------------------------------------------------------------\n\n while getopts ":hv" opt\n do\n case $opt in\n\n h|help ) usage; exit 0 ;;\n\n v|version ) echo "$${0:0} -- Version $__ScriptVersion"; exit 0 ;;\n\n \\? ) echo -e "\\n Option does not exist : $OPTARG\\n"\n usage; exit 1 ;;\n\n esac # --- end of case ---\n done\n shift $(($OPTIND-1))\n\n',t.scope="sh"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/sjs.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/sjs",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="sjs"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/smarty.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/smarty",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="smarty"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/snippets.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/snippets",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="# snippets for making snippets :)\nsnippet snip\n snippet ${1:trigger}\n ${2}\nsnippet msnip\n snippet ${1:trigger} ${2:description}\n ${3}\nsnippet v\n {VISUAL}\n",t.scope="snippets"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/soy_template.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/soy_template",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="soy_template"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/space.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/space",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="space"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/sql.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/sql",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet tbl\n create table ${1:table} (\n ${2:columns}\n );\nsnippet col\n ${1:name} ${2:type} ${3:default ''} ${4:not null}\nsnippet ccol\n ${1:name} varchar2(${2:size}) ${3:default ''} ${4:not null}\nsnippet ncol\n ${1:name} number ${3:default 0} ${4:not null}\nsnippet dcol\n ${1:name} date ${3:default sysdate} ${4:not null}\nsnippet ind\n create index ${3:$1_$2} on ${1:table}(${2:column});\nsnippet uind\n create unique index ${1:name} on ${2:table}(${3:column});\nsnippet tblcom\n comment on table ${1:table} is '${2:comment}';\nsnippet colcom\n comment on column ${1:table}.${2:column} is '${3:comment}';\nsnippet addcol\n alter table ${1:table} add (${2:column} ${3:type});\nsnippet seq\n create sequence ${1:name} start with ${2:1} increment by ${3:1} minvalue ${4:1};\nsnippet s*\n select * from ${1:table}\n",t.scope="sql"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/stylus.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/stylus",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="stylus"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/svg.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/svg",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="svg"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/tcl.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/tcl",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="# #!/usr/bin/env tclsh\nsnippet #!\n #!/usr/bin/env tclsh\n \n# Process\nsnippet pro\n proc ${1:function_name} {${2:args}} {\n ${3:#body ...}\n }\n#xif\nsnippet xif\n ${1:expr}? ${2:true} : ${3:false}\n# Conditional\nsnippet if\n if {${1}} {\n ${2:# body...}\n }\n# Conditional if..else\nsnippet ife\n if {${1}} {\n ${2:# body...}\n } else {\n ${3:# else...}\n }\n# Conditional if..elsif..else\nsnippet ifee\n if {${1}} {\n ${2:# body...}\n } elseif {${3}} {\n ${4:# elsif...}\n } else {\n ${5:# else...}\n }\n# If catch then\nsnippet ifc\n if { [catch {${1:#do something...}} ${2:err}] } {\n ${3:# handle failure...}\n }\n# Catch\nsnippet catch\n catch {${1}} ${2:err} ${3:options}\n# While Loop\nsnippet wh\n while {${1}} {\n ${2:# body...}\n }\n# For Loop\nsnippet for\n for {set ${2:var} 0} {$$2 < ${1:count}} {${3:incr} $2} {\n ${4:# body...}\n }\n# Foreach Loop\nsnippet fore\n foreach ${1:x} {${2:#list}} {\n ${3:# body...}\n }\n# after ms script...\nsnippet af\n after ${1:ms} ${2:#do something}\n# after cancel id\nsnippet afc\n after cancel ${1:id or script}\n# after idle\nsnippet afi\n after idle ${1:script}\n# after info id\nsnippet afin\n after info ${1:id}\n# Expr\nsnippet exp\n expr {${1:#expression here}}\n# Switch\nsnippet sw\n switch ${1:var} {\n ${3:pattern 1} {\n ${4:#do something}\n }\n default {\n ${2:#do something}\n }\n }\n# Case\nsnippet ca\n ${1:pattern} {\n ${2:#do something}\n }${3}\n# Namespace eval\nsnippet ns\n namespace eval ${1:path} {${2:#script...}}\n# Namespace current\nsnippet nsc\n namespace current\n",t.scope="tcl"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/text.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/text",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="text"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/textile.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/textile",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='# Jekyll post header\nsnippet header\n ---\n title: ${1:title}\n layout: post\n date: ${2:date} ${3:hour:minute:second} -05:00\n ---\n\n# Image\nsnippet img\n !${1:url}(${2:title}):${3:link}!\n\n# Table\nsnippet |\n |${1}|${2}\n\n# Link\nsnippet link\n "${1:link text}":${2:url}\n\n# Acronym\nsnippet (\n (${1:Expand acronym})${2}\n\n# Footnote\nsnippet fn\n [${1:ref number}] ${3}\n\n fn$1. ${2:footnote}\n \n',t.scope="textile"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/toml.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/toml",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="toml"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/twig.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/twig",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="twig"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/typescript.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/typescript",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="typescript"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/vbscript.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/vbscript",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="vbscript"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/velocity.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/velocity",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='# macro\nsnippet #macro\n #macro ( ${1:macroName} ${2:\\$var1, [\\$var2, ...]} )\n ${3:## macro code}\n #end\n# foreach\nsnippet #foreach\n #foreach ( ${1:\\$item} in ${2:\\$collection} )\n ${3:## foreach code}\n #end\n# if\nsnippet #if\n #if ( ${1:true} )\n ${0}\n #end\n# if ... else\nsnippet #ife\n #if ( ${1:true} )\n ${2}\n #else\n ${0}\n #end\n#import\nsnippet #import\n #import ( "${1:path/to/velocity/format}" )\n# set\nsnippet #set\n #set ( $${1:var} = ${0} )\n',t.scope="velocity",t.includeScopes=["html","javascript","css"]}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/verilog.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/verilog",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="verilog"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/vhdl.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/vhdl",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="vhdl"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/xml.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/xml",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="xml"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/xquery.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/xquery",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='snippet for\n for $${1:item} in ${2:expr}\nsnippet return\n return ${1:expr}\nsnippet import\n import module namespace ${1:ns} = "${2:http://www.example.com/}";\nsnippet some\n some $${1:varname} in ${2:expr} satisfies ${3:expr}\nsnippet every\n every $${1:varname} in ${2:expr} satisfies ${3:expr}\nsnippet if\n if(${1:true}) then ${2:expr} else ${3:true}\nsnippet switch\n switch(${1:"foo"})\n case ${2:"foo"}\n return ${3:true}\n default return ${4:false}\nsnippet try\n try { ${1:expr} } catch ${2:*} { ${3:expr} }\nsnippet tumbling\n for tumbling window $${1:varname} in ${2:expr}\n start at $${3:start} when ${4:expr}\n end at $${5:end} when ${6:expr}\n return ${7:expr}\nsnippet sliding\n for sliding window $${1:varname} in ${2:expr}\n start at $${3:start} when ${4:expr}\n end at $${5:end} when ${6:expr}\n return ${7:expr}\nsnippet let\n let $${1:varname} := ${2:expr}\nsnippet group\n group by $${1:varname} := ${2:expr}\nsnippet order\n order by ${1:expr} ${2:descending}\nsnippet stable\n stable order by ${1:expr}\nsnippet count\n count $${1:varname}\nsnippet ordered\n ordered { ${1:expr} }\nsnippet unordered\n unordered { ${1:expr} }\nsnippet treat \n treat as ${1:expr}\nsnippet castable\n castable as ${1:atomicType}\nsnippet cast\n cast as ${1:atomicType}\nsnippet typeswitch\n typeswitch(${1:expr})\n case ${2:type} return ${3:expr}\n default return ${4:expr}\nsnippet var\n declare variable $${1:varname} := ${2:expr};\nsnippet fn\n declare function ${1:ns}:${2:name}(){\n ${3:expr}\n };\nsnippet module\n module namespace ${1:ns} = "${2:http://www.example.com}";\n',t.scope="xquery"}) -------------------------------------------------------------------------------- /content/lib/ace/snippets/yaml.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/yaml",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="yaml"}) -------------------------------------------------------------------------------- /content/lib/ace/theme-clouds.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/theme/clouds",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-clouds",t.cssText='.ace-clouds .ace_gutter {background: #ebebeb;color: #333}.ace-clouds .ace_print-margin {width: 1px;background: #e8e8e8}.ace-clouds {background-color: #FFFFFF;color: #000000}.ace-clouds .ace_cursor {color: #000000}.ace-clouds .ace_marker-layer .ace_selection {background: #BDD5FC}.ace-clouds.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #FFFFFF;border-radius: 2px}.ace-clouds .ace_marker-layer .ace_step {background: rgb(255, 255, 0)}.ace-clouds .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #BFBFBF}.ace-clouds .ace_marker-layer .ace_active-line {background: #FFFBD1}.ace-clouds .ace_gutter-active-line {background-color : #dcdcdc}.ace-clouds .ace_marker-layer .ace_selected-word {border: 1px solid #BDD5FC}.ace-clouds .ace_invisible {color: #BFBFBF}.ace-clouds .ace_keyword,.ace-clouds .ace_meta,.ace-clouds .ace_support.ace_constant.ace_property-value {color: #AF956F}.ace-clouds .ace_keyword.ace_operator {color: #484848}.ace-clouds .ace_keyword.ace_other.ace_unit {color: #96DC5F}.ace-clouds .ace_constant.ace_language {color: #39946A}.ace-clouds .ace_constant.ace_numeric {color: #46A609}.ace-clouds .ace_constant.ace_character.ace_entity {color: #BF78CC}.ace-clouds .ace_invalid {background-color: #FF002A}.ace-clouds .ace_fold {background-color: #AF956F;border-color: #000000}.ace-clouds .ace_storage,.ace-clouds .ace_support.ace_class,.ace-clouds .ace_support.ace_function,.ace-clouds .ace_support.ace_other,.ace-clouds .ace_support.ace_type {color: #C52727}.ace-clouds .ace_string {color: #5D90CD}.ace-clouds .ace_comment {color: #BCC8BA}.ace-clouds .ace_entity.ace_name.ace_tag,.ace-clouds .ace_entity.ace_other.ace_attribute-name {color: #606060}.ace-clouds .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) -------------------------------------------------------------------------------- /content/lib/ace/theme-eclipse.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/theme/eclipse",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";t.isDark=!1,t.cssText='.ace-eclipse .ace_gutter {background: #ebebeb;border-right: 1px solid rgb(159, 159, 159);color: rgb(136, 136, 136);}.ace-eclipse .ace_print-margin {width: 1px;background: #ebebeb;}.ace-eclipse {background-color: #FFFFFF;color: black;}.ace-eclipse .ace_fold {background-color: rgb(60, 76, 114);}.ace-eclipse .ace_cursor {color: black;}.ace-eclipse .ace_storage,.ace-eclipse .ace_keyword,.ace-eclipse .ace_variable {color: rgb(127, 0, 85);}.ace-eclipse .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-eclipse .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-eclipse .ace_function {color: rgb(60, 76, 114);}.ace-eclipse .ace_string {color: rgb(42, 0, 255);}.ace-eclipse .ace_comment {color: rgb(113, 150, 130);}.ace-eclipse .ace_comment.ace_doc {color: rgb(63, 95, 191);}.ace-eclipse .ace_comment.ace_doc.ace_tag {color: rgb(127, 159, 191);}.ace-eclipse .ace_constant.ace_numeric {color: darkblue;}.ace-eclipse .ace_tag {color: rgb(25, 118, 116);}.ace-eclipse .ace_type {color: rgb(127, 0, 127);}.ace-eclipse .ace_xml-pe {color: rgb(104, 104, 91);}.ace-eclipse .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-eclipse .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-eclipse .ace_meta.ace_tag {color:rgb(25, 118, 116);}.ace-eclipse .ace_invisible {color: #ddd;}.ace-eclipse .ace_entity.ace_other.ace_attribute-name {color:rgb(127, 0, 127);}.ace-eclipse .ace_marker-layer .ace_step {background: rgb(255, 255, 0);}.ace-eclipse .ace_active-line {background: rgb(232, 242, 254);}.ace-eclipse .ace_gutter-active-line {background-color : #DADADA;}.ace-eclipse .ace_marker-layer .ace_selected-word {border: 1px solid rgb(181, 213, 255);}.ace-eclipse .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}',t.cssClass="ace-eclipse";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) -------------------------------------------------------------------------------- /content/lib/ace/theme-github.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/theme/github",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-github",t.cssText='.ace-github .ace_gutter {background: #e8e8e8;color: #AAA;}.ace-github {background: #fff;color: #000;}.ace-github .ace_keyword {font-weight: bold;}.ace-github .ace_string {color: #D14;}.ace-github .ace_variable.ace_class {color: teal;}.ace-github .ace_constant.ace_numeric {color: #099;}.ace-github .ace_constant.ace_buildin {color: #0086B3;}.ace-github .ace_support.ace_function {color: #0086B3;}.ace-github .ace_comment {color: #998;font-style: italic;}.ace-github .ace_variable.ace_language {color: #0086B3;}.ace-github .ace_paren {font-weight: bold;}.ace-github .ace_boolean {font-weight: bold;}.ace-github .ace_string.ace_regexp {color: #009926;font-weight: normal;}.ace-github .ace_variable.ace_instance {color: teal;}.ace-github .ace_constant.ace_language {font-weight: bold;}.ace-github .ace_cursor {color: black;}.ace-github .ace_marker-layer .ace_active-line {background: rgb(255, 255, 204);}.ace-github .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-github.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;border-radius: 2px;}.ace-github.ace_nobold .ace_line > span {font-weight: normal !important;}.ace-github .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-github .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-github .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-github .ace_gutter-active-line {background-color : rgba(0, 0, 0, 0.07);}.ace-github .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-github .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-github .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) -------------------------------------------------------------------------------- /content/lib/ace/theme-kuroir.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/theme/kuroir",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-kuroir",t.cssText=".ace-kuroir .ace_gutter {background: #e8e8e8;color: #333;}.ace-kuroir .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-kuroir {background-color: #E8E9E8;color: #363636;}.ace-kuroir .ace_cursor {color: #202020;}.ace-kuroir .ace_marker-layer .ace_selection {background: rgba(245, 170, 0, 0.57);}.ace-kuroir.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #E8E9E8;border-radius: 2px;}.ace-kuroir .ace_marker-layer .ace_step {background: rgb(198, 219, 174);}.ace-kuroir .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(0, 0, 0, 0.29);}.ace-kuroir .ace_marker-layer .ace_active-line {background: rgba(203, 220, 47, 0.22);}.ace-kuroir .ace_gutter-active-line {background-color: rgba(203, 220, 47, 0.22);}.ace-kuroir .ace_marker-layer .ace_selected-word {border: 1px solid rgba(245, 170, 0, 0.57);}.ace-kuroir .ace_fold {border-color: #363636;}.ace-kuroir .ace_constant{color:#CD6839;}.ace-kuroir .ace_constant.ace_numeric{color:#9A5925;}.ace-kuroir .ace_support{color:#104E8B;}.ace-kuroir .ace_support.ace_function{color:#005273;}.ace-kuroir .ace_support.ace_constant{color:#CF6A4C;}.ace-kuroir .ace_storage{color:#A52A2A;}.ace-kuroir .ace_invalid.ace_illegal{color:#FD1224;background-color:rgba(255, 6, 0, 0.15);}.ace-kuroir .ace_invalid.ace_deprecated{text-decoration:underline;font-style:italic;color:#FD1732;background-color:#E8E9E8;}.ace-kuroir .ace_string{color:#639300;}.ace-kuroir .ace_string.ace_regexp{color:#417E00;background-color:#C9D4BE;}.ace-kuroir .ace_comment{color:rgba(148, 148, 148, 0.91);background-color:rgba(220, 220, 220, 0.56);}.ace-kuroir .ace_variable{color:#009ACD;}.ace-kuroir .ace_meta.ace_tag{color:#005273;}.ace-kuroir .ace_markup.ace_heading{color:#B8012D;background-color:rgba(191, 97, 51, 0.051);}.ace-kuroir .ace_markup.ace_list{color:#8F5B26;}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) -------------------------------------------------------------------------------- /content/lib/ace/theme-xcode.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/theme/xcode",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-xcode",t.cssText=".ace-xcode .ace_gutter {background: #e8e8e8;color: #333}.ace-xcode .ace_print-margin {width: 1px;background: #e8e8e8}.ace-xcode {background-color: #FFFFFF;color: #000000}.ace-xcode .ace_cursor {color: #000000}.ace-xcode .ace_marker-layer .ace_selection {background: #B5D5FF}.ace-xcode.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #FFFFFF;border-radius: 2px}.ace-xcode .ace_marker-layer .ace_step {background: rgb(198, 219, 174)}.ace-xcode .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #BFBFBF}.ace-xcode .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.071)}.ace-xcode .ace_gutter-active-line {background-color: rgba(0, 0, 0, 0.071)}.ace-xcode .ace_marker-layer .ace_selected-word {border: 1px solid #B5D5FF}.ace-xcode .ace_constant.ace_language,.ace-xcode .ace_keyword,.ace-xcode .ace_meta,.ace-xcode .ace_variable.ace_language {color: #C800A4}.ace-xcode .ace_invisible {color: #BFBFBF}.ace-xcode .ace_constant.ace_character,.ace-xcode .ace_constant.ace_other {color: #275A5E}.ace-xcode .ace_constant.ace_numeric {color: #3A00DC}.ace-xcode .ace_entity.ace_other.ace_attribute-name,.ace-xcode .ace_support.ace_constant,.ace-xcode .ace_support.ace_function {color: #450084}.ace-xcode .ace_fold {background-color: #C800A4;border-color: #000000}.ace-xcode .ace_entity.ace_name.ace_tag,.ace-xcode .ace_support.ace_class,.ace-xcode .ace_support.ace_type {color: #790EAD}.ace-xcode .ace_storage {color: #C900A4}.ace-xcode .ace_string {color: #DF0002}.ace-xcode .ace_comment {color: #008E00}.ace-xcode .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) -------------------------------------------------------------------------------- /content/lib/angles.coffee: -------------------------------------------------------------------------------- 1 | window.showangle = (x, c) -> 2 | turtle.plan -> 3 | t = $ """ 4 | #{abs(x).toFixed(2).replace(/\.00$/, '')}°""" 5 | t.css position: 'absolute', display: 'inline-table' 6 | t.insertAfter turtle 7 | t.speed Infinity 8 | t.ht() 9 | t.moveto turtle 10 | t.turnto turtle.direction() 11 | t.css { turtleScale: turtle.css('turtleScale') } 12 | t.pen c 13 | t.fd 100 14 | t.bk 50 15 | t.rt 90 16 | t.speed turtle.css 'turtleSpeed' 17 | t.rt x, 50 18 | t.speed Infinity 19 | t.rt -x / 2, 50 20 | t.lt 90 21 | t.pen null 22 | t.fd 25 23 | t.turnto 0 24 | t.st() 25 | 26 | window.showarc = (a, r, c) -> 27 | turtle.plan -> 28 | t = hatch """ 29 | #{abs(a).toFixed(2).replace(/\.00$/, '')}°""" 30 | t.speed Infinity 31 | t.ht() 32 | t.moveto turtle 33 | t.turnto turtle.direction() 34 | t.css { turtleScale: turtle.css('turtleScale') } 35 | t.pen c 36 | t.rt 90 37 | t.fd r 38 | t.dot c 39 | t.lt 180 40 | t.speed turtle.css 'turtleSpeed' 41 | t.rt a 42 | t.speed Infinity 43 | t.fd r 44 | t.pen null 45 | t.bk r 46 | t.lt a / 2 47 | t.fd r / 2 48 | t.turnto 0 49 | t.st() 50 | 51 | window.rt = (x, r) -> 52 | if r 53 | showarc x, r, orange 54 | else 55 | showangle x, orange 56 | turtle.rt.apply turtle, arguments 57 | 58 | window.lt = (x, r) -> 59 | if r 60 | showarc -x, -r, orange 61 | else 62 | showangle -x, orange 63 | turtle.lt.apply turtle, arguments 64 | -------------------------------------------------------------------------------- /content/lib/angles.cs: -------------------------------------------------------------------------------- 1 | angles.coffee -------------------------------------------------------------------------------- /content/lib/bootstrap/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bootstrap", 3 | "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.", 4 | "keywords": [ 5 | "css", 6 | "js", 7 | "less", 8 | "mobile-first", 9 | "responsive", 10 | "front-end", 11 | "framework", 12 | "web" 13 | ], 14 | "homepage": "http://getbootstrap.com", 15 | "license": "MIT", 16 | "moduleType": "globals", 17 | "main": [ 18 | "less/bootstrap.less", 19 | "dist/js/bootstrap.js" 20 | ], 21 | "ignore": [ 22 | "/.*", 23 | "_config.yml", 24 | "CNAME", 25 | "composer.json", 26 | "CONTRIBUTING.md", 27 | "docs", 28 | "js/tests", 29 | "test-infra" 30 | ], 31 | "dependencies": { 32 | "jquery": ">= 1.9.1" 33 | }, 34 | "version": "3.3.5", 35 | "_release": "3.3.5", 36 | "_resolution": { 37 | "type": "version", 38 | "tag": "v3.3.5", 39 | "commit": "16b48259a62f576e52c903c476bd42b90ab22482" 40 | }, 41 | "_source": "git://github.com/twbs/bootstrap.git", 42 | "_target": "*", 43 | "_originalSource": "bootstrap" 44 | } -------------------------------------------------------------------------------- /content/lib/bootstrap/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2011-2015 Twitter, Inc 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /content/lib/bootstrap/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bootstrap", 3 | "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.", 4 | "keywords": [ 5 | "css", 6 | "js", 7 | "less", 8 | "mobile-first", 9 | "responsive", 10 | "front-end", 11 | "framework", 12 | "web" 13 | ], 14 | "homepage": "http://getbootstrap.com", 15 | "license": "MIT", 16 | "moduleType": "globals", 17 | "main": [ 18 | "less/bootstrap.less", 19 | "dist/js/bootstrap.js" 20 | ], 21 | "ignore": [ 22 | "/.*", 23 | "_config.yml", 24 | "CNAME", 25 | "composer.json", 26 | "CONTRIBUTING.md", 27 | "docs", 28 | "js/tests", 29 | "test-infra" 30 | ], 31 | "dependencies": { 32 | "jquery": ">= 1.9.1" 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /content/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /content/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /content/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /content/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /content/lib/bootstrap/dist/js/npm.js: -------------------------------------------------------------------------------- 1 | // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. 2 | require('../../js/transition.js') 3 | require('../../js/alert.js') 4 | require('../../js/button.js') 5 | require('../../js/carousel.js') 6 | require('../../js/collapse.js') 7 | require('../../js/dropdown.js') 8 | require('../../js/modal.js') 9 | require('../../js/tooltip.js') 10 | require('../../js/popover.js') 11 | require('../../js/scrollspy.js') 12 | require('../../js/tab.js') 13 | require('../../js/affix.js') -------------------------------------------------------------------------------- /content/lib/bootstrap/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/lib/bootstrap/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /content/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /content/lib/bootstrap/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/lib/bootstrap/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /content/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /content/lib/bootstrap/grunt/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends" : "../js/.jshintrc", 3 | "asi" : false, 4 | "browser" : false, 5 | "es3" : false, 6 | "node" : true 7 | } 8 | -------------------------------------------------------------------------------- /content/lib/bootstrap/grunt/bs-commonjs-generator.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Grunt task for the CommonJS module generation 3 | * http://getbootstrap.com 4 | * Copyright 2014-2015 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 6 | */ 7 | 8 | 'use strict'; 9 | 10 | var fs = require('fs'); 11 | var path = require('path'); 12 | 13 | var COMMONJS_BANNER = '// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.\n'; 14 | 15 | module.exports = function generateCommonJSModule(grunt, srcFiles, destFilepath) { 16 | var destDir = path.dirname(destFilepath); 17 | 18 | function srcPathToDestRequire(srcFilepath) { 19 | var requirePath = path.relative(destDir, srcFilepath).replace(/\\/g, '/'); 20 | return 'require(\'' + requirePath + '\')'; 21 | } 22 | 23 | var moduleOutputJs = COMMONJS_BANNER + srcFiles.map(srcPathToDestRequire).join('\n'); 24 | try { 25 | fs.writeFileSync(destFilepath, moduleOutputJs); 26 | } catch (err) { 27 | grunt.fail.warn(err); 28 | } 29 | grunt.log.writeln('File ' + destFilepath.cyan + ' created.'); 30 | }; 31 | -------------------------------------------------------------------------------- /content/lib/bootstrap/grunt/bs-glyphicons-data-generator.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Grunt task for Glyphicons data generation 3 | * http://getbootstrap.com 4 | * Copyright 2014-2015 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 6 | */ 7 | 8 | 'use strict'; 9 | 10 | var fs = require('fs'); 11 | 12 | module.exports = function generateGlyphiconsData(grunt) { 13 | // Pass encoding, utf8, so `readFileSync` will return a string instead of a 14 | // buffer 15 | var glyphiconsFile = fs.readFileSync('less/glyphicons.less', 'utf8'); 16 | var glyphiconsLines = glyphiconsFile.split('\n'); 17 | 18 | // Use any line that starts with ".glyphicon-" and capture the class name 19 | var iconClassName = /^\.(glyphicon-[a-zA-Z0-9-]+)/; 20 | var glyphiconsData = '# This file is generated via Grunt task. **Do not edit directly.**\n' + 21 | '# See the \'build-glyphicons-data\' task in Gruntfile.js.\n\n'; 22 | var glyphiconsYml = 'docs/_data/glyphicons.yml'; 23 | for (var i = 0, len = glyphiconsLines.length; i < len; i++) { 24 | var match = glyphiconsLines[i].match(iconClassName); 25 | 26 | if (match !== null) { 27 | glyphiconsData += '- ' + match[1] + '\n'; 28 | } 29 | } 30 | 31 | // Create the `_data` directory if it doesn't already exist 32 | if (!fs.existsSync('docs/_data')) { 33 | fs.mkdirSync('docs/_data'); 34 | } 35 | 36 | try { 37 | fs.writeFileSync(glyphiconsYml, glyphiconsData); 38 | } catch (err) { 39 | grunt.fail.warn(err); 40 | } 41 | grunt.log.writeln('File ' + glyphiconsYml.cyan + ' created.'); 42 | }; 43 | -------------------------------------------------------------------------------- /content/lib/bootstrap/grunt/bs-raw-files-generator.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Grunt task for generating raw-files.min.js for the Customizer 3 | * http://getbootstrap.com 4 | * Copyright 2014-2015 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 6 | */ 7 | 8 | 'use strict'; 9 | 10 | var fs = require('fs'); 11 | var btoa = require('btoa'); 12 | var glob = require('glob'); 13 | 14 | function getFiles(type) { 15 | var files = {}; 16 | var recursive = type === 'less'; 17 | var globExpr = recursive ? '/**/*' : '/*'; 18 | glob.sync(type + globExpr) 19 | .filter(function (path) { 20 | return type === 'fonts' ? true : new RegExp('\\.' + type + '$').test(path); 21 | }) 22 | .forEach(function (fullPath) { 23 | var relativePath = fullPath.replace(/^[^/]+\//, ''); 24 | files[relativePath] = type === 'fonts' ? btoa(fs.readFileSync(fullPath)) : fs.readFileSync(fullPath, 'utf8'); 25 | }); 26 | return 'var __' + type + ' = ' + JSON.stringify(files) + '\n'; 27 | } 28 | 29 | module.exports = function generateRawFilesJs(grunt, banner) { 30 | if (!banner) { 31 | banner = ''; 32 | } 33 | var dirs = ['js', 'less', 'fonts']; 34 | var files = banner + dirs.map(getFiles).reduce(function (combined, file) { 35 | return combined + file; 36 | }, ''); 37 | var rawFilesJs = 'docs/assets/js/raw-files.min.js'; 38 | try { 39 | fs.writeFileSync(rawFilesJs, files); 40 | } catch (err) { 41 | grunt.fail.warn(err); 42 | } 43 | grunt.log.writeln('File ' + rawFilesJs.cyan + ' created.'); 44 | }; 45 | -------------------------------------------------------------------------------- /content/lib/bootstrap/grunt/configBridge.json: -------------------------------------------------------------------------------- 1 | { 2 | "paths": { 3 | "customizerJs": [ 4 | "../assets/js/vendor/autoprefixer.js", 5 | "../assets/js/vendor/less.min.js", 6 | "../assets/js/vendor/jszip.min.js", 7 | "../assets/js/vendor/uglify.min.js", 8 | "../assets/js/vendor/Blob.js", 9 | "../assets/js/vendor/FileSaver.js", 10 | "../assets/js/raw-files.min.js", 11 | "../assets/js/src/customizer.js" 12 | ], 13 | "docsJs": [ 14 | "../assets/js/vendor/holder.min.js", 15 | "../assets/js/vendor/ZeroClipboard.min.js", 16 | "../assets/js/vendor/anchor.js", 17 | "../assets/js/src/application.js" 18 | ] 19 | }, 20 | "config": { 21 | "autoprefixerBrowsers": [ 22 | "Android 2.3", 23 | "Android >= 4", 24 | "Chrome >= 20", 25 | "Firefox >= 24", 26 | "Explorer >= 8", 27 | "iOS >= 6", 28 | "Opera >= 12", 29 | "Safari >= 6" 30 | ], 31 | "jqueryCheck": [ 32 | "if (typeof jQuery === 'undefined') {", 33 | " throw new Error('Bootstrap\\'s JavaScript requires jQuery')", 34 | "}\n" 35 | ], 36 | "jqueryVersionCheck": [ 37 | "+function ($) {", 38 | " 'use strict';", 39 | " var version = $.fn.jquery.split(' ')[0].split('.')", 40 | " if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) {", 41 | " throw new Error('Bootstrap\\'s JavaScript requires jQuery version 1.9.1 or higher')", 42 | " }", 43 | "}(jQuery);\n\n" 44 | ] 45 | } 46 | } -------------------------------------------------------------------------------- /content/lib/bootstrap/grunt/sauce_browsers.yml: -------------------------------------------------------------------------------- 1 | [ 2 | # Docs: https://saucelabs.com/docs/platforms/webdriver 3 | 4 | { 5 | browserName: "safari", 6 | platform: "OS X 10.10" 7 | }, 8 | { 9 | browserName: "chrome", 10 | platform: "OS X 10.10" 11 | }, 12 | { 13 | browserName: "firefox", 14 | platform: "OS X 10.10" 15 | }, 16 | 17 | # Mac Opera not currently supported by Sauce Labs 18 | 19 | { 20 | browserName: "internet explorer", 21 | version: "11", 22 | platform: "Windows 8.1" 23 | }, 24 | { 25 | browserName: "internet explorer", 26 | version: "10", 27 | platform: "Windows 8" 28 | }, 29 | { 30 | browserName: "internet explorer", 31 | version: "9", 32 | platform: "Windows 7" 33 | }, 34 | { 35 | browserName: "internet explorer", 36 | version: "8", 37 | platform: "Windows 7" 38 | }, 39 | 40 | # { # Unofficial 41 | # browserName: "internet explorer", 42 | # version: "7", 43 | # platform: "Windows XP" 44 | # }, 45 | 46 | { 47 | browserName: "chrome", 48 | platform: "Windows 8.1" 49 | }, 50 | { 51 | browserName: "firefox", 52 | platform: "Windows 8.1" 53 | }, 54 | 55 | # Win Opera 15+ not currently supported by Sauce Labs 56 | 57 | { 58 | browserName: "iphone", 59 | platform: "OS X 10.10", 60 | version: "8.2" 61 | }, 62 | 63 | # iOS Chrome not currently supported by Sauce Labs 64 | 65 | # Linux (unofficial) 66 | { 67 | browserName: "chrome", 68 | platform: "Linux" 69 | }, 70 | { 71 | browserName: "firefox", 72 | platform: "Linux" 73 | } 74 | 75 | # Android Chrome not currently supported by Sauce Labs 76 | 77 | # { # Android Browser (super-unofficial) 78 | # browserName: "android", 79 | # version: "4.0", 80 | # platform: "Linux" 81 | # } 82 | ] 83 | -------------------------------------------------------------------------------- /content/lib/bootstrap/js/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "asi" : true, 3 | "browser" : true, 4 | "eqeqeq" : false, 5 | "eqnull" : true, 6 | "es3" : true, 7 | "expr" : true, 8 | "jquery" : true, 9 | "latedef" : true, 10 | "laxbreak" : true, 11 | "nonbsp" : true, 12 | "strict" : true, 13 | "undef" : true, 14 | "unused" : true 15 | } 16 | -------------------------------------------------------------------------------- /content/lib/bootstrap/js/transition.js: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | * Bootstrap: transition.js v3.3.5 3 | * http://getbootstrap.com/javascript/#transitions 4 | * ======================================================================== 5 | * Copyright 2011-2015 Twitter, Inc. 6 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 7 | * ======================================================================== */ 8 | 9 | 10 | +function ($) { 11 | 'use strict'; 12 | 13 | // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) 14 | // ============================================================ 15 | 16 | function transitionEnd() { 17 | var el = document.createElement('bootstrap') 18 | 19 | var transEndEventNames = { 20 | WebkitTransition : 'webkitTransitionEnd', 21 | MozTransition : 'transitionend', 22 | OTransition : 'oTransitionEnd otransitionend', 23 | transition : 'transitionend' 24 | } 25 | 26 | for (var name in transEndEventNames) { 27 | if (el.style[name] !== undefined) { 28 | return { end: transEndEventNames[name] } 29 | } 30 | } 31 | 32 | return false // explicit for ie8 ( ._.) 33 | } 34 | 35 | // http://blog.alexmaccaw.com/css-transitions 36 | $.fn.emulateTransitionEnd = function (duration) { 37 | var called = false 38 | var $el = this 39 | $(this).one('bsTransitionEnd', function () { called = true }) 40 | var callback = function () { if (!called) $($el).trigger($.support.transition.end) } 41 | setTimeout(callback, duration) 42 | return this 43 | } 44 | 45 | $(function () { 46 | $.support.transition = transitionEnd() 47 | 48 | if (!$.support.transition) return 49 | 50 | $.event.special.bsTransitionEnd = { 51 | bindType: $.support.transition.end, 52 | delegateType: $.support.transition.end, 53 | handle: function (e) { 54 | if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) 55 | } 56 | } 57 | }) 58 | 59 | }(jQuery); 60 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/.csslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "adjoining-classes": false, 3 | "box-sizing": false, 4 | "box-model": false, 5 | "compatible-vendor-prefixes": false, 6 | "floats": false, 7 | "font-sizes": false, 8 | "gradients": false, 9 | "important": false, 10 | "known-properties": false, 11 | "outline-none": false, 12 | "qualified-headings": false, 13 | "regex-selectors": false, 14 | "shorthand": false, 15 | "text-indent": false, 16 | "unique-headings": false, 17 | "universal-selector": false, 18 | "unqualified-attributes": false 19 | } 20 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/alerts.less: -------------------------------------------------------------------------------- 1 | // 2 | // Alerts 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base styles 7 | // ------------------------- 8 | 9 | .alert { 10 | padding: @alert-padding; 11 | margin-bottom: @line-height-computed; 12 | border: 1px solid transparent; 13 | border-radius: @alert-border-radius; 14 | 15 | // Headings for larger alerts 16 | h4 { 17 | margin-top: 0; 18 | // Specified for the h4 to prevent conflicts of changing @headings-color 19 | color: inherit; 20 | } 21 | 22 | // Provide class for links that match alerts 23 | .alert-link { 24 | font-weight: @alert-link-font-weight; 25 | } 26 | 27 | // Improve alignment and spacing of inner content 28 | > p, 29 | > ul { 30 | margin-bottom: 0; 31 | } 32 | 33 | > p + p { 34 | margin-top: 5px; 35 | } 36 | } 37 | 38 | // Dismissible alerts 39 | // 40 | // Expand the right padding and account for the close button's positioning. 41 | 42 | .alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0. 43 | .alert-dismissible { 44 | padding-right: (@alert-padding + 20); 45 | 46 | // Adjust close link position 47 | .close { 48 | position: relative; 49 | top: -2px; 50 | right: -21px; 51 | color: inherit; 52 | } 53 | } 54 | 55 | // Alternate styles 56 | // 57 | // Generate contextual modifier classes for colorizing the alert. 58 | 59 | .alert-success { 60 | .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text); 61 | } 62 | 63 | .alert-info { 64 | .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text); 65 | } 66 | 67 | .alert-warning { 68 | .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text); 69 | } 70 | 71 | .alert-danger { 72 | .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text); 73 | } 74 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/badges.less: -------------------------------------------------------------------------------- 1 | // 2 | // Badges 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base class 7 | .badge { 8 | display: inline-block; 9 | min-width: 10px; 10 | padding: 3px 7px; 11 | font-size: @font-size-small; 12 | font-weight: @badge-font-weight; 13 | color: @badge-color; 14 | line-height: @badge-line-height; 15 | vertical-align: middle; 16 | white-space: nowrap; 17 | text-align: center; 18 | background-color: @badge-bg; 19 | border-radius: @badge-border-radius; 20 | 21 | // Empty badges collapse automatically (not available in IE8) 22 | &:empty { 23 | display: none; 24 | } 25 | 26 | // Quick fix for badges in buttons 27 | .btn & { 28 | position: relative; 29 | top: -1px; 30 | } 31 | 32 | .btn-xs &, 33 | .btn-group-xs > .btn & { 34 | top: 0; 35 | padding: 1px 5px; 36 | } 37 | 38 | // Hover state, but only for links 39 | a& { 40 | &:hover, 41 | &:focus { 42 | color: @badge-link-hover-color; 43 | text-decoration: none; 44 | cursor: pointer; 45 | } 46 | } 47 | 48 | // Account for badges in navs 49 | .list-group-item.active > &, 50 | .nav-pills > .active > a > & { 51 | color: @badge-active-color; 52 | background-color: @badge-active-bg; 53 | } 54 | 55 | .list-group-item > & { 56 | float: right; 57 | } 58 | 59 | .list-group-item > & + & { 60 | margin-right: 5px; 61 | } 62 | 63 | .nav-pills > li > a > & { 64 | margin-left: 3px; 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/bootstrap.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v3.3.5 (http://getbootstrap.com) 3 | * Copyright 2011-2015 Twitter, Inc. 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | */ 6 | 7 | // Core variables and mixins 8 | @import "variables.less"; 9 | @import "mixins.less"; 10 | 11 | // Reset and dependencies 12 | @import "normalize.less"; 13 | @import "print.less"; 14 | @import "glyphicons.less"; 15 | 16 | // Core CSS 17 | @import "scaffolding.less"; 18 | @import "type.less"; 19 | @import "code.less"; 20 | @import "grid.less"; 21 | @import "tables.less"; 22 | @import "forms.less"; 23 | @import "buttons.less"; 24 | 25 | // Components 26 | @import "component-animations.less"; 27 | @import "dropdowns.less"; 28 | @import "button-groups.less"; 29 | @import "input-groups.less"; 30 | @import "navs.less"; 31 | @import "navbar.less"; 32 | @import "breadcrumbs.less"; 33 | @import "pagination.less"; 34 | @import "pager.less"; 35 | @import "labels.less"; 36 | @import "badges.less"; 37 | @import "jumbotron.less"; 38 | @import "thumbnails.less"; 39 | @import "alerts.less"; 40 | @import "progress-bars.less"; 41 | @import "media.less"; 42 | @import "list-group.less"; 43 | @import "panels.less"; 44 | @import "responsive-embed.less"; 45 | @import "wells.less"; 46 | @import "close.less"; 47 | 48 | // Components w/ JavaScript 49 | @import "modals.less"; 50 | @import "tooltip.less"; 51 | @import "popovers.less"; 52 | @import "carousel.less"; 53 | 54 | // Utility classes 55 | @import "utilities.less"; 56 | @import "responsive-utilities.less"; 57 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/breadcrumbs.less: -------------------------------------------------------------------------------- 1 | // 2 | // Breadcrumbs 3 | // -------------------------------------------------- 4 | 5 | 6 | .breadcrumb { 7 | padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal; 8 | margin-bottom: @line-height-computed; 9 | list-style: none; 10 | background-color: @breadcrumb-bg; 11 | border-radius: @border-radius-base; 12 | 13 | > li { 14 | display: inline-block; 15 | 16 | + li:before { 17 | content: "@{breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space 18 | padding: 0 5px; 19 | color: @breadcrumb-color; 20 | } 21 | } 22 | 23 | > .active { 24 | color: @breadcrumb-active-color; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/close.less: -------------------------------------------------------------------------------- 1 | // 2 | // Close icons 3 | // -------------------------------------------------- 4 | 5 | 6 | .close { 7 | float: right; 8 | font-size: (@font-size-base * 1.5); 9 | font-weight: @close-font-weight; 10 | line-height: 1; 11 | color: @close-color; 12 | text-shadow: @close-text-shadow; 13 | .opacity(.2); 14 | 15 | &:hover, 16 | &:focus { 17 | color: @close-color; 18 | text-decoration: none; 19 | cursor: pointer; 20 | .opacity(.5); 21 | } 22 | 23 | // Additional properties for button version 24 | // iOS requires the button element instead of an anchor tag. 25 | // If you want the anchor version, it requires `href="#"`. 26 | // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile 27 | button& { 28 | padding: 0; 29 | cursor: pointer; 30 | background: transparent; 31 | border: 0; 32 | -webkit-appearance: none; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/code.less: -------------------------------------------------------------------------------- 1 | // 2 | // Code (inline and block) 3 | // -------------------------------------------------- 4 | 5 | 6 | // Inline and block code styles 7 | code, 8 | kbd, 9 | pre, 10 | samp { 11 | font-family: @font-family-monospace; 12 | } 13 | 14 | // Inline code 15 | code { 16 | padding: 2px 4px; 17 | font-size: 90%; 18 | color: @code-color; 19 | background-color: @code-bg; 20 | border-radius: @border-radius-base; 21 | } 22 | 23 | // User input typically entered via keyboard 24 | kbd { 25 | padding: 2px 4px; 26 | font-size: 90%; 27 | color: @kbd-color; 28 | background-color: @kbd-bg; 29 | border-radius: @border-radius-small; 30 | box-shadow: inset 0 -1px 0 rgba(0,0,0,.25); 31 | 32 | kbd { 33 | padding: 0; 34 | font-size: 100%; 35 | font-weight: bold; 36 | box-shadow: none; 37 | } 38 | } 39 | 40 | // Blocks of code 41 | pre { 42 | display: block; 43 | padding: ((@line-height-computed - 1) / 2); 44 | margin: 0 0 (@line-height-computed / 2); 45 | font-size: (@font-size-base - 1); // 14px to 13px 46 | line-height: @line-height-base; 47 | word-break: break-all; 48 | word-wrap: break-word; 49 | color: @pre-color; 50 | background-color: @pre-bg; 51 | border: 1px solid @pre-border-color; 52 | border-radius: @border-radius-base; 53 | 54 | // Account for some code outputs that place code tags in pre tags 55 | code { 56 | padding: 0; 57 | font-size: inherit; 58 | color: inherit; 59 | white-space: pre-wrap; 60 | background-color: transparent; 61 | border-radius: 0; 62 | } 63 | } 64 | 65 | // Enable scrollable blocks of code 66 | .pre-scrollable { 67 | max-height: @pre-scrollable-max-height; 68 | overflow-y: scroll; 69 | } 70 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/component-animations.less: -------------------------------------------------------------------------------- 1 | // 2 | // Component animations 3 | // -------------------------------------------------- 4 | 5 | // Heads up! 6 | // 7 | // We don't use the `.opacity()` mixin here since it causes a bug with text 8 | // fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552. 9 | 10 | .fade { 11 | opacity: 0; 12 | .transition(opacity .15s linear); 13 | &.in { 14 | opacity: 1; 15 | } 16 | } 17 | 18 | .collapse { 19 | display: none; 20 | 21 | &.in { display: block; } 22 | tr&.in { display: table-row; } 23 | tbody&.in { display: table-row-group; } 24 | } 25 | 26 | .collapsing { 27 | position: relative; 28 | height: 0; 29 | overflow: hidden; 30 | .transition-property(~"height, visibility"); 31 | .transition-duration(.35s); 32 | .transition-timing-function(ease); 33 | } 34 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/grid.less: -------------------------------------------------------------------------------- 1 | // 2 | // Grid system 3 | // -------------------------------------------------- 4 | 5 | 6 | // Container widths 7 | // 8 | // Set the container width, and override it for fixed navbars in media queries. 9 | 10 | .container { 11 | .container-fixed(); 12 | 13 | @media (min-width: @screen-sm-min) { 14 | width: @container-sm; 15 | } 16 | @media (min-width: @screen-md-min) { 17 | width: @container-md; 18 | } 19 | @media (min-width: @screen-lg-min) { 20 | width: @container-lg; 21 | } 22 | } 23 | 24 | 25 | // Fluid container 26 | // 27 | // Utilizes the mixin meant for fixed width containers, but without any defined 28 | // width for fluid, full width layouts. 29 | 30 | .container-fluid { 31 | .container-fixed(); 32 | } 33 | 34 | 35 | // Row 36 | // 37 | // Rows contain and clear the floats of your columns. 38 | 39 | .row { 40 | .make-row(); 41 | } 42 | 43 | 44 | // Columns 45 | // 46 | // Common styles for small and large grid columns 47 | 48 | .make-grid-columns(); 49 | 50 | 51 | // Extra small grid 52 | // 53 | // Columns, offsets, pushes, and pulls for extra small devices like 54 | // smartphones. 55 | 56 | .make-grid(xs); 57 | 58 | 59 | // Small grid 60 | // 61 | // Columns, offsets, pushes, and pulls for the small device range, from phones 62 | // to tablets. 63 | 64 | @media (min-width: @screen-sm-min) { 65 | .make-grid(sm); 66 | } 67 | 68 | 69 | // Medium grid 70 | // 71 | // Columns, offsets, pushes, and pulls for the desktop device range. 72 | 73 | @media (min-width: @screen-md-min) { 74 | .make-grid(md); 75 | } 76 | 77 | 78 | // Large grid 79 | // 80 | // Columns, offsets, pushes, and pulls for the large desktop device range. 81 | 82 | @media (min-width: @screen-lg-min) { 83 | .make-grid(lg); 84 | } 85 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/jumbotron.less: -------------------------------------------------------------------------------- 1 | // 2 | // Jumbotron 3 | // -------------------------------------------------- 4 | 5 | 6 | .jumbotron { 7 | padding-top: @jumbotron-padding; 8 | padding-bottom: @jumbotron-padding; 9 | margin-bottom: @jumbotron-padding; 10 | color: @jumbotron-color; 11 | background-color: @jumbotron-bg; 12 | 13 | h1, 14 | .h1 { 15 | color: @jumbotron-heading-color; 16 | } 17 | 18 | p { 19 | margin-bottom: (@jumbotron-padding / 2); 20 | font-size: @jumbotron-font-size; 21 | font-weight: 200; 22 | } 23 | 24 | > hr { 25 | border-top-color: darken(@jumbotron-bg, 10%); 26 | } 27 | 28 | .container &, 29 | .container-fluid & { 30 | border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container 31 | } 32 | 33 | .container { 34 | max-width: 100%; 35 | } 36 | 37 | @media screen and (min-width: @screen-sm-min) { 38 | padding-top: (@jumbotron-padding * 1.6); 39 | padding-bottom: (@jumbotron-padding * 1.6); 40 | 41 | .container &, 42 | .container-fluid & { 43 | padding-left: (@jumbotron-padding * 2); 44 | padding-right: (@jumbotron-padding * 2); 45 | } 46 | 47 | h1, 48 | .h1 { 49 | font-size: @jumbotron-heading-font-size; 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/labels.less: -------------------------------------------------------------------------------- 1 | // 2 | // Labels 3 | // -------------------------------------------------- 4 | 5 | .label { 6 | display: inline; 7 | padding: .2em .6em .3em; 8 | font-size: 75%; 9 | font-weight: bold; 10 | line-height: 1; 11 | color: @label-color; 12 | text-align: center; 13 | white-space: nowrap; 14 | vertical-align: baseline; 15 | border-radius: .25em; 16 | 17 | // Add hover effects, but only for links 18 | a& { 19 | &:hover, 20 | &:focus { 21 | color: @label-link-hover-color; 22 | text-decoration: none; 23 | cursor: pointer; 24 | } 25 | } 26 | 27 | // Empty labels collapse automatically (not available in IE8) 28 | &:empty { 29 | display: none; 30 | } 31 | 32 | // Quick fix for labels in buttons 33 | .btn & { 34 | position: relative; 35 | top: -1px; 36 | } 37 | } 38 | 39 | // Colors 40 | // Contextual variations (linked labels get darker on :hover) 41 | 42 | .label-default { 43 | .label-variant(@label-default-bg); 44 | } 45 | 46 | .label-primary { 47 | .label-variant(@label-primary-bg); 48 | } 49 | 50 | .label-success { 51 | .label-variant(@label-success-bg); 52 | } 53 | 54 | .label-info { 55 | .label-variant(@label-info-bg); 56 | } 57 | 58 | .label-warning { 59 | .label-variant(@label-warning-bg); 60 | } 61 | 62 | .label-danger { 63 | .label-variant(@label-danger-bg); 64 | } 65 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/media.less: -------------------------------------------------------------------------------- 1 | .media { 2 | // Proper spacing between instances of .media 3 | margin-top: 15px; 4 | 5 | &:first-child { 6 | margin-top: 0; 7 | } 8 | } 9 | 10 | .media, 11 | .media-body { 12 | zoom: 1; 13 | overflow: hidden; 14 | } 15 | 16 | .media-body { 17 | width: 10000px; 18 | } 19 | 20 | .media-object { 21 | display: block; 22 | 23 | // Fix collapse in webkit from max-width: 100% and display: table-cell. 24 | &.img-thumbnail { 25 | max-width: none; 26 | } 27 | } 28 | 29 | .media-right, 30 | .media > .pull-right { 31 | padding-left: 10px; 32 | } 33 | 34 | .media-left, 35 | .media > .pull-left { 36 | padding-right: 10px; 37 | } 38 | 39 | .media-left, 40 | .media-right, 41 | .media-body { 42 | display: table-cell; 43 | vertical-align: top; 44 | } 45 | 46 | .media-middle { 47 | vertical-align: middle; 48 | } 49 | 50 | .media-bottom { 51 | vertical-align: bottom; 52 | } 53 | 54 | // Reset margins on headings for tighter default spacing 55 | .media-heading { 56 | margin-top: 0; 57 | margin-bottom: 5px; 58 | } 59 | 60 | // Media list variation 61 | // 62 | // Undo default ul/ol styles 63 | .media-list { 64 | padding-left: 0; 65 | list-style: none; 66 | } 67 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/mixins.less: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------------------------------- 3 | 4 | // Utilities 5 | @import "mixins/hide-text.less"; 6 | @import "mixins/opacity.less"; 7 | @import "mixins/image.less"; 8 | @import "mixins/labels.less"; 9 | @import "mixins/reset-filter.less"; 10 | @import "mixins/resize.less"; 11 | @import "mixins/responsive-visibility.less"; 12 | @import "mixins/size.less"; 13 | @import "mixins/tab-focus.less"; 14 | @import "mixins/reset-text.less"; 15 | @import "mixins/text-emphasis.less"; 16 | @import "mixins/text-overflow.less"; 17 | @import "mixins/vendor-prefixes.less"; 18 | 19 | // Components 20 | @import "mixins/alerts.less"; 21 | @import "mixins/buttons.less"; 22 | @import "mixins/panels.less"; 23 | @import "mixins/pagination.less"; 24 | @import "mixins/list-group.less"; 25 | @import "mixins/nav-divider.less"; 26 | @import "mixins/forms.less"; 27 | @import "mixins/progress-bar.less"; 28 | @import "mixins/table-row.less"; 29 | 30 | // Skins 31 | @import "mixins/background-variant.less"; 32 | @import "mixins/border-radius.less"; 33 | @import "mixins/gradients.less"; 34 | 35 | // Layout 36 | @import "mixins/clearfix.less"; 37 | @import "mixins/center-block.less"; 38 | @import "mixins/nav-vertical-align.less"; 39 | @import "mixins/grid-framework.less"; 40 | @import "mixins/grid.less"; 41 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/mixins/alerts.less: -------------------------------------------------------------------------------- 1 | // Alerts 2 | 3 | .alert-variant(@background; @border; @text-color) { 4 | background-color: @background; 5 | border-color: @border; 6 | color: @text-color; 7 | 8 | hr { 9 | border-top-color: darken(@border, 5%); 10 | } 11 | .alert-link { 12 | color: darken(@text-color, 10%); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/mixins/background-variant.less: -------------------------------------------------------------------------------- 1 | // Contextual backgrounds 2 | 3 | .bg-variant(@color) { 4 | background-color: @color; 5 | a&:hover, 6 | a&:focus { 7 | background-color: darken(@color, 10%); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/mixins/border-radius.less: -------------------------------------------------------------------------------- 1 | // Single side border-radius 2 | 3 | .border-top-radius(@radius) { 4 | border-top-right-radius: @radius; 5 | border-top-left-radius: @radius; 6 | } 7 | .border-right-radius(@radius) { 8 | border-bottom-right-radius: @radius; 9 | border-top-right-radius: @radius; 10 | } 11 | .border-bottom-radius(@radius) { 12 | border-bottom-right-radius: @radius; 13 | border-bottom-left-radius: @radius; 14 | } 15 | .border-left-radius(@radius) { 16 | border-bottom-left-radius: @radius; 17 | border-top-left-radius: @radius; 18 | } 19 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/mixins/buttons.less: -------------------------------------------------------------------------------- 1 | // Button variants 2 | // 3 | // Easily pump out default styles, as well as :hover, :focus, :active, 4 | // and disabled options for all buttons 5 | 6 | .button-variant(@color; @background; @border) { 7 | color: @color; 8 | background-color: @background; 9 | border-color: @border; 10 | 11 | &:focus, 12 | &.focus { 13 | color: @color; 14 | background-color: darken(@background, 10%); 15 | border-color: darken(@border, 25%); 16 | } 17 | &:hover { 18 | color: @color; 19 | background-color: darken(@background, 10%); 20 | border-color: darken(@border, 12%); 21 | } 22 | &:active, 23 | &.active, 24 | .open > .dropdown-toggle& { 25 | color: @color; 26 | background-color: darken(@background, 10%); 27 | border-color: darken(@border, 12%); 28 | 29 | &:hover, 30 | &:focus, 31 | &.focus { 32 | color: @color; 33 | background-color: darken(@background, 17%); 34 | border-color: darken(@border, 25%); 35 | } 36 | } 37 | &:active, 38 | &.active, 39 | .open > .dropdown-toggle& { 40 | background-image: none; 41 | } 42 | &.disabled, 43 | &[disabled], 44 | fieldset[disabled] & { 45 | &, 46 | &:hover, 47 | &:focus, 48 | &.focus, 49 | &:active, 50 | &.active { 51 | background-color: @background; 52 | border-color: @border; 53 | } 54 | } 55 | 56 | .badge { 57 | color: @background; 58 | background-color: @color; 59 | } 60 | } 61 | 62 | // Button sizes 63 | .button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) { 64 | padding: @padding-vertical @padding-horizontal; 65 | font-size: @font-size; 66 | line-height: @line-height; 67 | border-radius: @border-radius; 68 | } 69 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/mixins/center-block.less: -------------------------------------------------------------------------------- 1 | // Center-align a block level element 2 | 3 | .center-block() { 4 | display: block; 5 | margin-left: auto; 6 | margin-right: auto; 7 | } 8 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/mixins/clearfix.less: -------------------------------------------------------------------------------- 1 | // Clearfix 2 | // 3 | // For modern browsers 4 | // 1. The space content is one way to avoid an Opera bug when the 5 | // contenteditable attribute is included anywhere else in the document. 6 | // Otherwise it causes space to appear at the top and bottom of elements 7 | // that are clearfixed. 8 | // 2. The use of `table` rather than `block` is only necessary if using 9 | // `:before` to contain the top-margins of child elements. 10 | // 11 | // Source: http://nicolasgallagher.com/micro-clearfix-hack/ 12 | 13 | .clearfix() { 14 | &:before, 15 | &:after { 16 | content: " "; // 1 17 | display: table; // 2 18 | } 19 | &:after { 20 | clear: both; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/mixins/hide-text.less: -------------------------------------------------------------------------------- 1 | // CSS image replacement 2 | // 3 | // Heads up! v3 launched with only `.hide-text()`, but per our pattern for 4 | // mixins being reused as classes with the same name, this doesn't hold up. As 5 | // of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`. 6 | // 7 | // Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 8 | 9 | // Deprecated as of v3.0.1 (will be removed in v4) 10 | .hide-text() { 11 | font: ~"0/0" a; 12 | color: transparent; 13 | text-shadow: none; 14 | background-color: transparent; 15 | border: 0; 16 | } 17 | 18 | // New mixin to use as of v3.0.1 19 | .text-hide() { 20 | .hide-text(); 21 | } 22 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/mixins/image.less: -------------------------------------------------------------------------------- 1 | // Image Mixins 2 | // - Responsive image 3 | // - Retina image 4 | 5 | 6 | // Responsive image 7 | // 8 | // Keep images from scaling beyond the width of their parents. 9 | .img-responsive(@display: block) { 10 | display: @display; 11 | max-width: 100%; // Part 1: Set a maximum relative to the parent 12 | height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching 13 | } 14 | 15 | 16 | // Retina image 17 | // 18 | // Short retina mixin for setting background-image and -size. Note that the 19 | // spelling of `min--moz-device-pixel-ratio` is intentional. 20 | .img-retina(@file-1x; @file-2x; @width-1x; @height-1x) { 21 | background-image: url("@{file-1x}"); 22 | 23 | @media 24 | only screen and (-webkit-min-device-pixel-ratio: 2), 25 | only screen and ( min--moz-device-pixel-ratio: 2), 26 | only screen and ( -o-min-device-pixel-ratio: 2/1), 27 | only screen and ( min-device-pixel-ratio: 2), 28 | only screen and ( min-resolution: 192dpi), 29 | only screen and ( min-resolution: 2dppx) { 30 | background-image: url("@{file-2x}"); 31 | background-size: @width-1x @height-1x; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/mixins/labels.less: -------------------------------------------------------------------------------- 1 | // Labels 2 | 3 | .label-variant(@color) { 4 | background-color: @color; 5 | 6 | &[href] { 7 | &:hover, 8 | &:focus { 9 | background-color: darken(@color, 10%); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/mixins/list-group.less: -------------------------------------------------------------------------------- 1 | // List Groups 2 | 3 | .list-group-item-variant(@state; @background; @color) { 4 | .list-group-item-@{state} { 5 | color: @color; 6 | background-color: @background; 7 | 8 | a&, 9 | button& { 10 | color: @color; 11 | 12 | .list-group-item-heading { 13 | color: inherit; 14 | } 15 | 16 | &:hover, 17 | &:focus { 18 | color: @color; 19 | background-color: darken(@background, 5%); 20 | } 21 | &.active, 22 | &.active:hover, 23 | &.active:focus { 24 | color: #fff; 25 | background-color: @color; 26 | border-color: @color; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/mixins/nav-divider.less: -------------------------------------------------------------------------------- 1 | // Horizontal dividers 2 | // 3 | // Dividers (basically an hr) within dropdowns and nav lists 4 | 5 | .nav-divider(@color: #e5e5e5) { 6 | height: 1px; 7 | margin: ((@line-height-computed / 2) - 1) 0; 8 | overflow: hidden; 9 | background-color: @color; 10 | } 11 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/mixins/nav-vertical-align.less: -------------------------------------------------------------------------------- 1 | // Navbar vertical align 2 | // 3 | // Vertically center elements in the navbar. 4 | // Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin. 5 | 6 | .navbar-vertical-align(@element-height) { 7 | margin-top: ((@navbar-height - @element-height) / 2); 8 | margin-bottom: ((@navbar-height - @element-height) / 2); 9 | } 10 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/mixins/opacity.less: -------------------------------------------------------------------------------- 1 | // Opacity 2 | 3 | .opacity(@opacity) { 4 | opacity: @opacity; 5 | // IE8 filter 6 | @opacity-ie: (@opacity * 100); 7 | filter: ~"alpha(opacity=@{opacity-ie})"; 8 | } 9 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/mixins/pagination.less: -------------------------------------------------------------------------------- 1 | // Pagination 2 | 3 | .pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) { 4 | > li { 5 | > a, 6 | > span { 7 | padding: @padding-vertical @padding-horizontal; 8 | font-size: @font-size; 9 | line-height: @line-height; 10 | } 11 | &:first-child { 12 | > a, 13 | > span { 14 | .border-left-radius(@border-radius); 15 | } 16 | } 17 | &:last-child { 18 | > a, 19 | > span { 20 | .border-right-radius(@border-radius); 21 | } 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/mixins/panels.less: -------------------------------------------------------------------------------- 1 | // Panels 2 | 3 | .panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) { 4 | border-color: @border; 5 | 6 | & > .panel-heading { 7 | color: @heading-text-color; 8 | background-color: @heading-bg-color; 9 | border-color: @heading-border; 10 | 11 | + .panel-collapse > .panel-body { 12 | border-top-color: @border; 13 | } 14 | .badge { 15 | color: @heading-bg-color; 16 | background-color: @heading-text-color; 17 | } 18 | } 19 | & > .panel-footer { 20 | + .panel-collapse > .panel-body { 21 | border-bottom-color: @border; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/mixins/progress-bar.less: -------------------------------------------------------------------------------- 1 | // Progress bars 2 | 3 | .progress-bar-variant(@color) { 4 | background-color: @color; 5 | 6 | // Deprecated parent class requirement as of v3.2.0 7 | .progress-striped & { 8 | #gradient > .striped(); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/mixins/reset-filter.less: -------------------------------------------------------------------------------- 1 | // Reset filters for IE 2 | // 3 | // When you need to remove a gradient background, do not forget to use this to reset 4 | // the IE filter for IE9 and below. 5 | 6 | .reset-filter() { 7 | filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)")); 8 | } 9 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/mixins/reset-text.less: -------------------------------------------------------------------------------- 1 | .reset-text() { 2 | font-family: @font-family-base; 3 | // We deliberately do NOT reset font-size. 4 | font-style: normal; 5 | font-weight: normal; 6 | letter-spacing: normal; 7 | line-break: auto; 8 | line-height: @line-height-base; 9 | text-align: left; // Fallback for where `start` is not supported 10 | text-align: start; 11 | text-decoration: none; 12 | text-shadow: none; 13 | text-transform: none; 14 | white-space: normal; 15 | word-break: normal; 16 | word-spacing: normal; 17 | word-wrap: normal; 18 | } 19 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/mixins/resize.less: -------------------------------------------------------------------------------- 1 | // Resize anything 2 | 3 | .resizable(@direction) { 4 | resize: @direction; // Options: horizontal, vertical, both 5 | overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible` 6 | } 7 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/mixins/responsive-visibility.less: -------------------------------------------------------------------------------- 1 | // Responsive utilities 2 | 3 | // 4 | // More easily include all the states for responsive-utilities.less. 5 | .responsive-visibility() { 6 | display: block !important; 7 | table& { display: table !important; } 8 | tr& { display: table-row !important; } 9 | th&, 10 | td& { display: table-cell !important; } 11 | } 12 | 13 | .responsive-invisibility() { 14 | display: none !important; 15 | } 16 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/mixins/size.less: -------------------------------------------------------------------------------- 1 | // Sizing shortcuts 2 | 3 | .size(@width; @height) { 4 | width: @width; 5 | height: @height; 6 | } 7 | 8 | .square(@size) { 9 | .size(@size; @size); 10 | } 11 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/mixins/tab-focus.less: -------------------------------------------------------------------------------- 1 | // WebKit-style focus 2 | 3 | .tab-focus() { 4 | // Default 5 | outline: thin dotted; 6 | // WebKit 7 | outline: 5px auto -webkit-focus-ring-color; 8 | outline-offset: -2px; 9 | } 10 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/mixins/table-row.less: -------------------------------------------------------------------------------- 1 | // Tables 2 | 3 | .table-row-variant(@state; @background) { 4 | // Exact selectors below required to override `.table-striped` and prevent 5 | // inheritance to nested tables. 6 | .table > thead > tr, 7 | .table > tbody > tr, 8 | .table > tfoot > tr { 9 | > td.@{state}, 10 | > th.@{state}, 11 | &.@{state} > td, 12 | &.@{state} > th { 13 | background-color: @background; 14 | } 15 | } 16 | 17 | // Hover states for `.table-hover` 18 | // Note: this is not available for cells or rows within `thead` or `tfoot`. 19 | .table-hover > tbody > tr { 20 | > td.@{state}:hover, 21 | > th.@{state}:hover, 22 | &.@{state}:hover > td, 23 | &:hover > .@{state}, 24 | &.@{state}:hover > th { 25 | background-color: darken(@background, 5%); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/mixins/text-emphasis.less: -------------------------------------------------------------------------------- 1 | // Typography 2 | 3 | .text-emphasis-variant(@color) { 4 | color: @color; 5 | a&:hover, 6 | a&:focus { 7 | color: darken(@color, 10%); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/mixins/text-overflow.less: -------------------------------------------------------------------------------- 1 | // Text overflow 2 | // Requires inline-block or block for proper styling 3 | 4 | .text-overflow() { 5 | overflow: hidden; 6 | text-overflow: ellipsis; 7 | white-space: nowrap; 8 | } 9 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/pager.less: -------------------------------------------------------------------------------- 1 | // 2 | // Pager pagination 3 | // -------------------------------------------------- 4 | 5 | 6 | .pager { 7 | padding-left: 0; 8 | margin: @line-height-computed 0; 9 | list-style: none; 10 | text-align: center; 11 | &:extend(.clearfix all); 12 | li { 13 | display: inline; 14 | > a, 15 | > span { 16 | display: inline-block; 17 | padding: 5px 14px; 18 | background-color: @pager-bg; 19 | border: 1px solid @pager-border; 20 | border-radius: @pager-border-radius; 21 | } 22 | 23 | > a:hover, 24 | > a:focus { 25 | text-decoration: none; 26 | background-color: @pager-hover-bg; 27 | } 28 | } 29 | 30 | .next { 31 | > a, 32 | > span { 33 | float: right; 34 | } 35 | } 36 | 37 | .previous { 38 | > a, 39 | > span { 40 | float: left; 41 | } 42 | } 43 | 44 | .disabled { 45 | > a, 46 | > a:hover, 47 | > a:focus, 48 | > span { 49 | color: @pager-disabled-color; 50 | background-color: @pager-bg; 51 | cursor: @cursor-disabled; 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/responsive-embed.less: -------------------------------------------------------------------------------- 1 | // Embeds responsive 2 | // 3 | // Credit: Nicolas Gallagher and SUIT CSS. 4 | 5 | .embed-responsive { 6 | position: relative; 7 | display: block; 8 | height: 0; 9 | padding: 0; 10 | overflow: hidden; 11 | 12 | .embed-responsive-item, 13 | iframe, 14 | embed, 15 | object, 16 | video { 17 | position: absolute; 18 | top: 0; 19 | left: 0; 20 | bottom: 0; 21 | height: 100%; 22 | width: 100%; 23 | border: 0; 24 | } 25 | } 26 | 27 | // Modifier class for 16:9 aspect ratio 28 | .embed-responsive-16by9 { 29 | padding-bottom: 56.25%; 30 | } 31 | 32 | // Modifier class for 4:3 aspect ratio 33 | .embed-responsive-4by3 { 34 | padding-bottom: 75%; 35 | } 36 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/thumbnails.less: -------------------------------------------------------------------------------- 1 | // 2 | // Thumbnails 3 | // -------------------------------------------------- 4 | 5 | 6 | // Mixin and adjust the regular image class 7 | .thumbnail { 8 | display: block; 9 | padding: @thumbnail-padding; 10 | margin-bottom: @line-height-computed; 11 | line-height: @line-height-base; 12 | background-color: @thumbnail-bg; 13 | border: 1px solid @thumbnail-border; 14 | border-radius: @thumbnail-border-radius; 15 | .transition(border .2s ease-in-out); 16 | 17 | > img, 18 | a > img { 19 | &:extend(.img-responsive); 20 | margin-left: auto; 21 | margin-right: auto; 22 | } 23 | 24 | // Add a hover state for linked versions only 25 | a&:hover, 26 | a&:focus, 27 | a&.active { 28 | border-color: @link-color; 29 | } 30 | 31 | // Image captions 32 | .caption { 33 | padding: @thumbnail-caption-padding; 34 | color: @thumbnail-caption-color; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/utilities.less: -------------------------------------------------------------------------------- 1 | // 2 | // Utility classes 3 | // -------------------------------------------------- 4 | 5 | 6 | // Floats 7 | // ------------------------- 8 | 9 | .clearfix { 10 | .clearfix(); 11 | } 12 | .center-block { 13 | .center-block(); 14 | } 15 | .pull-right { 16 | float: right !important; 17 | } 18 | .pull-left { 19 | float: left !important; 20 | } 21 | 22 | 23 | // Toggling content 24 | // ------------------------- 25 | 26 | // Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1 27 | .hide { 28 | display: none !important; 29 | } 30 | .show { 31 | display: block !important; 32 | } 33 | .invisible { 34 | visibility: hidden; 35 | } 36 | .text-hide { 37 | .text-hide(); 38 | } 39 | 40 | 41 | // Hide from screenreaders and browsers 42 | // 43 | // Credit: HTML5 Boilerplate 44 | 45 | .hidden { 46 | display: none !important; 47 | } 48 | 49 | 50 | // For Affix plugin 51 | // ------------------------- 52 | 53 | .affix { 54 | position: fixed; 55 | } 56 | -------------------------------------------------------------------------------- /content/lib/bootstrap/less/wells.less: -------------------------------------------------------------------------------- 1 | // 2 | // Wells 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base class 7 | .well { 8 | min-height: 20px; 9 | padding: 19px; 10 | margin-bottom: 20px; 11 | background-color: @well-bg; 12 | border: 1px solid @well-border; 13 | border-radius: @border-radius-base; 14 | .box-shadow(inset 0 1px 1px rgba(0,0,0,.05)); 15 | blockquote { 16 | border-color: #ddd; 17 | border-color: rgba(0,0,0,.15); 18 | } 19 | } 20 | 21 | // Sizes 22 | .well-lg { 23 | padding: 24px; 24 | border-radius: @border-radius-large; 25 | } 26 | .well-sm { 27 | padding: 9px; 28 | border-radius: @border-radius-small; 29 | } 30 | -------------------------------------------------------------------------------- /content/lib/bootstrap/package.js: -------------------------------------------------------------------------------- 1 | // package metadata file for Meteor.js 2 | 3 | /* jshint strict:false */ 4 | /* global Package:true */ 5 | 6 | Package.describe({ 7 | name: 'twbs:bootstrap', // http://atmospherejs.com/twbs/bootstrap 8 | summary: 'The most popular front-end framework for developing responsive, mobile first projects on the web.', 9 | version: '3.3.5', 10 | git: 'https://github.com/twbs/bootstrap.git' 11 | }); 12 | 13 | Package.onUse(function (api) { 14 | api.versionsFrom('METEOR@1.0'); 15 | api.use('jquery', 'client'); 16 | api.addFiles([ 17 | 'dist/fonts/glyphicons-halflings-regular.eot', 18 | 'dist/fonts/glyphicons-halflings-regular.svg', 19 | 'dist/fonts/glyphicons-halflings-regular.ttf', 20 | 'dist/fonts/glyphicons-halflings-regular.woff', 21 | 'dist/fonts/glyphicons-halflings-regular.woff2', 22 | 'dist/css/bootstrap.css', 23 | 'dist/js/bootstrap.js' 24 | ], 'client'); 25 | }); 26 | -------------------------------------------------------------------------------- /content/lib/font-awesome/animated.less: -------------------------------------------------------------------------------- 1 | // Animated Icons 2 | // -------------------------- 3 | 4 | .@{fa-css-prefix}-spin { 5 | -webkit-animation: fa-spin 2s infinite linear; 6 | animation: fa-spin 2s infinite linear; 7 | } 8 | 9 | .@{fa-css-prefix}-pulse { 10 | -webkit-animation: fa-spin 1s infinite steps(8); 11 | animation: fa-spin 1s infinite steps(8); 12 | } 13 | 14 | @-webkit-keyframes fa-spin { 15 | 0% { 16 | -webkit-transform: rotate(0deg); 17 | transform: rotate(0deg); 18 | } 19 | 100% { 20 | -webkit-transform: rotate(359deg); 21 | transform: rotate(359deg); 22 | } 23 | } 24 | 25 | @keyframes fa-spin { 26 | 0% { 27 | -webkit-transform: rotate(0deg); 28 | transform: rotate(0deg); 29 | } 30 | 100% { 31 | -webkit-transform: rotate(359deg); 32 | transform: rotate(359deg); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /content/lib/font-awesome/bordered-pulled.less: -------------------------------------------------------------------------------- 1 | // Bordered & Pulled 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-border { 5 | padding: .2em .25em .15em; 6 | border: solid .08em @fa-border-color; 7 | border-radius: .1em; 8 | } 9 | 10 | .pull-right { float: right; } 11 | .pull-left { float: left; } 12 | 13 | .@{fa-css-prefix} { 14 | &.pull-left { margin-right: .3em; } 15 | &.pull-right { margin-left: .3em; } 16 | } 17 | -------------------------------------------------------------------------------- /content/lib/font-awesome/core.less: -------------------------------------------------------------------------------- 1 | // Base Class Definition 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix} { 5 | display: inline-block; 6 | font: normal normal normal @fa-font-size-base/1 FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | transform: translate(0, 0); // ensures no half-pixel rendering in firefox 12 | 13 | } 14 | -------------------------------------------------------------------------------- /content/lib/font-awesome/fixed-width.less: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .@{fa-css-prefix}-fw { 4 | width: (18em / 14); 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /content/lib/font-awesome/font-awesome.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */ 5 | 6 | @import "variables.less"; 7 | @import "mixins.less"; 8 | @import "path.less"; 9 | @import "core.less"; 10 | @import "larger.less"; 11 | @import "fixed-width.less"; 12 | @import "list.less"; 13 | @import "bordered-pulled.less"; 14 | @import "animated.less"; 15 | @import "rotated-flipped.less"; 16 | @import "stacked.less"; 17 | @import "icons.less"; 18 | -------------------------------------------------------------------------------- /content/lib/font-awesome/larger.less: -------------------------------------------------------------------------------- 1 | // Icon Sizes 2 | // ------------------------- 3 | 4 | /* makes the font 33% larger relative to the icon container */ 5 | .@{fa-css-prefix}-lg { 6 | font-size: (4em / 3); 7 | line-height: (3em / 4); 8 | vertical-align: -15%; 9 | } 10 | .@{fa-css-prefix}-2x { font-size: 2em; } 11 | .@{fa-css-prefix}-3x { font-size: 3em; } 12 | .@{fa-css-prefix}-4x { font-size: 4em; } 13 | .@{fa-css-prefix}-5x { font-size: 5em; } 14 | -------------------------------------------------------------------------------- /content/lib/font-awesome/list.less: -------------------------------------------------------------------------------- 1 | // List Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-ul { 5 | padding-left: 0; 6 | margin-left: @fa-li-width; 7 | list-style-type: none; 8 | > li { position: relative; } 9 | } 10 | .@{fa-css-prefix}-li { 11 | position: absolute; 12 | left: -@fa-li-width; 13 | width: @fa-li-width; 14 | top: (2em / 14); 15 | text-align: center; 16 | &.@{fa-css-prefix}-lg { 17 | left: (-@fa-li-width + (4em / 14)); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /content/lib/font-awesome/mixins.less: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------- 3 | 4 | .fa-icon() { 5 | display: inline-block; 6 | font: normal normal normal @fa-font-size-base/1 FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | transform: translate(0, 0); // ensures no half-pixel rendering in firefox 12 | 13 | } 14 | 15 | .fa-icon-rotate(@degrees, @rotation) { 16 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation); 17 | -webkit-transform: rotate(@degrees); 18 | -ms-transform: rotate(@degrees); 19 | transform: rotate(@degrees); 20 | } 21 | 22 | .fa-icon-flip(@horiz, @vert, @rotation) { 23 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation, mirror=1); 24 | -webkit-transform: scale(@horiz, @vert); 25 | -ms-transform: scale(@horiz, @vert); 26 | transform: scale(@horiz, @vert); 27 | } 28 | -------------------------------------------------------------------------------- /content/lib/font-awesome/path.less: -------------------------------------------------------------------------------- 1 | /* FONT PATH 2 | * -------------------------- */ 3 | 4 | @font-face { 5 | font-family: 'FontAwesome'; 6 | src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}'); 7 | src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'), 8 | url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'), 9 | url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'), 10 | url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'), 11 | url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg'); 12 | // src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts 13 | font-weight: normal; 14 | font-style: normal; 15 | } 16 | -------------------------------------------------------------------------------- /content/lib/font-awesome/rotated-flipped.less: -------------------------------------------------------------------------------- 1 | // Rotated & Flipped Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); } 5 | .@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); } 6 | .@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); } 7 | 8 | .@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); } 9 | .@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); } 10 | 11 | // Hook for IE8-9 12 | // ------------------------- 13 | 14 | :root .@{fa-css-prefix}-rotate-90, 15 | :root .@{fa-css-prefix}-rotate-180, 16 | :root .@{fa-css-prefix}-rotate-270, 17 | :root .@{fa-css-prefix}-flip-horizontal, 18 | :root .@{fa-css-prefix}-flip-vertical { 19 | filter: none; 20 | } 21 | -------------------------------------------------------------------------------- /content/lib/font-awesome/stacked.less: -------------------------------------------------------------------------------- 1 | // Stacked Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-stack { 5 | position: relative; 6 | display: inline-block; 7 | width: 2em; 8 | height: 2em; 9 | line-height: 2em; 10 | vertical-align: middle; 11 | } 12 | .@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x { 13 | position: absolute; 14 | left: 0; 15 | width: 100%; 16 | text-align: center; 17 | } 18 | .@{fa-css-prefix}-stack-1x { line-height: inherit; } 19 | .@{fa-css-prefix}-stack-2x { font-size: 2em; } 20 | .@{fa-css-prefix}-inverse { color: @fa-inverse; } 21 | -------------------------------------------------------------------------------- /content/lib/noturtle.js: -------------------------------------------------------------------------------- 1 | if (window.turtle && typeof(window.turtle.remove) == 'function') { 2 | window.turtle.remove(); 3 | } 4 | -------------------------------------------------------------------------------- /content/lib/print.coffee: -------------------------------------------------------------------------------- 1 | # The code is clearer if we name the global scope. 2 | global = this 3 | 4 | # Hide the turtle by default 5 | ht() 6 | 7 | # Format the document like an old teletype. 8 | $("body").css 9 | fontFamily: "monospace" 10 | whiteSpace: "pre" 11 | 12 | counts = [] # A map of char: counts for each line. 13 | keys = {} # A map of char: true for unique chars. 14 | lineno = 0 # The current line number, start at 0. 15 | 16 | # Define a function print that just appends text 17 | # to the document body. 18 | global.print = print = (text) -> 19 | for c in text 20 | countchar(c) 21 | $('body').append(text) 22 | 23 | # The countchar function takes a single character 24 | # and counts it in the count map for the line. 25 | # It also keeps track of the current line number. 26 | countchar = (text) -> 27 | if '\n' in text then lineno += 1 28 | else 29 | if text not of keys 30 | keys[text] = true 31 | if not counts[lineno] 32 | counts[lineno] = {} 33 | if text not of counts[lineno] 34 | counts[lineno][text] = 0 35 | counts[lineno][text] += 1 36 | 37 | # The tally function displays the countchar 38 | # as a nice table in the corner of the screen. 39 | global.tally = tally = -> 40 | t = table(counts.length + 1, _.size(keys) + 1) 41 | t.css 42 | position: 'absolute' 43 | top: 10 44 | right: 10 45 | background: yellow 46 | 47 | t.cell(0, 0).text(' Characters ') 48 | 49 | col = 0 50 | for y of keys 51 | col += 1 52 | t.cell(0, col).text("'#{y}'") 53 | for x in [0...counts.length] 54 | t.cell(x + 1, 0).text(" Line #{x + 1} ") 55 | col = 0 56 | for y of keys 57 | col += 1 58 | t.cell(x + 1, col).text("#{counts[x][y] || 0}") 59 | 60 | -------------------------------------------------------------------------------- /content/lib/sourcemap/base64.js: -------------------------------------------------------------------------------- 1 | /* -*- Mode: js; js-indent-level: 2; -*- */ 2 | /* 3 | * Copyright 2011 Mozilla Foundation and contributors 4 | * Licensed under the New BSD license. See LICENSE or: 5 | * http://opensource.org/licenses/BSD-3-Clause 6 | */ 7 | if (typeof define !== 'function') { 8 | var define = require('amdefine')(module, require); 9 | } 10 | define(function (require, exports, module) { 11 | 12 | var charToIntMap = {}; 13 | var intToCharMap = {}; 14 | 15 | 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' 16 | .split('') 17 | .forEach(function (ch, index) { 18 | charToIntMap[ch] = index; 19 | intToCharMap[index] = ch; 20 | }); 21 | 22 | /** 23 | * Encode an integer in the range of 0 to 63 to a single base 64 digit. 24 | */ 25 | exports.encode = function base64_encode(aNumber) { 26 | if (aNumber in intToCharMap) { 27 | return intToCharMap[aNumber]; 28 | } 29 | throw new TypeError("Must be between 0 and 63: " + aNumber); 30 | }; 31 | 32 | /** 33 | * Decode a single base 64 digit to an integer. 34 | */ 35 | exports.decode = function base64_decode(aChar) { 36 | if (aChar in charToIntMap) { 37 | return charToIntMap[aChar]; 38 | } 39 | throw new TypeError("Not a valid base 64 digit: " + aChar); 40 | }; 41 | 42 | }); 43 | -------------------------------------------------------------------------------- /content/lib/start-ide.js: -------------------------------------------------------------------------------- 1 | (function(ww) { 2 | if (ww.ide == null) try { 3 | ww.ide = null; 4 | // Propagate the ide variable from the parent window, if present. 5 | // When running framed inside in the pencilcode ide, this object 6 | // is set up by debug.js. 7 | if (ww.parent !== ww && ww.parent.ide && 8 | 'function' == typeof(ww.parent.ide.bindframe)) { 9 | ww.ide = ww.parent.ide; 10 | } 11 | ww.ide.bindframe(ww); 12 | } catch (e) { 13 | console.log(e); 14 | } 15 | })(this); 16 | -------------------------------------------------------------------------------- /content/lib/tooltipster/css/reset.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | html, body, div, span, applet, object, iframe, 4 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 5 | a, abbr, acronym, address, big, cite, code, 6 | del, dfn, em, img, ins, kbd, q, s, samp, 7 | small, strike, strong, sub, sup, tt, var, 8 | b, u, i, center, 9 | dl, dt, dd, ol, ul, li, 10 | fieldset, form, label, legend, 11 | table, caption, tbody, tfoot, thead, tr, th, td, 12 | article, aside, canvas, details, embed, 13 | figure, figcaption, footer, header, hgroup, 14 | menu, nav, output, ruby, section, summary, 15 | time, mark, audio, video { 16 | margin: 0; 17 | padding: 0; 18 | border: 0; 19 | font-size:100%; 20 | vertical-align: baseline; 21 | } 22 | /* HTML5 display-role reset for older browsers */ 23 | article, aside, details, figcaption, figure, 24 | footer, header, hgroup, menu, nav, section { 25 | display: block; 26 | } 27 | body { 28 | line-height: 1; 29 | } 30 | ol, ul { 31 | list-style: none; 32 | } 33 | blockquote, q { 34 | quotes: none; 35 | } 36 | blockquote:before, blockquote:after, 37 | q:before, q:after { 38 | content: ''; 39 | content: none; 40 | } 41 | table { 42 | border-collapse: collapse; 43 | border-spacing: 0; 44 | } 45 | 46 | -------------------------------------------------------------------------------- /content/lib/tooltipster/css/style.css: -------------------------------------------------------------------------------- 1 | /* Main */ 2 | 3 | body { 4 | background-color: #dcdcdc; 5 | color: #0b0b0b; 6 | font-size: 16px; 7 | line-height: 22px; 8 | } 9 | 10 | .container, #container { 11 | width: 978px; 12 | margin: 10px auto; 13 | padding: 60px; 14 | box-shadow: 0px 0px 10px rgba(0,0,0,0.2); 15 | background: #fff; 16 | text-align: left; 17 | display: block; 18 | overflow: hidden; 19 | } 20 | 21 | .item { 22 | width: 200px; 23 | float: left; 24 | padding: 10px; 25 | margin: 10px; 26 | background: #000; 27 | color: #fff; 28 | } -------------------------------------------------------------------------------- /content/lib/tooltipster/css/themes/tooltipster-light.css: -------------------------------------------------------------------------------- 1 | .tooltipster-light { 2 | border-radius: 5px; 3 | border: 1px solid #cccccc; 4 | background: #ededed; 5 | color: #666666; 6 | } 7 | .tooltipster-light .tooltipster-content { 8 | font-family: Arial, sans-serif; 9 | font-size: 14px; 10 | line-height: 16px; 11 | padding: 8px 10px; 12 | } -------------------------------------------------------------------------------- /content/lib/tooltipster/css/themes/tooltipster-noir.css: -------------------------------------------------------------------------------- 1 | .tooltipster-noir { 2 | border-radius: 0px; 3 | border: 3px solid #2c2c2c; 4 | background: #fff; 5 | color: #2c2c2c; 6 | } 7 | .tooltipster-noir .tooltipster-content { 8 | font-family: 'Georgia', serif; 9 | font-size: 14px; 10 | line-height: 16px; 11 | padding: 8px 10px; 12 | } -------------------------------------------------------------------------------- /content/lib/tooltipster/css/themes/tooltipster-punk.css: -------------------------------------------------------------------------------- 1 | .tooltipster-punk { 2 | border-radius: 5px; 3 | border-bottom: 3px solid #f71169; 4 | background: #2a2a2a; 5 | color: #fff; 6 | } 7 | .tooltipster-punk .tooltipster-content { 8 | font-family: 'Courier', monospace; 9 | font-size: 14px; 10 | line-height: 16px; 11 | padding: 8px 10px; 12 | } -------------------------------------------------------------------------------- /content/lib/tooltipster/css/themes/tooltipster-shadow.css: -------------------------------------------------------------------------------- 1 | .tooltipster-shadow { 2 | border-radius: 5px; 3 | background: #fff; 4 | box-shadow: 0px 0px 14px rgba(0,0,0,0.3); 5 | color: #2c2c2c; 6 | } 7 | .tooltipster-shadow .tooltipster-content { 8 | font-family: 'Arial', sans-serif; 9 | font-size: 14px; 10 | line-height: 16px; 11 | padding: 8px 10px; 12 | } -------------------------------------------------------------------------------- /content/lib/tooltipster/images/map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/lib/tooltipster/images/map.png -------------------------------------------------------------------------------- /content/lib/zeroclipboard/ZeroClipboard.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/lib/zeroclipboard/ZeroClipboard.swf -------------------------------------------------------------------------------- /content/material/arcs.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/material/arcs.pdf -------------------------------------------------------------------------------- /content/material/car.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/material/car.pdf -------------------------------------------------------------------------------- /content/material/flower.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/material/flower.pdf -------------------------------------------------------------------------------- /content/material/hangman-handout.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/material/hangman-handout.pdf -------------------------------------------------------------------------------- /content/material/hoc2013/answers.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/material/hoc2013/answers.zip -------------------------------------------------------------------------------- /content/material/hoc2013/guide.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/material/hoc2013/guide.pdf -------------------------------------------------------------------------------- /content/material/hoc2013/waiver.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/material/hoc2013/waiver.pdf -------------------------------------------------------------------------------- /content/material/initial.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/material/initial.pdf -------------------------------------------------------------------------------- /content/material/lesson1-handout.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/material/lesson1-handout.pdf -------------------------------------------------------------------------------- /content/material/lesson1-outline.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/material/lesson1-outline.pdf -------------------------------------------------------------------------------- /content/material/lesson2-handout.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/material/lesson2-handout.pdf -------------------------------------------------------------------------------- /content/material/measuring.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/material/measuring.pdf -------------------------------------------------------------------------------- /content/material/onepencil.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/material/onepencil.jpg -------------------------------------------------------------------------------- /content/material/pencils.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/material/pencils.jpg -------------------------------------------------------------------------------- /content/material/penciltips.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/material/penciltips.jpg -------------------------------------------------------------------------------- /content/material/reference.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/material/reference.pdf -------------------------------------------------------------------------------- /content/material/shaving.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/material/shaving.jpg -------------------------------------------------------------------------------- /content/material/twopencils.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/material/twopencils.jpg -------------------------------------------------------------------------------- /content/promoline.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/content/promoline.html -------------------------------------------------------------------------------- /content/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: /save/ 3 | Disallow: /edit/ 4 | -------------------------------------------------------------------------------- /content/src/cache.js: -------------------------------------------------------------------------------- 1 | /////////////////////////////////////////////////////////////////////////// 2 | // CACHE SUPPORT 3 | /////////////////////////////////////////////////////////////////////////// 4 | 5 | var see = require('see'); 6 | 7 | eval(see.scope('cache')); 8 | 9 | var cache = window.pencilcode.cacheObj = {}; 10 | 11 | var model = window.pencilcode.cache = { 12 | put: put, 13 | get: get, 14 | delete: deleteCache, 15 | clear: clearCache 16 | }; 17 | 18 | /** 19 | * Initialize the cache object to the given 20 | * name only if it's not available already. 21 | * 22 | * @param {string} name 23 | * @returns {undefined} 24 | */ 25 | function initializeCache(name) { 26 | if (!cache[name]) { 27 | cache[name] = {}; 28 | } 29 | } 30 | 31 | /** 32 | * Delete the cache object mapped with the given name 33 | * 34 | * @param {string} name 35 | * @returns {undefined} 36 | */ 37 | function deleteCache(name) { 38 | delete cache[name]; 39 | } 40 | 41 | /** 42 | * Ceear the complete cache 43 | * @returns {undefined} 44 | */ 45 | function clearCache(){ 46 | cache = window.pencilcode.cacheObj = {}; 47 | } 48 | 49 | /** 50 | * Return the cached value mapped with the given name and key 51 | * 52 | * @param {string} cacheName 53 | * @param {string} key 54 | * @returns {unresolved} 55 | */ 56 | function get(cacheName, key) { 57 | if (cache[cacheName]) { 58 | return cache[cacheName][key]; 59 | } 60 | return null; 61 | } 62 | 63 | /** 64 | * Save the given value mapped with the given name and key 65 | * 66 | * @param {type} cacheName 67 | * @param {type} key 68 | * @returns {undefined} 69 | */ 70 | function put(cacheName, key, value) { 71 | initializeCache(cacheName); 72 | cache[cacheName][key] = value; 73 | } 74 | 75 | module.exports = model; 76 | -------------------------------------------------------------------------------- /content/src/editor-main.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | // Start the app... 4 | require('controller'); 5 | -------------------------------------------------------------------------------- /content/src/showturtle.js: -------------------------------------------------------------------------------- 1 | (function(ww) { 2 | var script = document.currentScript || (function() { 3 | var scripts = document.getElementsByTagName("script"); 4 | return scripts[scripts.length - 1]; 5 | })(); 6 | var map = {}; 7 | if (script) { 8 | for (var j = 0, atts = script.attributes; j < atts.length; j++) { 9 | var value = atts[j].value; 10 | if (value == 'false') value = false; 11 | else if (value == 'true') value = true; 12 | else if (value == 'null') value = null; 13 | else if (/^(?:\d+\.?|\d*\.\d+)(?:e[-+]?\d+)?$/.test(value)) { 14 | value = Number(value); 15 | } 16 | map[atts[j].name] = value; 17 | } 18 | } 19 | $.turtle(map); 20 | ww._start_ide_ = function(pump) { 21 | if (ww.see) ww.see.init(pump); 22 | if (ww.ide && ww.ide.reportEvent) ww.ide.reportEvent('init'); 23 | delete ww._start_ide_; 24 | delete ww._start_ide_cs_; 25 | delete ww._start_ide_js_; 26 | } 27 | ww._start_ide_cs_ = 'this._start_ide_(eval(this.see.cs))'; 28 | ww._start_ide_js_ = 'this._start_ide_(eval(this.see.js))'; 29 | })(window); 30 | -------------------------------------------------------------------------------- /nginx/dir_util.conf: -------------------------------------------------------------------------------- 1 | # Just return a 204 - for logging a request and doing nothing else. 2 | location ^~ /log/ { 3 | add_header Content-Type text/plain; 4 | return 204; 5 | } 6 | 7 | # Proxy to google image search and redirect to a creative commons result. 8 | location ^~ /img/ { 9 | if ($http_user_agent ~ (bot|agent|spider|crawler|extractor|externalhit)) { 10 | return 403; 11 | } 12 | uwsgi_pass img_py; 13 | include uwsgi_params; 14 | } 15 | 16 | # Proxy to google web search. 17 | location ^~ /goto/ { 18 | if ($http_user_agent ~ (bot|agent|spider|crawler|extractor|externalhit)) { 19 | return 403; 20 | } 21 | uwsgi_pass goto_py; 22 | include uwsgi_params; 23 | } 24 | 25 | # Socket.io reflector. 26 | location ^~ /socket.io/ { 27 | proxy_pass http://socket_node; 28 | proxy_http_version 1.1; 29 | proxy_set_header Upgrade $http_upgrade; 30 | proxy_set_header Connection "upgrade"; 31 | proxy_set_header X-Real-IP $remote_addr; 32 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 33 | proxy_set_header Host $http_host; 34 | } 35 | 36 | # Proxy to an arbitrary URL. Used for cross-domain image manipulation. 37 | location ~ ^/proxy/(?P(?Phttps?)://?)?(?P(?P[^/]+\.[a-z]+(?::\d+)?)(?:/.*)?)$ { 38 | if ($proxy_prot = "") { 39 | set $proxy_prot http; 40 | } 41 | add_header Cache-Control "no-cache, no-store, must-revalidate"; 42 | add_header Access-Control-Allow-Origin $aco_needed; 43 | add_header X-XSS-Protection 0; 44 | resolver 8.8.4.4 8.8.8.8; 45 | proxy_pass $proxy_prot://$proxy_uri$is_args$args; 46 | proxy_cache one; 47 | proxy_redirect ~^([a-z]+://.*)$ /proxy/$1; 48 | proxy_redirect ~^//(.*)$ /proxy/$proxy_protslash$1; 49 | proxy_redirect ~^(/.*)$ /proxy/$proxy_protslash$proxy_host$1; 50 | proxy_set_header Origin ""; 51 | proxy_set_header Referer ""; 52 | proxy_set_header X-Real-IP $remote_addr; 53 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 54 | } 55 | -------------------------------------------------------------------------------- /nginx/domain_common.conf: -------------------------------------------------------------------------------- 1 | # Common settings for pencil code domains. 2 | 3 | # https setup 4 | ssl_session_timeout 5m; 5 | ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 6 | ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK'; 7 | ssl_prefer_server_ciphers on; 8 | ssl_session_cache shared:SSL:50m; 9 | resolver 8.8.8.8 8.8.4.4 valid=300s; 10 | resolver_timeout 10s; 11 | ssl_stapling on; 12 | ssl_stapling_verify on; 13 | 14 | # content settings 15 | charset utf-8; 16 | client_max_body_size 1M; 17 | gzip on; 18 | gzip_types text/javascript text/css application/x-javascript; 19 | 20 | # uid cookies enabled 21 | userid on; 22 | userid_name uid; 23 | # userid_domain $site; 24 | userid_path /; 25 | userid_expires max; 26 | 27 | # logging. 28 | access_log /var/log/nginx/access.log subdomain; 29 | -------------------------------------------------------------------------------- /nginx/domain_root.conf: -------------------------------------------------------------------------------- 1 | # Setup for root pencil domains. 2 | 3 | # common settings for a domain. 4 | include /srv/site/root/nginx/domain_common.conf; 5 | 6 | # static content location 7 | root /srv/$site/content; 8 | set $owner -; 9 | 10 | # home page: welcome 11 | location = / { 12 | add_header Access-Control-Allow-Origin *; 13 | add_header X-XSS-Protection 0; 14 | add_header Cache-Control "public, must-revalidate, proxy-revalidate"; 15 | ssi on; 16 | try_files /welcome.html =404; 17 | } 18 | 19 | # special directories for /log/ /img/ /proxy/ etc. 20 | include /srv/site/root/nginx/dir_util.conf; 21 | 22 | # serve user data via /save/ /load/ /edit/ /run/ /code/ /home/ 23 | include /srv/site/root/nginx/dir_data.conf; 24 | 25 | # nginx status page. 26 | location = /status { 27 | stub_status on; 28 | access_log off; 29 | } 30 | 31 | # Serve root static content or redirect unfound urls to root. 32 | location / { 33 | add_header Access-Control-Allow-Origin *; 34 | add_header X-XSS-Protection 0; 35 | add_header Cache-Control "public, must-revalidate, proxy-revalidate"; 36 | try_files $uri @root_redirect; 37 | } 38 | 39 | location @root_redirect { 40 | if ($http_x_requested_with ~ XMLHttpRequest) { 41 | return 404 "404 (Not Found)"; 42 | } 43 | return 302 /; 44 | } 45 | 46 | # Moved jquery.js 47 | location = /jquery.js { 48 | return 301 /lib/jquery.js; 49 | } 50 | -------------------------------------------------------------------------------- /nginx/ssl_pencilcc.conf: -------------------------------------------------------------------------------- 1 | # paths to SSL certificates and keys for pencil.cc 2 | ssl_certificate /srv/pencil.cc/key/pencilcc.crt; 3 | ssl_certificate_key /srv/pencil.cc/key/pencilcc.key; 4 | ssl_dhparam /srv/pencil.cc/key/dh2048.pem; 5 | ssl_trusted_certificate /srv/pencil.cc/key/bundle.crt; 6 | -------------------------------------------------------------------------------- /nginx/ssl_pencilcode.conf: -------------------------------------------------------------------------------- 1 | # paths to SSL certificates and keys for pencilcode.net 2 | ssl_certificate /srv/pencilcode.net/key/pencilcode.crt; 3 | ssl_certificate_key /srv/pencilcode.net/key/pencilcode.key; 4 | ssl_dhparam /srv/pencilcode.net/key/dh2048.pem; 5 | ssl_trusted_certificate /srv/pencilcode.net/key/bundle.crt; 6 | -------------------------------------------------------------------------------- /nginx/upstream.conf: -------------------------------------------------------------------------------- 1 | # The node.js server. 2 | upstream service_node { 3 | server localhost:8816; 4 | } 5 | 6 | # The socket.io node server. 7 | upstream socket_node { 8 | server localhost:8811; 9 | } 10 | 11 | # The fish git postrecieve hook server. 12 | upstream fish_node { 13 | server localhost:6174; 14 | } 15 | 16 | upstream load_py { 17 | server unix:///run/uwsgi/app/load/socket; 18 | } 19 | 20 | upstream img_py { 21 | server unix:///run/uwsgi/app/img/socket; 22 | } 23 | 24 | upstream goto_py { 25 | server unix:///run/uwsgi/app/goto/socket; 26 | } 27 | 28 | -------------------------------------------------------------------------------- /server/config/development.json: -------------------------------------------------------------------------------- 1 | { 2 | "dirs": { 3 | "staticdir": "../content", 4 | "datadir": "../local/data", 5 | "cachedir": "../local/cache" 6 | }, 7 | "host": "pencilcode.net.dev", 8 | "useProxy": 1, 9 | "useHttps": false 10 | } 11 | -------------------------------------------------------------------------------- /server/config/index.js: -------------------------------------------------------------------------------- 1 | // Load the config appropriate to NODE_ENV 2 | module.exports = require( 3 | './' + (process.env.NODE_ENV || 'development') + '.json'); 4 | 5 | -------------------------------------------------------------------------------- /server/config/production.json: -------------------------------------------------------------------------------- 1 | { 2 | "dirs": { 3 | "datadir": "/srv/pencilcode.net/data", 4 | "cachedir": "/srv/pencilcode.net/cache" 5 | }, 6 | "compactjson": true, 7 | "uid": "www-data", 8 | "gid": "www-data", 9 | "umask": "002", 10 | "useHttps": false 11 | } 12 | -------------------------------------------------------------------------------- /server/config/sdevelopment.json: -------------------------------------------------------------------------------- 1 | { 2 | "dirs": { 3 | "staticdir": "../content", 4 | "datadir": "../local/data", 5 | "cachedir": "../local/cache" 6 | }, 7 | "host": "pencilcode.net.dev", 8 | "useProxy": 1, 9 | "useHttps": true 10 | } 11 | -------------------------------------------------------------------------------- /server/config/test.json: -------------------------------------------------------------------------------- 1 | { 2 | "dirs": { 3 | "staticdir": "../content", 4 | "datadir": "../local/data", 5 | "cachedir": "../local/cache" 6 | }, 7 | "host": "pencilcode.net.dev", 8 | "useProxy": 0, 9 | "useHttps": false 10 | } 11 | -------------------------------------------------------------------------------- /server/devserver-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIID9DCCAtygAwIBAgIJAOkmEW4FBKpkMA0GCSqGSIb3DQEBCwUAMFkxCzAJBgNV 3 | BAYTAlVTMQswCQYDVQQIEwJNQTEeMBwGA1UEChMVUGVuY2lsQ29kZSBEZXYgU2Vy 4 | dmVyMR0wGwYDVQQDFBQqLnBlbmNpbGNvZGUuZGV2Lm5ldDAeFw0xNDExMTQyMDA1 5 | NDVaFw0xNjAzMjgyMDA1NDVaMFkxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJNQTEe 6 | MBwGA1UEChMVUGVuY2lsQ29kZSBEZXYgU2VydmVyMR0wGwYDVQQDFBQqLnBlbmNp 7 | bGNvZGUuZGV2Lm5ldDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM42 8 | te5nJ5PUWGd0M0dYnO9EZOfAGoDgXVKVi9ntc8vBYNMnyuS41znVYvbKmfl0qIeH 9 | 7a8m3k3OI9Xi6MsEDu2V+t2ivovWr1s1+1skU2Mi/CPX0ZqN2bE5X+X2nOCsksCj 10 | ZfzRJE2X585XKNK4mmspjLBxH63Mn5nX6te5eu1X7PNuAVkpRRZHBPShzSbeZ11l 11 | CScChaRivvhdts5FSD4152SZ3pbOLlBHV7Ssd20ROcdp4OKc4VdlZdqr/13owvmN 12 | kL9+BhE6fztPxeXFWzvWn4xXEtBl8ahTGeHV2jIBPpEzKT5M+B6/GQ44cdhKN4jY 13 | AdF1kV6klf+4mq6zZ6MCAwEAAaOBvjCBuzAdBgNVHQ4EFgQUTFpkGkka1mT07A8z 14 | OpkadKjJmP4wgYsGA1UdIwSBgzCBgIAUTFpkGkka1mT07A8zOpkadKjJmP6hXaRb 15 | MFkxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJNQTEeMBwGA1UEChMVUGVuY2lsQ29k 16 | ZSBEZXYgU2VydmVyMR0wGwYDVQQDFBQqLnBlbmNpbGNvZGUuZGV2Lm5ldIIJAOkm 17 | EW4FBKpkMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAHBk6kJN6XQR 18 | J0ga3hi4AL3EeaTfMPQ5ztha0RZPSAFiTYStViGSH9K+nj/F+heW/582zhsBftW3 19 | P7RkaX62+jEF/ID0HP9GGnXHj1rgT09Wh5LVvOgxfajZ+/49Bd2l/+g71adY3UJt 20 | jqoNNRNAG6cB148F0WBfwQvVtByv4fClXVXeHhgiqHCnUZ01S7NRp2RT3ryw5ACo 21 | hUcbblKo3WBCMfVtTRCXl4kuBG6s1hSNGx0h1Bp1SxehgpoB/DmzHx1meJA0rxwf 22 | gfF2Ac4CJRHmzgh1OsEXNFhLo79QrPDE9pUMEO2laSAHnYF+i4eTbwieriUgzKWu 23 | rKR7ymCSAWY= 24 | -----END CERTIFICATE----- 25 | -------------------------------------------------------------------------------- /server/devserver-key.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEowIBAAKCAQEAzja17mcnk9RYZ3QzR1ic70Rk58AagOBdUpWL2e1zy8Fg0yfK 3 | 5LjXOdVi9sqZ+XSoh4ftrybeTc4j1eLoywQO7ZX63aK+i9avWzX7WyRTYyL8I9fR 4 | mo3ZsTlf5fac4KySwKNl/NEkTZfnzlco0riaaymMsHEfrcyfmdfq17l67Vfs824B 5 | WSlFFkcE9KHNJt5nXWUJJwKFpGK++F22zkVIPjXnZJnels4uUEdXtKx3bRE5x2ng 6 | 4pzhV2Vl2qv/XejC+Y2Qv34GETp/O0/F5cVbO9afjFcS0GXxqFMZ4dXaMgE+kTMp 7 | Pkz4Hr8ZDjhx2Eo3iNgB0XWRXqSV/7iarrNnowIDAQABAoIBAAbuieEQsKDkg3A+ 8 | 1LZyQRw95VJw/7MTV6+9/Sx/MeRIhNO0Q7q6h+mWxbPcDZ74D+42YIQBv3lIE6ZN 9 | 8VtZsJLF9t/aZ6NVvSFIyEFBEFiFxYoC6DXUzNuLPTECwDVBN9Gn7Ha6JQlCsPUb 10 | svCaaf5uMB+CPflepoLKYkeMIZi2y3Jo0n3SL3TRvMzABGSx/8vK0lkrygTauaa/ 11 | iLCe1chzTQ6cnAJY7ZqGX0aAZnGV96toqmDelRM80vNP1apHjZ00EHuBTvH1C+X4 12 | V5ApHvsPnF4d+vhyU9iPCkrd7YQsD/uwQI2n+BUzlKOyism/WBbIPmJAEif/kE3s 13 | vfxNiAECgYEA9UbeXF7c7tx8D06wpUZpbxTaCzYsIekrVwQuQ0bQQpFv0Q83rN6z 14 | yK6WlyazTgo5IusQNmepmhgHN3YriW2vUoEq8GoVxFpzeesdfAPsAp5U6DOQ7s+b 15 | qsqynoO6kLjF0Na4rKynEswozv9oX767GUxuTOi5o5nTlZEHsV1dA6MCgYEA1zqm 16 | FWO73I7y3LlA2xk8UiJbGV20qwGqn3Hl164XqZtzDspTIbAXnSACHnaJnG5M9keR 17 | ldmLvvW0nbOL2fpPENyXa4Kip9PUZrD3qMNwoP1sZp2kqdJjv/b5DCuIIHEH0MOh 18 | nqCxqbCFHAIgFGPqPfIAwQ2ibr+eplENp07WTAECgYBdHIUnTb/TUZIrAXVfmKZH 19 | zAOmQ+9nBCw2wViKo6RF0Q5Ar+Uz0+suIND8Gm3xD0J3dgLWlG23GK4MqOiIKEJp 20 | MK3LTIps2uWBf/bWcGq058RVzdWUQu3WXVKHiHxXmj1GNW0v5+8Y3LYVNrI5vp8q 21 | UHCC88odSDUhT0g7VbUMvwKBgGlpniJnwIDbunMEgJFOoM6RaRDZZj1DCbAh9rJV 22 | 39z/97BMw76CIm6gWKlW4Tsugp80mkdMTzdt29JJN7vA7qyRfc/4IXYVN7g8AHA1 23 | mJogxNDVcOqD0rsYWQ3u3DMXaP6Eckng5mL3w5neKJwT+4vvVRM4fE/FpgxLMma5 24 | JBgBAoGBAJ0pKH8rNJuScoSJrtP+R+7oRX8nObJjsRuVkNxjrqFxmYWRzH2OH2kZ 25 | JW7sRcaT4zF5SggXoBBzng2uJLUlHEy490tsZZg+k797ldpazfQhgzBLBQkQT2fi 26 | /jrNl7kFQH65nq7m7EwKGsoE4wRU716YRcSqP+i3/RgArvXqT9V4 27 | -----END RSA PRIVATE KEY----- 28 | -------------------------------------------------------------------------------- /server/server.js: -------------------------------------------------------------------------------- 1 | // 2 | // The production server for pencilcode. 3 | // Just exposes serverbase, and does a setuid after serving starts. 4 | // 5 | 6 | var express = require('express'), 7 | path = require('path'), 8 | save = require('./save.js'), 9 | load = require('./load.js'), 10 | config = require('./config'), 11 | app = module.exports = express(), 12 | serverbase = require('./serverbase.js'), 13 | utils = require('./utils.js'); 14 | 15 | require('log-timestamp'); 16 | 17 | if (config.compactjson) { 18 | app.set('json spaces', 0); 19 | } 20 | 21 | serverbase.initialize(app); 22 | serverbase.initialize2(app); 23 | 24 | app.listen(process.env.PORT, function() { 25 | // Switch users. 26 | if (config.gid) { process.setgid(config.gid); } 27 | if (config.uid) { process.setuid(config.uid); } 28 | if (config.umask) { process.umask(parseInt(config.umask, 8)); } 29 | }); 30 | -------------------------------------------------------------------------------- /server/socket.js: -------------------------------------------------------------------------------- 1 | // A standalone socket.io reflector server. 2 | 3 | var DynamicServer = require('dynamic.io'), 4 | debug = require('debug')('reflector-socket.io'), 5 | config = require('./config'); 6 | 7 | io = DynamicServer({ 8 | host: process.env.HOST, // Enable virtual host handling 9 | publicStatus: true // Enable /socket.io/status page. 10 | }); 11 | io.setupNamespace('*', function(nsp) { 12 | nsp.on('connect', function(socket) { 13 | debug('connecting socket %s in nsp %s', socket.id, socket.nsp.fullname()); 14 | // All connections on the same host will talk to each other, 15 | // but the room=X url parameter can be supplied to set a specific room. 16 | var room = socket.handshake.query.room || null; 17 | if (room) { 18 | socket.join(room); 19 | } 20 | 21 | // Overriding onevent allows us to reflect every type of packet. 22 | socket.onevent = function(packet) { 23 | debug('got', packet); 24 | var args = packet.data || []; 25 | if (null != packet.id) { 26 | args.push(this.ack(packet.id)); 27 | } 28 | var s = socket.nsp; 29 | if (room) { 30 | s = s.to(room); 31 | } 32 | debug('reflecting', args, 'to', socket.nsp.fullname(), room || ''); 33 | s.emit.apply(s, args); 34 | } 35 | }); 36 | }); 37 | io.listen(process.env.PORT); 38 | 39 | if (config.gid) { process.setgid(config.gid); } 40 | if (config.uid) { process.setuid(config.uid); } 41 | console.log('Socket.io server listening on ' + process.env.PORT + 42 | ' (' + process.env.HOST + ') with uid ' + process.getuid()); 43 | -------------------------------------------------------------------------------- /test/aloha.js: -------------------------------------------------------------------------------- 1 | var phantom = require('node-phantom-simple'), 2 | phantomjs = require('phantomjs-prebuilt'), 3 | assert = require('assert'); 4 | 5 | 6 | describe('dev server', function() { 7 | var _ph, _page; 8 | before(function(done) { 9 | phantom.create({ path: phantomjs.path }, function(error, ph) { 10 | assert.ifError(error); 11 | _ph = ph; 12 | _ph.createPage(function(err,page) { 13 | _page = page; 14 | page.open('about:blank', function(err, status){ 15 | assert.ifError(err); 16 | assert.equal(status,'success'); 17 | done(); 18 | }); 19 | }); 20 | }); 21 | }); 22 | after(function() { 23 | _ph.exit(); 24 | }); 25 | it('should serve welcome page', function(done) { 26 | _page.open('http://localhost:8193/', function(err, status) { 27 | assert.ifError(err); 28 | assert.equal(status, 'success'); 29 | _page.evaluate(function() { 30 | return { 31 | h1: $('h1').eq(0).text(), 32 | }; 33 | }, function(err, result) { 34 | assert.ifError(err); 35 | assert.equal(result.h1, "About Pencil Code"); 36 | done(); 37 | }); 38 | }); 39 | }); 40 | it('should serve proxy.pac', function(done) { 41 | _page.open('http://localhost:8193/proxy.pac', function(err, status) { 42 | assert.ifError(err); 43 | assert.equal(status, 'success'); 44 | _page.get('content', function(err, content) { 45 | assert.ifError(err); 46 | assert.ok(/PROXY localhost:8193/.test(content)); 47 | done(); 48 | }); 49 | }); 50 | }); 51 | }); 52 | -------------------------------------------------------------------------------- /test/data/aaa/first: -------------------------------------------------------------------------------- 1 | speed(100); 2 | fd(100); 3 | (function() { dot(red); })() 4 | /**@META 5 | {"type":"text/javascript","libs":[{"name":"turtle","src":"//{site}/turtlebits.js"}]} 6 | META@**/ -------------------------------------------------------------------------------- /test/data/aaa/newfile: -------------------------------------------------------------------------------- 1 | fd 1000 2 | -------------------------------------------------------------------------------- /test/data/bbb/newfile: -------------------------------------------------------------------------------- 1 | fd 1000 2 | -------------------------------------------------------------------------------- /test/data/callie/circle: -------------------------------------------------------------------------------- 1 | pen blue 2 | rt 360, 100 3 | -------------------------------------------------------------------------------- /test/data/calvin/simple: -------------------------------------------------------------------------------- 1 | fd 250 2 | -------------------------------------------------------------------------------- /test/data/carl/sample: -------------------------------------------------------------------------------- 1 | rt 120 2 | -------------------------------------------------------------------------------- /test/data/ccc/newfile: -------------------------------------------------------------------------------- 1 | fd 1000 2 | -------------------------------------------------------------------------------- /test/data/first: -------------------------------------------------------------------------------- 1 | speed 2 2 | pen red 3 | for [1..25] 4 | fd 100 5 | rt 88 6 | -------------------------------------------------------------------------------- /test/data/intro: -------------------------------------------------------------------------------- 1 | # Welcome to Pencil Code. 2 | 3 | dot yellow, 160 # big yellow dot 4 | rt 50 # right turn 5 | bk 38 # slide back 6 | pen black, 7 # black pen 7 | rt 100 # right turn 8 | lt 120, 35 # left turn curve 9 | pen null # no pen 10 | lt 42 # left turn 11 | fd 50 # slide forward 12 | dot black, 20 # black dot 13 | lt 78 14 | fd 41 15 | dot black, 20 16 | rt 51 17 | bk 31.5 18 | rt 39 19 | 20 | # Words after # are comments that 21 | # are skipped by the computer. 22 | -------------------------------------------------------------------------------- /test/data/livetest/.key/k123: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/test/data/livetest/.key/k123 -------------------------------------------------------------------------------- /test/data/livetest/.thumb/first.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/test/data/livetest/.thumb/first.png -------------------------------------------------------------------------------- /test/data/livetest/first: -------------------------------------------------------------------------------- 1 | pen red 2 | rt 180, 100 3 | -------------------------------------------------------------------------------- /test/data/livetest/hi: -------------------------------------------------------------------------------- 1 | pen blue 2 | for x in [1..2] 3 | for s in [125, 25] 4 | fd s 5 | rt 90 6 | for y in [1..3] 7 | fd 50 8 | lt 90 9 | bk 25 10 | lt 90 11 | jump 125, 0 12 | for x in [1..2] 13 | for s in [125, 25] 14 | fd s 15 | rt 90 16 | -------------------------------------------------------------------------------- /test/data/livetest/shapes/.thumbs/test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/test/data/livetest/shapes/.thumbs/test.png -------------------------------------------------------------------------------- /test/data/livetest/shapes/test: -------------------------------------------------------------------------------- 1 | speed Infinity 2 | pen red 3 | for [1..360] 4 | rt 1 5 | fd 1 6 | 7 | -------------------------------------------------------------------------------- /test/data/withpass/.key/k123: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PencilCode/pencilcode/02bffa7f13fd9ce4ae302f83ba114bcefc7675cc/test/data/withpass/.key/k123 -------------------------------------------------------------------------------- /test/data/withpass/file1: -------------------------------------------------------------------------------- 1 | fd 1000 2 | -------------------------------------------------------------------------------- /test/data/zzz/anotherfile: -------------------------------------------------------------------------------- 1 | fd 1000 2 | -------------------------------------------------------------------------------- /test/data/zzz/newfile: -------------------------------------------------------------------------------- 1 | fd 1000 2 | -------------------------------------------------------------------------------- /wsgi/config.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | datadir = '/srv/pencilcode.net/data' 4 | staticdir = '/srv/pencilcode.net/top' 5 | cachedir = '/srv/pencilcode.net/cache' 6 | -------------------------------------------------------------------------------- /wsgi/goto.json: -------------------------------------------------------------------------------- 1 | { 2 | "uwsgi": { 3 | "uid": "www-data", 4 | "gid": "www-data", 5 | "umask": "022", 6 | "chmod-socket": "666", 7 | "master": true, 8 | "workers": 1, 9 | "plugin": "python", 10 | "file": "/srv/site/root/wsgi/goto.py" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /wsgi/img.json: -------------------------------------------------------------------------------- 1 | { 2 | "uwsgi": { 3 | "uid": "www-data", 4 | "gid": "www-data", 5 | "umask": "022", 6 | "chmod-socket": "666", 7 | "master": true, 8 | "workers": 3, 9 | "plugin": "python", 10 | "file": "/srv/site/root/wsgi/img.py" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /wsgi/load.json: -------------------------------------------------------------------------------- 1 | { 2 | "uwsgi": { 3 | "uid": "www-data", 4 | "gid": "www-data", 5 | "umask": "022", 6 | "chmod-socket": "666", 7 | "master": true, 8 | "workers": 3, 9 | "plugin": "python", 10 | "file": "/srv/site/root/wsgi/load.py" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /wsgi/save.json: -------------------------------------------------------------------------------- 1 | { 2 | "uwsgi": { 3 | "uid": "www-data", 4 | "gid": "www-data", 5 | "umask": "022", 6 | "chmod-socket": "666", 7 | "plugin": "python", 8 | "master": true, 9 | "workers": 3, 10 | "buffer-size": "65535", 11 | "file": "/srv/site/root/wsgi/save.py" 12 | } 13 | } 14 | --------------------------------------------------------------------------------