├── .dir-locals.el ├── .ghci ├── .github └── FUNDING.yml ├── .gitignore ├── Application.hs ├── Foundation.hs ├── Glot ├── DockerRun.hs ├── Language.hs ├── Pagination.hs └── Snippet.hs ├── Handler ├── Account.hs ├── Alert.hs ├── Api │ ├── Run.hs │ └── Snippets.hs ├── Common.hs ├── Compose.hs ├── Home.hs ├── Learn.hs ├── Meta.hs ├── Run.hs ├── Snippet.hs ├── Snippets.hs └── UserSnippets.hs ├── Import.hs ├── Import └── NoFoundation.hs ├── LICENSE ├── Model.hs ├── README.md ├── Settings.hs ├── Settings ├── Environment.hs └── StaticFiles.hs ├── Util ├── Alert.hs ├── Handler.hs ├── Hash.hs ├── Multiline.hs ├── Persistent.hs ├── Shakespare.hs ├── Slug.hs ├── Snippet.hs └── User.hs ├── Widget ├── CarbonAds.hs ├── Editor.hs ├── Languages.hs ├── Pagination.hs └── Share.hs ├── Yesod └── Auth │ └── Simple.hs ├── app ├── DevelMain.hs ├── devel.hs ├── image-tester.hs └── main.hs ├── build.sh ├── build_docker.sh ├── build_image_tester_nix.sh ├── build_nix.sh ├── config ├── favicon.ico ├── keter.yml ├── languages.dhall ├── models ├── robots.txt ├── routes ├── settings.yml ├── test-settings.yml └── types │ ├── Book.dhall │ ├── EditorConfig.dhall │ ├── Language.dhall │ └── RunConfig.dhall ├── default.nix ├── dev.sh ├── glot.cabal ├── service.nix ├── stack.yaml ├── stack.yaml.lock ├── static ├── fonts │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.svg │ ├── glyphicons-halflings-regular.ttf │ ├── glyphicons-halflings-regular.woff │ └── glyphicons-halflings-regular.woff2 ├── img │ ├── ats.svg │ ├── ats.svg.png │ ├── bash.svg │ ├── bash.svg.png │ ├── c.svg │ ├── c.svg.png │ ├── clisp.svg │ ├── clisp.svg.png │ ├── clojure.svg │ ├── clojure.svg.png │ ├── coffeescript.svg │ ├── coffeescript.svg.png │ ├── cpp.svg │ ├── cpp.svg.png │ ├── crystal.svg │ ├── crystal.svg.png │ ├── csharp.svg │ ├── csharp.svg.png │ ├── d.svg │ ├── d.svg.png │ ├── dart.svg │ ├── dart.svg.png │ ├── elixir.svg │ ├── elixir.svg.png │ ├── elm.svg │ ├── elm.svg.png │ ├── erlang.svg │ ├── erlang.svg.png │ ├── fsharp.svg │ ├── fsharp.svg.png │ ├── generic.svg │ ├── generic.svg.png │ ├── go.svg │ ├── go.svg.png │ ├── groovy.svg │ ├── groovy.svg.png │ ├── guile.svg │ ├── guile.svg.png │ ├── hare.svg │ ├── hare.svg.png │ ├── haskell.svg │ ├── haskell.svg.png │ ├── home_background.jpg │ ├── idris.svg │ ├── idris.svg.png │ ├── java.svg │ ├── java.svg.png │ ├── javascript.svg │ ├── javascript.svg.png │ ├── julia.svg │ ├── julia.svg.png │ ├── kotlin.svg │ ├── kotlin.svg.png │ ├── logo-gray.svg │ ├── logo-white.svg │ ├── lua.svg │ ├── lua.svg.png │ ├── mercury.svg │ ├── mercury.svg.png │ ├── nim.svg │ ├── nim.svg.png │ ├── nix.svg │ ├── nix.svg.png │ ├── ocaml.svg │ ├── ocaml.svg.png │ ├── pascal.svg │ ├── pascal.svg.png │ ├── perl.svg │ ├── perl.svg.png │ ├── perl6.svg │ ├── perl6.svg.png │ ├── php.svg │ ├── php.svg.png │ ├── plaintext.svg │ ├── plaintext.svg.png │ ├── python.svg │ ├── python.svg.png │ ├── ruby.svg │ ├── ruby.svg.png │ ├── rust.svg │ ├── rust.svg.png │ ├── sac.svg │ ├── sac.svg.png │ ├── scala.svg │ ├── scala.svg.png │ ├── swift.svg │ ├── swift.svg.png │ ├── typescript.svg │ ├── typescript.svg.png │ ├── zig.svg │ └── zig.svg.png ├── js │ ├── date.js │ ├── location.js │ └── xhr.js └── lib │ ├── ace │ ├── ace.js │ ├── ext-beautify.js │ ├── ext-chromevox.js │ ├── ext-code_lens.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-options.js │ ├── ext-prompt.js │ ├── ext-rtl.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-sublime.js │ ├── keybinding-vim.js │ ├── keybinding-vscode.js │ ├── mode-abap.js │ ├── mode-abc.js │ ├── mode-actionscript.js │ ├── mode-ada.js │ ├── mode-alda.js │ ├── mode-apache_conf.js │ ├── mode-apex.js │ ├── mode-applescript.js │ ├── mode-aql.js │ ├── mode-asciidoc.js │ ├── mode-asl.js │ ├── mode-assembly_x86.js │ ├── mode-ats.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-crystal.js │ ├── mode-csharp.js │ ├── mode-csound_document.js │ ├── mode-csound_orchestra.js │ ├── mode-csound_score.js │ ├── mode-csp.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-drools.js │ ├── mode-edifact.js │ ├── mode-eiffel.js │ ├── mode-ejs.js │ ├── mode-elixir.js │ ├── mode-elm.js │ ├── mode-erlang.js │ ├── mode-forth.js │ ├── mode-fortran.js │ ├── mode-fsharp.js │ ├── mode-fsl.js │ ├── mode-ftl.js │ ├── mode-gcode.js │ ├── mode-gherkin.js │ ├── mode-gitignore.js │ ├── mode-glsl.js │ ├── mode-gobstones.js │ ├── mode-golang.js │ ├── mode-graphqlschema.js │ ├── mode-groovy.js │ ├── mode-haml.js │ ├── mode-handlebars.js │ ├── mode-haskell.js │ ├── mode-haskell_cabal.js │ ├── mode-haxe.js │ ├── mode-hjson.js │ ├── mode-html.js │ ├── mode-html_elixir.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-json5.js │ ├── mode-jsoniq.js │ ├── mode-jsp.js │ ├── mode-jssm.js │ ├── mode-jsx.js │ ├── mode-julia.js │ ├── mode-kotlin.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-logtalk.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-maze.js │ ├── mode-mediawiki.js │ ├── mode-mel.js │ ├── mode-mips_assembler.js │ ├── mode-mipsassembler.js │ ├── mode-mixal.js │ ├── mode-mushcode.js │ ├── mode-mysql.js │ ├── mode-nginx.js │ ├── mode-nim.js │ ├── mode-nix.js │ ├── mode-nsis.js │ ├── mode-nunjucks.js │ ├── mode-objectivec.js │ ├── mode-ocaml.js │ ├── mode-pascal.js │ ├── mode-perl.js │ ├── mode-perl6.js │ ├── mode-pgsql.js │ ├── mode-php.js │ ├── mode-php_laravel_blade.js │ ├── mode-pig.js │ ├── mode-plain_text.js │ ├── mode-powershell.js │ ├── mode-praat.js │ ├── mode-prisma.js │ ├── mode-prolog.js │ ├── mode-properties.js │ ├── mode-protobuf.js │ ├── mode-puppet.js │ ├── mode-python.js │ ├── mode-qml.js │ ├── mode-r.js │ ├── mode-razor.js │ ├── mode-rdoc.js │ ├── mode-red.js │ ├── mode-redshift.js │ ├── mode-rhtml.js │ ├── mode-rst.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-slim.js │ ├── mode-smarty.js │ ├── mode-snippets.js │ ├── mode-soy_template.js │ ├── mode-space.js │ ├── mode-sparql.js │ ├── mode-sql.js │ ├── mode-sqlserver.js │ ├── mode-stylus.js │ ├── mode-svg.js │ ├── mode-swift.js │ ├── mode-swig.js │ ├── mode-tcl.js │ ├── mode-terraform.js │ ├── mode-tex.js │ ├── mode-text.js │ ├── mode-textile.js │ ├── mode-toml.js │ ├── mode-tsx.js │ ├── mode-turtle.js │ ├── mode-twig.js │ ├── mode-typescript.js │ ├── mode-vala.js │ ├── mode-vbscript.js │ ├── mode-velocity.js │ ├── mode-verilog.js │ ├── mode-vhdl.js │ ├── mode-visualforce.js │ ├── mode-wollok.js │ ├── mode-xml.js │ ├── mode-xquery.js │ ├── mode-yaml.js │ ├── mode-zeek.js │ ├── snippets │ │ ├── abap.js │ │ ├── abc.js │ │ ├── actionscript.js │ │ ├── ada.js │ │ ├── alda.js │ │ ├── apache_conf.js │ │ ├── apex.js │ │ ├── applescript.js │ │ ├── aql.js │ │ ├── asciidoc.js │ │ ├── asl.js │ │ ├── assembly_x86.js │ │ ├── autohotkey.js │ │ ├── batchfile.js │ │ ├── c9search.js │ │ ├── c_cpp.js │ │ ├── cirru.js │ │ ├── clojure.js │ │ ├── cobol.js │ │ ├── coffee.js │ │ ├── coldfusion.js │ │ ├── crystal.js │ │ ├── csharp.js │ │ ├── csound_document.js │ │ ├── csound_orchestra.js │ │ ├── csound_score.js │ │ ├── csp.js │ │ ├── css.js │ │ ├── curly.js │ │ ├── d.js │ │ ├── dart.js │ │ ├── diff.js │ │ ├── django.js │ │ ├── dockerfile.js │ │ ├── dot.js │ │ ├── drools.js │ │ ├── edifact.js │ │ ├── eiffel.js │ │ ├── ejs.js │ │ ├── elixir.js │ │ ├── elm.js │ │ ├── erlang.js │ │ ├── forth.js │ │ ├── fortran.js │ │ ├── fsharp.js │ │ ├── fsl.js │ │ ├── ftl.js │ │ ├── gcode.js │ │ ├── gherkin.js │ │ ├── gitignore.js │ │ ├── glsl.js │ │ ├── gobstones.js │ │ ├── golang.js │ │ ├── graphqlschema.js │ │ ├── groovy.js │ │ ├── haml.js │ │ ├── handlebars.js │ │ ├── haskell.js │ │ ├── haskell_cabal.js │ │ ├── haxe.js │ │ ├── hjson.js │ │ ├── html.js │ │ ├── html_elixir.js │ │ ├── html_ruby.js │ │ ├── ini.js │ │ ├── io.js │ │ ├── jack.js │ │ ├── jade.js │ │ ├── java.js │ │ ├── javascript.js │ │ ├── json.js │ │ ├── json5.js │ │ ├── jsoniq.js │ │ ├── jsp.js │ │ ├── jssm.js │ │ ├── jsx.js │ │ ├── julia.js │ │ ├── kotlin.js │ │ ├── latex.js │ │ ├── lean.js │ │ ├── less.js │ │ ├── liquid.js │ │ ├── lisp.js │ │ ├── live_script.js │ │ ├── livescript.js │ │ ├── logiql.js │ │ ├── logtalk.js │ │ ├── lsl.js │ │ ├── lua.js │ │ ├── luapage.js │ │ ├── lucene.js │ │ ├── makefile.js │ │ ├── markdown.js │ │ ├── mask.js │ │ ├── matlab.js │ │ ├── maze.js │ │ ├── mediawiki.js │ │ ├── mel.js │ │ ├── mips_assembler.js │ │ ├── mipsassembler.js │ │ ├── mixal.js │ │ ├── mushcode.js │ │ ├── mysql.js │ │ ├── nginx.js │ │ ├── nim.js │ │ ├── nix.js │ │ ├── nsis.js │ │ ├── nunjucks.js │ │ ├── objectivec.js │ │ ├── ocaml.js │ │ ├── pascal.js │ │ ├── perl.js │ │ ├── perl6.js │ │ ├── pgsql.js │ │ ├── php.js │ │ ├── php_laravel_blade.js │ │ ├── pig.js │ │ ├── plain_text.js │ │ ├── powershell.js │ │ ├── praat.js │ │ ├── prisma.js │ │ ├── prolog.js │ │ ├── properties.js │ │ ├── protobuf.js │ │ ├── puppet.js │ │ ├── python.js │ │ ├── qml.js │ │ ├── r.js │ │ ├── razor.js │ │ ├── rdoc.js │ │ ├── red.js │ │ ├── redshift.js │ │ ├── rhtml.js │ │ ├── rst.js │ │ ├── ruby.js │ │ ├── rust.js │ │ ├── sass.js │ │ ├── scad.js │ │ ├── scala.js │ │ ├── scheme.js │ │ ├── scss.js │ │ ├── sh.js │ │ ├── sjs.js │ │ ├── slim.js │ │ ├── smarty.js │ │ ├── snippets.js │ │ ├── soy_template.js │ │ ├── space.js │ │ ├── sparql.js │ │ ├── sql.js │ │ ├── sqlserver.js │ │ ├── stylus.js │ │ ├── svg.js │ │ ├── swift.js │ │ ├── swig.js │ │ ├── tcl.js │ │ ├── terraform.js │ │ ├── tex.js │ │ ├── text.js │ │ ├── textile.js │ │ ├── toml.js │ │ ├── tsx.js │ │ ├── turtle.js │ │ ├── twig.js │ │ ├── typescript.js │ │ ├── vala.js │ │ ├── vbscript.js │ │ ├── velocity.js │ │ ├── verilog.js │ │ ├── vhdl.js │ │ ├── visualforce.js │ │ ├── wollok.js │ │ ├── xml.js │ │ ├── xquery.js │ │ ├── yaml.js │ │ └── zeek.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-dracula.js │ ├── theme-dreamweaver.js │ ├── theme-eclipse.js │ ├── theme-github.js │ ├── theme-gob.js │ ├── theme-gruvbox.js │ ├── theme-idle_fingers.js │ ├── theme-iplastic.js │ ├── theme-katzenmilch.js │ ├── theme-kr_theme.js │ ├── theme-kuroir.js │ ├── theme-merbivore.js │ ├── theme-merbivore_soft.js │ ├── theme-mono_industrial.js │ ├── theme-monokai.js │ ├── theme-nord_dark.js │ ├── theme-pastel_on_dark.js │ ├── theme-solarized_dark.js │ ├── theme-solarized_light.js │ ├── theme-sqlserver.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-base.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 │ ├── bootstrap │ ├── bootstrap.min.css │ ├── bootstrap.min.css.map │ └── bootstrap.min.js │ ├── font-awesome │ ├── css │ │ ├── font-awesome.css │ │ └── font-awesome.min.css │ └── fonts │ │ ├── FontAwesome.otf │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.svg │ │ ├── fontawesome-webfont.ttf │ │ ├── fontawesome-webfont.woff │ │ └── fontawesome-webfont.woff2 │ └── jquery │ └── jquery.min.js └── templates ├── account ├── profile.hamlet ├── profile.julius ├── profile.lucius ├── token.hamlet ├── token.julius └── token.lucius ├── alert.hamlet ├── auth ├── confirm.hamlet ├── confirm.julius ├── confirm.lucius ├── confirmation-email-sent.hamlet ├── confirmation-email-sent.julius ├── confirmation-email-sent.lucius ├── invalid-token.hamlet ├── invalid-token.julius ├── invalid-token.lucius ├── login.hamlet ├── login.julius ├── login.lucius ├── register-success.hamlet ├── register-success.julius ├── register-success.lucius ├── register.hamlet ├── register.julius ├── register.lucius ├── reset-password-email-sent.hamlet ├── reset-password-email-sent.julius ├── reset-password-email-sent.lucius ├── reset-password.hamlet ├── reset-password.julius ├── reset-password.lucius ├── set-password.hamlet ├── set-password.julius ├── set-password.lucius ├── user-exists.hamlet ├── user-exists.julius └── user-exists.lucius ├── compose.hamlet ├── compose.julius ├── compose.lucius ├── default-layout-wrapper.hamlet ├── default-layout.hamlet ├── email ├── register.txt └── reset-password.txt ├── homepage.hamlet ├── homepage.julius ├── homepage.lucius ├── learn-language.hamlet ├── learn-language.lucius ├── learn.hamlet ├── learn.lucius ├── meta ├── about.hamlet ├── about.julius ├── about.lucius ├── api-docs.hamlet ├── api-docs.julius └── api-docs.lucius ├── new.hamlet ├── new.julius ├── new.lucius ├── snippet.hamlet ├── snippet.julius ├── snippet.lucius ├── snippet ├── embed.hamlet ├── embed.julius ├── embed.lucius ├── opengraph.hamlet ├── raw.hamlet └── twitter-card.hamlet ├── snippets.hamlet ├── snippets.julius ├── snippets.lucius ├── user-snippets.hamlet ├── user-snippets.julius ├── user-snippets.lucius └── widgets ├── alert.julius ├── alert.lucius ├── analytics.julius ├── carbon-ads.hamlet ├── carbon-ads.lucius ├── editor.hamlet ├── editor.julius ├── editor.lucius ├── editor ├── footer.hamlet ├── footer.julius ├── footer.lucius ├── meta.hamlet ├── meta.julius ├── meta.lucius ├── settings.hamlet ├── settings.julius └── settings.lucius ├── languages.hamlet ├── languages.julius ├── languages.lucius ├── navbar.hamlet ├── navbar.julius ├── navbar.lucius ├── pagination.hamlet ├── pagination.julius ├── pagination.lucius ├── share.hamlet ├── share.julius └── share.lucius /.dir-locals.el: -------------------------------------------------------------------------------- 1 | ((haskell-mode . ((haskell-indent-spaces . 4) 2 | (haskell-process-use-ghci . t))) 3 | (hamlet-mode . ((hamlet/basic-offset . 4) 4 | (haskell-process-use-ghci . t)))) 5 | -------------------------------------------------------------------------------- /.ghci: -------------------------------------------------------------------------------- 1 | :set -i.:config:dist/build/autogen 2 | :set -DDEVELOPMENT 3 | :set -XCPP -XTemplateHaskell -XQuasiQuotes -XTypeFamilies -XFlexibleContexts -XGADTs -XOverloadedStrings -XMultiParamTypeClasses -XGeneralizedNewtypeDeriving -XEmptyDataDecls -XDeriveDataTypeable 4 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: [prasmussen] 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | dist* 2 | static/tmp/ 3 | static/combined/ 4 | config/client_session_key.aes 5 | *.hi 6 | *.o 7 | *.sqlite3 8 | .hsenv* 9 | cabal-dev/ 10 | yesod-devel/ 11 | .cabal-sandbox 12 | cabal.sandbox.config 13 | .DS_Store 14 | *.swp 15 | test 16 | devel.sh 17 | convert_svg.sh 18 | .stack-work 19 | .stack 20 | release 21 | notes.txt 22 | result 23 | dev_prod.sh 24 | -------------------------------------------------------------------------------- /Handler/Alert.hs: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE OverloadedStrings, DeriveGeneric #-} 2 | module Handler.Alert where 3 | 4 | import Import 5 | import Util.Alert (dangerText) 6 | 7 | data AlertMessage = AlertMessage { 8 | message :: Text 9 | } deriving (Show, Generic) 10 | 11 | instance FromJSON AlertMessage 12 | 13 | postAlertDangerR :: Handler Value 14 | postAlertDangerR = do 15 | payload <- requireCheckJsonBody :: Handler AlertMessage 16 | let msg = dangerText $ message payload 17 | return $ object ["message" .= msg] 18 | -------------------------------------------------------------------------------- /Handler/Common.hs: -------------------------------------------------------------------------------- 1 | -- | Common handler functions. 2 | module Handler.Common where 3 | 4 | import Data.FileEmbed (embedFile) 5 | import Import 6 | 7 | -- These handlers embed files in the executable at compile time to avoid a 8 | -- runtime dependency, and for efficiency. 9 | 10 | getFaviconR :: Handler TypedContent 11 | getFaviconR = return $ TypedContent "image/x-icon" 12 | $ toContent $(embedFile "config/favicon.ico") 13 | 14 | getRobotsR :: Handler TypedContent 15 | getRobotsR = return $ TypedContent typePlain 16 | $ toContent $(embedFile "config/robots.txt") 17 | -------------------------------------------------------------------------------- /Handler/Home.hs: -------------------------------------------------------------------------------- 1 | module Handler.Home where 2 | 3 | import Import 4 | import Util.Handler (title) 5 | import Widget.Languages (languagesWidget) 6 | import Data.Function ((&)) 7 | import qualified Util.Handler as Handler 8 | import qualified Glot.Language as Language 9 | 10 | getHomeR :: Handler Html 11 | getHomeR = do 12 | defaultLayout $ do 13 | App{..} <- getYesod 14 | setTitle $ title "Home" 15 | setDescription (metaDescription languages) 16 | Handler.setCanonicalUrl HomeR 17 | $(widgetFile "homepage") 18 | 19 | 20 | metaDescription :: [Language.Language] -> Text 21 | metaDescription languages = 22 | [ "Run code online in the browser. " 23 | , pack $ show $ length languages 24 | , " languages supported: " 25 | , languages 26 | & map Language.name 27 | & intercalate "," 28 | 29 | ] 30 | & concat 31 | -------------------------------------------------------------------------------- /Handler/Learn.hs: -------------------------------------------------------------------------------- 1 | module Handler.Learn where 2 | 3 | import Import 4 | import Widget.Editor (editorWidget, footerWidget) 5 | import Widget.Languages (languagesWidget) 6 | import Util.Alert (successHtml) 7 | import qualified Network.Wai as Wai 8 | import qualified Text.Blaze as Blaze 9 | import qualified Util.Handler as Handler 10 | import qualified Util.Snippet as Snippet 11 | import qualified Glot.Snippet 12 | import qualified Data.Text.Encoding as Encoding 13 | import qualified Database.Persist.Sql as Sql 14 | import qualified Data.Aeson as Aeson 15 | import qualified Data.Time.Clock.POSIX as PosixClock 16 | import qualified Data.Time.Clock as Clock 17 | import qualified Numeric 18 | import qualified Data.List.NonEmpty as NonEmpty 19 | import qualified Glot.Language as Language 20 | import qualified Data.Text as Text 21 | import Data.Function ((&)) 22 | import Prelude ((!!)) 23 | 24 | 25 | 26 | getLearnR :: Handler Html 27 | getLearnR = do 28 | defaultLayout $ do 29 | App{..} <- getYesod 30 | 31 | setTitle $ Handler.title "Learn programming - Choose language" 32 | Handler.setCanonicalUrl LearnR 33 | $(widgetFile "learn") 34 | 35 | getLearnLanguageR :: Language.Id -> Handler Html 36 | getLearnLanguageR langId = do 37 | language <- Handler.getLanguage langId 38 | defaultLayout $ do 39 | setTitle (learnLanguageTitle language) 40 | setDescription (learnLanguageDescription language) 41 | Handler.setCanonicalUrl (LearnLanguageR langId) 42 | $(widgetFile "learn-language") 43 | 44 | 45 | learnLanguageTitle :: Language.Language -> Blaze.Markup 46 | learnLanguageTitle language = 47 | Handler.titleConcat ["Learn ", Language.name language] 48 | 49 | 50 | learnLanguageDescription :: Language.Language -> Text 51 | learnLanguageDescription language = 52 | concat ["Best books for learning the ", Language.name language, " programming language."] 53 | -------------------------------------------------------------------------------- /Handler/Meta.hs: -------------------------------------------------------------------------------- 1 | module Handler.Meta where 2 | 3 | import Import 4 | import Util.Handler (title) 5 | import qualified Util.Handler as Handler 6 | 7 | 8 | getMetaAboutR :: Handler Html 9 | getMetaAboutR = 10 | defaultLayout $ do 11 | setTitle $ title "About" 12 | Handler.setCanonicalUrl MetaAboutR 13 | $(widgetFile "meta/about") 14 | 15 | getMetaApiDocsR :: Handler Html 16 | getMetaApiDocsR = 17 | defaultLayout $ do 18 | setTitle $ title "Api Docs" 19 | Handler.setCanonicalUrl MetaApiDocsR 20 | $(widgetFile "meta/api-docs") 21 | -------------------------------------------------------------------------------- /Import.hs: -------------------------------------------------------------------------------- 1 | module Import 2 | ( module Import 3 | ) where 4 | 5 | import Foundation as Import 6 | import Import.NoFoundation as Import 7 | -------------------------------------------------------------------------------- /Import/NoFoundation.hs: -------------------------------------------------------------------------------- 1 | module Import.NoFoundation 2 | ( module Import 3 | ) where 4 | 5 | import ClassyPrelude.Yesod as Import hiding (languages) 6 | import Model as Import 7 | import Settings as Import 8 | import Settings.StaticFiles as Import 9 | import Yesod.Auth as Import 10 | import Yesod.Core.Types as Import (loggerSet) 11 | import Yesod.Default.Config2 as Import 12 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Petter Rasmussen 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Model.hs: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE DataKinds #-} 2 | {-# LANGUAGE FlexibleInstances #-} 3 | {-# LANGUAGE DerivingStrategies #-} 4 | {-# LANGUAGE StandaloneDeriving #-} 5 | {-# LANGUAGE UndecidableInstances #-} 6 | 7 | module Model where 8 | 9 | import ClassyPrelude.Yesod 10 | import Database.Persist.Quasi 11 | import qualified Glot.Language as Language 12 | 13 | -- You can define all of your database entities in the entities file. 14 | -- You can find more information on persistent and how to declare entities 15 | -- at: 16 | -- http://www.yesodweb.com/book/persistent/ 17 | share [mkPersist sqlSettings, mkMigrate "migrateAll"] 18 | $(persistFileWith lowerCaseSettings "config/models") 19 | -------------------------------------------------------------------------------- /Settings/Environment.hs: -------------------------------------------------------------------------------- 1 | module Settings.Environment ( 2 | dockerRunBaseUrl, 3 | dockerRunAccessToken, 4 | dockerRunResponseTimeout, 5 | runApiBaseUrl, 6 | runApiAdminToken, 7 | runApiAnonymousToken, 8 | mailgunDomain, 9 | mailgunApiKey, 10 | emailFromAddress, 11 | analyticsId, 12 | disableAds 13 | ) where 14 | 15 | import ClassyPrelude.Yesod 16 | import System.Environment (getEnv, lookupEnv) 17 | import qualified Prelude 18 | 19 | 20 | dockerRunBaseUrl :: IO Text 21 | dockerRunBaseUrl = fromString <$> getEnv "DOCKER_RUN_BASE_URL" 22 | 23 | dockerRunAccessToken :: IO ByteString 24 | dockerRunAccessToken = fromString <$> getEnv "DOCKER_RUN_ACCESS_TOKEN" 25 | 26 | -- TODO: Return either 27 | dockerRunResponseTimeout :: IO Int 28 | dockerRunResponseTimeout = Prelude.read <$> getEnv "DOCKER_RUN_RESPONSE_TIMEOUT" 29 | 30 | runApiBaseUrl :: IO String 31 | runApiBaseUrl = getEnv "RUN_API_BASE_URL" 32 | 33 | runApiAdminToken :: IO Text 34 | runApiAdminToken = pack <$> getEnv "RUN_API_ADMIN_TOKEN" 35 | 36 | runApiAnonymousToken :: IO Text 37 | runApiAnonymousToken = pack <$> getEnv "RUN_API_ANONYMOUS_TOKEN" 38 | 39 | mailgunDomain :: IO String 40 | mailgunDomain = getEnv "MAILGUN_DOMAIN" 41 | 42 | mailgunApiKey :: IO String 43 | mailgunApiKey = getEnv "MAILGUN_API_KEY" 44 | 45 | emailFromAddress :: IO Text 46 | emailFromAddress = pack <$> getEnv "EMAIL_FROM_ADDRESS" 47 | 48 | analyticsId :: IO (Maybe String) 49 | analyticsId = lookupEnv "ANALYTICS_ID" 50 | 51 | disableAds :: IO Bool 52 | disableAds = do 53 | val <- lookupEnv "DISABLE_ADS" 54 | let str = fromMaybe "false" val 55 | return $ str == "true" 56 | -------------------------------------------------------------------------------- /Settings/StaticFiles.hs: -------------------------------------------------------------------------------- 1 | module Settings.StaticFiles where 2 | 3 | import Settings (appStaticDir, compileTimeAppSettings) 4 | import Yesod.Static (staticFiles) 5 | 6 | -- This generates easy references to files in the static directory at compile time, 7 | -- giving you compile-time verification that referenced files exist. 8 | -- Warning: any files added to your static directory during run-time can't be 9 | -- accessed this way. You'll have to use their FilePath or URL to access them. 10 | -- 11 | -- For example, to refer to @static/js/script.js@ via an identifier, you'd use: 12 | -- 13 | -- js_script_js 14 | -- 15 | -- If the identifier is not available, you may use: 16 | -- 17 | -- StaticFile ["js", "script.js"] [] 18 | staticFiles (appStaticDir compileTimeAppSettings) 19 | -------------------------------------------------------------------------------- /Util/Alert.hs: -------------------------------------------------------------------------------- 1 | module Util.Alert ( 2 | successHtml, 3 | infoHtml, 4 | warningHtml, 5 | dangerHtml, 6 | successText, 7 | infoText, 8 | warningText, 9 | dangerText, 10 | ) where 11 | 12 | import ClassyPrelude.Yesod 13 | import Text.Hamlet (shamletFile) 14 | import Text.Blaze.Html.Renderer.Text (renderHtml) 15 | 16 | data AlertClass = Success | Info | Warning | Danger deriving Eq 17 | 18 | instance Show AlertClass where 19 | show Success = "alert-success" 20 | show Info = "alert-info" 21 | show Warning = "alert-warning" 22 | show Danger = "alert-danger" 23 | 24 | successHtml :: Text -> Html 25 | successHtml = render Success 26 | 27 | infoHtml :: Text -> Html 28 | infoHtml = render Info 29 | 30 | warningHtml :: Text -> Html 31 | warningHtml = render Warning 32 | 33 | dangerHtml :: Text -> Html 34 | dangerHtml = render Danger 35 | 36 | successText :: Text -> Text 37 | successText = toStrict . renderHtml . successHtml 38 | 39 | infoText :: Text -> Text 40 | infoText = toStrict . renderHtml . infoHtml 41 | 42 | warningText :: Text -> Text 43 | warningText = toStrict . renderHtml . warningHtml 44 | 45 | dangerText :: Text -> Text 46 | dangerText = toStrict . renderHtml . dangerHtml 47 | 48 | render :: AlertClass -> Text -> Html 49 | render cls message = 50 | $(shamletFile "templates/alert.hamlet") 51 | -------------------------------------------------------------------------------- /Util/Hash.hs: -------------------------------------------------------------------------------- 1 | module Util.Hash ( 2 | sha1, 3 | sha1Lazy, 4 | sha1Text 5 | ) where 6 | 7 | import ClassyPrelude.Yesod hiding (unpack, hash) 8 | import Text.Printf (printf) 9 | import Data.ByteString (unpack) 10 | import qualified Data.ByteString.Lazy as L 11 | import Crypto.Hash.SHA1 (hash, hashlazy) 12 | 13 | sha1 :: ByteString -> Text 14 | sha1 bytes = pack $ unpack (hash bytes) >>= printf "%02x" 15 | 16 | sha1Lazy :: L.ByteString -> Text 17 | sha1Lazy bytes = pack $ unpack (hashlazy bytes) >>= printf "%02x" 18 | 19 | sha1Text :: Text -> Text 20 | sha1Text = sha1 . encodeUtf8 21 | -------------------------------------------------------------------------------- /Util/Multiline.hs: -------------------------------------------------------------------------------- 1 | module Util.Multiline 2 | ( multiline 3 | ) where 4 | 5 | import qualified Language.Haskell.TH as TH 6 | import qualified Language.Haskell.TH.Quote as Quote 7 | import qualified Prelude 8 | 9 | 10 | multiline :: Quote.QuasiQuoter 11 | multiline = Quote.QuasiQuoter 12 | { Quote.quoteExp = TH.stringE 13 | , Quote.quotePat = \_ -> Prelude.fail "illegal raw string QuasiQuote (allowed as expression only, used as a pattern)" 14 | , Quote.quoteType = \_ -> Prelude.fail "illegal raw string QuasiQuote (allowed as expression only, used as a type)" 15 | , Quote.quoteDec = \_ -> Prelude.fail "illegal raw string QuasiQuote (allowed as expression only, used as a declaration)" 16 | } 17 | -------------------------------------------------------------------------------- /Util/Persistent.hs: -------------------------------------------------------------------------------- 1 | module Util.Persistent 2 | ( RawQuery(..) 3 | , GetEntitiesWithCountQuery(..) 4 | , EntitiesWithCount(..) 5 | , getEntitiesWithCount 6 | , LimitOffset(..) 7 | ) where 8 | 9 | import Import 10 | import qualified Database.Persist.Sql as Sql 11 | import Data.Function ((&)) 12 | 13 | 14 | data RawQuery = RawQuery 15 | { query :: Text 16 | , queryValues :: [PersistValue] 17 | } 18 | 19 | 20 | data GetEntitiesWithCountQuery = GetEntitiesWithCountQuery 21 | { getEntities :: RawQuery 22 | , countEntities :: RawQuery 23 | } 24 | 25 | 26 | data EntitiesWithCount a = EntitiesWithCount 27 | { entities :: [a] 28 | , entitiesCount :: Int64 29 | } 30 | 31 | 32 | getEntitiesWithCount :: Sql.RawSql a => GetEntitiesWithCountQuery -> Handler (EntitiesWithCount a) 33 | getEntitiesWithCount GetEntitiesWithCountQuery{..} = do 34 | (entities, entitiesCount) <- runDB $ do 35 | entities <- Sql.rawSql (query getEntities) (queryValues getEntities) 36 | entityCount <- Sql.rawSql (query countEntities) (queryValues countEntities) 37 | pure (entities, entityCount) 38 | pure $ EntitiesWithCount 39 | { entities = entities 40 | , entitiesCount = 41 | entitiesCount 42 | & listToMaybe 43 | & fmap Sql.unSingle 44 | & fromMaybe 0 45 | } 46 | 47 | 48 | data LimitOffset = LimitOffset 49 | { limit :: Int 50 | , offset :: Int 51 | } 52 | -------------------------------------------------------------------------------- /Util/Shakespare.hs: -------------------------------------------------------------------------------- 1 | module Util.Shakespare ( 2 | stextFile 3 | ) where 4 | 5 | import Prelude 6 | import Language.Haskell.TH 7 | import Text.Shakespeare 8 | import Text.Shakespeare.Text (toText) 9 | 10 | settings :: Q ShakespeareSettings 11 | settings = do 12 | toTExp <- [|toText|] 13 | wrapExp <- [|id|] 14 | unWrapExp <- [|id|] 15 | return $ defaultShakespeareSettings { toBuilder = toTExp 16 | , wrap = wrapExp 17 | , unwrap = unWrapExp 18 | } 19 | 20 | stextFile :: FilePath -> Q Exp 21 | stextFile fp = do 22 | rs <- settings 23 | shakespeareFile rs { justVarInterpolation = True } fp 24 | -------------------------------------------------------------------------------- /Util/Slug.hs: -------------------------------------------------------------------------------- 1 | module Util.Slug ( 2 | mkSlug 3 | ) where 4 | 5 | import ClassyPrelude.Yesod 6 | import Text.Regex (subRegex, mkRegex) 7 | 8 | mkSlug :: Text -> Text 9 | mkSlug t = pack . replaceDotPrefix . replaceHyphenPrefix . ensureSingleDotHypen . ensureSingleDot . ensureSingleHypen . replaceDisallowed . unpack $ toLower t 10 | 11 | replaceDotPrefix :: String -> String 12 | replaceDotPrefix = replace' "^\\." "dot" 13 | 14 | replaceHyphenPrefix :: String -> String 15 | replaceHyphenPrefix = replace' "^-" "hyphen" 16 | 17 | ensureSingleDotHypen :: String -> String 18 | ensureSingleDotHypen = replace' "[-.]{2,}" "-" 19 | 20 | ensureSingleDot :: String -> String 21 | ensureSingleDot = replace' "\\.{2,}" "." 22 | 23 | ensureSingleHypen :: String -> String 24 | ensureSingleHypen = replace' "-{2,}" "-" 25 | 26 | replaceDisallowed :: String -> String 27 | replaceDisallowed = replace' "[^a-z0-9.-]+" "-" 28 | 29 | replace' :: String -> String -> String -> String 30 | replace' pattern replacement str = subRegex (mkRegex pattern) str replacement 31 | -------------------------------------------------------------------------------- /Util/User.hs: -------------------------------------------------------------------------------- 1 | module Util.User ( 2 | newToken 3 | ) where 4 | 5 | import ClassyPrelude.Yesod 6 | import Data.UUID.V4 (nextRandom) 7 | import Data.UUID (toString) 8 | 9 | newToken :: IO Text 10 | newToken = pack . toString <$> nextRandom 11 | -------------------------------------------------------------------------------- /Widget/CarbonAds.hs: -------------------------------------------------------------------------------- 1 | module Widget.CarbonAds ( 2 | carbonAdsWidget 3 | ) where 4 | 5 | import Import 6 | 7 | carbonAdsWidget :: Widget 8 | carbonAdsWidget = $(widgetFile "widgets/carbon-ads") 9 | -------------------------------------------------------------------------------- /Widget/Languages.hs: -------------------------------------------------------------------------------- 1 | module Widget.Languages ( 2 | languagesWidget 3 | ) where 4 | 5 | import Import 6 | import qualified Glot.Language as Language 7 | 8 | languagesWidget :: [Language.Language] -> Widget 9 | languagesWidget languages = 10 | $(widgetFile "widgets/languages") 11 | -------------------------------------------------------------------------------- /Widget/Pagination.hs: -------------------------------------------------------------------------------- 1 | module Widget.Pagination ( 2 | paginationWidget 3 | ) where 4 | 5 | import Import 6 | import qualified Glot.Pagination as Pagination 7 | 8 | paginationWidget :: Route App -> Pagination.Pagination -> Int -> [(Text, Text)] -> Widget 9 | paginationWidget route pagination currentPage queryExtra = 10 | $(widgetFile "widgets/pagination") 11 | 12 | query :: Text -> [(Text, Text)] -> [(Text, Text)] 13 | query page queryExtra = ("page", page):queryExtra 14 | -------------------------------------------------------------------------------- /Widget/Share.hs: -------------------------------------------------------------------------------- 1 | module Widget.Share ( 2 | shareWidget 3 | ) where 4 | 5 | import Import 6 | 7 | shareWidget :: Text -> Widget 8 | shareWidget slug = 9 | $(widgetFile "widgets/share") 10 | -------------------------------------------------------------------------------- /app/devel.hs: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE PackageImports #-} 2 | import "glot" Application (develMain) 3 | import Prelude (IO) 4 | 5 | main :: IO () 6 | main = develMain 7 | -------------------------------------------------------------------------------- /app/main.hs: -------------------------------------------------------------------------------- 1 | import Prelude (IO) 2 | import Application (appMain) 3 | 4 | main :: IO () 5 | main = appMain 6 | -------------------------------------------------------------------------------- /build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # This script is meant to be used in combination with build_docker.sh 3 | set -e 4 | 5 | stack_root="/build/.stack" 6 | 7 | stack --stack-root $stack_root setup 8 | stack --stack-root $stack_root clean 9 | stack --stack-root $stack_root build 10 | 11 | rm -rf /build/release || true 12 | mkdir -p /build/release/glot-www 13 | 14 | mv /build/.stack-work/dist/x86_64-*/Cabal-*/build/glot/glot /build/release/glot-www/ 15 | cp -rf /build/{config,static} /build/release/glot-www/ 16 | 17 | tar -C /build/release -czvf /build/release/glot-www.tar.gz glot-www 18 | -------------------------------------------------------------------------------- /build_docker.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # This script requires the following docker image to exist 4 | # 5 | # FROM ubuntu:16.04 6 | # MAINTAINER Petter Rasmussen "petter.rasmussen@gmail.com" 7 | # 8 | # RUN apt-get update \ 9 | # && apt-get install --no-install-recommends -y postgresql-server-dev-all \ 10 | # && apt-get install --no-install-recommends --no-install-suggests -y curl ca-certificates \ 11 | # && curl -sSL https://get.haskellstack.org/ | sh 12 | 13 | # # Set locale 14 | # ENV LANG C.UTF-8 15 | # 16 | # RUN mkdir /build 17 | # VOLUME ["/build"] 18 | # WORKDIR /build 19 | # CMD "/build/build.sh" 20 | 21 | 22 | docker run \ 23 | --volume $(pwd):/build \ 24 | --rm \ 25 | prasmussen/glot-www-build:latest 26 | -------------------------------------------------------------------------------- /build_image_tester_nix.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | nix-build -A glot.components.exes.glot-image-tester default.nix 4 | -------------------------------------------------------------------------------- /build_nix.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | nix-build -A glot.components.exes.glot default.nix 4 | -------------------------------------------------------------------------------- /config/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/config/favicon.ico -------------------------------------------------------------------------------- /config/models: -------------------------------------------------------------------------------- 1 | User 2 | email Text 3 | password Text 4 | created UTCTime 5 | modified UTCTime 6 | UniqueUser email 7 | deriving Typeable 8 | 9 | 10 | Profile 11 | userId UserId 12 | snippetsApiId Text 13 | username Text 14 | name Text 15 | created UTCTime 16 | modified UTCTime 17 | UniqueProfile userId 18 | UniqueSnippetsApiId snippetsApiId 19 | UniqueUsername username 20 | deriving Typeable Show 21 | 22 | ApiUser 23 | userId UserId 24 | token Text 25 | created UTCTime 26 | modified UTCTime 27 | UniqueApiUser userId 28 | UniqueApiToken token 29 | deriving Typeable Show 30 | 31 | -- TODO: Reference codeSnippetSnippetId instead of using slug 32 | -- 1. Add new nullable codeSnippetId column 33 | -- 2. Run query to fill id column 34 | -- 3. Make id column non-nullable 35 | -- 4. Delete slug column 36 | RunParams 37 | snippetId Text 38 | stdin Text 39 | languageVersion Text 40 | runCommand Text 41 | UniqueRunParams snippetId 42 | deriving Typeable 43 | 44 | RunResult 45 | snippetId Text 46 | filesHash Text 47 | language Text 48 | stdout Text 49 | stderr Text 50 | error Text 51 | created UTCTime 52 | UniqueRunResult snippetId 53 | UniqueRunResultHash snippetId filesHash 54 | deriving Typeable 55 | 56 | CodeSnippet 57 | slug Text 58 | language Language.Id 59 | title Text 60 | public Bool 61 | userId UserId Maybe default=NULL 62 | created UTCTime 63 | modified UTCTime 64 | UniqueCodeSnippetSlug slug 65 | deriving Typeable Show 66 | 67 | CodeFile 68 | codeSnippetId CodeSnippetId 69 | name Text 70 | content ByteString 71 | deriving Typeable 72 | 73 | 74 | -- By default this file is used in Model.hs (which is imported by Foundation.hs) 75 | -------------------------------------------------------------------------------- /config/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | 3 | Disallow: /*?language 4 | -------------------------------------------------------------------------------- /config/routes: -------------------------------------------------------------------------------- 1 | /static StaticR Static appStatic 2 | /auth AuthR Auth getAuth 3 | 4 | /favicon.ico FaviconR GET 5 | /robots.txt RobotsR GET 6 | 7 | / HomeR GET 8 | /new ComposeLanguagesR GET 9 | /learn LearnR GET 10 | /learn/#Language.Id LearnLanguageR GET 11 | /new/#Language.Id ComposeR GET POST 12 | /snippets SnippetsR GET 13 | /snippets/#Text SnippetR GET PUT DELETE 14 | /snippets/#Text/embed SnippetEmbedR GET 15 | /snippets/#Text/raw SnippetRawR GET 16 | /snippets/#Text/raw/#Text SnippetRawFileR GET 17 | /users/#Text/snippets UserSnippetsR GET 18 | /run/#Language.Id RunR POST 19 | /account/profile AccountProfileR GET PUT 20 | /account/token AccountTokenR GET PUT 21 | /alert/danger AlertDangerR POST 22 | /about MetaAboutR GET 23 | /api MetaApiDocsR GET 24 | /api/run ApiRunLanguagesR GET 25 | /api/run/#Language.Id ApiRunVersionsR GET 26 | /api/run/#Language.Id/#Text ApiRunR GET POST 27 | /api/snippets ApiSnippetsR GET POST 28 | /api/snippets/#Text ApiSnippetR GET PUT DELETE 29 | -------------------------------------------------------------------------------- /config/settings.yml: -------------------------------------------------------------------------------- 1 | # Values formatted like "_env:ENV_VAR_NAME:default_value" can be overridden by the specified environment variable. 2 | # See https://github.com/yesodweb/yesod/wiki/Configuration#overriding-configuration-values-with-environment-variables 3 | 4 | static-dir: "_env:STATIC_DIR:static" 5 | host: "_env:HOST:*4" # any IPv4 host 6 | port: "_env:PORT:3000" 7 | approot: "_env:APPROOT:http://localhost:3000" 8 | ip-from-header: "_env:IP_FROM_HEADER:false" 9 | 10 | # Optional values with the following production defaults. 11 | # In development, they default to the inverse. 12 | # 13 | # development: false 14 | # detailed-logging: false 15 | # should-log-all: false 16 | # reload-templates: false 17 | # mutable-static: false 18 | # skip-combining: false 19 | 20 | database: 21 | user: "_env:PGUSER:glot" 22 | password: "_env:PGPASS:glot" 23 | host: "_env:PGHOST:localhost" 24 | port: "_env:PGPORT:5432" 25 | database: "_env:PGDATABASE:glot" 26 | poolsize: "_env:PGPOOLSIZE:10" 27 | -------------------------------------------------------------------------------- /config/test-settings.yml: -------------------------------------------------------------------------------- 1 | database: 2 | database: glot_test 3 | -------------------------------------------------------------------------------- /config/types/Book.dhall: -------------------------------------------------------------------------------- 1 | { purchaseLink : Text 2 | , imgLink : Text 3 | , bookTitle : Text 4 | } 5 | -------------------------------------------------------------------------------- /config/types/EditorConfig.dhall: -------------------------------------------------------------------------------- 1 | { defaultFilename : Text 2 | , mode : Text 3 | , useSoftTabs : Bool 4 | , softTabSize : Natural 5 | , exampleCode : Text 6 | } 7 | -------------------------------------------------------------------------------- /config/types/Language.dhall: -------------------------------------------------------------------------------- 1 | { id : Text 2 | , name : Text 3 | , logoName : Text 4 | , fileExtension : Text 5 | , editorConfig : ./EditorConfig.dhall 6 | , runConfig : Optional ./RunConfig.dhall 7 | , books : List ./Book.dhall 8 | } 9 | -------------------------------------------------------------------------------- /config/types/RunConfig.dhall: -------------------------------------------------------------------------------- 1 | { containerImage : Text 2 | , runCommand : Text 3 | , versionCommand : Text 4 | } 5 | -------------------------------------------------------------------------------- /default.nix: -------------------------------------------------------------------------------- 1 | { # Fetch the latest haskell.nix and import its default.nix 2 | haskellNix ? import (builtins.fetchTarball "https://github.com/input-output-hk/haskell.nix/archive/d890a8f652acdef0d38ff9d1e7baaed3083bc520.tar.gz") {} 3 | 4 | # haskell.nix provides access to the nixpkgs pins which are used by our CI, 5 | # hence you will be more likely to get cache hits when using these. 6 | # But you can also just use your own, e.g. ''. 7 | , nixpkgsSrc ? haskellNix.sources.nixpkgs-2009 8 | 9 | # haskell.nix provides some arguments to be passed to nixpkgs, including some 10 | # patches and also the haskell.nix functionality itself as an overlay. 11 | , nixpkgsArgs ? haskellNix.nixpkgsArgs 12 | 13 | # import nixpkgs with overlays 14 | , pkgs ? import nixpkgsSrc nixpkgsArgs 15 | }: pkgs.haskell-nix.project { 16 | # 'cleanGit' cleans a source directory based on the files known by git 17 | src = pkgs.haskell-nix.haskellLib.cleanGit { 18 | name = "glot-www"; 19 | src = ./.; 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /dev.sh: -------------------------------------------------------------------------------- 1 | export APPROOT="http://localhost:3000" 2 | export HOST="127.0.0.1" 3 | export PORT="3000" 4 | export IP_FROM_HEADER="true" 5 | export PGHOST="localhost" 6 | export PGPORT="5432" 7 | export PGUSER="glot" 8 | export PGPASS="glot" 9 | export PGDATABASE="glot" 10 | export DOCKER_RUN_BASE_URL="http://localhost:8088" 11 | export DOCKER_RUN_ACCESS_TOKEN="magmatic-handyman-confirm-cauldron" 12 | export DOCKER_RUN_RESPONSE_TIMEOUT="60" 13 | export MAILGUN_DOMAIN="example.com" 14 | export MAILGUN_API_KEY="key-12345" 15 | export EMAIL_FROM_ADDRESS="glot@glot.io" 16 | #export ANALYTICS_ID="" 17 | 18 | stack exec yesod devel 19 | -------------------------------------------------------------------------------- /stack.yaml.lock: -------------------------------------------------------------------------------- 1 | # This file was autogenerated by Stack. 2 | # You should not edit this file by hand. 3 | # For more information, please see the documentation at: 4 | # https://docs.haskellstack.org/en/stable/lock_files 5 | 6 | packages: 7 | - completed: 8 | hackage: hailgun-0.5.1@sha256:a8a302776850e780b08467c986ea7e5e7fdf46a25abae735ffc8802dbd32e105,3770 9 | pantry-tree: 10 | size: 1188 11 | sha256: 25eb9f8dc32328cfbb89a2bbd2a4153c6eec9b46b1ed301d38f94f8374e59be5 12 | original: 13 | hackage: hailgun-0.5.1@sha256:a8a302776850e780b08467c986ea7e5e7fdf46a25abae735ffc8802dbd32e105,3770 14 | - completed: 15 | hackage: pwstore-fast-2.4.4@sha256:9b6a37510d8b9f37f409a8ab3babac9181afcaaa3fce8ba1c131a7ed3de30698,1351 16 | pantry-tree: 17 | size: 270 18 | sha256: ff4a44ede62515efe5cd366a5803f7183c811c4a0cf56eea88da94181c4844c0 19 | original: 20 | hackage: pwstore-fast-2.4.4@sha256:9b6a37510d8b9f37f409a8ab3babac9181afcaaa3fce8ba1c131a7ed3de30698,1351 21 | - completed: 22 | hackage: classy-prelude-yesod-1.5.0@sha256:8f7e183bdfd6d2ea9674284c4f285294ab086aff60d9be4e5d7d2f3c1a2b05b7,1330 23 | pantry-tree: 24 | size: 330 25 | sha256: ae84d4cc0e1daf985db6cdcf2ac92319531b8e60f547183cc46480d00aafbe20 26 | original: 27 | hackage: classy-prelude-yesod-1.5.0@sha256:8f7e183bdfd6d2ea9674284c4f285294ab086aff60d9be4e5d7d2f3c1a2b05b7,1330 28 | snapshots: 29 | - completed: 30 | size: 563103 31 | url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/17/4.yaml 32 | sha256: f11e2153044f5f71ea7b1c9398f4721f517c9bd37642ed769647b896564021f3 33 | original: lts-17.4 34 | -------------------------------------------------------------------------------- /static/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /static/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /static/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /static/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /static/img/ats.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | Created by potrace 1.13, written by Peter Selinger 2001-2015 9 | 10 | 12 | 19 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /static/img/ats.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/ats.svg.png -------------------------------------------------------------------------------- /static/img/bash.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /static/img/bash.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/bash.svg.png -------------------------------------------------------------------------------- /static/img/c.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /static/img/c.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/c.svg.png -------------------------------------------------------------------------------- /static/img/clisp.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/img/clisp.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/clisp.svg.png -------------------------------------------------------------------------------- /static/img/clojure.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/img/clojure.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/clojure.svg.png -------------------------------------------------------------------------------- /static/img/coffeescript.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/coffeescript.svg.png -------------------------------------------------------------------------------- /static/img/cpp.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/cpp.svg.png -------------------------------------------------------------------------------- /static/img/crystal.svg: -------------------------------------------------------------------------------- 1 | 2 | image/svg+xml -------------------------------------------------------------------------------- /static/img/crystal.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/crystal.svg.png -------------------------------------------------------------------------------- /static/img/csharp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /static/img/csharp.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/csharp.svg.png -------------------------------------------------------------------------------- /static/img/d.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/d.svg.png -------------------------------------------------------------------------------- /static/img/dart.svg: -------------------------------------------------------------------------------- 1 | dart-programming-language -------------------------------------------------------------------------------- /static/img/dart.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/dart.svg.png -------------------------------------------------------------------------------- /static/img/elixir.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /static/img/elixir.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/elixir.svg.png -------------------------------------------------------------------------------- /static/img/elm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 10 | 11 | 14 | 15 | 22 | 23 | 26 | 27 | 30 | 31 | 34 | 35 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /static/img/elm.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/elm.svg.png -------------------------------------------------------------------------------- /static/img/erlang.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/erlang.svg.png -------------------------------------------------------------------------------- /static/img/fsharp.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 | 16 | 19 | 22 | 23 | -------------------------------------------------------------------------------- /static/img/fsharp.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/fsharp.svg.png -------------------------------------------------------------------------------- /static/img/generic.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/img/generic.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/generic.svg.png -------------------------------------------------------------------------------- /static/img/go.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/go.svg.png -------------------------------------------------------------------------------- /static/img/groovy.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/groovy.svg.png -------------------------------------------------------------------------------- /static/img/guile.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/img/guile.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/guile.svg.png -------------------------------------------------------------------------------- /static/img/hare.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/hare.svg.png -------------------------------------------------------------------------------- /static/img/haskell.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /static/img/haskell.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/haskell.svg.png -------------------------------------------------------------------------------- /static/img/home_background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/home_background.jpg -------------------------------------------------------------------------------- /static/img/idris.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/idris.svg.png -------------------------------------------------------------------------------- /static/img/java.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/java.svg.png -------------------------------------------------------------------------------- /static/img/javascript.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /static/img/javascript.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/javascript.svg.png -------------------------------------------------------------------------------- /static/img/julia.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/julia.svg.png -------------------------------------------------------------------------------- /static/img/kotlin.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /static/img/kotlin.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/kotlin.svg.png -------------------------------------------------------------------------------- /static/img/lua.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/lua.svg.png -------------------------------------------------------------------------------- /static/img/mercury.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/mercury.svg.png -------------------------------------------------------------------------------- /static/img/nim.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/nim.svg.png -------------------------------------------------------------------------------- /static/img/nix.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/nix.svg.png -------------------------------------------------------------------------------- /static/img/ocaml.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/ocaml.svg.png -------------------------------------------------------------------------------- /static/img/pascal.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/pascal.svg.png -------------------------------------------------------------------------------- /static/img/perl.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/perl.svg.png -------------------------------------------------------------------------------- /static/img/perl6.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/perl6.svg.png -------------------------------------------------------------------------------- /static/img/php.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/php.svg.png -------------------------------------------------------------------------------- /static/img/plaintext.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/img/plaintext.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/plaintext.svg.png -------------------------------------------------------------------------------- /static/img/python.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/python.svg.png -------------------------------------------------------------------------------- /static/img/ruby.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/ruby.svg.png -------------------------------------------------------------------------------- /static/img/rust.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/rust.svg.png -------------------------------------------------------------------------------- /static/img/sac.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/sac.svg.png -------------------------------------------------------------------------------- /static/img/scala.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/scala.svg.png -------------------------------------------------------------------------------- /static/img/swift.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/swift.svg.png -------------------------------------------------------------------------------- /static/img/typescript.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/typescript.svg.png -------------------------------------------------------------------------------- /static/img/zig.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /static/img/zig.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/img/zig.svg.png -------------------------------------------------------------------------------- /static/js/location.js: -------------------------------------------------------------------------------- 1 | window.Location = { 2 | set: function(url) { 3 | if (location.href === url) { 4 | this.reload(); 5 | } else { 6 | location.href = url; 7 | } 8 | }, 9 | 10 | setRetainHash: function(url) { 11 | var suffix = this.getHash() ? "#" + this.getHash() : ""; 12 | var newUrl = url + suffix; 13 | this.set(newUrl); 14 | }, 15 | 16 | getHash: function() { 17 | return location.hash.slice(1); 18 | }, 19 | 20 | setHash: function(str) { 21 | location.hash = str; 22 | }, 23 | 24 | reload: function() { 25 | location.reload(); 26 | } 27 | }; 28 | -------------------------------------------------------------------------------- /static/js/xhr.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | 3 | function sendJson(url, method, data) { 4 | const options = { 5 | method: method, 6 | body: JSON.stringify(data), 7 | headers: { 8 | 'Content-Type': 'application/json' 9 | }, 10 | }; 11 | 12 | return fetch(url, options).then((response) => { 13 | if (!response.ok) { 14 | return getErrorMessage(response).then((msg) => Promise.reject(msg)); 15 | } 16 | 17 | return response.json(); 18 | }); 19 | } 20 | 21 | function getErrorMessage(response) { 22 | if (isJsonResponse(response)) { 23 | return response.json().then((data) => data.message); 24 | } else { 25 | return response.text(); 26 | } 27 | } 28 | 29 | function isJsonResponse(response) { 30 | const contentType = response.headers.get('content-type'); 31 | return contentType && contentType.includes('application/json'); 32 | } 33 | 34 | window.XHR = { 35 | delete: function(url) { 36 | const options = { 37 | method: 'DELETE', 38 | }; 39 | 40 | return fetch(url, options).then((response) => { 41 | if (!response.ok) { 42 | return Promise.reject(response); 43 | } 44 | 45 | return null; 46 | }); 47 | }, 48 | 49 | jsonPut: function(url, data) { 50 | return sendJson(url, 'PUT', data); 51 | }, 52 | 53 | jsonPost: function(url, data) { 54 | return sendJson(url, 'POST', data); 55 | }, 56 | }; 57 | 58 | })(); 59 | -------------------------------------------------------------------------------- /static/lib/ace/ext-error_marker.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/ext/error_marker"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/ext-linking.js: -------------------------------------------------------------------------------- 1 | define("ace/ext/linking",["require","exports","module","ace/editor","ace/config"],function(e,t,n){function i(e){var n=e.editor,r=e.getAccelKey();if(r){var n=e.editor,i=e.getDocumentPosition(),s=n.session,o=s.getTokenAt(i.row,i.column);t.previousLinkingHover&&t.previousLinkingHover!=o&&n._emit("linkHoverOut"),n._emit("linkHover",{position:i,token:o}),t.previousLinkingHover=o}else t.previousLinkingHover&&(n._emit("linkHoverOut"),t.previousLinkingHover=!1)}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("../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}}),t.previousLinkingHover=!1}); (function() { 2 | window.require(["ace/ext/linking"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/ext-spellcheck.js: -------------------------------------------------------------------------------- 1 | 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="\x01\x01",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){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}})}); (function() { 2 | window.require(["ace/ext/spellcheck"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/ext-statusbar.js: -------------------------------------------------------------------------------- 1 | define("ace/ext/statusbar",["require","exports","module","ace/lib/dom","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../lib/dom"),i=e("../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)).schedule.bind(null,100);e.on("changeStatus",n),e.on("changeSelection",n),e.on("keyboardActivity",n)};(function(){this.updateStatus=function(e){function n(e,n){e&&t.push(e,n||"|")}var t=[];n(e.keyBinding.getStatusText(e)),e.commands.recording&&n("REC");var r=e.selection,i=r.lead;if(!r.isEmpty()){var s=e.getSelectionRange();n("("+(s.end.row-s.start.row)+":"+(s.end.column-s.start.column)+")"," ")}n(i.row+":"+i.column," "),r.rangeCount&&n("["+r.rangeCount+"]"," "),t.pop(),this.element.textContent=t.join("")}}).call(s.prototype),t.StatusBar=s}); (function() { 2 | window.require(["ace/ext/statusbar"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/ext-themelist.js: -------------------------------------------------------------------------------- 1 | define("ace/ext/themelist",["require","exports","module"],function(e,t,n){"use strict";var r=[["Chrome"],["Clouds"],["Crimson Editor"],["Dawn"],["Dreamweaver"],["Eclipse"],["GitHub"],["IPlastic"],["Solarized Light"],["TextMate"],["Tomorrow"],["Xcode"],["Kuroir"],["KatzenMilch"],["SQL Server","sqlserver","light"],["Ambiance","ambiance","dark"],["Chaos","chaos","dark"],["Clouds Midnight","clouds_midnight","dark"],["Dracula","","dark"],["Cobalt","cobalt","dark"],["Gruvbox","gruvbox","dark"],["Green on Black","gob","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"],["Nord Dark","nord_dark","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})}); (function() { 2 | window.require(["ace/ext/themelist"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/mode-csp.js: -------------------------------------------------------------------------------- 1 | define("ace/mode/csp_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":"child-src|connect-src|default-src|font-src|frame-src|img-src|manifest-src|media-src|object-src|script-src|style-src|worker-src|base-uri|plugin-types|sandbox|disown-opener|form-action|frame-ancestors|report-uri|report-to|upgrade-insecure-requests|block-all-mixed-content|require-sri-for|reflected-xss|referrer|policy-uri",variable:"'none'|'self'|'unsafe-inline'|'unsafe-eval'|'strict-dynamic'|'unsafe-hashed-attributes'"},"identifier",!0);this.$rules={start:[{token:"string.link",regex:/https?:[^;\s]*/},{token:"operator.punctuation",regex:/;/},{token:e,regex:/[^\s;]+/}]}};r.inherits(s,i),t.CspHighlightRules=s}),define("ace/mode/csp",["require","exports","module","ace/mode/text","ace/mode/csp_highlight_rules","ace/lib/oop"],function(e,t,n){"use strict";var r=e("./text").Mode,i=e("./csp_highlight_rules").CspHighlightRules,s=e("../lib/oop"),o=function(){this.HighlightRules=i};s.inherits(o,r),function(){this.$id="ace/mode/csp"}.call(o.prototype),t.Mode=o}); (function() { 2 | window.require(["ace/mode/csp"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/mode-gcode.js: -------------------------------------------------------------------------------- 1 | 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}),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,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.$id="ace/mode/gcode"}.call(u.prototype),t.Mode=u}); (function() { 2 | window.require(["ace/mode/gcode"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/mode-gitignore.js: -------------------------------------------------------------------------------- 1 | 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}),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,this.$behaviour=this.$defaultBehaviour};r.inherits(o,i),function(){this.lineCommentStart="#",this.$id="ace/mode/gitignore"}.call(o.prototype),t.Mode=o}); (function() { 2 | window.require(["ace/mode/gitignore"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/mode-plain_text.js: -------------------------------------------------------------------------------- 1 | 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}); (function() { 2 | window.require(["ace/mode/plain_text"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/mode-properties.js: -------------------------------------------------------------------------------- 1 | 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}),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,this.$behaviour=this.$defaultBehaviour};r.inherits(o,i),function(){this.$id="ace/mode/properties"}.call(o.prototype),t.Mode=o}); (function() { 2 | window.require(["ace/mode/properties"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/mode-text.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/mode/text"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/abap.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/abap"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/abc.js: -------------------------------------------------------------------------------- 1 | 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"}); (function() { 2 | window.require(["ace/snippets/abc"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/ada.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/ada"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/alda.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/alda"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/apache_conf.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/apache_conf"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/apex.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/apex"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/applescript.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/applescript"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/aql.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/aql"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/asciidoc.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/asciidoc"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/asl.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/asl"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/assembly_x86.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/assembly_x86"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/autohotkey.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/autohotkey"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/batchfile.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/batchfile"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/c9search.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/c9search"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/cirru.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/cirru"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/cobol.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/cobol"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/coldfusion.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/coldfusion"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/crystal.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/crystal"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/csharp.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/csharp"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/csound_document.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/csound_document",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="# \nsnippet synth\n \n \n ${1}\n \n \n e\n \n \n",t.scope="csound_document"}); (function() { 2 | window.require(["ace/snippets/csound_document"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/csound_orchestra.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/csound_orchestra",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="# else\nsnippet else\n else\n ${1:/* statements */}\n# elseif\nsnippet elseif\n elseif ${1:/* condition */} then\n ${2:/* statements */}\n# if\nsnippet if\n if ${1:/* condition */} then\n ${2:/* statements */}\n endif\n# instrument block\nsnippet instr\n instr ${1:name}\n ${2:/* statements */}\n endin\n# i-time while loop\nsnippet iwhile\n i${1:Index} = ${2:0}\n while i${1:Index} < ${3:/* count */} do\n ${4:/* statements */}\n i${1:Index} += 1\n od\n# k-rate while loop\nsnippet kwhile\n k${1:Index} = ${2:0}\n while k${1:Index} < ${3:/* count */} do\n ${4:/* statements */}\n k${1:Index} += 1\n od\n# opcode\nsnippet opcode\n opcode ${1:name}, ${2:/* output types */ 0}, ${3:/* input types */ 0}\n ${4:/* statements */}\n endop\n# until loop\nsnippet until\n until ${1:/* condition */} do\n ${2:/* statements */}\n od\n# while loop\nsnippet while\n while ${1:/* condition */} do\n ${2:/* statements */}\n od\n",t.scope="csound_orchestra"}); (function() { 2 | window.require(["ace/snippets/csound_orchestra"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/csound_score.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/csound_score"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/csp.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/csp"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/curly.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/curly"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/d.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/d"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/dart.js: -------------------------------------------------------------------------------- 1 | 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"}); (function() { 2 | window.require(["ace/snippets/dart"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/diff.js: -------------------------------------------------------------------------------- 1 | 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"}); (function() { 2 | window.require(["ace/snippets/diff"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/dockerfile.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/dockerfile"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/dot.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/dot"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/drools.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/drools",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='\nsnippet rule\n rule "${1?:rule_name}"\n when\n ${2:// when...} \n then\n ${3:// then...}\n end\n\nsnippet query\n query ${1?:query_name}\n ${2:// find} \n end\n \nsnippet declare\n declare ${1?:type_name}\n ${2:// attributes} \n end\n\n',t.scope="drools"}); (function() { 2 | window.require(["ace/snippets/drools"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/eiffel.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/eiffel"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/ejs.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/ejs"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/elixir.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/elixir"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/elm.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/elm"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/forth.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/forth"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/fortran.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/fortran"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/fsharp.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/fsharp"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/fsl.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/fsl",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope=""}); (function() { 2 | window.require(["ace/snippets/fsl"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/ftl.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/ftl"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/gcode.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/gcode"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/gherkin.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/gherkin"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/gitignore.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/gitignore"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/glsl.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/glsl"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/golang.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/golang"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/graphqlschema.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/graphqlschema",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="# Type Snippet\ntrigger type\nsnippet type\n type ${1:type_name} {\n ${2:type_siblings}\n }\n\n# Input Snippet\ntrigger input\nsnippet input\n input ${1:input_name} {\n ${2:input_siblings}\n }\n\n# Interface Snippet\ntrigger interface\nsnippet interface\n interface ${1:interface_name} {\n ${2:interface_siblings}\n }\n\n# Interface Snippet\ntrigger union\nsnippet union\n union ${1:union_name} = ${2:type} | ${3: type}\n\n# Enum Snippet\ntrigger enum\nsnippet enum\n enum ${1:enum_name} {\n ${2:enum_siblings}\n }\n",t.scope="graphqlschema"}); (function() { 2 | window.require(["ace/snippets/graphqlschema"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/groovy.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/groovy"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/haml.js: -------------------------------------------------------------------------------- 1 | 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"}); (function() { 2 | window.require(["ace/snippets/haml"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/handlebars.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/handlebars"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/haskell_cabal.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/haskell_cabal"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/haxe.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/haxe"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/hjson.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/hjson"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/html_elixir.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/html_elixir"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/html_ruby.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/html_ruby"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/ini.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/ini"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/io.js: -------------------------------------------------------------------------------- 1 | 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"}); (function() { 2 | window.require(["ace/snippets/io"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/jack.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/jack"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/jade.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/jade"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/json.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/json"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/json5.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/json5"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/jssm.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/jssm"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/jsx.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/jsx"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/julia.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/julia"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/kotlin.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/kotlin"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/latex.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/latex"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/lean.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/lean",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="lean"}) -------------------------------------------------------------------------------- /static/lib/ace/snippets/less.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/less"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/lisp.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/lisp"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/live_script.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/live_script",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope=""}) -------------------------------------------------------------------------------- /static/lib/ace/snippets/livescript.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/livescript"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/logiql.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/logiql"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/logtalk.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/logtalk"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/lua.js: -------------------------------------------------------------------------------- 1 | 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"}); (function() { 2 | window.require(["ace/snippets/lua"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/luapage.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/luapage"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/lucene.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/lucene"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/makefile.js: -------------------------------------------------------------------------------- 1 | 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"}); (function() { 2 | window.require(["ace/snippets/makefile"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/mask.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/mask"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/matlab.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/matlab"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/maze.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/maze",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet >\ndescription assignment\nscope maze\n -> ${1}= ${2}\n\nsnippet >\ndescription if\nscope maze\n -> IF ${2:**} THEN %${3:L} ELSE %${4:R}\n",t.scope="maze"}); (function() { 2 | window.require(["ace/snippets/maze"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/mediawiki.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/mediawiki"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/mel.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/mel"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/mips_assembler.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/mips_assembler",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="mips_assembler"}) -------------------------------------------------------------------------------- /static/lib/ace/snippets/mipsassembler.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/mipsassembler",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope=""}) -------------------------------------------------------------------------------- /static/lib/ace/snippets/mixal.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/mixal"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/mushcode.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/mushcode"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/mysql.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/mysql"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/nginx.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/nginx"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/nim.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/nim"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/nix.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/nix"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/nsis.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/nsis"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/nunjucks.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/nunjucks"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/objectivec.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/objectivec"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/ocaml.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/ocaml"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/pascal.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/pascal"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/perl6.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/perl6"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/pgsql.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/pgsql"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/php_laravel_blade.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/php_laravel_blade"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/pig.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/pig"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/plain_text.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/plain_text"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/powershell.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/powershell"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/praat.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/praat"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/prisma.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/prisma"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/prolog.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/prolog"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/properties.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/properties"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/protobuf.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/protobuf"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/puppet.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/puppet"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/qml.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/qml"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/razor.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/razor",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet if\n(${1} == ${2}) {\n ${3}\n}",t.scope="razor"}); (function() { 2 | window.require(["ace/snippets/razor"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/rdoc.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/rdoc"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/red.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/red"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/redshift.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/redshift"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/rhtml.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/rhtml"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/rst.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/rst",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="# rst\n\nsnippet :\n :${1:field name}: ${2:field body}\nsnippet *\n *${1:Emphasis}*\nsnippet **\n **${1:Strong emphasis}**\nsnippet _\n \\`${1:hyperlink-name}\\`_\n .. _\\`$1\\`: ${2:link-block}\nsnippet =\n ${1:Title}\n =====${2:=}\n ${3}\nsnippet -\n ${1:Title}\n -----${2:-}\n ${3}\nsnippet cont:\n .. contents::\n \n",t.scope="rst"}); (function() { 2 | window.require(["ace/snippets/rst"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/rust.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/rust"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/sass.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/sass"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/scad.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/scad"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/scala.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/scala"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/scheme.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/scheme"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/scss.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/scss"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/sjs.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/sjs"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/slim.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/slim"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/smarty.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/smarty"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/snippets.js: -------------------------------------------------------------------------------- 1 | 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"}); (function() { 2 | window.require(["ace/snippets/snippets"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/soy_template.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/soy_template"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/space.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/space"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/sparql.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/sparql"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/sql.js: -------------------------------------------------------------------------------- 1 | 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"}); (function() { 2 | window.require(["ace/snippets/sql"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/stylus.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/stylus"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/svg.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/svg"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/swift.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/swift"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/swig.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/swig",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="swig"}) -------------------------------------------------------------------------------- /static/lib/ace/snippets/terraform.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/terraform"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/text.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/text"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/textile.js: -------------------------------------------------------------------------------- 1 | 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"}); (function() { 2 | window.require(["ace/snippets/textile"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/toml.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/toml"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/tsx.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/tsx"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/turtle.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/turtle"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/twig.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/twig"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/typescript.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/typescript"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/vbscript.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/vbscript"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/velocity.js: -------------------------------------------------------------------------------- 1 | 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"]}); (function() { 2 | window.require(["ace/snippets/velocity"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/verilog.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/verilog"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/vhdl.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/vhdl"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/visualforce.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/visualforce"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/wollok.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/wollok",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='##\n## Basic Java packages and import\nsnippet im\n import\nsnippet w.l\n wollok.lang\nsnippet w.i\n wollok.lib\n\n## Class and object\nsnippet cl\n class ${1:`Filename("", "untitled")`} ${2}\nsnippet obj\n object ${1:`Filename("", "untitled")`} ${2:inherits Parent}${3}\nsnippet te\n test ${1:`Filename("", "untitled")`}\n\n##\n## Enhancements\nsnippet inh\n inherits\n\n##\n## Comments\nsnippet /*\n /*\n * ${1}\n */\n\n##\n## Control Statements\nsnippet el\n else\nsnippet if\n if (${1}) ${2}\n\n##\n## Create a Method\nsnippet m\n method ${1:method}(${2}) ${5}\n\n## \n## Tests\nsnippet as\n assert.equals(${1:expected}, ${2:actual})\n\n##\n## Exceptions\nsnippet ca\n catch ${1:e} : (${2:Exception} ) ${3}\nsnippet thr\n throw\nsnippet try\n try {\n ${3}\n } catch ${1:e} : ${2:Exception} {\n }\n\n##\n## Javadocs\nsnippet /**\n /**\n * ${1}\n */\n\n##\n## Print Methods\nsnippet print\n console.println("${1:Message}")\n\n##\n## Setter and Getter Methods\nsnippet set\n method set${1:}(${2:}) {\n $1 = $2\n }\nsnippet get\n method get${1:}() {\n return ${1:};\n }\n\n##\n## Terminate Methods or Loops\nsnippet re\n return',t.scope="wollok"}); (function() { 2 | window.require(["ace/snippets/wollok"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/xml.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/xml"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/yaml.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/yaml"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/ace/snippets/zeek.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/snippets/zeek"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /static/lib/font-awesome/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/lib/font-awesome/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /static/lib/font-awesome/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/lib/font-awesome/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /static/lib/font-awesome/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/lib/font-awesome/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /static/lib/font-awesome/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/lib/font-awesome/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /static/lib/font-awesome/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glotcode/glot-www/c291125a16ca588f1ebd4be7094b7ef0f136296f/static/lib/font-awesome/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /templates/account/profile.hamlet: -------------------------------------------------------------------------------- 1 | $newline never 2 | ^{navbarWidget Nothing} 3 | 4 |
5 |
6 |
7 |

Profile 8 |
9 |
10 |