From b51738878052db86dac75be31761bda51094dfef Mon Sep 17 00:00:00 2001 From: Yann Esposito Date: Wed, 2 May 2012 14:00:39 +0200 Subject: [PATCH] Use highlight.js instead of generated highlight --- content/css/main.sass | 13 +- layouts/article.html | 3 + lib/blog.rb | 2 +- lib/syntaxColorize.rb | 1 - lib/tag.rb | 2 +- lib/ultraviolet.rb | 24 +- output/Scratch/css/solarized.css | 90 + output/Scratch/js/article.js | 3 + output/Scratch/js/h/highlight.zip | Bin 0 -> 423825 bytes output/Scratch/js/highlight/AUTHORS.en.txt | 55 + output/Scratch/js/highlight/AUTHORS.ru.txt | 55 + output/Scratch/js/highlight/LICENSE | 24 + output/Scratch/js/highlight/README.md | 139 ++ output/Scratch/js/highlight/README.ru.md | 144 ++ output/Scratch/js/highlight/classref.txt | 497 +++++ output/Scratch/js/highlight/export.html | 87 + output/Scratch/js/highlight/highlight.js | 643 ++++++ output/Scratch/js/highlight/highlight.pack.js | 1 + output/Scratch/js/highlight/languages/1c.js | 98 + .../js/highlight/languages/actionscript.js | 94 + .../Scratch/js/highlight/languages/apache.js | 434 ++++ .../Scratch/js/highlight/languages/avrasm.js | 75 + .../Scratch/js/highlight/languages/axapta.js | 48 + output/Scratch/js/highlight/languages/bash.js | 65 + .../Scratch/js/highlight/languages/cmake.js | 42 + .../js/highlight/languages/coffeescript.js | 112 + output/Scratch/js/highlight/languages/cpp.js | 66 + output/Scratch/js/highlight/languages/cs.js | 58 + output/Scratch/js/highlight/languages/css.js | 101 + .../Scratch/js/highlight/languages/delphi.js | 88 + output/Scratch/js/highlight/languages/diff.js | 64 + .../Scratch/js/highlight/languages/django.js | 81 + output/Scratch/js/highlight/languages/dos.js | 35 + .../js/highlight/languages/erlang-repl.js | 85 + .../Scratch/js/highlight/languages/erlang.js | 206 ++ output/Scratch/js/highlight/languages/go.js | 59 + .../Scratch/js/highlight/languages/haskell.js | 77 + output/Scratch/js/highlight/languages/ini.js | 32 + output/Scratch/js/highlight/languages/java.js | 53 + .../js/highlight/languages/javascript.js | 57 + output/Scratch/js/highlight/languages/lisp.js | 88 + output/Scratch/js/highlight/languages/lua.js | 75 + .../js/highlight/languages/markdown.js | 79 + .../Scratch/js/highlight/languages/matlab.js | 74 + output/Scratch/js/highlight/languages/mel.js | 45 + .../Scratch/js/highlight/languages/nginx.js | 220 ++ .../js/highlight/languages/objectivec.js | 94 + .../Scratch/js/highlight/languages/parser3.js | 50 + output/Scratch/js/highlight/languages/perl.js | 181 ++ output/Scratch/js/highlight/languages/php.js | 77 + .../Scratch/js/highlight/languages/profile.js | 49 + .../Scratch/js/highlight/languages/python.js | 90 + .../js/highlight/languages/renderman.js | 230 ++ output/Scratch/js/highlight/languages/ruby.js | 253 +++ output/Scratch/js/highlight/languages/rust.js | 80 + .../Scratch/js/highlight/languages/scala.js | 66 + .../js/highlight/languages/smalltalk.js | 55 + output/Scratch/js/highlight/languages/sql.js | 90 + output/Scratch/js/highlight/languages/tex.js | 62 + output/Scratch/js/highlight/languages/vala.js | 74 + .../js/highlight/languages/vbscript.js | 54 + output/Scratch/js/highlight/languages/vhdl.js | 46 + output/Scratch/js/highlight/languages/xml.js | 110 + output/Scratch/js/highlight/styles/arta.css | 152 ++ .../Scratch/js/highlight/styles/ascetic.css | 45 + .../js/highlight/styles/brown_paper.css | 106 + .../js/highlight/styles/brown_papersq.png | Bin 0 -> 18198 bytes output/Scratch/js/highlight/styles/dark.css | 104 + .../Scratch/js/highlight/styles/default.css | 129 ++ output/Scratch/js/highlight/styles/far.css | 118 ++ output/Scratch/js/highlight/styles/github.css | 129 ++ .../js/highlight/styles/googlecode.css | 142 ++ output/Scratch/js/highlight/styles/idea.css | 118 ++ .../Scratch/js/highlight/styles/ir_black.css | 103 + output/Scratch/js/highlight/styles/magula.css | 119 ++ .../Scratch/js/highlight/styles/monokai.css | 115 + .../js/highlight/styles/school_book.css | 112 + .../js/highlight/styles/school_book.png | Bin 0 -> 486 bytes .../js/highlight/styles/solarized_dark.css | 90 + .../js/highlight/styles/solarized_light.css | 90 + .../Scratch/js/highlight/styles/sunburst.css | 147 ++ output/Scratch/js/highlight/styles/vs.css | 84 + .../Scratch/js/highlight/styles/zenburn.css | 116 ++ output/Scratch/js/highlight/test.html | 1845 +++++++++++++++++ 84 files changed, 9894 insertions(+), 25 deletions(-) create mode 100644 output/Scratch/js/article.js create mode 100644 output/Scratch/js/h/highlight.zip create mode 100644 output/Scratch/js/highlight/AUTHORS.en.txt create mode 100644 output/Scratch/js/highlight/AUTHORS.ru.txt create mode 100644 output/Scratch/js/highlight/LICENSE create mode 100644 output/Scratch/js/highlight/README.md create mode 100644 output/Scratch/js/highlight/README.ru.md create mode 100644 output/Scratch/js/highlight/classref.txt create mode 100644 output/Scratch/js/highlight/export.html create mode 100644 output/Scratch/js/highlight/highlight.js create mode 100644 output/Scratch/js/highlight/highlight.pack.js create mode 100644 output/Scratch/js/highlight/languages/1c.js create mode 100644 output/Scratch/js/highlight/languages/actionscript.js create mode 100644 output/Scratch/js/highlight/languages/apache.js create mode 100644 output/Scratch/js/highlight/languages/avrasm.js create mode 100644 output/Scratch/js/highlight/languages/axapta.js create mode 100644 output/Scratch/js/highlight/languages/bash.js create mode 100644 output/Scratch/js/highlight/languages/cmake.js create mode 100755 output/Scratch/js/highlight/languages/coffeescript.js create mode 100644 output/Scratch/js/highlight/languages/cpp.js create mode 100644 output/Scratch/js/highlight/languages/cs.js create mode 100644 output/Scratch/js/highlight/languages/css.js create mode 100644 output/Scratch/js/highlight/languages/delphi.js create mode 100644 output/Scratch/js/highlight/languages/diff.js create mode 100644 output/Scratch/js/highlight/languages/django.js create mode 100644 output/Scratch/js/highlight/languages/dos.js create mode 100644 output/Scratch/js/highlight/languages/erlang-repl.js create mode 100644 output/Scratch/js/highlight/languages/erlang.js create mode 100644 output/Scratch/js/highlight/languages/go.js create mode 100644 output/Scratch/js/highlight/languages/haskell.js create mode 100644 output/Scratch/js/highlight/languages/ini.js create mode 100644 output/Scratch/js/highlight/languages/java.js create mode 100644 output/Scratch/js/highlight/languages/javascript.js create mode 100644 output/Scratch/js/highlight/languages/lisp.js create mode 100644 output/Scratch/js/highlight/languages/lua.js create mode 100644 output/Scratch/js/highlight/languages/markdown.js create mode 100644 output/Scratch/js/highlight/languages/matlab.js create mode 100644 output/Scratch/js/highlight/languages/mel.js create mode 100644 output/Scratch/js/highlight/languages/nginx.js create mode 100644 output/Scratch/js/highlight/languages/objectivec.js create mode 100644 output/Scratch/js/highlight/languages/parser3.js create mode 100644 output/Scratch/js/highlight/languages/perl.js create mode 100644 output/Scratch/js/highlight/languages/php.js create mode 100644 output/Scratch/js/highlight/languages/profile.js create mode 100644 output/Scratch/js/highlight/languages/python.js create mode 100644 output/Scratch/js/highlight/languages/renderman.js create mode 100644 output/Scratch/js/highlight/languages/ruby.js create mode 100644 output/Scratch/js/highlight/languages/rust.js create mode 100644 output/Scratch/js/highlight/languages/scala.js create mode 100644 output/Scratch/js/highlight/languages/smalltalk.js create mode 100644 output/Scratch/js/highlight/languages/sql.js create mode 100644 output/Scratch/js/highlight/languages/tex.js create mode 100644 output/Scratch/js/highlight/languages/vala.js create mode 100644 output/Scratch/js/highlight/languages/vbscript.js create mode 100644 output/Scratch/js/highlight/languages/vhdl.js create mode 100644 output/Scratch/js/highlight/languages/xml.js create mode 100644 output/Scratch/js/highlight/styles/arta.css create mode 100644 output/Scratch/js/highlight/styles/ascetic.css create mode 100644 output/Scratch/js/highlight/styles/brown_paper.css create mode 100644 output/Scratch/js/highlight/styles/brown_papersq.png create mode 100644 output/Scratch/js/highlight/styles/dark.css create mode 100644 output/Scratch/js/highlight/styles/default.css create mode 100644 output/Scratch/js/highlight/styles/far.css create mode 100644 output/Scratch/js/highlight/styles/github.css create mode 100644 output/Scratch/js/highlight/styles/googlecode.css create mode 100644 output/Scratch/js/highlight/styles/idea.css create mode 100644 output/Scratch/js/highlight/styles/ir_black.css create mode 100644 output/Scratch/js/highlight/styles/magula.css create mode 100644 output/Scratch/js/highlight/styles/monokai.css create mode 100644 output/Scratch/js/highlight/styles/school_book.css create mode 100644 output/Scratch/js/highlight/styles/school_book.png create mode 100644 output/Scratch/js/highlight/styles/solarized_dark.css create mode 100644 output/Scratch/js/highlight/styles/solarized_light.css create mode 100644 output/Scratch/js/highlight/styles/sunburst.css create mode 100644 output/Scratch/js/highlight/styles/vs.css create mode 100644 output/Scratch/js/highlight/styles/zenburn.css create mode 100644 output/Scratch/js/highlight/test.html diff --git a/content/css/main.sass b/content/css/main.sass index 73901d367..d70c3a526 100644 --- a/content/css/main.sass +++ b/content/css/main.sass @@ -128,7 +128,7 @@ body color: $base01 pre, code - font-family: Monaco, monospace + font-family: Incosolata, Monaco, monospace pre &::selection @@ -174,7 +174,7 @@ ol li ul, ol li ol, ul li ol, ul li ul list-style: circle -body, h1, h2, h3, h4, #entete, .tag +body, h1, h2, h3, h4, #entete, .tagname font-family: Georgia, Palatino, "Century Schoolbook L", "Times New Roman", Times, serif line-height: 1.4em @@ -600,12 +600,12 @@ img.clean margin-top: 2em z-index: 9002 -.file +.codefile font-size: 0.8em text-align: right padding-right: 1em margin-right: 0.1 - margin-bottom: 0 + margin-bottom: -1em .flush clear: both @@ -648,9 +648,6 @@ pre overflow-x: auto overflow-y: hidden -.withfile pre - margin-top: 0 - .navigationprev, .navigationnext padding: 0px margin-left: 0.2em @@ -707,7 +704,7 @@ table.impact tr td a, a:visited color: #ECA -.tag +.tagname display: inline cursor: pointer margin-left: 0.5em diff --git a/layouts/article.html b/layouts/article.html index 19f4876cb..771d19f56 100644 --- a/layouts/article.html +++ b/layouts/article.html @@ -14,6 +14,7 @@ + <% languages.each do |lang| @@ -25,6 +26,8 @@ + + diff --git a/lib/blog.rb b/lib/blog.rb index 0167a9be1..afb451500 100644 --- a/lib/blog.rb +++ b/lib/blog.rb @@ -3,7 +3,7 @@ def blogimage(filename,title="no name", divclass=nil) imgpath=blogimagedir + filename if not divclass.nil? - if divclass !~ /\s*/ + if divclass !~ /^\s*$/ cls=%{ class="#{divclass}"} end end diff --git a/lib/syntaxColorize.rb b/lib/syntaxColorize.rb index 802506e43..e1b714e3b 100644 --- a/lib/syntaxColorize.rb +++ b/lib/syntaxColorize.rb @@ -2,7 +2,6 @@ module Nanoc3::Helpers module SyntaxColorize - require 'nanoc3/helpers/capturing' include Nanoc3::Helpers::Capturing def syntax_colorize(lang, type=:ultraviolet, &block) diff --git a/lib/tag.rb b/lib/tag.rb index 4b3ac5bda..9234d3512 100644 --- a/lib/tag.rb +++ b/lib/tag.rb @@ -88,7 +88,7 @@ tagSize.sort{|a,b| a[0].downcase <=> b[0].downcase}.each do |t,s| protected=t.gsub(/\W/,'_') grouped=t.gsub(/&/,'&').gsub(/ /,' ').gsub(//,'>') - tagCloud <<= %{#{grouped} } + tagCloud <<= %{#{grouped} } end tagCloud <<= %{
} language=@item.path diff --git a/lib/ultraviolet.rb b/lib/ultraviolet.rb index f9412b524..2ee4ce2da 100644 --- a/lib/ultraviolet.rb +++ b/lib/ultraviolet.rb @@ -1,23 +1,22 @@ class UltraVioletFilter < Nanoc3::Filter identifier :ultraviolet + def protect(str) + str.gsub(%r{<([^>]*)>}) do + "<#{$1}>" + end + end + def run(content, params={}) require 'rubygems' - require 'uv' - code_rule = %r{((.+?))}m + code_rule = %r{(\n?(.+?))}m new_content=content.gsub(code_rule) do |full| - @lang, @filename, @code = $2, $4, $5 - if @lang =~ /^(zsh|bash|sh|csh|shell)$/ - @lang='shell-unix-generic' - end + @full, @lang, @filename, @code = $1, $2, $4, $5 @codeprefix='' - @codesuffix='' if not @filename.nil? and @filename != "" create_file_for_code end - @codeprefix+ - Uv.parse(@code, "xhtml", @lang, false, @config[:ultraviolet_theme])+ - @codesuffix + @codeprefix+"\n\n
"+protect(@code)+"
\n\n" end return new_content end @@ -28,13 +27,10 @@ class UltraVioletFilter < Nanoc3::Filter webpath = @item.path url = webpath + 'code/' + @filename - @codeprefix=%{
\n} - @codesuffix=%{\n
} + @codeprefix=%{\n} code_path = "output#{webpath}code" - puts %{\t\tEcriture de #{code_path}/#{@filename}} FileUtils.mkdir_p code_path File.open(%{#{code_path}/#{@filename}}, 'w'){|f|f.write(@code)} end - end diff --git a/output/Scratch/css/solarized.css b/output/Scratch/css/solarized.css index bc9676089..44f428adb 100644 --- a/output/Scratch/css/solarized.css +++ b/output/Scratch/css/solarized.css @@ -126,3 +126,93 @@ pre .Keyword, pre .CssConstructorArgument { color: #859900; } +/* + +Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull + +*/ + +pre code { + display: block; padding: 0.5em; + background: #002b36; color: #839496; +} + +pre .comment, +pre .template_comment, +pre .diff .header, +pre .doctype, +pre .lisp .string, +pre .javadoc { + color: #586e75; + font-style: italic; +} + +pre .keyword, +pre .css .rule .keyword, +pre .winutils, +pre .javascript .title, +pre .method, +pre .addition, +pre .css .tag, +pre .lisp .title { + color: #859900; +} + +pre .number, +pre .command, +pre .string, +pre .tag .value, +pre .phpdoc, +pre .tex .formula, +pre .regexp, +pre .hexcolor { + color: #2aa198; +} + +pre .title, +pre .localvars, +pre .function .title, +pre .chunk, +pre .decorator, +pre .builtin, +pre .built_in, +pre .lisp .title, +pre .identifier, +pre .title .keymethods, +pre .id { + color: #268bd2; +} + +pre .attribute, +pre .variable, +pre .instancevar, +pre .lisp .body, +pre .smalltalk .number, +pre .constant, +pre .class .title, +pre .parent, +pre .haskell .label { + color: #b58900; +} + +pre .preprocessor, +pre .pi, +pre .shebang, +pre .symbol, +pre .diff .change, +pre .special, +pre .keymethods, +pre .attr_selector, +pre .important, +pre .subst, +pre .cdata { + color: #cb4b16; +} + +pre .deletion { + color: #dc322f; +} + +pre .tex .formula { + background: #073642; +} diff --git a/output/Scratch/js/article.js b/output/Scratch/js/article.js new file mode 100644 index 000000000..f81df35a6 --- /dev/null +++ b/output/Scratch/js/article.js @@ -0,0 +1,3 @@ +$(document).ready( function() { + hljs.initHighlighting(); +}); diff --git a/output/Scratch/js/h/highlight.zip b/output/Scratch/js/h/highlight.zip new file mode 100644 index 0000000000000000000000000000000000000000..e62017a5323344f1af4d78d7ad4c7b4e12c7f221 GIT binary patch literal 423825 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 + +Contributors: + +- Peter Leonov +- Victor Karamzin +- Vsevolod Solovyov +- Anton Kovalyov +- Nikita Ledyaev +- Konstantin Evdokimenko +- Dmitri Roudakov +- Yuri Ivanov +- Vladimir Ermakov +- Vladimir Gubarkov +- Brian Beck +- MajestiC +- Vasily Polovnyov +- Vladimir Epifanov +- Alexander Makarov (http://rmcreative.ru/) +- Vah +- Shuen-Huei Guan +- Jason Diamond +- Michal Gabrukiewicz +- Ruslan Keba +- Sergey Baranov +- Zaripov Yura +- Oleg Volchkov +- Vasily Mikhailitchenko +- Jan Berkel +- Vladimir Moskva +- Loren Segal +- Andrew Fedorov +- Igor Kalnitsky +- Jeremy Hull +- Valerii Hiora +- Nikolay Zakharov +- Dmitry Kovega +- Sergey Ignatov +- Antono Vasiljev +- Stephan Kountso +- pumbur +- John Crepezzi +- Andrey Vlasovskikh +- Alexander Myadzel +- Evgeny Stepanischev +- Dmytrii Nagirniak +- Oleg Efimov +- Luigi Maselli +- Denis Bardadym +- Aahan Krish diff --git a/output/Scratch/js/highlight/AUTHORS.ru.txt b/output/Scratch/js/highlight/AUTHORS.ru.txt new file mode 100644 index 000000000..d9bfa4bb3 --- /dev/null +++ b/output/Scratch/js/highlight/AUTHORS.ru.txt @@ -0,0 +1,55 @@ +Подсветка синтаксиса с автоопределением языка. + +URL: http://softwaremaniacs.org/soft/highlight/ + +Первоначальный автор и ведущий проекта: +Иван Сагалаев + +Внесли свой вклад: + +- Петр Леонов +- Виктор Карамзин +- Всеволод Соловьёв +- Антон Ковалёв +- Никита Ледяев +- Константин Евдокименко +- Дмитрий Рудаков +- Юрий Иванов +- Владимир Ермаков +- Владимир Губарьков +- Брайан Бек +- MajestiC +- Василий Половнёв +- Владимир Епифанов +- Александр Макаров (http://rmcreative.ru/) +- Vah +- Шуэн-Хуэй Гуан +- Джейсон Даймонд +- Михал Габрукевич +- Руслан Кеба +- Сергей Баранов +- Зарипов Юра +- Олег Волчков +- Василий Михайличенко +- Ян Беркель +- Владимир Москва +- Лорен Сегал +- Андрей Фёдоров +- Игорь Кальницкий +- Джереми Халл +- Валерий Хиора +- Николай Захаров +- Дмитрий Ковега +- Сергей Игнатов +- Антоно Васильев +- Степан Кунцьо +- pumbur +- Джон Крепецци +- Андрей Власовских +- Александр Мядзель +- Евгений Степанищев +- Дмитрий Нагирняк +- Олег Ефимов +- Луиджи Мазелли +- Денис Бардадым +- Аахан Криш diff --git a/output/Scratch/js/highlight/LICENSE b/output/Scratch/js/highlight/LICENSE new file mode 100644 index 000000000..422deb735 --- /dev/null +++ b/output/Scratch/js/highlight/LICENSE @@ -0,0 +1,24 @@ +Copyright (c) 2006, Ivan Sagalaev +All rights reserved. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of highlight.js nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/output/Scratch/js/highlight/README.md b/output/Scratch/js/highlight/README.md new file mode 100644 index 000000000..9811dce4b --- /dev/null +++ b/output/Scratch/js/highlight/README.md @@ -0,0 +1,139 @@ +# Highlight.js + +Highlight.js highlights syntax in code examples on blogs, forums and, +in fact, on any web page. It's very easy to use because it works +automatically: finds blocks of code, detects a language, highlights it. + +Autodetection can be fine tuned when it fails by itself (see "Heuristics"). + + +## Installation and usage + +The download package includes the file "highlight.pack.js" which is a full +compressed version of the library intended for use in production. All +uncompressed source files are also available, feel free to look into them! + +The script is installed by linking to a single file and making a single +initialization call: + +```html + + +``` + +Also you can replace TAB ('\x09') characters used for indentation in your code +with some fixed number of spaces or with a `` to give them special +styling: + +```html + +``` + +The script looks in your page for fragments `
...
` +that are traditionally used to mark up code examples. Their content is +marked up by logical pieces with defined class names. + + +### Custom initialization + +If you use different markup for code blocks you can initialize them manually +with `highlightBlock(code, tabReplace)` function. It takes a DOM element +containing the code to highlight and optionally a string with which to replace +TAB characters. + +Initialization using, for example, jQuery might look like this: + +```javascript +$(document).ready(function() { + $('pre code').each(function(i, e) {hljs.highlightBlock(e, ' ')}); +}); +``` + +If your code container relies on `
` tags instead of line breaks (i.e. if +it's not `
`) pass `true` into third parameter of `highlightBlock`:
+
+```javascript
+$('div.code').each(function(i, e) {hljs.highlightBlock(e, null, true)});
+```
+
+### Styling
+
+Elements of code marked up with classes can be styled as desired:
+
+```css
+.comment {
+  color: gray;
+}
+
+.keyword {
+  font-weight: bold;
+}
+
+.python .string {
+  color: blue;
+}
+
+.html .atribute .value {
+  color: green;
+}
+```
+
+Highlight.js comes with several style themes located in "styles" directory that
+can be used directly or as a base for your own experiments.
+
+**Note**: provided styles work for code defined inside `
` blocks. If you use
+custom markup you should modify styles accordingly.
+
+For full reference list of classes see [classref.txt][cr].
+
+[cr]: http://github.com/isagalaev/highlight.js/blob/master/classref.txt
+
+
+## Export
+
+File export.html contains a little program that allows you to paste in a code
+snippet and then copy and paste the resulting HTML code generated by the
+highlighter. This is useful in situations when you can't use the script itself
+on a site.
+
+
+## Heuristics
+
+Autodetection of a code's language is done using a simple heuristic:
+the program tries to highlight a fragment with all available languages and
+counts all syntactic structures that it finds along the way. The language
+with greatest count wins.
+
+This means that in short fragments the probability of an error is high
+(and it really happens sometimes). In this cases you can set the fragment's
+language explicitly by assigning a class to the `` element:
+
+```html
+
...
+``` + +You can use class names recommended in HTML5: "language-html", +"language-php". Classes also can be assigned to the `
` element.
+
+To disable highlighting of a fragment altogether use "no-highlight" class:
+
+```html
+
...
+``` + +## Meta + +- Version: 6.2 +- URL: http://softwaremaniacs.org/soft/highlight/en/ +- Author: Ivan Sagalaev () + +For the license terms see LICENSE files. +For the list of contributors see AUTHORS.en.txt file. diff --git a/output/Scratch/js/highlight/README.ru.md b/output/Scratch/js/highlight/README.ru.md new file mode 100644 index 000000000..ec0c156d6 --- /dev/null +++ b/output/Scratch/js/highlight/README.ru.md @@ -0,0 +1,144 @@ +# Highlight.js + +Highlight.js нужен для подсветки синтаксиса в примерах кода в блогах, +форумах и вообще на любых веб-страницах. Пользоваться им очень просто, +потому что работает он автоматически: сам находит блоки кода, сам +определяет язык, сам подсвечивает. + +Автоопределением языка можно управлять, когда оно не справляется само (см. +дальше "Эвристика"). + + +## Подключение и использование + +В загруженном архиве лежит файл "highlight.pack.js" -- полная сжатая версия +библиотеки для работы. Все несжатые исходные файлы также есть в пакете, поэтому +не стесняйтесь в них смотреть! + +Скрипт подключается одним файлом и одним вызовом инициализирующей +функции: + +```html + + +``` + +Также вы можете заменить символы TAB ('\x09'), используемые для отступов, на +фиксированное количество пробелов или на отдельный ``, чтобы задать ему +какой-нибудь специальный стиль: + +```html + +``` + +Дальше скрипт ищет на странице конструкции `
...
`, +которые традиционно используются для написания кода, и код в них +размечается на куски, помеченные разными значениями классов. + + +### Инициализация вручную + +Если вы используете другие теги для блоков кода, вы можете инициализировать их +явно с помощью функции `highlightBlock(code, tabReplace)`. Она принимает +DOM-элемент с текстом расцвечиваемого кода и опционально - строчку для замены +символов TAB. + +Например с использованием jQuery код инициализации может выглядеть так: + +```javascript +$(document).ready(function() { + $('pre code').each(function(i, e) {hljs.highlightBlock(e, ' ')}); +}); +``` + +Если ваш блок кода использует `
` вместо переводов строки (т.е. если это не +`
`), передайте `true` третьим параметром в `highlightBlock`:
+
+```javascript
+$('div.code').each(function(i, e) {hljs.highlightBlock(e, null, true)});
+```
+
+### Выбор стилей
+
+Размеченным классами элементам кода можно задать желаемые стили например так:
+
+```css
+.comment {
+  color: gray;
+}
+
+.keyword {
+  font-weight: bold;
+}
+
+.python .string {
+  color: blue;
+}
+
+.html .atribute .value {
+  color: green;
+}
+```
+
+В комплекте с highlight.js идут несколько стилевых тем в директории styles,
+которые можно использовать напрямую или как основу для собственных экспериментов.
+
+**Внимание**: приложенные стили работают для кода, определённого внутри блоков
+`
`. Если вы используете собственную разметку, стили нужно исправить
+соответствующим образом.
+
+Полный список классов приведён в файле [crossref.txt][cr].
+
+[cr]: http://github.com/isagalaev/highlight.js/blob/master/classref.txt
+
+
+## Экспорт
+
+В файле export.html находится небольшая программка, которая показывает и дает
+скопировать непосредственно HTML-код подсветки для любого заданного фрагмента кода.
+Это может понадобится например на сайте, на котором нельзя подключить сам скрипт
+highlight.js.
+
+
+## Эвристика
+
+Определение языка, на котором написан фрагмент, делается с помощью
+довольно простой эвристики: программа пытается расцветить фрагмент всеми
+языками подряд, и для каждого языка считает количество подошедших
+синтаксически конструкций и ключевых слов. Для какого языка нашлось больше,
+тот и выбирается.
+
+Это означает, что в коротких фрагментах высока вероятность ошибки, что
+периодически и случается. Чтобы указать язык фрагмента явно, надо написать
+его название в виде класса к элементу ``:
+
+```html
+
...
+``` + +Можно использовать рекомендованные в HTML5 названия классов: +"language-html", "language-php". Также можно назначать классы на элемент +`
`.
+
+Чтобы запретить расцветку фрагмента вообще, используется класс "no-highlight":
+
+```html
+
...
+``` + +## Координаты + +- Версия: 6.2 +- URL: http://softwaremaniacs.org/soft/highlight/ +- Автор: Иван Сагалаев () + +Лицензионное соглашение читайте в файле LICENSE. +Список соавторов читайте в файле AUTHORS.ru.txt diff --git a/output/Scratch/js/highlight/classref.txt b/output/Scratch/js/highlight/classref.txt new file mode 100644 index 000000000..b7707f418 --- /dev/null +++ b/output/Scratch/js/highlight/classref.txt @@ -0,0 +1,497 @@ +This is a full list of available classes corresponding to languages' +syntactic structures. The parentheses after language name contain identifiers +used as class names in `` element. + +Python ("python"): + + keyword keyword + built_in built-in objects (None, False, True and Ellipsis) + number number + string string (of any type) + comment comment + decorator @-decorator for functions + function function header "def some_name(...):" + class class header "class SomeName(...):" + title name of a function or a class inside a header + params everything inside parentheses in a function's or class' header + +Python profiler results ("profile"): + + number number + string string + builtin builtin function entry + filename filename in an entry + summary profiling summary + header header of table of results + keyword column header + function function name in an entry (including parentheses) + title actual name of a function in an entry (excluding parentheses) + +Ruby ("ruby"): + + keyword keyword + string string + subst in-string substitution (#{...}) + comment comment + yardoctag YARD tag + function function header "def some_name(...):" + class class header "class SomeName(...):" + title name of a function or a class inside a header + parent name of a parent class + symbol symbol + instancevar instance variable + +Perl ("perl"): + + keyword keyword + comment comment + number number + string string + regexp regular expression + sub subroutine header (from "sub" till "{") + variable variable starting with "$", "%", "@" + operator operator + pod plain old doc + +PHP ("php"): + + keyword keyword + number number + string string (of any type) + comment comment + phpdoc phpdoc params in comments + variable variable starting with "$" + preprocessor preprocessor marks: "" + +Scala ("scala"): + + keyword keyword + number number + string string + comment comment + annotaion annotation + javadoc javadoc comment + javadoctag @-tag in javadoc + class class header + title class name inside a header + params everything in parentheses inside a class header + inheritance keywords "extends" and "with" inside class header + +Go language ("go"): + comment comment + string string constant + number number + keyword language keywords + constant true false nil iota + typename built-in plain types (int, string etc.) + built_in built-in functions + +XML ("xml"): + + tag any tag from "<" till ">" + comment comment + pi processing instruction () + cdata CDATA section + attribute attribute + value attribute's value + +HTML ("html"): + + keyword HTML tag + tag any tag from "<" till ">" + comment comment + doctype declaration + attribute tag's attribute with or without value + value attribute's value + +CSS ("css"): + + tag HTML tag in selectors + id #some_name in selectors + class .some_name in selectors + at_rule @-rule till first "{" or ";" + attr_selector attribute selector (square brackets in a[href^=http://]) + pseudo pseudo classes and elemens (:after, ::after etc.) + comment comment + rules everything from "{" till "}" + property property name inside a rule + value property value inside a rule, from ":" till ";" or + till the end of rule block + number number within a value + string string within a value + hexcolor hex color (#FFFFFF) within a value + function CSS function within a value + params everything between "(" and ")" within a function + important "!important" symbol + +Markdown ("markdown"): + + header header + bullet list bullet + emphasis emphasis + strong strong emphasis + blockquote blockquote + code code + horizontal_rule horizontal rule + link_label link label + link_url link url + +Django ("django"): + + keyword HTML tag in HTML, default tags and default filters in templates + tag any tag from "<" till ">" + comment comment + doctype declaration + attribute tag's attribute with or withou value + value attribute's value + template_tag template tag {% .. %} + variable template variable {{ .. }} + template_comment template comment, both {# .. #} and {% comment %} + filter filter from "|" till the next filter or the end of tag + argument filter argument + +JavaScript ("javascript"): + + keyword keyword + comment comment + number number + literal special literal: "true", "false" and "null" + string string + regexp regular expression + function header of a function + title name of a function inside a header + params parentheses and everything inside them in a function's header + +CoffeeScript ("coffeescript"): + + keyword keyword + comment comment + number number + literal special literal: "true", "false" and "null" + string string + regexp regular expression + function header of a function + title name of a function variable inside a header + params parentheses and everything inside them in a function's header + +VBScript ("vbscript"): + + keyword keyword + number number + string string + comment comment + built_in built-in function + +Lua ("lua"): + + keyword keyword + number number + string string + comment comment + built_in built-in operator + function header of a function + title name of a function inside a header + params everything inside parentheses in a function's header + long_brackets multiline string in [=[ .. ]=] + +Delphi ("delphi"): + + keyword keyword + comment comment (of any type) + number number + string string + function header of a function, procedure, constructor and destructor + title name of a function, procedure, constructor or destructor + inside a header + params everything inside parentheses in a function's header + class class' body from "= class" till "end;" + +Java ("java"): + + keyword keyword + number number + string string + comment commment + annotaion annotation + javadoc javadoc comment + class class header from "class" till "{" + title class name inside a header + params everything in parentheses inside a class header + inheritance keywords "extends" and "implements" inside class header + +C++ ("cpp"): + + keyword keyword + number number + string string and character + comment comment + preprocessor preprocessor directive + stl_container instantiation of STL containers ("vector<...>") + +Objective C ("objectivec"): + keyword keyword + built_in Cocoa/Cocoa Touch constants and classes + number number + string string + comment comment + preprocessor preprocessor directive + class interface/implementation, protocol and forward class declaration + +Vala ("vala"): + + keyword keyword + number number + string string + comment comment + class class definitions + title in class definition + constant ALL_UPPER_CASE + +C# ("cs"): + + keyword keyword + number number + string string + comment commment + xmlDocTag xmldoc tag ("///", "", "<..>") + +RenderMan RSL ("rsl"): + + keyword keyword + number number + string string (including @"..") + comment comment + preprocessor preprocessor directive + shader sahder keywords + shading shading keywords + built_in built-in function + +RenderMan RIB ("rib"): + + keyword keyword + number number + string string + comment comment + commands command + +Maya Embedded Language ("mel"): + + keyword keyword + number number + string string + comment comment + variable variable + +SQL ("sql"): + + keyword keyword (mostly SQL'92 and SQL'99) + number number + string string (of any type: "..", '..', `..`) + comment comment + aggregate aggregate function + +Smalltalk ("smalltalk"): + + keyword keyword + number number + string string + comment commment + symbol symbol + array array + class name of a class + char char + localvars block of local variables + +Lisp ("lisp"): + + keyword keyword + number number + string string + comment commment + variable variable + literal b, t and nil + list non-quoted list + title first symbol in a non-quoted list + body remainder of the non-quoted list + quoted quoted list, both "(quote .. )" and "'(..)" + +Ini ("ini"): + + title title of a section + value value of a setting of any type + string string + number number + keyword boolean value keyword + +Apache ("apache"): + + keyword keyword + number number + comment commment + literal On and Off + sqbracket variables in rewrites "%{..}" + cbracket options in rewrites "[..]" + tag begin and end of a configuration section + +Nginx ("nginx"): + + keyword keyword + string string + number number + comment comment + built_in built-in constant + variable $-variable + +Diff ("diff"): + + header file header + chunk chunk header within a file + addition added lines + deletion deleted lines + change changed lines + +DOS ("dos"): + + keyword keyword + flow batch control keyword + stream DOS special files ("con", "prn", ...) + winutils some commands (see dos.js specifically) + envvar environment variables + +Bash ("bash"): + + keyword keyword + string string + number number + comment comment + literal special literal: "true" и "false" + variable variable + shebang script interpreter header + +CMake ("cmake") + + keyword keyword + number number + string string + comment commment + envvar $-variable + +Axapta ("axapta"): + + keyword keyword + number number + string string + comment commment + class class header from "class" till "{" + title class name inside a header + params everything in parentheses inside a class header + inheritance keywords "extends" and "implements" inside class header + preprocessor preprocessor directive + +1C ("1c"): + + keyword keyword + number number + date date + string string + comment commment + function header of function or procudure + title function name inside a header + params everything in parentheses inside a function header + preprocessor preprocessor directive + +AVR assembler ("avrasm"): + + keyword keyword + built_in pre-defined register + number number + string string + comment commment + label label + preprocessor preprocessor directive + localvars substitution in .macro + +VHDL ("vhdl") + + keyword keyword + number number + string string + comment commment + literal signal logical value + +Parser3 ("parser3"): + + keyword keyword + number number + comment commment + variable variable starting with "$" + preprocessor preprocessor directive + title user-defined name starting with "@" + +TeX ("tex"): + + comment comment + number number + command command + parameter parameter + formula formula + special special symbol + +Haskell ("haskell"): + + keyword keyword + built_in built-in typeclass/functions (Bool, Int) + number number + string string + comment comment + class type classes and other data types + title function name + label type class name + +Erlang ("erlang"): + + comment comment + string string + number number + keyword keyword + record_name record access (#record_name) + title name of declaration function + variable variable (starts with capital letter or with _) + pp.keywords module's attribute (-attribute) + function_name atom or atom:atom in case of function call + +Rust ("rust"): + + comment comment + string string + number number + keyword keyword + title name of declaration + preprocessor preprocessor directive + +ActionScript ("actionscript"): + + comment comment + string string + number number + keyword keywords + literal literal + reserved reserved keyword + title name of declaration (package, class or function) + preprocessor preprocessor directive (import, include) + type type of returned value (for functions) + package package (named or not) + class class/interface + function function + param params of function + rest_arg rest argument of function + +Matlab ("matlab"): + + comment comment + string string + number number + keyword keyword + title function name + function function + param params of function diff --git a/output/Scratch/js/highlight/export.html b/output/Scratch/js/highlight/export.html new file mode 100644 index 000000000..86ac89284 --- /dev/null +++ b/output/Scratch/js/highlight/export.html @@ -0,0 +1,87 @@ + + + + + + + + Highlited code export + + + + + + + + + + + + + + + + + + +
Write a code snippetGet HTML to paste anywhere (for actual styles and colors see sample.css)
+ + + + + +
+
+
+ Export script: Vladimir Gubarkov
+ Highlighting: highlight.js +
+ + diff --git a/output/Scratch/js/highlight/highlight.js b/output/Scratch/js/highlight/highlight.js new file mode 100644 index 000000000..72fbc3a46 --- /dev/null +++ b/output/Scratch/js/highlight/highlight.js @@ -0,0 +1,643 @@ +/* +Syntax highlighting with language autodetection. +http://softwaremaniacs.org/soft/highlight/ +*/ + +var hljs = new function() { + + /* Utility functions */ + + function escape(value) { + return value.replace(/&/gm, '&').replace(/'; + } + + while (stream1.length || stream2.length) { + var current = selectStream().splice(0, 1)[0]; + result += escape(value.substr(processed, current.offset - processed)); + processed = current.offset; + if ( current.event == 'start') { + result += open(current.node); + nodeStack.push(current.node); + } else if (current.event == 'stop') { + var node, i = nodeStack.length; + do { + i--; + node = nodeStack[i]; + result += (''); + } while (node != current.node); + nodeStack.splice(i, 1); + while (i < nodeStack.length) { + result += open(nodeStack[i]); + i++; + } + } + } + return result + escape(value.substr(processed)); + } + + /* Initialization */ + + function compileModes() { + + function compileMode(mode, language, is_default) { + if (mode.compiled) + return; + var group; + + if (!is_default) { + mode.beginRe = langRe(language, mode.begin ? mode.begin : '\\B|\\b'); + if (!mode.end && !mode.endsWithParent) + mode.end = '\\B|\\b'; + if (mode.end) + mode.endRe = langRe(language, mode.end); + } + if (mode.illegal) + mode.illegalRe = langRe(language, mode.illegal); + if (mode.relevance === undefined) + mode.relevance = 1; + if (mode.keywords) { + mode.lexemsRe = langRe(language, mode.lexems || hljs.IDENT_RE, true); + for (var className in mode.keywords) { + if (!mode.keywords.hasOwnProperty(className)) + continue; + if (mode.keywords[className] instanceof Object) { + group = mode.keywords[className]; + } else { + group = mode.keywords; + className = 'keyword'; + } + for (var keyword in group) { + if (!group.hasOwnProperty(keyword)) + continue; + mode.keywords[keyword] = [className, group[keyword]]; + } + } + } + if (!mode.contains) { + mode.contains = []; + } + // compiled flag is set before compiling submodes to avoid self-recursion + // (see lisp where quoted_list contains quoted_list) + mode.compiled = true; + for (var i = 0; i < mode.contains.length; i++) { + if (mode.contains[i] == 'self') { + mode.contains[i] = mode; + } + compileMode(mode.contains[i], language, false); + } + if (mode.starts) { + compileMode(mode.starts, language, false); + } + } + + for (var i in languages) { + if (!languages.hasOwnProperty(i)) + continue; + compileMode(languages[i].defaultMode, languages[i], true); + } + } + + /* + Core highlighting function. Accepts a language name and a string with the + code to highlight. Returns an object with the following properties: + + - relevance (int) + - keyword_count (int) + - value (an HTML string with highlighting markup) + + */ + function highlight(language_name, value) { + if (!compileModes.called) { + compileModes(); + compileModes.called = true; + } + + function subMode(lexem, mode) { + for (var i = 0; i < mode.contains.length; i++) { + if (mode.contains[i].beginRe.test(lexem)) { + return mode.contains[i]; + } + } + } + + function endOfMode(mode_index, lexem) { + if (modes[mode_index].end && modes[mode_index].endRe.test(lexem)) + return 1; + if (modes[mode_index].endsWithParent) { + var level = endOfMode(mode_index - 1, lexem); + return level ? level + 1 : 0; + } + return 0; + } + + function isIllegal(lexem, mode) { + return mode.illegal && mode.illegalRe.test(lexem); + } + + function compileTerminators(mode, language) { + var terminators = []; + + for (var i = 0; i < mode.contains.length; i++) { + terminators.push(mode.contains[i].begin); + } + + var index = modes.length - 1; + do { + if (modes[index].end) { + terminators.push(modes[index].end); + } + index--; + } while (modes[index + 1].endsWithParent); + + if (mode.illegal) { + terminators.push(mode.illegal); + } + + return langRe(language, '(' + terminators.join('|') + ')', true); + } + + function eatModeChunk(value, index) { + var mode = modes[modes.length - 1]; + if (!mode.terminators) { + mode.terminators = compileTerminators(mode, language); + } + mode.terminators.lastIndex = index; + var match = mode.terminators.exec(value); + if (match) + return [value.substr(index, match.index - index), match[0], false]; + else + return [value.substr(index), '', true]; + } + + function keywordMatch(mode, match) { + var match_str = language.case_insensitive ? match[0].toLowerCase() : match[0]; + var value = mode.keywords[match_str]; + if (value && value instanceof Array) + return value; + return false; + } + + function processKeywords(buffer, mode) { + buffer = escape(buffer); + if (!mode.keywords) + return buffer; + var result = ''; + var last_index = 0; + mode.lexemsRe.lastIndex = 0; + var match = mode.lexemsRe.exec(buffer); + while (match) { + result += buffer.substr(last_index, match.index - last_index); + var keyword_match = keywordMatch(mode, match); + if (keyword_match) { + keyword_count += keyword_match[1]; + result += '' + match[0] + ''; + } else { + result += match[0]; + } + last_index = mode.lexemsRe.lastIndex; + match = mode.lexemsRe.exec(buffer); + } + return result + buffer.substr(last_index, buffer.length - last_index); + } + + function processBuffer(buffer, mode) { + if (mode.subLanguage && languages[mode.subLanguage]) { + var result = highlight(mode.subLanguage, buffer); + keyword_count += result.keyword_count; + return result.value; + } else { + return processKeywords(buffer, mode); + } + } + + function startNewMode(mode, lexem) { + var markup = mode.className?'':''; + if (mode.returnBegin) { + result += markup; + mode.buffer = ''; + } else if (mode.excludeBegin) { + result += escape(lexem) + markup; + mode.buffer = ''; + } else { + result += markup; + mode.buffer = lexem; + } + modes.push(mode); + relevance += mode.relevance; + } + + function processModeInfo(buffer, lexem, end) { + var current_mode = modes[modes.length - 1]; + if (end) { + result += processBuffer(current_mode.buffer + buffer, current_mode); + return false; + } + + var new_mode = subMode(lexem, current_mode); + if (new_mode) { + result += processBuffer(current_mode.buffer + buffer, current_mode); + startNewMode(new_mode, lexem); + return new_mode.returnBegin; + } + + var end_level = endOfMode(modes.length - 1, lexem); + if (end_level) { + var markup = current_mode.className?'':''; + if (current_mode.returnEnd) { + result += processBuffer(current_mode.buffer + buffer, current_mode) + markup; + } else if (current_mode.excludeEnd) { + result += processBuffer(current_mode.buffer + buffer, current_mode) + markup + escape(lexem); + } else { + result += processBuffer(current_mode.buffer + buffer + lexem, current_mode) + markup; + } + while (end_level > 1) { + markup = modes[modes.length - 2].className?'':''; + result += markup; + end_level--; + modes.length--; + } + var last_ended_mode = modes[modes.length - 1]; + modes.length--; + modes[modes.length - 1].buffer = ''; + if (last_ended_mode.starts) { + startNewMode(last_ended_mode.starts, ''); + } + return current_mode.returnEnd; + } + + if (isIllegal(lexem, current_mode)) + throw 'Illegal'; + } + + var language = languages[language_name]; + var modes = [language.defaultMode]; + var relevance = 0; + var keyword_count = 0; + var result = ''; + try { + var mode_info, index = 0; + language.defaultMode.buffer = ''; + do { + mode_info = eatModeChunk(value, index); + var return_lexem = processModeInfo(mode_info[0], mode_info[1], mode_info[2]); + index += mode_info[0].length; + if (!return_lexem) { + index += mode_info[1].length; + } + } while (!mode_info[2]); + if(modes.length > 1) + throw 'Illegal'; + return { + relevance: relevance, + keyword_count: keyword_count, + value: result + }; + } catch (e) { + if (e == 'Illegal') { + return { + relevance: 0, + keyword_count: 0, + value: escape(value) + }; + } else { + throw e; + } + } + } + + /* + Highlighting with language detection. Accepts a string with the code to + highlight. Returns an object with the following properties: + + - language (detected language) + - relevance (int) + - keyword_count (int) + - value (an HTML string with highlighting markup) + - second_best (object with the same structure for second-best heuristically + detected language, may be absent) + + */ + function highlightAuto(text) { + var result = { + keyword_count: 0, + relevance: 0, + value: escape(text) + }; + var second_best = result; + for (var key in languages) { + if (!languages.hasOwnProperty(key)) + continue; + var current = highlight(key, text); + current.language = key; + if (current.keyword_count + current.relevance > second_best.keyword_count + second_best.relevance) { + second_best = current; + } + if (current.keyword_count + current.relevance > result.keyword_count + result.relevance) { + second_best = result; + result = current; + } + } + if (second_best.language) { + result.second_best = second_best; + } + return result; + } + + /* + Post-processing of the highlighted markup: + + - replace TABs with something more useful + - replace real line-breaks with '
' for non-pre containers + + */ + function fixMarkup(value, tabReplace, useBR) { + if (tabReplace) { + value = value.replace(/^((<[^>]+>|\t)+)/gm, function(match, p1, offset, s) { + return p1.replace(/\t/g, tabReplace); + }); + } + if (useBR) { + value = value.replace(/\n/g, '
'); + } + return value; + } + + /* + Applies highlighting to a DOM node containing code. Accepts a DOM node and + two optional parameters for fixMarkup. + */ + function highlightBlock(block, tabReplace, useBR) { + var text = blockText(block, useBR); + var language = blockLanguage(block); + var result, pre; + if (language == 'no-highlight') + return; + if (language) { + result = highlight(language, text); + } else { + result = highlightAuto(text); + language = result.language; + } + var original = nodeStream(block); + if (original.length) { + pre = document.createElement('pre'); + pre.innerHTML = result.value; + result.value = mergeStreams(original, nodeStream(pre), text); + } + result.value = fixMarkup(result.value, tabReplace, useBR); + + var class_name = block.className; + if (!class_name.match('(\\s|^)(language-)?' + language + '(\\s|$)')) { + class_name = class_name ? (class_name + ' ' + language) : language; + } + if (/MSIE [678]/.test(navigator.userAgent) && block.tagName == 'CODE' && block.parentNode.tagName == 'PRE') { + // This is for backwards compatibility only. IE needs this strange + // hack becasue it cannot just cleanly replace block contents. + pre = block.parentNode; + var container = document.createElement('div'); + container.innerHTML = '
' + result.value + '
'; + block = container.firstChild.firstChild; + container.firstChild.className = pre.className; + pre.parentNode.replaceChild(container.firstChild, pre); + } else { + block.innerHTML = result.value; + } + block.className = class_name; + block.result = { + language: language, + kw: result.keyword_count, + re: result.relevance + }; + if (result.second_best) { + block.second_best = { + language: result.second_best.language, + kw: result.second_best.keyword_count, + re: result.second_best.relevance + }; + } + } + + /* + Applies highlighting to all
..
blocks on a page. + */ + function initHighlighting() { + if (initHighlighting.called) + return; + initHighlighting.called = true; + var pres = document.getElementsByTagName('pre'); + for (var i = 0; i < pres.length; i++) { + var code = findCode(pres[i]); + if (code) + highlightBlock(code, hljs.tabReplace); + } + } + + /* + Attaches highlighting to the page load event. + */ + function initHighlightingOnLoad() { + if (window.addEventListener) { + window.addEventListener('DOMContentLoaded', initHighlighting, false); + window.addEventListener('load', initHighlighting, false); + } else if (window.attachEvent) + window.attachEvent('onload', initHighlighting); + else + window.onload = initHighlighting; + } + + var languages = {}; // a shortcut to avoid writing "this." everywhere + + /* Interface definition */ + + this.LANGUAGES = languages; + this.highlight = highlight; + this.highlightAuto = highlightAuto; + this.fixMarkup = fixMarkup; + this.highlightBlock = highlightBlock; + this.initHighlighting = initHighlighting; + this.initHighlightingOnLoad = initHighlightingOnLoad; + + // Common regexps + this.IDENT_RE = '[a-zA-Z][a-zA-Z0-9_]*'; + this.UNDERSCORE_IDENT_RE = '[a-zA-Z_][a-zA-Z0-9_]*'; + this.NUMBER_RE = '\\b\\d+(\\.\\d+)?'; + this.C_NUMBER_RE = '\\b(0[xX][a-fA-F0-9]+|(\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)'; // 0x..., 0..., decimal, float + this.BINARY_NUMBER_RE = '\\b(0b[01]+)'; // 0b... + this.RE_STARTERS_RE = '!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|\\.|-|-=|/|/=|:|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~'; + + // Common modes + this.BACKSLASH_ESCAPE = { + begin: '\\\\.', relevance: 0 + }; + this.APOS_STRING_MODE = { + className: 'string', + begin: '\'', end: '\'', + illegal: '\\n', + contains: [this.BACKSLASH_ESCAPE], + relevance: 0 + }; + this.QUOTE_STRING_MODE = { + className: 'string', + begin: '"', end: '"', + illegal: '\\n', + contains: [this.BACKSLASH_ESCAPE], + relevance: 0 + }; + this.C_LINE_COMMENT_MODE = { + className: 'comment', + begin: '//', end: '$' + }; + this.C_BLOCK_COMMENT_MODE = { + className: 'comment', + begin: '/\\*', end: '\\*/' + }; + this.HASH_COMMENT_MODE = { + className: 'comment', + begin: '#', end: '$' + }; + this.NUMBER_MODE = { + className: 'number', + begin: this.NUMBER_RE, + relevance: 0 + }; + this.C_NUMBER_MODE = { + className: 'number', + begin: this.C_NUMBER_RE, + relevance: 0 + }; + this.BINARY_NUMBER_MODE = { + className: 'number', + begin: this.BINARY_NUMBER_RE, + relevance: 0 + }; + + // Utility functions + this.inherit = function(parent, obj) { + var result = {} + for (var key in parent) + result[key] = parent[key]; + if (obj) + for (var key in obj) + result[key] = obj[key]; + return result; + } +}(); diff --git a/output/Scratch/js/highlight/highlight.pack.js b/output/Scratch/js/highlight/highlight.pack.js new file mode 100644 index 000000000..b0b5859e4 --- /dev/null +++ b/output/Scratch/js/highlight/highlight.pack.js @@ -0,0 +1 @@ +var hljs=new function(){function m(p){return p.replace(/&/gm,"&").replace(/"}while(y.length||z.length){var v=u().splice(0,1)[0];w+=m(x.substr(r,v.offset-r));r=v.offset;if(v.event=="start"){w+=s(v.node);t.push(v.node)}else{if(v.event=="stop"){var p,q=t.length;do{q--;p=t[q];w+=("")}while(p!=v.node);t.splice(q,1);while(q'+L[0]+""}else{N+=L[0]}P=O.lR.lastIndex;L=O.lR.exec(M)}return N+M.substr(P,M.length-P)}function K(r,M){if(M.sL&&d[M.sL]){var L=e(M.sL,r);t+=L.keyword_count;return L.value}else{return F(r,M)}}function I(M,r){var L=M.cN?'':"";if(M.rB){q+=L;M.buffer=""}else{if(M.eB){q+=m(r)+L;M.buffer=""}else{q+=L;M.buffer=r}}C.push(M);B+=M.r}function E(O,L,Q){var R=C[C.length-1];if(Q){q+=K(R.buffer+O,R);return false}var M=z(L,R);if(M){q+=K(R.buffer+O,R);I(M,L);return M.rB}var r=w(C.length-1,L);if(r){var N=R.cN?"":"";if(R.rE){q+=K(R.buffer+O,R)+N}else{if(R.eE){q+=K(R.buffer+O,R)+N+m(L)}else{q+=K(R.buffer+O+L,R)+N}}while(r>1){N=C[C.length-2].cN?"":"";q+=N;r--;C.length--}var P=C[C.length-1];C.length--;C[C.length-1].buffer="";if(P.starts){I(P.starts,"")}return R.rE}if(x(L,R)){throw"Illegal"}}var H=d[J];var C=[H.dM];var B=0;var t=0;var q="";try{var y,v=0;H.dM.buffer="";do{y=s(D,v);var u=E(y[0],y[1],y[2]);v+=y[0].length;if(!u){v+=y[1].length}}while(!y[2]);if(C.length>1){throw"Illegal"}return{r:B,keyword_count:t,value:q}}catch(G){if(G=="Illegal"){return{r:0,keyword_count:0,value:m(D)}}else{throw G}}}function f(t){var r={keyword_count:0,r:0,value:m(t)};var q=r;for(var p in d){if(!d.hasOwnProperty(p)){continue}var s=e(p,t);s.language=p;if(s.keyword_count+s.r>q.keyword_count+q.r){q=s}if(s.keyword_count+s.r>r.keyword_count+r.r){q=r;r=s}}if(q.language){r.second_best=q}return r}function h(r,q,p){if(q){r=r.replace(/^((<[^>]+>|\t)+)/gm,function(t,w,v,u){return w.replace(/\t/g,q)})}if(p){r=r.replace(/\n/g,"
")}return r}function o(u,x,q){var y=g(u,q);var s=a(u);var w,r;if(s=="no-highlight"){return}if(s){w=e(s,y)}else{w=f(y);s=w.language}var p=b(u);if(p.length){r=document.createElement("pre");r.innerHTML=w.value;w.value=l(p,b(r),y)}w.value=h(w.value,x,q);var t=u.className;if(!t.match("(\\s|^)(language-)?"+s+"(\\s|$)")){t=t?(t+" "+s):s}if(/MSIE [678]/.test(navigator.userAgent)&&u.tagName=="CODE"&&u.parentNode.tagName=="PRE"){r=u.parentNode;var v=document.createElement("div");v.innerHTML="
"+w.value+"
";u=v.firstChild.firstChild;v.firstChild.cN=r.cN;r.parentNode.replaceChild(v.firstChild,r)}else{u.innerHTML=w.value}u.className=t;u.result={language:s,kw:w.keyword_count,re:w.r};if(w.second_best){u.second_best={language:w.second_best.language,kw:w.second_best.keyword_count,re:w.second_best.r}}}function k(){if(k.called){return}k.called=true;var r=document.getElementsByTagName("pre");for(var p=0;p|>=|>>|>>=|>>>|>>>=|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";this.BE={b:"\\\\.",r:0};this.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[this.BE],r:0};this.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[this.BE],r:0};this.CLCM={cN:"comment",b:"//",e:"$"};this.CBLCLM={cN:"comment",b:"/\\*",e:"\\*/"};this.HCM={cN:"comment",b:"#",e:"$"};this.NM={cN:"number",b:this.NR,r:0};this.CNM={cN:"number",b:this.CNR,r:0};this.BINARY_NUMBER_MODE={cN:"number",b:this.BINARY_NUMBER_RE,r:0};this.inherit=function(p,s){var r={};for(var q in p){r[q]=p[q]}if(s){for(var q in s){r[q]=s[q]}}return r}}();hljs.LANGUAGES.bash=function(){var d={"true":1,"false":1};var c={cN:"variable",b:"\\$([a-zA-Z0-9_]+)\\b"};var a={cN:"variable",b:"\\$\\{(([^}])|(\\\\}))+\\}",c:[hljs.CNM]};var f={cN:"string",b:'"',e:'"',i:"\\n",c:[hljs.BE,c,a],r:0};var b={cN:"string",b:"'",e:"'",r:0};var e={cN:"test_condition",b:"",e:"",c:[f,b,c,a,hljs.CNM],k:{literal:d},r:0};return{dM:{k:{keyword:{"if":1,then:1,"else":1,fi:1,"for":1,"break":1,"continue":1,"while":1,"in":1,"do":1,done:1,echo:1,exit:1,"return":1,set:1,declare:1},literal:d},c:[{cN:"shebang",b:"(#!\\/bin\\/bash)|(#!\\/bin\\/sh)",r:10},c,a,hljs.HCM,hljs.CNM,f,b,hljs.inherit(e,{b:"\\[ ",e:" \\]",r:0}),hljs.inherit(e,{b:"\\[\\[ ",e:" \\]\\]"})]}}}();hljs.LANGUAGES.erlang=function(){var h="[a-z'][a-zA-Z0-9_']*";var m="("+h+":"+h+"|"+h+")";var d={keyword:{after:1,and:1,andalso:10,band:1,begin:1,bnot:1,bor:1,bsl:1,bzr:1,bxor:1,"case":1,"catch":1,cond:1,div:1,end:1,fun:1,let:1,not:1,of:1,orelse:10,query:1,receive:1,rem:1,"try":1,when:1,xor:1},literal:{"false":1,"true":1}};var k={cN:"comment",b:"%",e:"$",r:0};var f={cN:"number",b:"\\b(\\d+#[a-fA-F0-9]+|\\d+(\\.\\d+)?([eE][-+]?\\d+)?)",r:0};var c={b:"fun\\s+"+h+"/\\d+"};var n={b:m+"\\(",e:"\\)",rB:true,r:0,c:[{cN:"function_name",b:m,r:0},{b:"\\(",e:"\\)",eW:true,rE:true,r:0}]};var g={cN:"tuple",b:"{",e:"}",r:0};var a={cN:"variable",b:"\\b_([A-Z][A-Za-z0-9_]*)?",r:0};var l={cN:"variable",b:"[A-Z][a-zA-Z0-9_]*",r:0};var i={b:"#",e:"}",i:".",r:0,rB:true,c:[{cN:"record_name",b:"#"+hljs.UIR,r:0},{b:"{",eW:true,r:0}]};var j={k:d,b:"(fun|receive|if|try|case)",e:"end"};j.c=[k,c,hljs.inherit(hljs.ASM,{cN:""}),j,n,hljs.QSM,f,g,a,l,i];var b=[k,c,j,n,hljs.QSM,f,g,a,l,i];n.c[1].c=b;g.c=b;i.c[1].c=b;var e={cN:"params",b:"\\(",e:"\\)",eW:true,c:b};return{dM:{k:d,i:"(",eW:true,c:b}]},k,{cN:"pp",b:"^-",e:"\\.",r:0,eE:true,rB:true,l:"-"+hljs.IR,k:{"-module":1,"-record":1,"-undef":1,"-export":1,"-ifdef":1,"-ifndef":1,"-author":1,"-copyright":1,"-doc":1,"-vsn":1,"-import":1,"-include":1,"-include_lib":1,"-compile":1,"-define":1,"-else":1,"-endif":1,"-file":1,"-behaviour":1,"-behavior":1},c:[e]},f,hljs.QSM,i,a,l,g]}}}();hljs.LANGUAGES.cs={dM:{k:{"abstract":1,as:1,base:1,bool:1,"break":1,"byte":1,"case":1,"catch":1,"char":1,checked:1,"class":1,"const":1,"continue":1,decimal:1,"default":1,delegate:1,"do":1,"double":1,"else":1,"enum":1,event:1,explicit:1,extern:1,"false":1,"finally":1,fixed:1,"float":1,"for":1,foreach:1,"goto":1,"if":1,implicit:1,"in":1,"int":1,"interface":1,internal:1,is:1,lock:1,"long":1,namespace:1,"new":1,"null":1,object:1,operator:1,out:1,override:1,params:1,"private":1,"protected":1,"public":1,readonly:1,ref:1,"return":1,sbyte:1,sealed:1,"short":1,sizeof:1,stackalloc:1,"static":1,string:1,struct:1,"switch":1,"this":1,"throw":1,"true":1,"try":1,"typeof":1,uint:1,ulong:1,unchecked:1,unsafe:1,ushort:1,using:1,virtual:1,"volatile":1,"void":1,"while":1,ascending:1,descending:1,from:1,get:1,group:1,into:1,join:1,let:1,orderby:1,partial:1,select:1,set:1,value:1,"var":1,where:1,yield:1},c:[{cN:"comment",b:"///",e:"$",rB:true,c:[{cN:"xmlDocTag",b:"///|"},{cN:"xmlDocTag",b:""}]},hljs.CLCM,hljs.CBLCLM,{cN:"preprocessor",b:"#",e:"$",k:{"if":1,"else":1,elif:1,endif:1,define:1,undef:1,warning:1,error:1,line:1,region:1,endregion:1,pragma:1,checksum:1}},{cN:"string",b:'@"',e:'"',c:[{b:'""'}]},hljs.ASM,hljs.QSM,hljs.CNM]}};hljs.LANGUAGES.ruby=function(){var c="[a-zA-Z_][a-zA-Z0-9_]*(\\!|\\?)?";var i="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?";var a={keyword:{and:1,"false":1,then:1,defined:1,module:1,"in":1,"return":1,redo:1,"if":1,BEGIN:1,retry:1,end:1,"for":1,"true":1,self:1,when:1,next:1,until:1,"do":1,begin:1,unless:1,END:1,rescue:1,nil:1,"else":1,"break":1,undef:1,not:1,"super":1,"class":1,"case":1,require:1,yield:1,alias:1,"while":1,ensure:1,elsif:1,or:1,def:1},keymethods:{__id__:1,__send__:1,abort:1,abs:1,"all?":1,allocate:1,ancestors:1,"any?":1,arity:1,assoc:1,at:1,at_exit:1,autoload:1,"autoload?":1,"between?":1,binding:1,binmode:1,"block_given?":1,call:1,callcc:1,caller:1,capitalize:1,"capitalize!":1,casecmp:1,"catch":1,ceil:1,center:1,chomp:1,"chomp!":1,chop:1,"chop!":1,chr:1,"class":1,class_eval:1,"class_variable_defined?":1,class_variables:1,clear:1,clone:1,close:1,close_read:1,close_write:1,"closed?":1,coerce:1,collect:1,"collect!":1,compact:1,"compact!":1,concat:1,"const_defined?":1,const_get:1,const_missing:1,const_set:1,constants:1,count:1,crypt:1,"default":1,default_proc:1,"delete":1,"delete!":1,delete_at:1,delete_if:1,detect:1,display:1,div:1,divmod:1,downcase:1,"downcase!":1,downto:1,dump:1,dup:1,each:1,each_byte:1,each_index:1,each_key:1,each_line:1,each_pair:1,each_value:1,each_with_index:1,"empty?":1,entries:1,eof:1,"eof?":1,"eql?":1,"equal?":1,"eval":1,exec:1,exit:1,"exit!":1,extend:1,fail:1,fcntl:1,fetch:1,fileno:1,fill:1,find:1,find_all:1,first:1,flatten:1,"flatten!":1,floor:1,flush:1,for_fd:1,foreach:1,fork:1,format:1,freeze:1,"frozen?":1,fsync:1,getc:1,gets:1,global_variables:1,grep:1,gsub:1,"gsub!":1,"has_key?":1,"has_value?":1,hash:1,hex:1,id:1,include:1,"include?":1,included_modules:1,index:1,indexes:1,indices:1,induced_from:1,inject:1,insert:1,inspect:1,instance_eval:1,instance_method:1,instance_methods:1,"instance_of?":1,"instance_variable_defined?":1,instance_variable_get:1,instance_variable_set:1,instance_variables:1,"integer?":1,intern:1,invert:1,ioctl:1,"is_a?":1,isatty:1,"iterator?":1,join:1,"key?":1,keys:1,"kind_of?":1,lambda:1,last:1,length:1,lineno:1,ljust:1,load:1,local_variables:1,loop:1,lstrip:1,"lstrip!":1,map:1,"map!":1,match:1,max:1,"member?":1,merge:1,"merge!":1,method:1,"method_defined?":1,method_missing:1,methods:1,min:1,module_eval:1,modulo:1,name:1,nesting:1,"new":1,next:1,"next!":1,"nil?":1,nitems:1,"nonzero?":1,object_id:1,oct:1,open:1,pack:1,partition:1,pid:1,pipe:1,pop:1,popen:1,pos:1,prec:1,prec_f:1,prec_i:1,print:1,printf:1,private_class_method:1,private_instance_methods:1,"private_method_defined?":1,private_methods:1,proc:1,protected_instance_methods:1,"protected_method_defined?":1,protected_methods:1,public_class_method:1,public_instance_methods:1,"public_method_defined?":1,public_methods:1,push:1,putc:1,puts:1,quo:1,raise:1,rand:1,rassoc:1,read:1,read_nonblock:1,readchar:1,readline:1,readlines:1,readpartial:1,rehash:1,reject:1,"reject!":1,remainder:1,reopen:1,replace:1,require:1,"respond_to?":1,reverse:1,"reverse!":1,reverse_each:1,rewind:1,rindex:1,rjust:1,round:1,rstrip:1,"rstrip!":1,scan:1,seek:1,select:1,send:1,set_trace_func:1,shift:1,singleton_method_added:1,singleton_methods:1,size:1,sleep:1,slice:1,"slice!":1,sort:1,"sort!":1,sort_by:1,split:1,sprintf:1,squeeze:1,"squeeze!":1,srand:1,stat:1,step:1,store:1,strip:1,"strip!":1,sub:1,"sub!":1,succ:1,"succ!":1,sum:1,superclass:1,swapcase:1,"swapcase!":1,sync:1,syscall:1,sysopen:1,sysread:1,sysseek:1,system:1,syswrite:1,taint:1,"tainted?":1,tell:1,test:1,"throw":1,times:1,to_a:1,to_ary:1,to_f:1,to_hash:1,to_i:1,to_int:1,to_io:1,to_proc:1,to_s:1,to_str:1,to_sym:1,tr:1,"tr!":1,tr_s:1,"tr_s!":1,trace_var:1,transpose:1,trap:1,truncate:1,"tty?":1,type:1,ungetc:1,uniq:1,"uniq!":1,unpack:1,unshift:1,untaint:1,untrace_var:1,upcase:1,"upcase!":1,update:1,upto:1,"value?":1,values:1,values_at:1,warn:1,write:1,write_nonblock:1,"zero?":1,zip:1}};var d={cN:"yardoctag",b:"@[A-Za-z]+"};var k=[{cN:"comment",b:"#",e:"$",c:[d]},{cN:"comment",b:"^\\=begin",e:"^\\=end",c:[d],r:10},{cN:"comment",b:"^__END__",e:"\\n$"}];var e={cN:"subst",b:"#\\{",e:"}",l:c,k:a};var g=[hljs.BE,e];var f=[{cN:"string",b:"'",e:"'",c:g,r:0},{cN:"string",b:'"',e:'"',c:g,r:0},{cN:"string",b:"%[qw]?\\(",e:"\\)",c:g,r:10},{cN:"string",b:"%[qw]?\\[",e:"\\]",c:g,r:10},{cN:"string",b:"%[qw]?{",e:"}",c:g,r:10},{cN:"string",b:"%[qw]?<",e:">",c:g,r:10},{cN:"string",b:"%[qw]?/",e:"/",c:g,r:10},{cN:"string",b:"%[qw]?%",e:"%",c:g,r:10},{cN:"string",b:"%[qw]?-",e:"-",c:g,r:10},{cN:"string",b:"%[qw]?\\|",e:"\\|",c:g,r:10}];var h={cN:"function",b:"\\bdef\\s+",e:" |$|;",l:c,k:a,c:[{cN:"title",b:i,l:c,k:a},{cN:"params",b:"\\(",e:"\\)",l:c,k:a}].concat(k)};var j={cN:"identifier",b:c,l:c,k:a,r:0};var b=k.concat(f.concat([{cN:"class",b:"\\b(class|module)\\b",e:"$|;",k:{"class":1,module:1},c:[{cN:"title",b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?",r:0},{cN:"inheritance",b:"<\\s*",c:[{cN:"parent",b:"("+hljs.IR+"::)?"+hljs.IR}]}].concat(k)},h,{cN:"constant",b:"(::)?([A-Z]\\w*(::)?)+",r:0},{cN:"symbol",b:":",c:f.concat([j]),r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{cN:"number",b:"\\?\\w"},{cN:"variable",b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},j,{b:"("+hljs.RSR+")\\s*",c:k.concat([{cN:"regexp",b:"/",e:"/[a-z]*",i:"\\n",c:[hljs.BE]}]),r:0}]));e.c=b;h.c[1].c=b;return{dM:{l:c,k:a,c:b}}}();hljs.LANGUAGES.rust=function(){var c={cN:"title",b:hljs.UIR};var d={cN:"string",b:'"',e:'"',c:[hljs.BE],r:0};var b={cN:"number",b:"\\b(0[xb][A-Za-z0-9_]+|[0-9_]+(\\.[0-9_]+)?([uif](8|16|32|64)?)?)",r:0};var a={alt:1,any:1,as:1,assert:1,be:1,bind:1,block:1,bool:1,"break":1,"char":1,check:1,claim:1,"const":1,cont:1,dir:1,"do":1,"else":1,"enum":1,"export":1,f32:1,f64:1,fail:1,"false":1,"float":1,fn:10,"for":1,i16:1,i32:1,i64:1,i8:1,"if":1,iface:10,impl:10,"import":1,"in":1,"int":1,let:1,log:1,mod:1,mutable:1,"native":1,note:1,of:1,prove:1,pure:10,resource:1,ret:1,self:1,str:1,syntax:1,"true":1,type:1,u16:1,u32:1,u64:1,u8:1,uint:1,unchecked:1,unsafe:1,use:1,vec:1,"while":1};return{dM:{k:a,i:"]+"}]}]};return{cI:true,dM:{c:[{cN:"pi",b:"<\\?",e:"\\?>",r:10},{cN:"doctype",b:"",r:10,c:[{b:"\\[",e:"\\]"}]},{cN:"comment",b:"",r:10},{cN:"cdata",b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"tag",b:"|$)",e:">",k:{title:{style:1}},c:[a],starts:{cN:"css",e:"",rE:true,sL:"css"}},{cN:"tag",b:"|$)",e:">",k:{title:{script:1}},c:[a],starts:{cN:"javascript",e:"<\/script>",rE:true,sL:"javascript"}},{cN:"vbscript",b:"<%",e:"%>",sL:"vbscript"},{cN:"tag",b:"",c:[{cN:"title",b:"[^ />]+"},a]}]}}}();hljs.LANGUAGES.markdown={cI:true,dM:{c:[{cN:"header",b:"^#{1,3}",e:"$"},{cN:"header",b:"^.+?\\n[=-]{2,}$"},{b:"<",e:">",sL:"xml"},{cN:"bullet",b:"^([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",b:"[*_].+?[*_]"},{cN:"blockquote",b:"^>\\s+",e:"$"},{cN:"code",b:"`.+?`"},{cN:"code",b:"^ ",e:"$",r:0},{cN:"horizontal_rule",b:"^-{3,}",e:"$"},{b:"\\[.+?\\]\\(.+?\\)",rB:true,c:[{cN:"link_label",b:"\\[.+\\]"},{cN:"link_url",b:"\\(",e:"\\)",eB:true,eE:true}]}]}};hljs.LANGUAGES.css=function(){var a={cN:"function",b:hljs.IR+"\\(",e:"\\)",c:[{eW:true,eE:true,c:[hljs.NM,hljs.ASM,hljs.QSM]}]};return{cI:true,dM:{i:"[=/|']",c:[hljs.CBLCLM,{cN:"id",b:"\\#[A-Za-z0-9_-]+"},{cN:"class",b:"\\.[A-Za-z0-9_-]+",r:0},{cN:"attr_selector",b:"\\[",e:"\\]",i:"$"},{cN:"pseudo",b:":(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\\\"\\']+"},{cN:"at_rule",b:"@(font-face|page)",l:"[a-z-]+",k:{"font-face":1,page:1}},{cN:"at_rule",b:"@",e:"[{;]",eE:true,k:{"import":1,page:1,media:1,charset:1},c:[a,hljs.ASM,hljs.QSM,hljs.NM]},{cN:"tag",b:hljs.IR,r:0},{cN:"rules",b:"{",e:"}",i:"[^\\s]",r:0,c:[hljs.CBLCLM,{cN:"rule",b:"[^\\s]",rB:true,e:";",eW:true,c:[{cN:"attribute",b:"[A-Z\\_\\.\\-]+",e:":",eE:true,i:"[^\\s]",starts:{cN:"value",eW:true,eE:true,c:[a,hljs.NM,hljs.QSM,hljs.ASM,hljs.CBLCLM,{cN:"hexcolor",b:"\\#[0-9A-F]+"},{cN:"important",b:"!important"}]}}]}]}]}}}();hljs.LANGUAGES.lisp=function(){var k="[a-zA-Z_\\-\\+\\*\\/\\<\\=\\>\\&\\#][a-zA-Z0-9_\\-\\+\\*\\/\\<\\=\\>\\&\\#]*";var m="(\\-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s)(\\+|\\-)?\\d+)?";var a={cN:"literal",b:"\\b(t{1}|nil)\\b"};var f=[{cN:"number",b:m},{cN:"number",b:"#b[0-1]+(/[0-1]+)?"},{cN:"number",b:"#o[0-7]+(/[0-7]+)?"},{cN:"number",b:"#x[0-9a-f]+(/[0-9a-f]+)?"},{cN:"number",b:"#c\\("+m+" +"+m,e:"\\)"}];var b={cN:"string",b:'"',e:'"',c:[hljs.BE],r:0};var l={cN:"comment",b:";",e:"$"};var c={cN:"variable",b:"\\*",e:"\\*"};var j={cN:"keyword",b:"[:&]"+k};var h={b:"\\(",e:"\\)",c:["self",a,b].concat(f)};var e={cN:"quoted",b:"['`]\\(",e:"\\)",c:f.concat([b,c,j,h])};var d={cN:"quoted",b:"\\(quote ",e:"\\)",k:{title:{quote:1}},c:f.concat([b,c,j,h])};var i={cN:"list",b:"\\(",e:"\\)"};var g={cN:"body",eW:true,eE:true};i.c=[{cN:"title",b:k},g];g.c=[e,d,i,a].concat(f).concat([b,l,c,j]);return{cI:true,dM:{i:"[^\\s]",c:f.concat([a,b,l,e,d,i])}}}();hljs.LANGUAGES.profile={dM:{c:[hljs.CNM,{cN:"builtin",b:"{",e:"}$",eB:true,eE:true,c:[hljs.ASM,hljs.QSM],r:0},{cN:"filename",b:"[a-zA-Z_][\\da-zA-Z_]+\\.[\\da-zA-Z_]{1,3}",e:":",eE:true},{cN:"header",b:"(ncalls|tottime|cumtime)",e:"$",k:{ncalls:1,tottime:10,cumtime:10,filename:1},r:10},{cN:"summary",b:"function calls",e:"$",c:[hljs.CNM],r:10},hljs.ASM,hljs.QSM,{cN:"function",b:"\\(",e:"\\)$",c:[{cN:"title",b:hljs.UIR,r:0}],r:0}]}};hljs.LANGUAGES.java={dM:{k:{"false":1,"synchronized":1,"int":1,"abstract":1,"float":1,"private":1,"char":1,"interface":1,"boolean":1,"static":1,"null":1,"if":1,"const":1,"for":1,"true":1,"while":1,"long":1,"throw":1,strictfp:1,"finally":1,"protected":1,"extends":1,"import":1,"native":1,"final":1,"implements":1,"return":1,"void":1,"enum":1,"else":1,"break":1,"transient":1,"new":1,"catch":1,"instanceof":1,"byte":1,"super":1,"class":1,"volatile":1,"case":1,assert:1,"short":1,"package":1,"default":1,"double":1,"public":1,"try":1,"this":1,"switch":1,"continue":1,"throws":1},c:[{cN:"javadoc",b:"/\\*\\*",e:"\\*/",c:[{cN:"javadoctag",b:"@[A-Za-z]+"}],r:10},hljs.CLCM,hljs.CBLCLM,hljs.ASM,hljs.QSM,{cN:"class",b:"(class |interface )",e:"{",k:{"class":1,"interface":1},i:":",c:[{b:"(implements|extends)",k:{"extends":1,"implements":1},r:10},{cN:"title",b:hljs.UIR}]},hljs.CNM,{cN:"annotation",b:"@[A-Za-z]+"}]}};hljs.LANGUAGES.php={cI:true,dM:{k:{and:1,include_once:1,list:1,"abstract":1,global:1,"private":1,echo:1,"interface":1,as:1,"static":1,endswitch:1,array:1,"null":1,"if":1,endwhile:1,or:1,"const":1,"for":1,endforeach:1,self:1,"var":1,"while":1,isset:1,"public":1,"protected":1,exit:1,foreach:1,"throw":1,elseif:1,"extends":1,include:1,__FILE__:1,empty:1,require_once:1,"function":1,"do":1,xor:1,"return":1,"implements":1,parent:1,clone:1,use:1,__CLASS__:1,__LINE__:1,"else":1,"break":1,print:1,"eval":1,"new":1,"catch":1,__METHOD__:1,"class":1,"case":1,exception:1,php_user_filter:1,"default":1,die:1,require:1,__FUNCTION__:1,enddeclare:1,"final":1,"try":1,"this":1,"switch":1,"continue":1,endfor:1,endif:1,declare:1,unset:1,"true":1,"false":1,namespace:1,trait:1,"goto":1,"instanceof":1,__DIR__:1,__NAMESPACE__:1,__halt_compiler:1},c:[hljs.CLCM,hljs.HCM,{cN:"comment",b:"/\\*",e:"\\*/",c:[{cN:"phpdoc",b:"\\s@[A-Za-z]+"}]},{cN:"comment",eB:true,b:"__halt_compiler[^;]+;",e:"[\\n\\r]$"},hljs.CNM,hljs.BINARY_NUMBER_MODE,hljs.inherit(hljs.ASM,{i:null}),hljs.inherit(hljs.QSM,{i:null}),{cN:"string",b:'b"',e:'"',c:[hljs.BE]},{cN:"string",b:"b'",e:"'",c:[hljs.BE]},{cN:"string",b:"<<<['\"]?\\w+['\"]?$",e:"^\\w+;",c:[hljs.BE]},{cN:"variable",b:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*"},{cN:"preprocessor",b:"<\\?php",r:10},{cN:"preprocessor",b:"\\?>"}]}};hljs.LANGUAGES.haskell=function(){var a={cN:"label",b:"\\b[A-Z][\\w']*",r:0};var b={cN:"container",b:"\\(",e:"\\)",c:[{cN:"label",b:"\\b[A-Z][\\w\\(\\)\\.']*"},{cN:"title",b:"[_a-z][\\w']*"}]};return{dM:{k:{keyword:{let:1,"in":1,"if":1,then:1,"else":1,"case":1,of:1,where:1,"do":1,module:1,"import":1,hiding:1,qualified:1,type:1,data:1,newtype:1,deriving:1,"class":1,instance:1,"null":1,not:1,as:1}},c:[{cN:"comment",b:"--",e:"$"},{cN:"comment",b:"{-",e:"-}"},{cN:"string",b:"\\s+'",e:"'",c:[hljs.BE],r:0},hljs.QSM,{cN:"import",b:"\\bimport",e:"$",k:{"import":1,qualified:1,as:1,hiding:1},c:[b]},{cN:"module",b:"\\bmodule",e:"where",k:{module:1,where:1},c:[b]},{cN:"class",b:"\\b(class|instance|data|(new)?type)",e:"(where|$)",k:{"class":1,where:1,instance:1,data:1,type:1,newtype:1,deriving:1},c:[a]},hljs.CNM,{cN:"shebang",b:"#!\\/usr\\/bin\\/env runhaskell",e:"$"},a,{cN:"title",b:"^[_a-z][\\w']*"}]}}}();hljs.LANGUAGES["1c"]=function(){var b="[a-zA-Zа-яА-Я][a-zA-Z0-9_а-яА-Я]*";var e={"возврат":1,"дата":1,"для":1,"если":1,"и":1,"или":1,"иначе":1,"иначеесли":1,"исключение":1,"конецесли":1,"конецпопытки":1,"конецпроцедуры":1,"конецфункции":1,"конеццикла":1,"константа":1,"не":1,"перейти":1,"перем":1,"перечисление":1,"по":1,"пока":1,"попытка":1,"прервать":1,"продолжить":1,"процедура":1,"строка":1,"тогда":1,"фс":1,"функция":1,"цикл":1,"число":1,"экспорт":1};var d={ansitooem:1,oemtoansi:1,"ввестивидсубконто":1,"ввестидату":1,"ввестизначение":1,"ввестиперечисление":1,"ввестипериод":1,"ввестиплансчетов":1,"ввестистроку":1,"ввестичисло":1,"вопрос":1,"восстановитьзначение":1,"врег":1,"выбранныйплансчетов":1,"вызватьисключение":1,"датагод":1,"датамесяц":1,"датачисло":1,"добавитьмесяц":1,"завершитьработусистемы":1,"заголовоксистемы":1,"записьжурналарегистрации":1,"запуститьприложение":1,"зафиксироватьтранзакцию":1,"значениевстроку":1,"значениевстрокувнутр":1,"значениевфайл":1,"значениеизстроки":1,"значениеизстрокивнутр":1,"значениеизфайла":1,"имякомпьютера":1,"имяпользователя":1,"каталогвременныхфайлов":1,"каталогиб":1,"каталогпользователя":1,"каталогпрограммы":1,"кодсимв":1,"командасистемы":1,"конгода":1,"конецпериодаби":1,"конецрассчитанногопериодаби":1,"конецстандартногоинтервала":1,"конквартала":1,"конмесяца":1,"коннедели":1,"лев":1,"лог":1,"лог10":1,"макс":1,"максимальноеколичествосубконто":1,"мин":1,"монопольныйрежим":1,"названиеинтерфейса":1,"названиенабораправ":1,"назначитьвид":1,"назначитьсчет":1,"найти":1,"найтипомеченныенаудаление":1,"найтиссылки":1,"началопериодаби":1,"началостандартногоинтервала":1,"начатьтранзакцию":1,"начгода":1,"начквартала":1,"начмесяца":1,"начнедели":1,"номерднягода":1,"номерднянедели":1,"номернеделигода":1,"нрег":1,"обработкаожидания":1,"окр":1,"описаниеошибки":1,"основнойжурналрасчетов":1,"основнойплансчетов":1,"основнойязык":1,"открытьформу":1,"открытьформумодально":1,"отменитьтранзакцию":1,"очиститьокносообщений":1,"периодстр":1,"полноеимяпользователя":1,"получитьвремята":1,"получитьдатута":1,"получитьдокументта":1,"получитьзначенияотбора":1,"получитьпозициюта":1,"получитьпустоезначение":1,"получитьта":1,"прав":1,"праводоступа":1,"предупреждение":1,"префиксавтонумерации":1,"пустаястрока":1,"пустоезначение":1,"рабочаядаттьпустоезначение":1,"рабочаядата":1,"разделительстраниц":1,"разделительстрок":1,"разм":1,"разобратьпозициюдокумента":1,"рассчитатьрегистрына":1,"рассчитатьрегистрыпо":1,"сигнал":1,"симв":1,"символтабуляции":1,"создатьобъект":1,"сокрл":1,"сокрлп":1,"сокрп":1," сообщить":1,"состояние":1,"сохранитьзначение":1,"сред":1,"статусвозврата":1,"стрдлина":1,"стрзаменить":1,"стрколичествострок":1,"стрполучитьстроку":1," стрчисловхождений":1,"сформироватьпозициюдокумента":1,"счетпокоду":1,"текущаядата":1,"текущеевремя":1,"типзначения":1,"типзначениястр":1,"удалитьобъекты":1,"установитьтана":1,"установитьтапо":1,"фиксшаблон":1,"формат":1,"цел":1,"шаблон":1};var a={cN:"dquote",b:'""'};var c={cN:"string",b:'"',e:'"|$',c:[a],r:0};var f={cN:"string",b:"\\|",e:'"|$',c:[a]};return{cI:true,dM:{l:b,k:{keyword:e,built_in:d},c:[hljs.CLCM,hljs.NM,c,f,{cN:"function",b:"(процедура|функция)",e:"$",l:b,k:{"процедура":1,"экспорт":1,"функция":1},c:[{cN:"title",b:b},{cN:"tail",eW:true,c:[{cN:"params",b:"\\(",e:"\\)",l:b,k:{"знач":1},c:[c,f]},{cN:"export",b:"экспорт",eW:true,l:b,k:{"экспорт":1},c:[hljs.CLCM]}]},hljs.CLCM]},{cN:"preprocessor",b:"#",e:"$"},{cN:"date",b:"'\\d{2}\\.\\d{2}\\.(\\d{2}|\\d{4})'"}]}}}();hljs.LANGUAGES.python=function(){var a=[{cN:"string",b:"(u|b)?r?'''",e:"'''",r:10},{cN:"string",b:'(u|b)?r?"""',e:'"""',r:10},{cN:"string",b:"(u|r|ur)'",e:"'",c:[hljs.BE],r:10},{cN:"string",b:'(u|r|ur)"',e:'"',c:[hljs.BE],r:10},{cN:"string",b:"(b|br)'",e:"'",c:[hljs.BE]},{cN:"string",b:'(b|br)"',e:'"',c:[hljs.BE]}].concat([hljs.ASM,hljs.QSM]);var b={cN:"title",b:hljs.UIR};var c={cN:"params",b:"\\(",e:"\\)",c:a.concat([hljs.CNM])};return{dM:{k:{keyword:{and:1,elif:1,is:1,global:1,as:1,"in":1,"if":1,from:1,raise:1,"for":1,except:1,"finally":1,print:1,"import":1,pass:1,"return":1,exec:1,"else":1,"break":1,not:1,"with":1,"class":1,assert:1,yield:1,"try":1,"while":1,"continue":1,del:1,or:1,def:1,lambda:1,nonlocal:10},built_in:{None:1,True:1,False:1,Ellipsis:1,NotImplemented:1}},i:"(|\\?)",c:a.concat([hljs.HCM,{cN:"function",b:"\\bdef ",e:":",i:"$",k:{def:1},c:[b,c],r:10},{cN:"class",b:"\\bclass ",e:":",i:"[${]",k:{"class":1},c:[b,c],r:10},hljs.CNM,{cN:"decorator",b:"@",e:"$"}])}}}();hljs.LANGUAGES.smalltalk=function(){var b="[a-z][a-zA-Z0-9_]*";var c={cN:"char",b:"\\$.{1}"};var a={cN:"symbol",b:"#"+hljs.UIR};return{dM:{k:{self:1,"super":1,nil:1,"true":1,"false":1,thisContext:1},c:[{cN:"comment",b:'"',e:'"',r:0},hljs.ASM,{cN:"class",b:"\\b[A-Z][A-Za-z0-9_]*",r:0},{cN:"method",b:b+":"},hljs.CNM,a,c,{cN:"localvars",b:"\\|\\s*(("+b+")\\s*)+\\|"},{cN:"array",b:"\\#\\(",e:"\\)",c:[hljs.ASM,c,hljs.CNM,a]}]}}}();hljs.LANGUAGES.tex=function(){var c={cN:"command",b:"\\\\[a-zA-Zа-яА-я]+[\\*]?",r:10};var b={cN:"command",b:"\\\\[^a-zA-Zа-яА-я0-9]",r:0};var a={cN:"special",b:"[{}\\[\\]\\&#~]",r:0};return{dM:{c:[{b:"\\\\[a-zA-Zа-яА-я]+[\\*]? *= *-?\\d*\\.?\\d+(pt|pc|mm|cm|in|dd|cc|ex|em)?",rB:true,c:[c,b,{cN:"number",b:" *=",e:"-?\\d*\\.?\\d+(pt|pc|mm|cm|in|dd|cc|ex|em)?",eB:true}],r:10},c,b,a,{cN:"formula",b:"\\$\\$",e:"\\$\\$",c:[c,b,a],r:0},{cN:"formula",b:"\\$",e:"\\$",c:[c,b,a],r:0},{cN:"comment",b:"%",e:"$",r:0}]}}}();hljs.LANGUAGES.actionscript=function(){var c="[a-zA-Z_$][a-zA-Z0-9_$]*";var a="([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)";var d={cN:"rest_arg",b:"[.]{3}",e:c,r:10};var b={cN:"title",b:c};return{dM:{k:{keyword:{as:1,"break":1,"case":1,"catch":1,"class":1,"const":1,"continue":1,"default":1,"delete":1,"do":1,dynamic:5,each:1,"else":1,"extends":1,"final":1,"finally":1,"for":1,"function":1,get:1,"if":1,"implements":1,"import":1,"in":1,include:1,"instanceof":1,"interface":1,internal:1,is:1,namespace:1,"native":1,"new":1,override:1,"package":1,"private":1,"protected":1,"public":1,"return":1,set:1,"static":1,"super":5,"switch":1,"this":1,"throw":1,"try":1,"typeof":1,use:1,"var":1,"void":1,"while":1,"with":1},literal:{"true":1,"false":1,"null":1,"undefined":1},reserved:{"abstract":0,"boolean":0,"byte":0,cast:0,"char":0,"debugger":0,"double":0,"enum":0,"export":0,"float":0,"goto":0,intrinsic:0,"long":0,prototype:0,"short":0,"synchronized":0,"throws":0,to:0,"transient":0,type:0,virtual:0,"volatile":0}},c:[hljs.ASM,hljs.QSM,hljs.CLCM,hljs.CBLCLM,hljs.CNM,{cN:"package",b:"package ?",e:"{",k:{"package":1},c:[b]},{cN:"class",b:"(class|interface) ",e:"{",k:{"class":1,"interface":1},c:[{b:"(implements|extends)",k:{"extends":1,"implements":1},r:5},b]},{cN:"preprocessor",b:"(import|include)\\b",e:";",k:{"import":1,include:1}},{cN:"function",b:"function ",e:"[{;]",k:{"function":1},c:[b,{cN:"params",b:"\\(",e:"\\)",c:[hljs.ASM,hljs.QSM,hljs.CLCM,hljs.CBLCLM,d]},{cN:"type",b:":",e:a,r:10}]}]}}}();hljs.LANGUAGES.sql={cI:true,dM:{i:"[^\\s]",c:[{cN:"operator",b:"(begin|start|commit|rollback|savepoint|lock|alter|create|drop|rename|call|delete|do|handler|insert|load|replace|select|truncate|update|set|show|pragma|grant)\\b",e:";|$",k:{keyword:{all:1,partial:1,global:1,month:1,current_timestamp:1,using:1,go:1,revoke:1,smallint:1,indicator:1,"end-exec":1,disconnect:1,zone:1,"with":1,character:1,assertion:1,to:1,add:1,current_user:1,usage:1,input:1,local:1,alter:1,match:1,collate:1,real:1,then:1,rollback:1,get:1,read:1,timestamp:1,session_user:1,not:1,integer:1,bit:1,unique:1,day:1,minute:1,desc:1,insert:1,execute:1,like:1,ilike:2,level:1,decimal:1,drop:1,"continue":1,isolation:1,found:1,where:1,constraints:1,domain:1,right:1,national:1,some:1,module:1,transaction:1,relative:1,second:1,connect:1,escape:1,close:1,system_user:1,"for":1,deferred:1,section:1,cast:1,current:1,sqlstate:1,allocate:1,intersect:1,deallocate:1,numeric:1,"public":1,preserve:1,full:1,"goto":1,initially:1,asc:1,no:1,key:1,output:1,collation:1,group:1,by:1,union:1,session:1,both:1,last:1,language:1,constraint:1,column:1,of:1,space:1,foreign:1,deferrable:1,prior:1,connection:1,unknown:1,action:1,commit:1,view:1,or:1,first:1,into:1,"float":1,year:1,primary:1,cascaded:1,except:1,restrict:1,set:1,references:1,names:1,table:1,outer:1,open:1,select:1,size:1,are:1,rows:1,from:1,prepare:1,distinct:1,leading:1,create:1,only:1,next:1,inner:1,authorization:1,schema:1,corresponding:1,option:1,declare:1,precision:1,immediate:1,"else":1,timezone_minute:1,external:1,varying:1,translation:1,"true":1,"case":1,exception:1,join:1,hour:1,"default":1,"double":1,scroll:1,value:1,cursor:1,descriptor:1,values:1,dec:1,fetch:1,procedure:1,"delete":1,and:1,"false":1,"int":1,is:1,describe:1,"char":1,as:1,at:1,"in":1,varchar:1,"null":1,trailing:1,any:1,absolute:1,current_time:1,end:1,grant:1,privileges:1,when:1,cross:1,check:1,write:1,current_date:1,pad:1,begin:1,temporary:1,exec:1,time:1,update:1,catalog:1,user:1,sql:1,date:1,on:1,identity:1,timezone_hour:1,natural:1,whenever:1,interval:1,work:1,order:1,cascade:1,diagnostics:1,nchar:1,having:1,left:1,call:1,"do":1,handler:1,load:1,replace:1,truncate:1,start:1,lock:1,show:1,pragma:1},aggregate:{count:1,sum:1,min:1,max:1,avg:1}},c:[{cN:"string",b:"'",e:"'",c:[hljs.BE,{b:"''"}],r:0},{cN:"string",b:'"',e:'"',c:[hljs.BE,{b:'""'}],r:0},{cN:"string",b:"`",e:"`",c:[hljs.BE]},hljs.CNM,{b:"\\n"}]},hljs.CBLCLM,{cN:"comment",b:"--",e:"$"}]}};hljs.LANGUAGES.vala={dM:{k:{keyword:{"char":1,uchar:1,unichar:1,"int":1,uint:1,"long":1,ulong:1,"short":1,ushort:1,int8:1,int16:1,int32:1,int64:1,uint8:1,uint16:1,uint32:1,uint64:1,"float":1,"double":1,bool:1,struct:1,"enum":1,string:1,"void":1,weak:5,unowned:5,owned:5,async:5,signal:5,"static":1,"abstract":1,"interface":1,override:1,"while":1,"do":1,"for":1,foreach:1,"else":1,"switch":1,"case":1,"break":1,"default":1,"return":1,"try":1,"catch":1,"public":1,"private":1,"protected":1,internal:1,using:1,"new":1,"this":1,get:1,set:1,"const":1,stdout:1,stdin:1,stderr:1,"var":1,DBus:2,GLib:2,CCode:10,Gee:10,Object:1},literal:{"false":1,"true":1,"null":1}},c:[{cN:"class",b:"(class |interface |delegate |namespace )",e:"{",k:{"class":1,"interface":1},c:[{b:"(implements|extends)",k:{"extends":1,"implements":1}},{cN:"title",b:hljs.UIR}]},hljs.CLCM,hljs.CBLCLM,{cN:"string",b:'"""',e:'"""',r:5},hljs.ASM,hljs.QSM,hljs.CNM,{cN:"preprocessor",b:"^#",e:"$",r:2},{cN:"constant",b:" [A-Z_]+ ",r:0}]}};hljs.LANGUAGES.ini={cI:true,dM:{i:"[^\\s]",c:[{cN:"comment",b:";",e:"$"},{cN:"title",b:"^\\[",e:"\\]"},{cN:"setting",b:"^[a-z0-9_\\[\\]]+[ \\t]*=[ \\t]*",e:"$",c:[{cN:"value",eW:true,k:{on:1,off:1,"true":1,"false":1,yes:1,no:1},c:[hljs.QSM,hljs.NM]}]}]}};hljs.LANGUAGES.axapta={dM:{k:{"false":1,"int":1,"abstract":1,"private":1,"char":1,"interface":1,"boolean":1,"static":1,"null":1,"if":1,"for":1,"true":1,"while":1,"long":1,"throw":1,"finally":1,"protected":1,"extends":1,"final":1,"implements":1,"return":1,"void":1,"enum":1,"else":1,"break":1,"new":1,"catch":1,"byte":1,"super":1,"class":1,"case":1,"short":1,"default":1,"double":1,"public":1,"try":1,"this":1,"switch":1,"continue":1,reverse:1,firstfast:1,firstonly:1,forupdate:1,nofetch:1,sum:1,avg:1,minof:1,maxof:1,count:1,order:1,group:1,by:1,asc:1,desc:1,index:1,hint:1,like:1,dispaly:1,edit:1,client:1,server:1,ttsbegin:1,ttscommit:1,str:1,real:1,date:1,container:1,anytype:1,common:1,div:1,mod:1},c:[hljs.CLCM,hljs.CBLCLM,hljs.ASM,hljs.QSM,hljs.CNM,{cN:"preprocessor",b:"#",e:"$"},{cN:"class",b:"(class |interface )",e:"{",i:":",k:{"class":1,"interface":1},c:[{cN:"inheritance",b:"(implements|extends)",k:{"extends":1,"implements":1},r:10},{cN:"title",b:hljs.UIR}]}]}};hljs.LANGUAGES.perl=function(){var c={getpwent:1,getservent:1,quotemeta:1,msgrcv:1,scalar:1,kill:1,dbmclose:1,undef:1,lc:1,ma:1,syswrite:1,tr:1,send:1,umask:1,sysopen:1,shmwrite:1,vec:1,qx:1,utime:1,local:1,oct:1,semctl:1,localtime:1,readpipe:1,"do":1,"return":1,format:1,read:1,sprintf:1,dbmopen:1,pop:1,getpgrp:1,not:1,getpwnam:1,rewinddir:1,qq:1,fileno:1,qw:1,endprotoent:1,wait:1,sethostent:1,bless:1,s:1,opendir:1,"continue":1,each:1,sleep:1,endgrent:1,shutdown:1,dump:1,chomp:1,connect:1,getsockname:1,die:1,socketpair:1,close:1,flock:1,exists:1,index:1,shmget:1,sub:1,"for":1,endpwent:1,redo:1,lstat:1,msgctl:1,setpgrp:1,abs:1,exit:1,select:1,print:1,ref:1,gethostbyaddr:1,unshift:1,fcntl:1,syscall:1,"goto":1,getnetbyaddr:1,join:1,gmtime:1,symlink:1,semget:1,splice:1,x:1,getpeername:1,recv:1,log:1,setsockopt:1,cos:1,last:1,reverse:1,gethostbyname:1,getgrnam:1,study:1,formline:1,endhostent:1,times:1,chop:1,length:1,gethostent:1,getnetent:1,pack:1,getprotoent:1,getservbyname:1,rand:1,mkdir:1,pos:1,chmod:1,y:1,substr:1,endnetent:1,printf:1,next:1,open:1,msgsnd:1,readdir:1,use:1,unlink:1,getsockopt:1,getpriority:1,rindex:1,wantarray:1,hex:1,system:1,getservbyport:1,endservent:1,"int":1,chr:1,untie:1,rmdir:1,prototype:1,tell:1,listen:1,fork:1,shmread:1,ucfirst:1,setprotoent:1,"else":1,sysseek:1,link:1,getgrgid:1,shmctl:1,waitpid:1,unpack:1,getnetbyname:1,reset:1,chdir:1,grep:1,split:1,require:1,caller:1,lcfirst:1,until:1,warn:1,"while":1,values:1,shift:1,telldir:1,getpwuid:1,my:1,getprotobynumber:1,"delete":1,and:1,sort:1,uc:1,defined:1,srand:1,accept:1,"package":1,seekdir:1,getprotobyname:1,semop:1,our:1,rename:1,seek:1,"if":1,q:1,chroot:1,sysread:1,setpwent:1,no:1,crypt:1,getc:1,chown:1,sqrt:1,write:1,setnetent:1,setpriority:1,foreach:1,tie:1,sin:1,msgget:1,map:1,stat:1,getlogin:1,unless:1,elsif:1,truncate:1,exec:1,keys:1,glob:1,tied:1,closedir:1,ioctl:1,socket:1,readlink:1,"eval":1,xor:1,readline:1,binmode:1,setservent:1,eof:1,ord:1,bind:1,alarm:1,pipe:1,atan2:1,getgrent:1,exp:1,time:1,push:1,setgrent:1,gt:1,lt:1,or:1,ne:1,m:1};var e={cN:"subst",b:"[$@]\\{",e:"\\}",k:c,r:10};var b={cN:"variable",b:"\\$\\d"};var a={cN:"variable",b:"[\\$\\%\\@\\*](\\^\\w\\b|#\\w+(\\:\\:\\w+)*|[^\\s\\w{]|{\\w+}|\\w+(\\:\\:\\w*)*)"};var h=[hljs.BE,e,b,a];var g={b:"->",c:[{b:hljs.IR},{b:"{",e:"}"}]};var d={cN:"comment",b:"^(__END__|__DATA__)",e:"\\n$",r:5};var f=[b,a,hljs.HCM,d,g,{cN:"string",b:"q[qwxr]?\\s*\\(",e:"\\)",c:h,r:5},{cN:"string",b:"q[qwxr]?\\s*\\[",e:"\\]",c:h,r:5},{cN:"string",b:"q[qwxr]?\\s*\\{",e:"\\}",c:h,r:5},{cN:"string",b:"q[qwxr]?\\s*\\|",e:"\\|",c:h,r:5},{cN:"string",b:"q[qwxr]?\\s*\\<",e:"\\>",c:h,r:5},{cN:"string",b:"qw\\s+q",e:"q",c:h,r:5},{cN:"string",b:"'",e:"'",c:[hljs.BE],r:0},{cN:"string",b:'"',e:'"',c:h,r:0},{cN:"string",b:"`",e:"`",c:[hljs.BE]},{cN:"string",b:"{\\w+}",r:0},{cN:"string",b:"-?\\w+\\s*\\=\\>",r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"("+hljs.RSR+"|split|return|print|reverse|grep)\\s*",k:{split:1,"return":1,print:1,reverse:1,grep:1},r:0,c:[hljs.HCM,d,{cN:"regexp",b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",r:10},{cN:"regexp",b:"(m|qr)?/",e:"/[a-z]*",c:[hljs.BE],r:0}]},{cN:"sub",b:"\\bsub\\b",e:"(\\s*\\(.*?\\))?[;{]",k:{sub:1},r:5},{cN:"operator",b:"-\\w\\b",r:0},{cN:"pod",b:"\\=\\w",e:"\\=cut"}];e.c=f;g.c[1].c=f;return{dM:{k:c,c:f}}}();hljs.LANGUAGES.scala=function(){var a={cN:"annotation",b:"@[A-Za-z]+"};var b={cN:"string",b:'u?r?"""',e:'"""',r:10};return{dM:{k:{type:1,yield:1,lazy:1,override:1,def:1,"with":1,val:1,"var":1,"false":1,"true":1,sealed:1,"abstract":1,"private":1,trait:1,object:1,"null":1,"if":1,"for":1,"while":1,"throw":1,"finally":1,"protected":1,"extends":1,"import":1,"final":1,"return":1,"else":1,"break":1,"new":1,"catch":1,"super":1,"class":1,"case":1,"package":1,"default":1,"try":1,"this":1,match:1,"continue":1,"throws":1},c:[{cN:"javadoc",b:"/\\*\\*",e:"\\*/",c:[{cN:"javadoctag",b:"@[A-Za-z]+"}],r:10},hljs.CLCM,hljs.CBLCLM,hljs.ASM,hljs.QSM,b,{cN:"class",b:"((case )?class |object |trait )",e:"({|$)",i:":",k:{"case":1,"class":1,trait:1,object:1},c:[{b:"(extends|with)",k:{"extends":1,"with":1},r:10},{cN:"title",b:hljs.UIR},{cN:"params",b:"\\(",e:"\\)",c:[hljs.ASM,hljs.QSM,b,a]}]},hljs.CNM,a]}}}();hljs.LANGUAGES.cmake={cI:true,dM:{k:{add_custom_command:2,add_custom_target:2,add_definitions:2,add_dependencies:2,add_executable:2,add_library:2,add_subdirectory:2,add_test:2,aux_source_directory:2,"break":1,build_command:2,cmake_minimum_required:3,cmake_policy:3,configure_file:1,create_test_sourcelist:1,define_property:1,"else":1,elseif:1,enable_language:2,enable_testing:2,endforeach:1,endfunction:1,endif:1,endmacro:1,endwhile:1,execute_process:2,"export":1,find_file:1,find_library:2,find_package:2,find_path:1,find_program:1,fltk_wrap_ui:2,foreach:1,"function":1,get_cmake_property:3,get_directory_property:1,get_filename_component:1,get_property:1,get_source_file_property:1,get_target_property:1,get_test_property:1,"if":1,include:1,include_directories:2,include_external_msproject:1,include_regular_expression:2,install:1,link_directories:1,load_cache:1,load_command:1,macro:1,mark_as_advanced:1,message:1,option:1,output_required_files:1,project:1,qt_wrap_cpp:2,qt_wrap_ui:2,remove_definitions:2,"return":1,separate_arguments:1,set:1,set_directory_properties:1,set_property:1,set_source_files_properties:1,set_target_properties:1,set_tests_properties:1,site_name:1,source_group:1,string:1,target_link_libraries:2,try_compile:2,try_run:2,unset:1,variable_watch:2,"while":1,build_name:1,exec_program:1,export_library_dependencies:1,install_files:1,install_programs:1,install_targets:1,link_libraries:1,make_directory:1,remove:1,subdir_depends:1,subdirs:1,use_mangled_mesa:1,utility_source:1,variable_requires:1,write_file:1},c:[{cN:"envvar",b:"\\${",e:"}"},hljs.HCM,hljs.QSM,hljs.NM]}};hljs.LANGUAGES.objectivec=function(){var a={keyword:{"false":1,"int":1,"float":1,"while":1,"private":1,"char":1,"catch":1,"export":1,sizeof:2,typedef:2,"const":1,struct:1,"for":1,union:1,unsigned:1,"long":1,"volatile":2,"static":1,"protected":1,bool:1,mutable:1,"if":1,"public":1,"do":1,"return":1,"goto":1,"void":2,"enum":1,"else":1,"break":1,extern:1,"true":1,"class":1,asm:1,"case":1,"short":1,"default":1,"double":1,"throw":1,register:1,explicit:1,signed:1,typename:1,"try":1,"this":1,"switch":1,"continue":1,wchar_t:1,inline:1,readonly:1,assign:1,property:1,protocol:10,self:1,"synchronized":1,end:1,synthesize:50,id:1,optional:1,required:1,implementation:10,nonatomic:1,"interface":1,"super":1,unichar:1,"finally":2,dynamic:2,nil:1},built_in:{YES:5,NO:5,NULL:1,IBOutlet:50,IBAction:50,NSString:50,NSDictionary:50,CGRect:50,CGPoint:50,NSRange:50,release:1,retain:1,autorelease:50,UIButton:50,UILabel:50,UITextView:50,UIWebView:50,MKMapView:50,UISegmentedControl:50,NSObject:50,UITableViewDelegate:50,UITableViewDataSource:50,NSThread:50,UIActivityIndicator:50,UITabbar:50,UIToolBar:50,UIBarButtonItem:50,UIImageView:50,NSAutoreleasePool:50,UITableView:50,BOOL:1,NSInteger:20,CGFloat:20,NSException:50,NSLog:50,NSMutableString:50,NSMutableArray:50,NSMutableDictionary:50,NSURL:50}};return{dM:{k:a,i:""}]},{cN:"preprocessor",b:"#",e:"$"},{cN:"class",b:"interface|class|protocol|implementation",e:"({|$)",k:{"interface":1,"class":1,protocol:5,implementation:5},c:[{cN:"id",b:hljs.UIR}]}]}}}();hljs.LANGUAGES.avrasm={cI:true,dM:{k:{keyword:{adc:1,add:1,adiw:1,and:1,andi:1,asr:1,bclr:1,bld:1,brbc:1,brbs:1,brcc:1,brcs:1,"break":1,breq:1,brge:1,brhc:1,brhs:1,brid:1,brie:1,brlo:1,brlt:1,brmi:1,brne:1,brpl:1,brsh:1,brtc:1,brts:1,brvc:1,brvs:1,bset:1,bst:1,call:1,cbi:1,cbr:1,clc:1,clh:1,cli:1,cln:1,clr:1,cls:1,clt:1,clv:1,clz:1,com:1,cp:1,cpc:1,cpi:1,cpse:1,dec:1,eicall:1,eijmp:1,elpm:1,eor:1,fmul:1,fmuls:1,fmulsu:1,icall:1,ijmp:1,"in":1,inc:1,jmp:1,ld:1,ldd:1,ldi:1,lds:1,lpm:1,lsl:1,lsr:1,mov:1,movw:1,mul:1,muls:1,mulsu:1,neg:1,nop:1,or:1,ori:1,out:1,pop:1,push:1,rcall:1,ret:1,reti:1,rjmp:1,rol:1,ror:1,sbc:1,sbr:1,sbrc:1,sbrs:1,sec:1,seh:1,sbi:1,sbci:1,sbic:1,sbis:1,sbiw:1,sei:1,sen:1,ser:1,ses:1,set:1,sev:1,sez:1,sleep:1,spm:1,st:1,std:1,sts:1,sub:1,subi:1,swap:1,tst:1,wdr:1},built_in:{r0:1,r1:1,r2:1,r3:1,r4:1,r5:1,r6:1,r7:1,r8:1,r9:1,r10:1,r11:1,r12:1,r13:1,r14:1,r15:1,r16:1,r17:1,r18:1,r19:1,r20:1,r21:1,r22:1,r23:1,r24:1,r25:1,r26:1,r27:1,r28:1,r29:1,r30:1,r31:1,x:1,xh:1,xl:1,y:1,yh:1,yl:1,z:1,zh:1,zl:1,ucsr1c:1,udr1:1,ucsr1a:1,ucsr1b:1,ubrr1l:1,ubrr1h:1,ucsr0c:1,ubrr0h:1,tccr3c:1,tccr3a:1,tccr3b:1,tcnt3h:1,tcnt3l:1,ocr3ah:1,ocr3al:1,ocr3bh:1,ocr3bl:1,ocr3ch:1,ocr3cl:1,icr3h:1,icr3l:1,etimsk:1,etifr:1,tccr1c:1,ocr1ch:1,ocr1cl:1,twcr:1,twdr:1,twar:1,twsr:1,twbr:1,osccal:1,xmcra:1,xmcrb:1,eicra:1,spmcsr:1,spmcr:1,portg:1,ddrg:1,ping:1,portf:1,ddrf:1,sreg:1,sph:1,spl:1,xdiv:1,rampz:1,eicrb:1,eimsk:1,gimsk:1,gicr:1,eifr:1,gifr:1,timsk:1,tifr:1,mcucr:1,mcucsr:1,tccr0:1,tcnt0:1,ocr0:1,assr:1,tccr1a:1,tccr1b:1,tcnt1h:1,tcnt1l:1,ocr1ah:1,ocr1al:1,ocr1bh:1,ocr1bl:1,icr1h:1,icr1l:1,tccr2:1,tcnt2:1,ocr2:1,ocdr:1,wdtcr:1,sfior:1,eearh:1,eearl:1,eedr:1,eecr:1,porta:1,ddra:1,pina:1,portb:1,ddrb:1,pinb:1,portc:1,ddrc:1,pinc:1,portd:1,ddrd:1,pind:1,spdr:1,spsr:1,spcr:1,udr0:1,ucsr0a:1,ucsr0b:1,ubrr0l:1,acsr:1,admux:1,adcsr:1,adch:1,adcl:1,porte:1,ddre:1,pine:1,pinf:1}},c:[hljs.CBLCLM,{cN:"comment",b:";",e:"$"},hljs.CNM,hljs.BINARY_NUMBER_MODE,{cN:"number",b:"\\b(\\$[a-zA-Z0-9]+|0o[0-7]+)"},hljs.QSM,{cN:"string",b:"'",e:"[^\\\\]'",i:"[^\\\\][^']"},{cN:"label",b:"^[A-Za-z0-9_.$]+:"},{cN:"preprocessor",b:"#",e:"$"},{cN:"preprocessor",b:"\\.[a-zA-Z]+"},{cN:"localvars",b:"@[0-9]+"}]}};hljs.LANGUAGES.vhdl={cI:true,dM:{k:{keyword:{abs:1,access:1,after:1,alias:1,all:1,and:1,architecture:2,array:1,assert:1,attribute:1,begin:1,block:1,body:1,buffer:1,bus:1,"case":1,component:2,configuration:1,constant:1,disconnect:2,downto:2,"else":1,elsif:1,end:1,entity:2,exit:1,file:1,"for":1,"function":1,generate:2,generic:2,group:1,guarded:2,"if":0,impure:2,"in":1,inertial:1,inout:1,is:1,label:1,library:1,linkage:1,literal:1,loop:1,map:1,mod:1,nand:1,"new":1,next:1,nor:1,not:1,"null":1,of:1,on:1,open:1,or:1,others:1,out:1,"package":1,port:2,postponed:1,procedure:1,process:1,pure:2,range:1,record:1,register:1,reject:1,"return":1,rol:1,ror:1,select:1,severity:1,signal:1,shared:1,sla:1,sli:1,sra:1,srl:1,subtype:2,then:1,to:1,transport:1,type:1,units:1,until:1,use:1,variable:1,wait:1,when:1,"while":1,"with":1,xnor:1,xor:1},type:{"boolean":1,bit:1,character:1,severity_level:2,integer:1,time:1,delay_length:2,natural:1,positive:1,string:1,bit_vector:2,file_open_kind:2,file_open_status:2,std_ulogic:2,std_ulogic_vector:2,std_logic:2,std_logic_vector:2}},i:"{",c:[{cN:"comment",b:"--",e:"$"},hljs.QSM,hljs.CNM,{cN:"literal",b:"'(U|X|0|1|Z|W|L|H|-)",e:"'",c:[hljs.BE]}]}};hljs.LANGUAGES.coffeescript=function(){var d={keyword:{"in":1,"if":1,"for":1,"while":1,"finally":1,"new":1,"do":1,"return":1,"else":1,"break":1,"catch":1,"instanceof":1,"throw":1,"try":1,"this":1,"switch":1,"continue":1,"typeof":1,"delete":1,"debugger":1,"class":1,"extends":1,"super":1,then:1,unless:1,until:1,loop:2,of:2,by:1,when:2,and:1,or:1,is:1,isnt:2,not:1},literal:{"true":1,"false":1,"null":1,"undefined":1,yes:1,no:1,on:1,off:1},reserved:{"case":1,"default":1,"function":1,"var":1,"void":1,"with":1,"const":1,let:1,"enum":1,"export":1,"import":1,"native":1,__hasProp:1,__extends:1,__slice:1,__bind:1,__indexOf:1}};var a="[A-Za-z$_][0-9A-Za-z$_]*";var b={cN:"subst",b:"#\\{",e:"}",k:d,c:[hljs.CNM,hljs.BINARY_NUMBER_MODE]};var c={cN:"string",b:'"',e:'"',r:0,c:[hljs.BE,b]};var h={cN:"string",b:'"""',e:'"""',c:[hljs.BE,b]};var g={cN:"comment",b:"###",e:"###"};var f={cN:"regexp",b:"///",e:"///",c:[hljs.HCM]};var i={cN:"function",b:a+"\\s*=\\s*(\\(.+\\))?\\s*[-=]>",rB:true,c:[{cN:"title",b:a},{cN:"params",b:"\\(",e:"\\)"}]};var e={cN:"javascript",b:"`",e:"`",eB:true,eE:true,sL:"javascript"};return{dM:{k:d,c:[hljs.CNM,hljs.BINARY_NUMBER_MODE,hljs.ASM,h,c,g,hljs.HCM,f,e,i]}}}();hljs.LANGUAGES.nginx=function(){var c={cN:"variable",b:"\\$\\d+"};var b={cN:"variable",b:"\\${",e:"}"};var a={cN:"variable",b:"[\\$\\@]"+hljs.UIR};return{dM:{c:[hljs.HCM,{b:hljs.UIR,e:";|{",rE:true,k:{accept_mutex:1,accept_mutex_delay:1,access_log:1,add_after_body:1,add_before_body:1,add_header:1,addition_types:1,alias:1,allow:1,ancient_browser:1,ancient_browser_value:1,auth_basic:1,auth_basic_user_file:1,autoindex:1,autoindex_exact_size:1,autoindex_localtime:1,"break":1,charset:1,charset_map:1,charset_types:1,client_body_buffer_size:1,client_body_in_file_only:1,client_body_in_single_buffer:1,client_body_temp_path:1,client_body_timeout:1,client_header_buffer_size:1,client_header_timeout:1,client_max_body_size:1,connection_pool_size:1,connections:1,create_full_put_path:1,daemon:1,dav_access:1,dav_methods:1,debug_connection:1,debug_points:1,default_type:1,deny:1,directio:1,directio_alignment:1,echo:1,echo_after_body:1,echo_before_body:1,echo_blocking_sleep:1,echo_duplicate:1,echo_end:1,echo_exec:1,echo_flush:1,echo_foreach_split:1,echo_location:1,echo_location_async:1,echo_read_request_body:1,echo_request_body:1,echo_reset_timer:1,echo_sleep:1,echo_subrequest:1,echo_subrequest_async:1,empty_gif:1,env:1,error_log:1,error_page:1,events:1,expires:1,fastcgi_bind:1,fastcgi_buffer_size:1,fastcgi_buffers:1,fastcgi_busy_buffers_size:1,fastcgi_cache:1,fastcgi_cache_key:1,fastcgi_cache_methods:1,fastcgi_cache_min_uses:1,fastcgi_cache_path:1,fastcgi_cache_use_stale:1,fastcgi_cache_valid:1,fastcgi_catch_stderr:1,fastcgi_connect_timeout:1,fastcgi_hide_header:1,fastcgi_ignore_client_abort:1,fastcgi_ignore_headers:1,fastcgi_index:1,fastcgi_intercept_errors:1,fastcgi_max_temp_file_size:1,fastcgi_next_upstream:1,fastcgi_param:1,fastcgi_pass:1,fastcgi_pass_header:1,fastcgi_pass_request_body:1,fastcgi_pass_request_headers:1,fastcgi_read_timeout:1,fastcgi_send_lowat:1,fastcgi_send_timeout:1,fastcgi_split_path_info:1,fastcgi_store:1,fastcgi_store_access:1,fastcgi_temp_file_write_size:1,fastcgi_temp_path:1,fastcgi_upstream_fail_timeout:1,fastcgi_upstream_max_fails:1,flv:1,geo:1,geoip_city:1,geoip_country:1,gzip:1,gzip_buffers:1,gzip_comp_level:1,gzip_disable:1,gzip_hash:1,gzip_http_version:1,gzip_min_length:1,gzip_no_buffer:1,gzip_proxied:1,gzip_static:1,gzip_types:1,gzip_vary:1,gzip_window:1,http:1,"if":1,if_modified_since:1,ignore_invalid_headers:1,image_filter:1,image_filter_buffer:1,image_filter_jpeg_quality:1,image_filter_transparency:1,include:1,index:1,internal:1,ip_hash:1,js:1,js_load:1,js_require:1,js_utf8:1,keepalive_requests:1,keepalive_timeout:1,kqueue_changes:1,kqueue_events:1,large_client_header_buffers:1,limit_conn:1,limit_conn_log_level:1,limit_except:1,limit_rate:1,limit_rate_after:1,limit_req:1,limit_req_log_level:1,limit_req_zone:1,limit_zone:1,lingering_time:1,lingering_timeout:1,listen:1,location:1,lock_file:1,log_format:1,log_not_found:1,log_subrequest:1,map:1,map_hash_bucket_size:1,map_hash_max_size:1,master_process:1,memcached_bind:1,memcached_buffer_size:1,memcached_connect_timeout:1,memcached_next_upstream:1,memcached_pass:1,memcached_read_timeout:1,memcached_send_timeout:1,memcached_upstream_fail_timeout:1,memcached_upstream_max_fails:1,merge_slashes:1,min_delete_depth:1,modern_browser:1,modern_browser_value:1,more_clear_headers:1,more_clear_input_headers:1,more_set_headers:1,more_set_input_headers:1,msie_padding:1,msie_refresh:1,multi_accept:1,open_file_cache:1,open_file_cache_errors:1,open_file_cache_events:1,open_file_cache_min_uses:1,open_file_cache_retest:1,open_file_cache_valid:1,open_log_file_cache:1,optimize_server_names:1,output_buffers:1,override_charset:1,perl:1,perl_modules:1,perl_require:1,perl_set:1,pid:1,port_in_redirect:1,post_action:1,postpone_gzipping:1,postpone_output:1,proxy_bind:1,proxy_buffer_size:1,proxy_buffering:1,proxy_buffers:1,proxy_busy_buffers_size:1,proxy_cache:1,proxy_cache_key:1,proxy_cache_methods:1,proxy_cache_min_uses:1,proxy_cache_path:1,proxy_cache_use_stale:1,proxy_cache_valid:1,proxy_connect_timeout:1,proxy_headers_hash_bucket_size:1,proxy_headers_hash_max_size:1,proxy_hide_header:1,proxy_ignore_client_abort:1,proxy_ignore_headers:1,proxy_intercept_errors:1,proxy_max_temp_file_size:1,proxy_method:1,proxy_next_upstream:1,proxy_pass:1,proxy_pass_header:1,proxy_pass_request_body:1,proxy_pass_request_headers:1,proxy_read_timeout:1,proxy_redirect:1,proxy_send_lowat:1,proxy_send_timeout:1,proxy_set_body:1,proxy_set_header:1,proxy_store:1,proxy_store_access:1,proxy_temp_file_write_size:1,proxy_temp_path:1,proxy_upstream_fail_timeout:1,proxy_upstream_max_fails:1,push_authorized_channels_only:1,push_channel_group:1,push_max_channel_id_length:1,push_max_channel_subscribers:1,push_max_message_buffer_length:1,push_max_reserved_memory:1,push_message_buffer_length:1,push_message_timeout:1,push_min_message_buffer_length:1,push_min_message_recipients:1,push_publisher:1,push_store_messages:1,push_subscriber:1,push_subscriber_concurrency:1,random_index:1,read_ahead:1,real_ip_header:1,recursive_error_pages:1,request_pool_size:1,reset_timedout_connection:1,resolver:1,resolver_timeout:1,"return":1,rewrite:1,rewrite_log:1,root:1,satisfy:1,satisfy_any:1,send_lowat:1,send_timeout:1,sendfile:1,sendfile_max_chunk:1,server:1,server_name:1,server_name_in_redirect:1,server_names_hash_bucket_size:1,server_names_hash_max_size:1,server_tokens:1,set:1,set_real_ip_from:1,source_charset:1,ssi:1,ssi_ignore_recycled_buffers:1,ssi_min_file_chunk:1,ssi_silent_errors:1,ssi_types:1,ssi_value_length:1,ssl:1,ssl_certificate:1,ssl_certificate_key:1,ssl_ciphers:1,ssl_client_certificate:1,ssl_crl:1,ssl_dhparam:1,ssl_prefer_server_ciphers:1,ssl_protocols:1,ssl_session_cache:1,ssl_session_timeout:1,ssl_verify_client:1,ssl_verify_depth:1,sub_filter:1,sub_filter_once:1,sub_filter_types:1,tcp_nodelay:1,tcp_nopush:1,timer_resolution:1,try_files:1,types:1,types_hash_bucket_size:1,types_hash_max_size:1,underscores_in_headers:1,uninitialized_variable_warn:1,upstream:1,use:1,user:1,userid:1,userid_domain:1,userid_expires:1,userid_mark:1,userid_name:1,userid_p3p:1,userid_path:1,userid_service:1,valid_referers:1,variables_hash_bucket_size:1,variables_hash_max_size:1,worker_connections:1,worker_cpu_affinity:1,worker_priority:1,worker_processes:1,worker_rlimit_core:1,worker_rlimit_nofile:1,worker_rlimit_sigpending:1,working_directory:1,xml_entities:1,xslt_stylesheet:1,xslt_types:1},r:0,c:[hljs.HCM,{b:"\\s",e:"[;{]",rB:true,rE:true,l:"[a-z/]+",k:{built_in:{on:1,off:1,yes:1,no:1,"true":1,"false":1,none:1,blocked:1,debug:1,info:1,notice:1,warn:1,error:1,crit:1,select:1,permanent:1,redirect:1,kqueue:1,rtsig:1,epoll:1,poll:1,"/dev/poll":1}},r:0,c:[hljs.HCM,{cN:"string",b:'"',e:'"',c:[hljs.BE,c,b,a],r:0},{cN:"string",b:"'",e:"'",c:[hljs.BE,c,b,a],r:0},{cN:"string",b:"([a-z]+):/",e:"[;\\s]",rE:true},{cN:"regexp",b:"\\s\\^",e:"\\s|{|;",rE:true,c:[hljs.BE,c,b,a]},{cN:"regexp",b:"~\\*?\\s+",e:"\\s|{|;",rE:true,c:[hljs.BE,c,b,a]},{cN:"regexp",b:"\\*(\\.[a-z\\-]+)+",c:[hljs.BE,c,b,a]},{cN:"regexp",b:"([a-z\\-]+\\.)+\\*",c:[hljs.BE,c,b,a]},{cN:"number",b:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\b"},{cN:"number",b:"\\s\\d+[kKmMgGdshdwy]*\\b",r:0},c,b,a]}]}]}}}();hljs.LANGUAGES.erlang_repl={dM:{k:{special_functions:{spawn:10,spawn_link:10,self:2},reserved:{after:1,and:1,andalso:5,band:1,begin:1,bnot:1,bor:1,bsl:1,bsr:1,bxor:1,"case":1,"catch":0,cond:1,div:1,end:1,fun:0,"if":0,let:1,not:0,of:1,or:1,orelse:5,query:1,receive:0,rem:1,"try":0,when:1,xor:1}},c:[{cN:"input_number",b:"^[0-9]+> ",r:10},{cN:"comment",b:"%",e:"$"},{cN:"number",b:"\\b(\\d+#[a-fA-F0-9]+|\\d+(\\.\\d+)?([eE][-+]?\\d+)?)",r:0},hljs.ASM,hljs.QSM,{cN:"constant",b:"\\?(::)?([A-Z]\\w*(::)?)+"},{cN:"arrow",b:"->"},{cN:"ok",b:"ok"},{cN:"exclamation_mark",b:"!"},{cN:"function_or_atom",b:"(\\b[a-z'][a-zA-Z0-9_']*:[a-z'][a-zA-Z0-9_']*)|(\\b[a-z'][a-zA-Z0-9_']*)",r:0},{cN:"variable",b:"[A-Z][a-zA-Z0-9_']*",r:0}]}};hljs.LANGUAGES.django=function(){function c(f,e){return(e==undefined||(!f.cN&&e.cN=="tag")||f.cN=="value")}function d(j,e){var h={};for(var g in j){if(g!="contains"){h[g]=j[g]}var k=[];for(var f=0;j.c&&f"},hljs.QSM]}}}();hljs.LANGUAGES.cpp=function(){var a={keyword:{"false":1,"int":1,"float":1,"while":1,"private":1,"char":1,"catch":1,"export":1,virtual:1,operator:2,sizeof:2,dynamic_cast:2,typedef:2,const_cast:2,"const":1,struct:1,"for":1,static_cast:2,union:1,namespace:1,unsigned:1,"long":1,"throw":1,"volatile":2,"static":1,"protected":1,bool:1,template:1,mutable:1,"if":1,"public":1,friend:2,"do":1,"return":1,"goto":1,auto:1,"void":2,"enum":1,"else":1,"break":1,"new":1,extern:1,using:1,"true":1,"class":1,asm:1,"case":1,typeid:1,"short":1,reinterpret_cast:2,"default":1,"double":1,register:1,explicit:1,signed:1,typename:1,"try":1,"this":1,"switch":1,"continue":1,wchar_t:1,inline:1,"delete":1,alignof:1,char16_t:1,char32_t:1,constexpr:1,decltype:1,noexcept:1,nullptr:1,static_assert:1,thread_local:1,restrict:1,_Bool:1,complex:1},built_in:{std:1,string:1,cin:1,cout:1,cerr:1,clog:1,stringstream:1,istringstream:1,ostringstream:1,auto_ptr:1,deque:1,list:1,queue:1,stack:1,vector:1,map:1,set:1,bitset:1,multiset:1,multimap:1,unordered_set:1,unordered_map:1,unordered_multiset:1,unordered_multimap:1,array:1,shared_ptr:1}};return{dM:{k:a,i:"",k:a,r:10,c:["self"]}]}}}();hljs.LANGUAGES.matlab={dM:{k:{keyword:{"break":1,"case":1,"catch":1,classdef:1,"continue":1,"else":1,elseif:1,end:1,enumerated:1,events:1,"for":1,"function":1,global:1,"if":1,methods:1,otherwise:1,parfor:1,persistent:1,properties:1,"return":1,spmd:1,"switch":1,"try":1,"while":1},built_in:{sin:1,sind:1,sinh:1,asin:1,asind:1,asinh:1,cos:1,cosd:1,cosh:1,acos:1,acosd:1,acosh:1,tan:1,tand:1,tanh:1,atan:1,atand:1,atan2:1,atanh:1,sec:1,secd:1,sech:1,asec:1,asecd:1,asech:1,csc:1,cscd:1,csch:1,acsc:1,acscd:1,acsch:1,cot:1,cotd:1,coth:1,acot:1,acotd:1,acoth:1,hypot:1,exp:1,expm1:1,log:1,log1p:1,log10:1,log2:1,pow2:1,realpow:1,reallog:1,realsqrt:1,sqrt:1,nthroot:1,nextpow2:1,abs:1,angle:1,complex:1,conj:1,imag:1,real:1,unwrap:1,isreal:1,cplxpair:1,fix:1,floor:1,ceil:1,round:1,mod:1,rem:1,sign:1,airy:1,besselj:1,bessely:1,besselh:1,besseli:1,besselk:1,beta:1,betainc:1,betaln:1,ellipj:1,ellipke:1,erf:1,erfc:1,erfcx:1,erfinv:1,expint:1,gamma:1,gammainc:1,gammaln:1,psi:1,legendre:1,cross:1,dot:1,factor:1,isprime:1,primes:1,gcd:1,lcm:1,rat:1,rats:1,perms:1,nchoosek:1,factorial:1,cart2sph:1,cart2pol:1,pol2cart:1,sph2cart:1,hsv2rgb:1,rgb2hsv:1,zeros:1,ones:1,eye:1,repmat:1,rand:1,randn:1,linspace:1,logspace:1,freqspace:1,meshgrid:1,accumarray:1,size:1,length:1,ndims:1,numel:1,disp:1,isempty:1,isequal:1,isequalwithequalnans:1,cat:1,reshape:1,diag:1,blkdiag:1,tril:1,triu:1,fliplr:1,flipud:1,flipdim:1,rot90:1,find:1,end:1,sub2ind:1,ind2sub:1,bsxfun:1,ndgrid:1,permute:1,ipermute:1,shiftdim:1,circshift:1,squeeze:1,isscalar:1,isvector:1,ans:1,eps:1,realmax:1,realmin:1,pi:1,i:1,inf:1,nan:1,isnan:1,isinf:1,isfinite:1,j:1,why:1,compan:1,gallery:1,hadamard:1,hankel:1,hilb:1,invhilb:1,magic:1,pascal:1,rosser:1,toeplitz:1,vander:1,wilkinson:1},},i:'(//|"|#|/\\*|\\s+/\\w+)',c:[{cN:"function",b:"function",e:"$",k:{"function":1},c:[{cN:"title",b:hljs.UIR},{cN:"params",b:"\\(",e:"\\)"},{cN:"params",b:"\\[",e:"\\]"}]},{cN:"string",b:"'",e:"'",c:[hljs.BE,{b:"''"}]},{cN:"comment",b:"\\%",e:"$"},hljs.CNM]}};hljs.LANGUAGES.parser3={dM:{sL:"html",c:[{cN:"comment",b:"^#",e:"$"},{cN:"comment",b:"\\^rem{",e:"}",r:10,c:[{b:"{",e:"}",c:["self"]}]},{cN:"preprocessor",b:"^@(?:BASE|USE|CLASS|OPTIONS)$",r:10},{cN:"title",b:"@[\\w\\-]+\\[[\\w^;\\-]*\\](?:\\[[\\w^;\\-]*\\])?(?:.*)$"},{cN:"variable",b:"\\$\\{?[\\w\\-\\.\\:]+\\}?"},{cN:"keyword",b:"\\^[\\w\\-\\.\\:]+"},{cN:"number",b:"\\^#[0-9a-fA-F]+"},hljs.CNM]}};hljs.LANGUAGES.go=function(){var a={keyword:{"break":1,"default":1,func:1,"interface":1,select:1,"case":1,map:1,struct:1,chan:1,"else":1,"goto":1,"package":1,"switch":1,"const":1,fallthrough:1,"if":1,range:1,type:1,"continue":1,"for":1,"import":1,"return":1,"var":1,go:1,defer:1},constant:{"true":1,"false":1,iota:1,nil:1},typename:{bool:1,"byte":1,complex64:1,complex128:1,float32:1,float64:1,int8:1,int16:1,int32:1,int64:1,string:1,uint8:1,uint16:1,uint32:1,uint64:1,"int":1,uint:1,uintptr:1,rune:1},built_in:{append:1,cap:1,close:1,complex:1,copy:1,imag:1,len:1,make:1,"new":1,panic:1,print:1,println:1,real:1,recover:1,"delete":1}};return{dM:{k:a,i:" +Contributors: Sergey Baranov +*/ + +hljs.LANGUAGES['1c'] = function(){ + var IDENT_RE_RU = '[a-zA-Zа-яА-Я][a-zA-Z0-9_а-яА-Я]*'; + var OneS_KEYWORDS = { + 'возврат':1,'дата':1,'для':1,'если':1,'и':1,'или':1,'иначе':1,'иначеесли':1,'исключение':1,'конецесли':1, + 'конецпопытки':1,'конецпроцедуры':1,'конецфункции':1,'конеццикла':1,'константа':1,'не':1,'перейти':1,'перем':1, + 'перечисление':1,'по':1,'пока':1,'попытка':1,'прервать':1,'продолжить':1,'процедура':1,'строка':1,'тогда':1, + 'фс':1,'функция':1,'цикл':1,'число':1,'экспорт':1 + }; + var OneS_BUILT_IN = { + 'ansitooem':1,'oemtoansi':1,'ввестивидсубконто':1,'ввестидату':1,'ввестизначение':1,'ввестиперечисление':1, + 'ввестипериод':1,'ввестиплансчетов':1,'ввестистроку':1,'ввестичисло':1,'вопрос':1,'восстановитьзначение':1, + 'врег':1,'выбранныйплансчетов':1,'вызватьисключение':1,'датагод':1,'датамесяц':1,'датачисло':1,'добавитьмесяц':1, + 'завершитьработусистемы':1,'заголовоксистемы':1,'записьжурналарегистрации':1,'запуститьприложение':1, + 'зафиксироватьтранзакцию':1,'значениевстроку':1,'значениевстрокувнутр':1,'значениевфайл':1,'значениеизстроки':1, + 'значениеизстрокивнутр':1,'значениеизфайла':1,'имякомпьютера':1,'имяпользователя':1,'каталогвременныхфайлов':1, + 'каталогиб':1,'каталогпользователя':1,'каталогпрограммы':1,'кодсимв':1,'командасистемы':1,'конгода':1, + 'конецпериодаби':1,'конецрассчитанногопериодаби':1,'конецстандартногоинтервала':1,'конквартала':1,'конмесяца':1, + 'коннедели':1,'лев':1,'лог':1,'лог10':1,'макс':1,'максимальноеколичествосубконто':1,'мин':1,'монопольныйрежим':1, + 'названиеинтерфейса':1,'названиенабораправ':1,'назначитьвид':1,'назначитьсчет':1,'найти':1, + 'найтипомеченныенаудаление':1,'найтиссылки':1,'началопериодаби':1,'началостандартногоинтервала':1, + 'начатьтранзакцию':1,'начгода':1,'начквартала':1,'начмесяца':1,'начнедели':1,'номерднягода':1,'номерднянедели':1, + 'номернеделигода':1,'нрег':1,'обработкаожидания':1,'окр':1,'описаниеошибки':1,'основнойжурналрасчетов':1, + 'основнойплансчетов':1,'основнойязык':1,'открытьформу':1,'открытьформумодально':1,'отменитьтранзакцию':1, + 'очиститьокносообщений':1,'периодстр':1,'полноеимяпользователя':1,'получитьвремята':1,'получитьдатута':1, + 'получитьдокументта':1,'получитьзначенияотбора':1,'получитьпозициюта':1,'получитьпустоезначение':1, + 'получитьта':1,'прав':1,'праводоступа':1,'предупреждение':1,'префиксавтонумерации':1,'пустаястрока':1, + 'пустоезначение':1,'рабочаядаттьпустоезначение':1,'рабочаядата':1,'разделительстраниц':1,'разделительстрок':1, + 'разм':1,'разобратьпозициюдокумента':1,'рассчитатьрегистрына':1,'рассчитатьрегистрыпо':1,'сигнал':1,'симв':1, + 'символтабуляции':1,'создатьобъект':1,'сокрл':1,'сокрлп':1,'сокрп':1,' сообщить':1,'состояние':1, + 'сохранитьзначение':1,'сред':1,'статусвозврата':1,'стрдлина':1,'стрзаменить':1,'стрколичествострок':1, + 'стрполучитьстроку':1,' стрчисловхождений':1,'сформироватьпозициюдокумента':1,'счетпокоду':1,'текущаядата':1, + 'текущеевремя':1,'типзначения':1,'типзначениястр':1,'удалитьобъекты':1,'установитьтана':1,'установитьтапо':1, + 'фиксшаблон':1,'формат':1,'цел':1,'шаблон':1 + }; + var DQUOTE = {className: 'dquote', begin: '""'}; + var STR_START = { + className: 'string', + begin: '"', end: '"|$', + contains: [DQUOTE], + relevance: 0 + }; + var STR_CONT = { + className: 'string', + begin: '\\|', end: '"|$', + contains: [DQUOTE] + }; + + return { + case_insensitive: true, + defaultMode: { + lexems: IDENT_RE_RU, + keywords: {'keyword':OneS_KEYWORDS,'built_in':OneS_BUILT_IN}, + contains: [ + hljs.C_LINE_COMMENT_MODE, + hljs.NUMBER_MODE, + STR_START, STR_CONT, + { + className: 'function', + begin: '(процедура|функция)', end: '$', + lexems: IDENT_RE_RU, + keywords: {'процедура': 1, 'экспорт': 1, 'функция': 1}, + contains: [ + {className: 'title', begin: IDENT_RE_RU}, + { + className: 'tail', + endsWithParent: true, + contains: [ + { + className: 'params', + begin: '\\(', end: '\\)', + lexems: IDENT_RE_RU, + keywords: {'знач':1}, + contains: [STR_START, STR_CONT] + }, + { + className: 'export', + begin: 'экспорт', endsWithParent: true, + lexems: IDENT_RE_RU, + keywords: {'экспорт': 1}, + contains: [hljs.C_LINE_COMMENT_MODE] + } + ] + }, + hljs.C_LINE_COMMENT_MODE + ] + }, + {className: 'preprocessor', begin: '#', end: '$'}, + {className: 'date', begin: '\'\\d{2}\\.\\d{2}\\.(\\d{2}|\\d{4})\''} + ] + } + }; +}(); diff --git a/output/Scratch/js/highlight/languages/actionscript.js b/output/Scratch/js/highlight/languages/actionscript.js new file mode 100644 index 000000000..255c69c37 --- /dev/null +++ b/output/Scratch/js/highlight/languages/actionscript.js @@ -0,0 +1,94 @@ +/* +Language: ActionScript +Author: Alexander Myadzel +*/ + +hljs.LANGUAGES.actionscript = function() { + var IDENT_RE = '[a-zA-Z_$][a-zA-Z0-9_$]*'; + var IDENT_FUNC_RETURN_TYPE_RE = '([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)'; + + var AS3_REST_ARG_MODE = { + className: 'rest_arg', + begin: '[.]{3}', end: IDENT_RE, + relevance: 10 + }; + var TITLE_MODE = {className: 'title', begin: IDENT_RE}; + + return { + defaultMode: { + keywords: { + 'keyword': { + 'as': 1, 'break': 1, 'case': 1, 'catch': 1, 'class': 1, 'const': 1, 'continue': 1, 'default': 1, + 'delete': 1, 'do': 1, 'dynamic': 5, 'each': 1, 'else': 1, 'extends': 1, 'final': 1, 'finally': 1, + 'for': 1, 'function': 1, 'get': 1, 'if': 1, 'implements': 1, 'import': 1, 'in': 1, 'include': 1, + 'instanceof': 1, 'interface': 1, 'internal': 1, 'is': 1, 'namespace': 1, 'native': 1, 'new': 1, + 'override': 1, 'package': 1, 'private': 1, 'protected': 1, 'public': 1, 'return': 1, 'set': 1, + 'static': 1, 'super': 5, 'switch': 1, 'this': 1, 'throw': 1, 'try': 1, 'typeof': 1, 'use': 1, + 'var': 1, 'void': 1, 'while': 1, 'with': 1 + }, + 'literal': {'true': 1, 'false': 1, 'null': 1, 'undefined': 1}, + 'reserved': { + 'abstract': 0, 'boolean': 0, 'byte': 0, 'cast': 0, 'char': 0, 'debugger': 0, 'double': 0, 'enum': 0, + 'export': 0, 'float': 0, 'goto': 0, 'intrinsic': 0, 'long': 0, 'prototype': 0, 'short': 0, + 'synchronized': 0, 'throws': 0, 'to': 0, 'transient': 0, 'type': 0, 'virtual': 0, 'volatile': 0 + } + }, + contains: [ + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + hljs.C_NUMBER_MODE, + { + className: 'package', + begin: 'package ?', end: '{', + keywords: {'package': 1}, + contains: [TITLE_MODE] + }, + { + className: 'class', + begin: '(class|interface) ', end: '{', + keywords: {'class': 1, 'interface': 1}, + contains: [ + { + begin: '(implements|extends)', + keywords: {'extends': 1, 'implements': 1}, + relevance: 5 + }, + TITLE_MODE + ] + }, + { + className: 'preprocessor', + begin: '(import|include)\\b', end: ';', + keywords: {'import': 1, 'include': 1} + }, + { + className: 'function', + begin: 'function ', end: '[{;]', + keywords: {'function': 1}, + contains: [ + TITLE_MODE, + { + className: 'params', + begin: '\\(', end: '\\)', + contains: [ + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + AS3_REST_ARG_MODE + ] + }, + { + className: 'type', + begin: ':', + end: IDENT_FUNC_RETURN_TYPE_RE, + relevance: 10 + } + ] + } + ] + } + } +}(); diff --git a/output/Scratch/js/highlight/languages/apache.js b/output/Scratch/js/highlight/languages/apache.js new file mode 100644 index 000000000..d6bdfe33d --- /dev/null +++ b/output/Scratch/js/highlight/languages/apache.js @@ -0,0 +1,434 @@ +/* +Language: Apache +Author: Ruslan Keba +Website: http://rukeba.com/ +Description: language definition for Apache configuration files (httpd.conf & .htaccess) +Version: 1.1 +Date: 2008-12-27 +*/ + +hljs.LANGUAGES.apache = function(){ + var NUMBER = {className: 'number', begin: '[\\$%]\\d+'}; + return { + case_insensitive: true, + defaultMode: { + keywords: { + 'keyword': { + 'acceptfilter': 1, + 'acceptmutex': 1, + 'acceptpathinfo': 1, + 'accessfilename': 1, + 'action': 1, + 'addalt': 1, + 'addaltbyencoding': 1, + 'addaltbytype': 1, + 'addcharset': 1, + 'adddefaultcharset': 1, + 'adddescription': 1, + 'addencoding': 1, + 'addhandler': 1, + 'addicon': 1, + 'addiconbyencoding': 1, + 'addiconbytype': 1, + 'addinputfilter': 1, + 'addlanguage': 1, + 'addmoduleinfo': 1, + 'addoutputfilter': 1, + 'addoutputfilterbytype': 1, + 'addtype': 1, + 'alias': 1, + 'aliasmatch': 1, + 'allow': 1, + 'allowconnect': 1, + 'allowencodedslashes': 1, + 'allowoverride': 1, + 'anonymous': 1, + 'anonymous_logemail': 1, + 'anonymous_mustgiveemail': 1, + 'anonymous_nouserid': 1, + 'anonymous_verifyemail': 1, + 'authbasicauthoritative': 1, + 'authbasicprovider': 1, + 'authdbduserpwquery': 1, + 'authdbduserrealmquery': 1, + 'authdbmgroupfile': 1, + 'authdbmtype': 1, + 'authdbmuserfile': 1, + 'authdefaultauthoritative': 1, + 'authdigestalgorithm': 1, + 'authdigestdomain': 1, + 'authdigestnccheck': 1, + 'authdigestnonceformat': 1, + 'authdigestnoncelifetime': 1, + 'authdigestprovider': 1, + 'authdigestqop': 1, + 'authdigestshmemsize': 1, + 'authgroupfile': 1, + 'authldapbinddn': 1, + 'authldapbindpassword': 1, + 'authldapcharsetconfig': 1, + 'authldapcomparednonserver': 1, + 'authldapdereferencealiases': 1, + 'authldapgroupattribute': 1, + 'authldapgroupattributeisdn': 1, + 'authldapremoteuserattribute': 1, + 'authldapremoteuserisdn': 1, + 'authldapurl': 1, + 'authname': 1, + 'authnprovideralias': 1, + 'authtype': 1, + 'authuserfile': 1, + 'authzdbmauthoritative': 1, + 'authzdbmtype': 1, + 'authzdefaultauthoritative': 1, + 'authzgroupfileauthoritative': 1, + 'authzldapauthoritative': 1, + 'authzownerauthoritative': 1, + 'authzuserauthoritative': 1, + 'balancermember': 1, + 'browsermatch': 1, + 'browsermatchnocase': 1, + 'bufferedlogs': 1, + 'cachedefaultexpire': 1, + 'cachedirlength': 1, + 'cachedirlevels': 1, + 'cachedisable': 1, + 'cacheenable': 1, + 'cachefile': 1, + 'cacheignorecachecontrol': 1, + 'cacheignoreheaders': 1, + 'cacheignorenolastmod': 1, + 'cacheignorequerystring': 1, + 'cachelastmodifiedfactor': 1, + 'cachemaxexpire': 1, + 'cachemaxfilesize': 1, + 'cacheminfilesize': 1, + 'cachenegotiateddocs': 1, + 'cacheroot': 1, + 'cachestorenostore': 1, + 'cachestoreprivate': 1, + 'cgimapextension': 1, + 'charsetdefault': 1, + 'charsetoptions': 1, + 'charsetsourceenc': 1, + 'checkcaseonly': 1, + 'checkspelling': 1, + 'chrootdir': 1, + 'contentdigest': 1, + 'cookiedomain': 1, + 'cookieexpires': 1, + 'cookielog': 1, + 'cookiename': 1, + 'cookiestyle': 1, + 'cookietracking': 1, + 'coredumpdirectory': 1, + 'customlog': 1, + 'dav': 1, + 'davdepthinfinity': 1, + 'davgenericlockdb': 1, + 'davlockdb': 1, + 'davmintimeout': 1, + 'dbdexptime': 1, + 'dbdkeep': 1, + 'dbdmax': 1, + 'dbdmin': 1, + 'dbdparams': 1, + 'dbdpersist': 1, + 'dbdpreparesql': 1, + 'dbdriver': 1, + 'defaulticon': 1, + 'defaultlanguage': 1, + 'defaulttype': 1, + 'deflatebuffersize': 1, + 'deflatecompressionlevel': 1, + 'deflatefilternote': 1, + 'deflatememlevel': 1, + 'deflatewindowsize': 1, + 'deny': 1, + 'directoryindex': 1, + 'directorymatch': 1, + 'directoryslash': 1, + 'documentroot': 1, + 'dumpioinput': 1, + 'dumpiologlevel': 1, + 'dumpiooutput': 1, + 'enableexceptionhook': 1, + 'enablemmap': 1, + 'enablesendfile': 1, + 'errordocument': 1, + 'errorlog': 1, + 'example': 1, + 'expiresactive': 1, + 'expiresbytype': 1, + 'expiresdefault': 1, + 'extendedstatus': 1, + 'extfilterdefine': 1, + 'extfilteroptions': 1, + 'fileetag': 1, + 'filterchain': 1, + 'filterdeclare': 1, + 'filterprotocol': 1, + 'filterprovider': 1, + 'filtertrace': 1, + 'forcelanguagepriority': 1, + 'forcetype': 1, + 'forensiclog': 1, + 'gracefulshutdowntimeout': 1, + 'group': 1, + 'header': 1, + 'headername': 1, + 'hostnamelookups': 1, + 'identitycheck': 1, + 'identitychecktimeout': 1, + 'imapbase': 1, + 'imapdefault': 1, + 'imapmenu': 1, + 'include': 1, + 'indexheadinsert': 1, + 'indexignore': 1, + 'indexoptions': 1, + 'indexorderdefault': 1, + 'indexstylesheet': 1, + 'isapiappendlogtoerrors': 1, + 'isapiappendlogtoquery': 1, + 'isapicachefile': 1, + 'isapifakeasync': 1, + 'isapilognotsupported': 1, + 'isapireadaheadbuffer': 1, + 'keepalive': 1, + 'keepalivetimeout': 1, + 'languagepriority': 1, + 'ldapcacheentries': 1, + 'ldapcachettl': 1, + 'ldapconnectiontimeout': 1, + 'ldapopcacheentries': 1, + 'ldapopcachettl': 1, + 'ldapsharedcachefile': 1, + 'ldapsharedcachesize': 1, + 'ldaptrustedclientcert': 1, + 'ldaptrustedglobalcert': 1, + 'ldaptrustedmode': 1, + 'ldapverifyservercert': 1, + 'limitinternalrecursion': 1, + 'limitrequestbody': 1, + 'limitrequestfields': 1, + 'limitrequestfieldsize': 1, + 'limitrequestline': 1, + 'limitxmlrequestbody': 1, + 'listen': 1, + 'listenbacklog': 1, + 'loadfile': 1, + 'loadmodule': 1, + 'lockfile': 1, + 'logformat': 1, + 'loglevel': 1, + 'maxclients': 1, + 'maxkeepaliverequests': 1, + 'maxmemfree': 1, + 'maxrequestsperchild': 1, + 'maxrequestsperthread': 1, + 'maxspareservers': 1, + 'maxsparethreads': 1, + 'maxthreads': 1, + 'mcachemaxobjectcount': 1, + 'mcachemaxobjectsize': 1, + 'mcachemaxstreamingbuffer': 1, + 'mcacheminobjectsize': 1, + 'mcacheremovalalgorithm': 1, + 'mcachesize': 1, + 'metadir': 1, + 'metafiles': 1, + 'metasuffix': 1, + 'mimemagicfile': 1, + 'minspareservers': 1, + 'minsparethreads': 1, + 'mmapfile': 1, + 'mod_gzip_on': 1, + 'mod_gzip_add_header_count': 1, + 'mod_gzip_keep_workfiles': 1, + 'mod_gzip_dechunk': 1, + 'mod_gzip_min_http': 1, + 'mod_gzip_minimum_file_size': 1, + 'mod_gzip_maximum_file_size': 1, + 'mod_gzip_maximum_inmem_size': 1, + 'mod_gzip_temp_dir': 1, + 'mod_gzip_item_include': 1, + 'mod_gzip_item_exclude': 1, + 'mod_gzip_command_version': 1, + 'mod_gzip_can_negotiate': 1, + 'mod_gzip_handle_methods': 1, + 'mod_gzip_static_suffix': 1, + 'mod_gzip_send_vary': 1, + 'mod_gzip_update_static': 1, + 'modmimeusepathinfo': 1, + 'multiviewsmatch': 1, + 'namevirtualhost': 1, + 'noproxy': 1, + 'nwssltrustedcerts': 1, + 'nwsslupgradeable': 1, + 'options': 1, + 'order': 1, + 'passenv': 1, + 'pidfile': 1, + 'protocolecho': 1, + 'proxybadheader': 1, + 'proxyblock': 1, + 'proxydomain': 1, + 'proxyerroroverride': 1, + 'proxyftpdircharset': 1, + 'proxyiobuffersize': 1, + 'proxymaxforwards': 1, + 'proxypass': 1, + 'proxypassinterpolateenv': 1, + 'proxypassmatch': 1, + 'proxypassreverse': 1, + 'proxypassreversecookiedomain': 1, + 'proxypassreversecookiepath': 1, + 'proxypreservehost': 1, + 'proxyreceivebuffersize': 1, + 'proxyremote': 1, + 'proxyremotematch': 1, + 'proxyrequests': 1, + 'proxyset': 1, + 'proxystatus': 1, + 'proxytimeout': 1, + 'proxyvia': 1, + 'readmename': 1, + 'receivebuffersize': 1, + 'redirect': 1, + 'redirectmatch': 1, + 'redirectpermanent': 1, + 'redirecttemp': 1, + 'removecharset': 1, + 'removeencoding': 1, + 'removehandler': 1, + 'removeinputfilter': 1, + 'removelanguage': 1, + 'removeoutputfilter': 1, + 'removetype': 1, + 'requestheader': 1, + 'require': 2, + 'rewritebase': 1, + 'rewritecond': 10, + 'rewriteengine': 1, + 'rewritelock': 1, + 'rewritelog': 1, + 'rewriteloglevel': 1, + 'rewritemap': 1, + 'rewriteoptions': 1, + 'rewriterule': 10, + 'rlimitcpu': 1, + 'rlimitmem': 1, + 'rlimitnproc': 1, + 'satisfy': 1, + 'scoreboardfile': 1, + 'script': 1, + 'scriptalias': 1, + 'scriptaliasmatch': 1, + 'scriptinterpretersource': 1, + 'scriptlog': 1, + 'scriptlogbuffer': 1, + 'scriptloglength': 1, + 'scriptsock': 1, + 'securelisten': 1, + 'seerequesttail': 1, + 'sendbuffersize': 1, + 'serveradmin': 1, + 'serveralias': 1, + 'serverlimit': 1, + 'servername': 1, + 'serverpath': 1, + 'serverroot': 1, + 'serversignature': 1, + 'servertokens': 1, + 'setenv': 1, + 'setenvif': 1, + 'setenvifnocase': 1, + 'sethandler': 1, + 'setinputfilter': 1, + 'setoutputfilter': 1, + 'ssienableaccess': 1, + 'ssiendtag': 1, + 'ssierrormsg': 1, + 'ssistarttag': 1, + 'ssitimeformat': 1, + 'ssiundefinedecho': 1, + 'sslcacertificatefile': 1, + 'sslcacertificatepath': 1, + 'sslcadnrequestfile': 1, + 'sslcadnrequestpath': 1, + 'sslcarevocationfile': 1, + 'sslcarevocationpath': 1, + 'sslcertificatechainfile': 1, + 'sslcertificatefile': 1, + 'sslcertificatekeyfile': 1, + 'sslciphersuite': 1, + 'sslcryptodevice': 1, + 'sslengine': 1, + 'sslhonorciperorder': 1, + 'sslmutex': 1, + 'ssloptions': 1, + 'sslpassphrasedialog': 1, + 'sslprotocol': 1, + 'sslproxycacertificatefile': 1, + 'sslproxycacertificatepath': 1, + 'sslproxycarevocationfile': 1, + 'sslproxycarevocationpath': 1, + 'sslproxyciphersuite': 1, + 'sslproxyengine': 1, + 'sslproxymachinecertificatefile': 1, + 'sslproxymachinecertificatepath': 1, + 'sslproxyprotocol': 1, + 'sslproxyverify': 1, + 'sslproxyverifydepth': 1, + 'sslrandomseed': 1, + 'sslrequire': 1, + 'sslrequiressl': 1, + 'sslsessioncache': 1, + 'sslsessioncachetimeout': 1, + 'sslusername': 1, + 'sslverifyclient': 1, + 'sslverifydepth': 1, + 'startservers': 1, + 'startthreads': 1, + 'substitute': 1, + 'suexecusergroup': 1, + 'threadlimit': 1, + 'threadsperchild': 1, + 'threadstacksize': 1, + 'timeout': 1, + 'traceenable': 1, + 'transferlog': 1, + 'typesconfig': 1, + 'unsetenv': 1, + 'usecanonicalname': 1, + 'usecanonicalphysicalport': 1, + 'user': 1, + 'userdir': 1, + 'virtualdocumentroot': 1, + 'virtualdocumentrootip': 1, + 'virtualscriptalias': 1, + 'virtualscriptaliasip': 1, + 'win32disableacceptex': 1, + 'xbithack': 1 + }, + 'literal': {'on': 1, 'off': 1} + }, + contains: [ + hljs.HASH_COMMENT_MODE, + { + className: 'sqbracket', + begin: '\\s\\[', end: '\\]$' + }, + { + className: 'cbracket', + begin: '[\\$%]\\{', end: '\\}', + contains: ['self', NUMBER] + }, + NUMBER, + {className: 'tag', begin: ''}, + hljs.QUOTE_STRING_MODE + ] + } + }; +}(); diff --git a/output/Scratch/js/highlight/languages/avrasm.js b/output/Scratch/js/highlight/languages/avrasm.js new file mode 100644 index 000000000..5e3e9545b --- /dev/null +++ b/output/Scratch/js/highlight/languages/avrasm.js @@ -0,0 +1,75 @@ +/* +Language: AVR Assembler +Author: Vladimir Ermakov +*/ + +hljs.LANGUAGES.avrasm = +{ + case_insensitive: true, + defaultMode: { + keywords: { + 'keyword': { + /* mnemonic */ + 'adc': 1, 'add': 1 , 'adiw': 1 , 'and': 1 , 'andi': 1 , 'asr': 1 , 'bclr': 1 , 'bld': 1 , 'brbc': 1 , 'brbs': 1 , 'brcc': 1 , + 'brcs': 1, 'break': 1, 'breq': 1, 'brge': 1, 'brhc': 1, 'brhs': 1, 'brid': 1, 'brie': 1, 'brlo': 1, 'brlt': 1, 'brmi': 1, + 'brne': 1, 'brpl': 1, 'brsh': 1, 'brtc': 1, 'brts': 1, 'brvc': 1, 'brvs': 1, 'bset': 1, 'bst': 1, 'call': 1, 'cbi': 1, + 'cbr': 1, 'clc': 1, 'clh': 1, 'cli': 1, 'cln': 1, 'clr': 1, 'cls': 1, 'clt': 1, 'clv': 1, 'clz': 1, 'com': 1, 'cp': 1, + 'cpc': 1, 'cpi': 1, 'cpse': 1, 'dec': 1, 'eicall': 1, 'eijmp': 1, 'elpm': 1, 'eor': 1, 'fmul': 1, 'fmuls': 1, 'fmulsu': 1, + 'icall': 1, 'ijmp': 1, 'in': 1, 'inc': 1, 'jmp': 1, 'ld': 1, 'ldd': 1, 'ldi': 1, 'lds': 1, 'lpm': 1, 'lsl': 1, 'lsr': 1, + 'mov': 1, 'movw': 1, 'mul': 1, 'muls': 1, 'mulsu': 1, 'neg': 1, 'nop': 1, 'or': 1, 'ori': 1, 'out': 1, 'pop': 1, 'push': 1, + 'rcall': 1, 'ret': 1, 'reti': 1, 'rjmp': 1, 'rol': 1, 'ror': 1, 'sbc': 1, 'sbr': 1, 'sbrc': 1, 'sbrs': 1, 'sec': 1, 'seh': 1, + 'sbi': 1, 'sbci': 1, 'sbic': 1, 'sbis': 1, 'sbiw': 1, 'sei': 1, 'sen': 1, 'ser': 1, 'ses': 1, 'set': 1, 'sev': 1, 'sez': 1, + 'sleep': 1, 'spm': 1, 'st': 1, 'std': 1, 'sts': 1, 'sub': 1, 'subi': 1, 'swap': 1, 'tst': 1, 'wdr': 1 + }, + 'built_in': { + /* general purpose registers */ + 'r0': 1, 'r1': 1, 'r2': 1, 'r3': 1, 'r4': 1, 'r5': 1, 'r6': 1, 'r7': 1, 'r8': 1, 'r9': 1, 'r10': 1, 'r11': 1, 'r12': 1, + 'r13': 1, 'r14': 1, 'r15': 1, 'r16': 1, 'r17': 1, 'r18': 1, 'r19': 1, 'r20': 1, 'r21': 1, 'r22': 1, 'r23': 1, 'r24': 1, + 'r25': 1, 'r26': 1, 'r27': 1, 'r28': 1, 'r29': 1, 'r30': 1, 'r31': 1, + 'x': 1 /* R27:R26 */, 'xh': 1 /* R27 */, 'xl': 1 /* R26 */, + 'y': 1 /* R29:R28 */, 'yh': 1 /* R29 */, 'yl': 1 /* R28 */, + 'z': 1 /* R31:R30 */, 'zh': 1 /* R31 */, 'zl': 1 /* R30 */, + /* IO Registers (ATMega128) */ + 'ucsr1c': 1, 'udr1': 1, 'ucsr1a': 1, 'ucsr1b': 1, 'ubrr1l': 1, 'ubrr1h': 1, 'ucsr0c': 1, 'ubrr0h': 1, 'tccr3c': 1, + 'tccr3a': 1, 'tccr3b': 1, 'tcnt3h': 1, 'tcnt3l': 1, 'ocr3ah': 1, 'ocr3al': 1, 'ocr3bh': 1, 'ocr3bl': 1, 'ocr3ch': 1, + 'ocr3cl': 1, 'icr3h': 1, 'icr3l': 1, 'etimsk': 1, 'etifr': 1, 'tccr1c': 1, 'ocr1ch': 1, 'ocr1cl': 1, 'twcr': 1, + 'twdr': 1, 'twar': 1, 'twsr': 1, 'twbr': 1, 'osccal': 1, 'xmcra': 1, 'xmcrb': 1, 'eicra': 1, 'spmcsr': 1, 'spmcr': 1, + 'portg': 1, 'ddrg': 1, 'ping': 1, 'portf': 1, 'ddrf': 1, 'sreg': 1, 'sph': 1, 'spl': 1, 'xdiv': 1, 'rampz': 1, + 'eicrb': 1, 'eimsk': 1, 'gimsk': 1, 'gicr': 1, 'eifr': 1, 'gifr': 1, 'timsk': 1, 'tifr': 1, 'mcucr': 1, + 'mcucsr': 1, 'tccr0': 1, 'tcnt0': 1, 'ocr0': 1, 'assr': 1, 'tccr1a': 1, 'tccr1b': 1, 'tcnt1h': 1, 'tcnt1l': 1, + 'ocr1ah': 1, 'ocr1al': 1, 'ocr1bh': 1, 'ocr1bl': 1, 'icr1h': 1, 'icr1l': 1, 'tccr2': 1, 'tcnt2': 1, 'ocr2': 1, + 'ocdr': 1, 'wdtcr': 1, 'sfior': 1, 'eearh': 1, 'eearl': 1, 'eedr': 1, 'eecr': 1, 'porta': 1, 'ddra': 1, 'pina': 1, + 'portb': 1, 'ddrb': 1, 'pinb': 1, 'portc': 1, 'ddrc': 1, 'pinc': 1, 'portd': 1, 'ddrd': 1, 'pind': 1, 'spdr': 1, + 'spsr': 1, 'spcr': 1, 'udr0': 1, 'ucsr0a': 1, 'ucsr0b': 1, 'ubrr0l': 1, 'acsr': 1, 'admux': 1, 'adcsr': 1, 'adch': 1, + 'adcl': 1, 'porte': 1, 'ddre': 1, 'pine': 1, 'pinf': 1 + } + }, + contains: [ + hljs.C_BLOCK_COMMENT_MODE, + {className: 'comment', begin: ';', end: '$'}, + hljs.C_NUMBER_MODE, // 0x..., decimal, float + hljs.BINARY_NUMBER_MODE, // 0b... + { + className: 'number', + begin: '\\b(\\$[a-zA-Z0-9]+|0o[0-7]+)' // $..., 0o... + }, + hljs.QUOTE_STRING_MODE, + { + className: 'string', + begin: '\'', end: '[^\\\\]\'', + illegal: '[^\\\\][^\']' + }, + {className: 'label', begin: '^[A-Za-z0-9_.$]+:'}, + {className: 'preprocessor', begin: '#', end: '$'}, + { // директивы «.include» «.macro» и т.д. + className: 'preprocessor', + begin: '\\.[a-zA-Z]+' + }, + { // подстановка в «.macro» + className: 'localvars', + begin: '@[0-9]+' + } + ] + } +}; + diff --git a/output/Scratch/js/highlight/languages/axapta.js b/output/Scratch/js/highlight/languages/axapta.js new file mode 100644 index 000000000..6c49ea045 --- /dev/null +++ b/output/Scratch/js/highlight/languages/axapta.js @@ -0,0 +1,48 @@ +/* +Language: Axapta +Author: Dmitri Roudakov +*/ + +hljs.LANGUAGES.axapta = { + defaultMode: { + keywords: { + 'false': 1, 'int': 1, 'abstract': 1, 'private': 1, 'char': 1, 'interface': 1, 'boolean': 1, 'static': 1, + 'null': 1, 'if': 1, 'for': 1, 'true': 1, 'while': 1, 'long': 1, 'throw': 1, 'finally': 1, 'protected': 1, + 'extends': 1, 'final': 1, 'implements': 1, 'return': 1, 'void': 1, 'enum': 1, 'else': 1, 'break': 1, 'new': 1, + 'catch': 1, 'byte': 1, 'super': 1, 'class': 1, 'case': 1, 'short': 1, 'default': 1, 'double': 1, 'public': 1, + 'try': 1, 'this': 1, 'switch': 1, 'continue': 1, 'reverse': 1, 'firstfast': 1, 'firstonly': 1, 'forupdate': 1, + 'nofetch': 1, 'sum': 1, 'avg': 1, 'minof': 1, 'maxof': 1, 'count': 1, 'order': 1, 'group': 1, 'by': 1, 'asc': 1, + 'desc': 1, 'index': 1, 'hint': 1, 'like': 1, 'dispaly': 1, 'edit': 1, 'client': 1, 'server': 1, 'ttsbegin': 1, + 'ttscommit': 1, 'str': 1, 'real': 1, 'date': 1, 'container': 1, 'anytype': 1, 'common': 1, 'div': 1, 'mod': 1 + }, + contains: [ + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + hljs.C_NUMBER_MODE, + { + className: 'preprocessor', + begin: '#', end: '$' + }, + { + className: 'class', + begin: '(class |interface )', end: '{', + illegal: ':', + keywords: {'class': 1, 'interface': 1}, + contains: [ + { + className: 'inheritance', + begin: '(implements|extends)', + keywords: {'extends': 1, 'implements': 1}, + relevance: 10 + }, + { + className: 'title', + begin: hljs.UNDERSCORE_IDENT_RE + } + ] + } + ] + } +}; diff --git a/output/Scratch/js/highlight/languages/bash.js b/output/Scratch/js/highlight/languages/bash.js new file mode 100644 index 000000000..18149489b --- /dev/null +++ b/output/Scratch/js/highlight/languages/bash.js @@ -0,0 +1,65 @@ +/* +Language: Bash +Author: vah +*/ + +hljs.LANGUAGES.bash = function(){ + var BASH_LITERAL = {'true' : 1, 'false' : 1}; + var VAR1 = { + className: 'variable', + begin: '\\$([a-zA-Z0-9_]+)\\b' + }; + var VAR2 = { + className: 'variable', + begin: '\\$\\{(([^}])|(\\\\}))+\\}', + contains: [hljs.C_NUMBER_MODE] + }; + var QUOTE_STRING = { + className: 'string', + begin: '"', end: '"', + illegal: '\\n', + contains: [hljs.BACKSLASH_ESCAPE, VAR1, VAR2], + relevance: 0 + }; + var APOS_STRING = { + className: 'string', + begin: '\'', end: '\'', + relevance: 0 + }; + var TEST_CONDITION = { + className: 'test_condition', + begin: '', end: '', + contains: [QUOTE_STRING, APOS_STRING, VAR1, VAR2, hljs.C_NUMBER_MODE], + keywords: { + 'literal': BASH_LITERAL + }, + relevance: 0 + }; + + return { + defaultMode: { + keywords: { + 'keyword': { + 'if' : 1, 'then' : 1, 'else' : 1, 'fi' : 1, 'for' : 1, 'break' : 1, 'continue' : 1, 'while' : 1, 'in' : 1, + 'do' : 1, 'done' : 1, 'echo' : 1, 'exit' : 1, 'return' : 1, 'set' : 1, 'declare' : 1 + }, + 'literal': BASH_LITERAL + }, + contains: [ + { + className: 'shebang', + begin: '(#!\\/bin\\/bash)|(#!\\/bin\\/sh)', + relevance: 10 + }, + VAR1, + VAR2, + hljs.HASH_COMMENT_MODE, + hljs.C_NUMBER_MODE, + QUOTE_STRING, + APOS_STRING, + hljs.inherit(TEST_CONDITION, {begin: '\\[ ', end: ' \\]', relevance: 0}), + hljs.inherit(TEST_CONDITION, {begin: '\\[\\[ ', end: ' \\]\\]'}) + ] + } + }; +}(); diff --git a/output/Scratch/js/highlight/languages/cmake.js b/output/Scratch/js/highlight/languages/cmake.js new file mode 100644 index 000000000..8aa933795 --- /dev/null +++ b/output/Scratch/js/highlight/languages/cmake.js @@ -0,0 +1,42 @@ +/* +Language: CMake +Description: CMake is an open-source cross-platform system for build automation. +Author: Igor Kalnitsky +Website: http://kalnitsky.org.ua/ +*/ + +hljs.LANGUAGES.cmake = { + case_insensitive: true, + defaultMode: { + keywords: { + 'add_custom_command': 2, 'add_custom_target': 2, 'add_definitions': 2, 'add_dependencies': 2, + 'add_executable': 2, 'add_library': 2, 'add_subdirectory': 2, 'add_test': 2, 'aux_source_directory': 2, + 'break': 1, 'build_command': 2, 'cmake_minimum_required': 3, 'cmake_policy': 3, 'configure_file': 1, + 'create_test_sourcelist': 1, 'define_property': 1, 'else': 1, 'elseif': 1, 'enable_language': 2, + 'enable_testing': 2, 'endforeach': 1, 'endfunction': 1, 'endif': 1, 'endmacro': 1, 'endwhile': 1, + 'execute_process': 2, 'export': 1, 'find_file': 1, 'find_library': 2, 'find_package': 2, 'find_path': 1, + 'find_program': 1, 'fltk_wrap_ui': 2, 'foreach': 1, 'function': 1, 'get_cmake_property': 3, + 'get_directory_property': 1, 'get_filename_component': 1, 'get_property': 1, 'get_source_file_property': 1, + 'get_target_property': 1, 'get_test_property': 1, 'if': 1, 'include': 1, 'include_directories': 2, + 'include_external_msproject': 1, 'include_regular_expression': 2, 'install': 1, 'link_directories': 1, + 'load_cache': 1, 'load_command': 1, 'macro': 1, 'mark_as_advanced': 1, 'message': 1, 'option': 1, + 'output_required_files': 1, 'project': 1, 'qt_wrap_cpp': 2, 'qt_wrap_ui': 2, 'remove_definitions': 2, + 'return': 1, 'separate_arguments': 1, 'set': 1, 'set_directory_properties': 1, 'set_property': 1, + 'set_source_files_properties': 1, 'set_target_properties': 1, 'set_tests_properties': 1, 'site_name': 1, + 'source_group': 1, 'string': 1, 'target_link_libraries': 2, 'try_compile': 2, 'try_run': 2, 'unset': 1, + 'variable_watch': 2, 'while': 1, 'build_name': 1, 'exec_program': 1, 'export_library_dependencies': 1, + 'install_files': 1, 'install_programs': 1, 'install_targets': 1, 'link_libraries': 1, 'make_directory': 1, + 'remove': 1, 'subdir_depends': 1, 'subdirs': 1, 'use_mangled_mesa': 1, 'utility_source': 1, + 'variable_requires': 1, 'write_file': 1 + }, + contains: [ + { + className: 'envvar', + begin: '\\${', end: '}' + }, + hljs.HASH_COMMENT_MODE, + hljs.QUOTE_STRING_MODE, + hljs.NUMBER_MODE + ] + } +}; diff --git a/output/Scratch/js/highlight/languages/coffeescript.js b/output/Scratch/js/highlight/languages/coffeescript.js new file mode 100755 index 000000000..7cd5cecfd --- /dev/null +++ b/output/Scratch/js/highlight/languages/coffeescript.js @@ -0,0 +1,112 @@ +/* +Language: CoffeeScript +Author: Dmytrii Nagirniak +Contributors: Oleg Efimov +Description: CoffeeScript is a programming language that transcompiles to JavaScript. For info about language see http://coffeescript.org/ +*/ + +hljs.LANGUAGES.coffeescript = function() { + var keywords = { + 'keyword': { + // JS keywords + 'in': 1, 'if': 1, 'for': 1, 'while': 1, 'finally': 1, + 'new': 1, 'do': 1, 'return': 1, 'else': 1, + 'break': 1, 'catch': 1, 'instanceof': 1, 'throw': 1, + 'try': 1, 'this': 1, 'switch': 1, 'continue': 1, 'typeof': 1, + 'delete': 1, 'debugger': 1, + 'class': 1, 'extends': 1, 'super': 1, + // Coffee keywords + 'then': 1, 'unless': 1, 'until': 1, 'loop': 2, 'of': 2, 'by': 1, 'when': 2, + 'and': 1, 'or': 1, 'is': 1, 'isnt': 2, 'not': 1 + }, + 'literal': { + // JS literals + 'true': 1, 'false': 1, 'null': 1, 'undefined': 1, + // Coffee literals + 'yes': 1, 'no': 1, 'on': 1, 'off': 1 + }, + 'reserved': { + 'case': 1, 'default': 1, 'function': 1, 'var': 1, 'void': 1, 'with': 1, + 'const': 1, 'let': 1, 'enum': 1, 'export': 1, 'import': 1, 'native': 1, + '__hasProp': 1 , '__extends': 1 , '__slice': 1 , '__bind': 1 , '__indexOf': 1 + } + }; + + var JS_IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*'; + + var COFFEE_QUOTE_STRING_SUBST_MODE = { + className: 'subst', + begin: '#\\{', end: '}', + keywords: keywords, + contains: [hljs.C_NUMBER_MODE, hljs.BINARY_NUMBER_MODE] + }; + + var COFFEE_QUOTE_STRING_MODE = { + className: 'string', + begin: '"', end: '"', + relevance: 0, + contains: [hljs.BACKSLASH_ESCAPE, COFFEE_QUOTE_STRING_SUBST_MODE] + }; + + var COFFEE_HEREDOC_MODE = { + className: 'string', + begin: '"""', end: '"""', + contains: [hljs.BACKSLASH_ESCAPE, COFFEE_QUOTE_STRING_SUBST_MODE] + }; + + var COFFEE_HERECOMMENT_MODE = { + className: 'comment', + begin: '###', end: '###' + }; + + var COFFEE_HEREGEX_MODE = { + className: 'regexp', + begin: '///', end: '///', + contains: [hljs.HASH_COMMENT_MODE] + }; + + var COFFEE_FUNCTION_DECLARATION_MODE = { + className: 'function', + begin: JS_IDENT_RE + '\\s*=\\s*(\\(.+\\))?\\s*[-=]>', + returnBegin: true, + contains: [ + { + className: 'title', + begin: JS_IDENT_RE + }, + { + className: 'params', + begin: '\\(', end: '\\)' + } + ] + }; + + var COFFEE_EMBEDDED_JAVASCRIPT = { + className: 'javascript', + begin: '`', end: '`', + excludeBegin: true, excludeEnd: true, + subLanguage: 'javascript' + }; + + return { + defaultMode: { + keywords: keywords, + contains: [ + // Numbers + hljs.C_NUMBER_MODE, + hljs.BINARY_NUMBER_MODE, + // Strings + hljs.APOS_STRING_MODE, + COFFEE_HEREDOC_MODE, // Should be before COFFEE_QUOTE_STRING_MODE for greater priority + COFFEE_QUOTE_STRING_MODE, + // Comments + COFFEE_HERECOMMENT_MODE, // Should be before hljs.HASH_COMMENT_MODE for greater priority + hljs.HASH_COMMENT_MODE, + // CoffeeScript specific modes + COFFEE_HEREGEX_MODE, + COFFEE_EMBEDDED_JAVASCRIPT, + COFFEE_FUNCTION_DECLARATION_MODE + ] + } + }; +}(); diff --git a/output/Scratch/js/highlight/languages/cpp.js b/output/Scratch/js/highlight/languages/cpp.js new file mode 100644 index 000000000..f9872a73b --- /dev/null +++ b/output/Scratch/js/highlight/languages/cpp.js @@ -0,0 +1,66 @@ +/* +Language: C++ +Contributors: Evgeny Stepanischev +*/ + +hljs.LANGUAGES.cpp = function(){ + var CPP_KEYWORDS = { + 'keyword': { + 'false': 1, 'int': 1, 'float': 1, 'while': 1, 'private': 1, 'char': 1, + 'catch': 1, 'export': 1, 'virtual': 1, 'operator': 2, 'sizeof': 2, + 'dynamic_cast': 2, 'typedef': 2, 'const_cast': 2, 'const': 1, + 'struct': 1, 'for': 1, 'static_cast': 2, 'union': 1, 'namespace': 1, + 'unsigned': 1, 'long': 1, 'throw': 1, 'volatile': 2, 'static': 1, + 'protected': 1, 'bool': 1, 'template': 1, 'mutable': 1, 'if': 1, + 'public': 1, 'friend': 2, 'do': 1, 'return': 1, 'goto': 1, 'auto': 1, + 'void': 2, 'enum': 1, 'else': 1, 'break': 1, 'new': 1, 'extern': 1, + 'using': 1, 'true': 1, 'class': 1, 'asm': 1, 'case': 1, 'typeid': 1, + 'short': 1, 'reinterpret_cast': 2, 'default': 1, 'double': 1, + 'register': 1, 'explicit': 1, 'signed': 1, 'typename': 1, 'try': 1, + 'this': 1, 'switch': 1, 'continue': 1, 'wchar_t': 1, 'inline': 1, + 'delete': 1, 'alignof': 1, 'char16_t': 1, 'char32_t': 1, 'constexpr': 1, + 'decltype': 1, 'noexcept': 1, 'nullptr': 1, 'static_assert': 1, + 'thread_local': 1, 'restrict': 1, '_Bool':1, 'complex': 1 + }, + 'built_in': { + 'std': 1, 'string': 1, 'cin': 1, 'cout': 1, 'cerr': 1, 'clog': 1, + 'stringstream': 1, 'istringstream': 1, 'ostringstream': 1, 'auto_ptr': 1, + 'deque': 1, 'list': 1, 'queue': 1, 'stack': 1, 'vector': 1, 'map': 1, + 'set': 1, 'bitset': 1, 'multiset': 1, 'multimap': 1, 'unordered_set': 1, + 'unordered_map': 1, 'unordered_multiset': 1, 'unordered_multimap': 1, + 'array': 1, 'shared_ptr': 1 + } + }; + return { + defaultMode: { + keywords: CPP_KEYWORDS, + illegal: '', + keywords: CPP_KEYWORDS, + relevance: 10, + contains: ['self'] + } + ] + } + }; +}(); diff --git a/output/Scratch/js/highlight/languages/cs.js b/output/Scratch/js/highlight/languages/cs.js new file mode 100644 index 000000000..af4386178 --- /dev/null +++ b/output/Scratch/js/highlight/languages/cs.js @@ -0,0 +1,58 @@ +/* +Language: C# +Author: Jason Diamond +*/ + +hljs.LANGUAGES.cs = { + defaultMode: { + keywords: { + // Normal keywords. + 'abstract': 1, 'as': 1, 'base': 1, 'bool': 1, 'break': 1, 'byte': 1, 'case': 1, 'catch': 1, 'char': 1, + 'checked': 1, 'class': 1, 'const': 1, 'continue': 1, 'decimal': 1, 'default': 1, 'delegate': 1, 'do': 1, + 'double': 1, 'else': 1, 'enum': 1, 'event': 1, 'explicit': 1, 'extern': 1, 'false': 1, 'finally': 1, 'fixed': 1, + 'float': 1, 'for': 1, 'foreach': 1, 'goto': 1, 'if': 1, 'implicit': 1, 'in': 1, 'int': 1, 'interface': 1, + 'internal': 1, 'is': 1, 'lock': 1, 'long': 1, 'namespace': 1, 'new': 1, 'null': 1, 'object': 1, 'operator': 1, + 'out': 1, 'override': 1, 'params': 1, 'private': 1, 'protected': 1, 'public': 1, 'readonly': 1, 'ref': 1, + 'return': 1, 'sbyte': 1, 'sealed': 1, 'short': 1, 'sizeof': 1, 'stackalloc': 1, 'static': 1, 'string': 1, + 'struct': 1, 'switch': 1, 'this': 1, 'throw': 1, 'true': 1, 'try': 1, 'typeof': 1, 'uint': 1, 'ulong': 1, + 'unchecked': 1, 'unsafe': 1, 'ushort': 1, 'using': 1, 'virtual': 1, 'volatile': 1, 'void': 1, 'while': 1, + // Contextual keywords. + 'ascending': 1, 'descending': 1, 'from': 1, 'get': 1, 'group': 1, 'into': 1, 'join': 1, 'let': 1, 'orderby': 1, + 'partial': 1, 'select': 1, 'set': 1, 'value': 1, 'var': 1, 'where': 1, 'yield': 1 + }, + contains: [ + { + className: 'comment', + begin: '///', end: '$', returnBegin: true, + contains: [ + { + className: 'xmlDocTag', + begin: '///|' + }, + { + className: 'xmlDocTag', + begin: '' + } + ] + }, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + { + className: 'preprocessor', + begin: '#', end: '$', + keywords: { + 'if': 1, 'else': 1, 'elif': 1, 'endif': 1, 'define': 1, 'undef': 1, 'warning': 1, + 'error': 1, 'line': 1, 'region': 1, 'endregion': 1, 'pragma': 1, 'checksum': 1 + } + }, + { + className: 'string', + begin: '@"', end: '"', + contains: [{begin: '""'}] + }, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + hljs.C_NUMBER_MODE + ] + } +}; diff --git a/output/Scratch/js/highlight/languages/css.js b/output/Scratch/js/highlight/languages/css.js new file mode 100644 index 000000000..b6e4db97d --- /dev/null +++ b/output/Scratch/js/highlight/languages/css.js @@ -0,0 +1,101 @@ +/* +Language: CSS +*/ + +hljs.LANGUAGES.css = function() { + var FUNCTION = { + className: 'function', + begin: hljs.IDENT_RE + '\\(', end: '\\)', + contains: [{ + endsWithParent: true, excludeEnd: true, + contains: [hljs.NUMBER_MODE, hljs.APOS_STRING_MODE, hljs.QUOTE_STRING_MODE] + }] + }; + return { + case_insensitive: true, + defaultMode: { + illegal: '[=/|\']', + contains: [ + hljs.C_BLOCK_COMMENT_MODE, + { + className: 'id', begin: '\\#[A-Za-z0-9_-]+' + }, + { + className: 'class', begin: '\\.[A-Za-z0-9_-]+', + relevance: 0 + }, + { + className: 'attr_selector', + begin: '\\[', end: '\\]', + illegal: '$' + }, + { + className: 'pseudo', + begin: ':(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\\"\\\']+' + }, + { + className: 'at_rule', + begin: '@(font-face|page)', + lexems: '[a-z-]+', + keywords: {'font-face': 1, 'page': 1} + }, + { + className: 'at_rule', + begin: '@', end: '[{;]', // at_rule eating first "{" is a good thing + // because it doesn't let it to be parsed as + // a rule set but instead drops parser into + // the defaultMode which is how it should be. + excludeEnd: true, + keywords: {'import': 1, 'page': 1, 'media': 1, 'charset': 1}, + contains: [ + FUNCTION, + hljs.APOS_STRING_MODE, hljs.QUOTE_STRING_MODE, + hljs.NUMBER_MODE + ] + }, + { + className: 'tag', begin: hljs.IDENT_RE, + relevance: 0 + }, + { + className: 'rules', + begin: '{', end: '}', + illegal: '[^\\s]', + relevance: 0, + contains: [ + hljs.C_BLOCK_COMMENT_MODE, + { + className: 'rule', + begin: '[^\\s]', returnBegin: true, end: ';', endsWithParent: true, + contains: [ + { + className: 'attribute', + begin: '[A-Z\\_\\.\\-]+', end: ':', + excludeEnd: true, + illegal: '[^\\s]', + starts: { + className: 'value', + endsWithParent: true, excludeEnd: true, + contains: [ + FUNCTION, + hljs.NUMBER_MODE, + hljs.QUOTE_STRING_MODE, + hljs.APOS_STRING_MODE, + hljs.C_BLOCK_COMMENT_MODE, + { + className: 'hexcolor', begin: '\\#[0-9A-F]+' + }, + { + className: 'important', begin: '!important' + } + ] + } + } + ] + } + ] + } + ] + } + }; +}(); diff --git a/output/Scratch/js/highlight/languages/delphi.js b/output/Scratch/js/highlight/languages/delphi.js new file mode 100644 index 000000000..eb50b8fa8 --- /dev/null +++ b/output/Scratch/js/highlight/languages/delphi.js @@ -0,0 +1,88 @@ +/* +Language: Delphi +*/ + +hljs.LANGUAGES.delphi = function(){ + var DELPHI_KEYWORDS = { + 'and': 1, 'safecall': 1, 'cdecl': 1, 'then': 1, 'string': 1, 'exports': 1, 'library': 1, 'not': 1, 'pascal': 1, + 'set': 1, 'virtual': 1, 'file': 1, 'in': 1, 'array': 1, 'label': 1, 'packed': 1, 'end.': 1, 'index': 1, + 'while': 1, 'const': 1, 'raise': 1, 'for': 1, 'to': 1, 'implementation': 1, 'with': 1, 'except': 1, + 'overload': 1, 'destructor': 1, 'downto': 1, 'finally': 1, 'program': 1, 'exit': 1, 'unit': 1, 'inherited': 1, + 'override': 1, 'if': 1, 'type': 1, 'until': 1, 'function': 1, 'do': 1, 'begin': 1, 'repeat': 1, 'goto': 1, + 'nil': 1, 'far': 1, 'initialization': 1, 'object': 1, 'else': 1, 'var': 1, 'uses': 1, 'external': 1, + 'resourcestring': 1, 'interface': 1, 'end': 1, 'finalization': 1, 'class': 1, 'asm': 1, 'mod': 1, 'case': 1, + 'on': 1, 'shr': 1, 'shl': 1, 'of': 1, 'register': 1, 'xorwrite': 1, 'threadvar': 1, 'try': 1, 'record': 1, + 'near': 1, 'stored': 1, 'constructor': 1, 'stdcall': 1, 'inline': 1, 'div': 1, 'out': 1, 'or': 1, 'procedure': 1 + }; + var DELPHI_CLASS_KEYWORDS = { + 'safecall': 1, 'stdcall': 1, 'pascal': 1, 'stored': 1, 'const': 1, 'implementation': 1, 'finalization': 1, + 'except': 1, 'to': 1, 'finally': 1, 'program': 1, 'inherited': 1, 'override': 1, 'then': 1, 'exports': 1, + 'string': 1, 'read': 1, 'not': 1, 'mod': 1, 'shr': 1, 'try': 1, 'div': 1, 'shl': 1, 'set': 1, 'library': 1, + 'message': 1, 'packed': 1, 'index': 1, 'for': 1, 'near': 1, 'overload': 1, 'label': 1, 'downto': 1, 'exit': 1, + 'public': 1, 'goto': 1, 'interface': 1, 'asm': 1, 'on': 1, 'of': 1, 'constructor': 1, 'or': 1, 'private': 1, + 'array': 1, 'unit': 1, 'raise': 1, 'destructor': 1, 'var': 1, 'type': 1, 'until': 1, 'function': 1, 'else': 1, + 'external': 1, 'with': 1, 'case': 1, 'default': 1, 'record': 1, 'while': 1, 'protected': 1, 'property': 1, + 'procedure': 1, 'published': 1, 'and': 1, 'cdecl': 1, 'do': 1, 'threadvar': 1, 'file': 1, 'in': 1, 'if': 1, + 'end': 1, 'virtual': 1, 'write': 1, 'far': 1, 'out': 1, 'begin': 1, 'repeat': 1, 'nil': 1, 'initialization': 1, + 'object': 1, 'uses': 1, 'resourcestring': 1, 'class': 1, 'register': 1, 'xorwrite': 1, 'inline': 1, 'static': 1 + }; + var CURLY_COMMENT = { + className: 'comment', + begin: '{', end: '}', + relevance: 0 + }; + var PAREN_COMMENT = { + className: 'comment', + begin: '\\(\\*', end: '\\*\\)', + relevance: 10 + }; + var STRING = { + className: 'string', + begin: '\'', end: '\'', + contains: [{begin: '\'\''}], + relevance: 0 + }; + var CHAR_STRING = { + className: 'string', begin: '(#\\d+)+' + }; + var FUNCTION = { + className: 'function', + begin: '(procedure|constructor|destructor|function)\\b', end: '[:;]', + keywords: {'function': 1, 'constructor': 10, 'destructor': 10, 'procedure': 10}, + contains: [ + { + className: 'title', begin: hljs.IDENT_RE + }, + { + className: 'params', + begin: '\\(', end: '\\)', + keywords: DELPHI_KEYWORDS, + contains: [STRING, CHAR_STRING] + }, + CURLY_COMMENT, PAREN_COMMENT + ] + }; + return { + case_insensitive: true, + defaultMode: { + keywords: DELPHI_KEYWORDS, + illegal: '("|\\$[G-Zg-z]|\\/\\*| +*/ + +hljs.LANGUAGES.diff = { + case_insensitive: true, + defaultMode: { + contains: [ + { + className: 'chunk', + begin: '^\\@\\@ +\\-\\d+,\\d+ +\\+\\d+,\\d+ +\\@\\@$', + relevance: 10 + }, + { + className: 'chunk', + begin: '^\\*\\*\\* +\\d+,\\d+ +\\*\\*\\*\\*$', + relevance: 10 + }, + { + className: 'chunk', + begin: '^\\-\\-\\- +\\d+,\\d+ +\\-\\-\\-\\-$', + relevance: 10 + }, + { + className: 'header', + begin: 'Index: ', end: '$' + }, + { + className: 'header', + begin: '=====', end: '=====$' + }, + { + className: 'header', + begin: '^\\-\\-\\-', end: '$' + }, + { + className: 'header', + begin: '^\\*{3} ', end: '$' + }, + { + className: 'header', + begin: '^\\+\\+\\+', end: '$' + }, + { + className: 'header', + begin: '\\*{5}', end: '\\*{5}$' + }, + { + className: 'addition', + begin: '^\\+', end: '$' + }, + { + className: 'deletion', + begin: '^\\-', end: '$' + }, + { + className: 'change', + begin: '^\\!', end: '$' + } + ] + } +}; diff --git a/output/Scratch/js/highlight/languages/django.js b/output/Scratch/js/highlight/languages/django.js new file mode 100644 index 000000000..f5037c1e6 --- /dev/null +++ b/output/Scratch/js/highlight/languages/django.js @@ -0,0 +1,81 @@ +/* +Language: Django +Requires: xml.js +*/ + +hljs.LANGUAGES.django = function() { + + function allowsDjangoSyntax(mode, parent) { + return ( + parent == undefined || // defaultMode + (!mode.className && parent.className == 'tag') || // tag_internal + mode.className == 'value' // value + ); + } + + function copy(mode, parent) { + var result = {}; + for (var key in mode) { + if (key != 'contains') { + result[key] = mode[key]; + } + var contains = []; + for (var i = 0; mode.contains && i < mode.contains.length; i++) { + contains.push(copy(mode.contains[i], mode)); + } + if (allowsDjangoSyntax(mode, parent)) { + contains = DJANGO_CONTAINS.concat(contains); + } + if (contains.length) { + result.contains = contains; + } + } + return result; + } + + var FILTER = { + className: 'filter', + begin: '\\|[A-Za-z]+\\:?', excludeEnd: true, + keywords: { + 'truncatewords': 1, 'removetags': 1, 'linebreaksbr': 1, 'yesno': 1, 'get_digit': 1, 'timesince': 1, 'random': 1, + 'striptags': 1, 'filesizeformat': 1, 'escape': 1, 'linebreaks': 1, 'length_is': 1, 'ljust': 1, 'rjust': 1, + 'cut': 1, 'urlize': 1, 'fix_ampersands': 1, 'title': 1, 'floatformat': 1, 'capfirst': 1, 'pprint': 1, + 'divisibleby': 1, 'add': 1, 'make_list': 1, 'unordered_list': 1, 'urlencode': 1, 'timeuntil': 1, + 'urlizetrunc': 1, 'wordcount': 1, 'stringformat': 1, 'linenumbers': 1, 'slice': 1, 'date': 1, 'dictsort': 1, + 'dictsortreversed': 1, 'default_if_none': 1, 'pluralize': 1, 'lower': 1, 'join': 1, 'center': 1, 'default': 1, + 'truncatewords_html': 1, 'upper': 1, 'length': 1, 'phone2numeric': 1, 'wordwrap': 1, 'time': 1, 'addslashes': 1, + 'slugify': 1, 'first': 1 + }, + contains: [ + {className: 'argument', begin: '"', end: '"'} + ] + }; + + var DJANGO_CONTAINS = [ + { + className: 'template_comment', + begin: '{%\\s*comment\\s*%}', end: '{%\\s*endcomment\\s*%}' + }, + { + className: 'template_comment', + begin: '{#', end: '#}' + }, + { + className: 'template_tag', + begin: '{%', end: '%}', + keywords: {'comment': 1, 'endcomment': 1, 'load': 1, 'templatetag': 1, 'ifchanged': 1, 'endifchanged': 1, 'if': 1, 'endif': 1, 'firstof': 1, 'for': 1, 'endfor': 1, 'in': 1, 'ifnotequal': 1, 'endifnotequal': 1, 'widthratio': 1, 'extends': 1, 'include': 1, 'spaceless': 1, 'endspaceless': 1, 'regroup': 1, 'by': 1, 'as': 1, 'ifequal': 1, 'endifequal': 1, 'ssi': 1, 'now': 1, 'with': 1, 'cycle': 1, 'url': 1, 'filter': 1, 'endfilter': 1, 'debug': 1, 'block': 1, 'endblock': 1, 'else': 1}, + contains: [FILTER] + }, + { + className: 'variable', + begin: '{{', end: '}}', + contains: [FILTER] + } + ]; + + return { + case_insensitive: true, + defaultMode: copy(hljs.LANGUAGES.xml.defaultMode) + }; + +}(); diff --git a/output/Scratch/js/highlight/languages/dos.js b/output/Scratch/js/highlight/languages/dos.js new file mode 100644 index 000000000..a2fee614d --- /dev/null +++ b/output/Scratch/js/highlight/languages/dos.js @@ -0,0 +1,35 @@ +/* +Language: DOS .bat +Author: Alexander Makarov (http://rmcreative.ru/) +*/ + +hljs.LANGUAGES.dos = { + case_insensitive: true, + defaultMode: { + keywords: { + 'flow': {'if':1, 'else':1, 'goto':1, 'for':1, 'in':1, 'do':1, 'call':1, 'exit':1, 'not':1, 'exist':1, 'errorlevel':1, 'defined':1, 'equ':1, 'neq':1, 'lss':1, 'leq':1, 'gtr':1, 'geq':1}, + 'keyword':{'shift':1, 'cd':1, 'dir':1, 'echo':1, 'setlocal':1, 'endlocal':1, 'set':1, 'pause':1, 'copy':1}, + 'stream':{'prn':1, 'nul':1, 'lpt3':1, 'lpt2':1, 'lpt1':1, 'con':1, 'com4':1, 'com3':1, 'com2':1, 'com1':1, 'aux':1}, + 'winutils':{'ping':1, 'net':1, 'ipconfig':1, 'taskkill':1, 'xcopy':1, 'ren':1, 'del':1} + }, + contains: [ + { + className: 'envvar', begin: '%%[^ ]' + }, + { + className: 'envvar', begin: '%[^ ]+?%' + }, + { + className: 'envvar', begin: '![^ ]+?!' + }, + { + className: 'number', begin: '\\b\\d+', + relevance: 0 + }, + { + className: 'comment', + begin: '@?rem', end: '$' + } + ] + } +}; diff --git a/output/Scratch/js/highlight/languages/erlang-repl.js b/output/Scratch/js/highlight/languages/erlang-repl.js new file mode 100644 index 000000000..c5524765a --- /dev/null +++ b/output/Scratch/js/highlight/languages/erlang-repl.js @@ -0,0 +1,85 @@ +/* + Language: Erlang REPL + Author: Sergey Ignatov + */ + +hljs.LANGUAGES.erlang_repl = { + defaultMode: { + keywords: { + 'special_functions':{ + 'spawn':10, + 'spawn_link':10, + 'self':2 + }, + 'reserved':{ + 'after':1, + 'and':1, + 'andalso':5, + 'band':1, + 'begin':1, + 'bnot':1, + 'bor':1, + 'bsl':1, + 'bsr':1, + 'bxor':1, + 'case':1, + 'catch':0, + 'cond':1, + 'div':1, + 'end':1, + 'fun':0, + 'if':0, + 'let':1, + 'not':0, + 'of':1, + 'or':1, + 'orelse':5, + 'query':1, + 'receive':0, + 'rem':1, + 'try':0, + 'when':1, + 'xor':1 + } + }, + contains: [ + { + className: 'input_number', begin: '^[0-9]+> ', + relevance: 10 + }, + { + className: 'comment', + begin: '%', end: '$' + }, + { + className: 'number', + begin: '\\b(\\d+#[a-fA-F0-9]+|\\d+(\\.\\d+)?([eE][-+]?\\d+)?)', + relevance: 0 + }, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + { + className: 'constant', begin: '\\?(::)?([A-Z]\\w*(::)?)+' + }, + { + className: 'arrow', begin: '->' + }, + { + className: 'ok', begin: 'ok' + }, + { + className: 'exclamation_mark', begin: '!' + }, + { + className: 'function_or_atom', + begin: '(\\b[a-z\'][a-zA-Z0-9_\']*:[a-z\'][a-zA-Z0-9_\']*)|(\\b[a-z\'][a-zA-Z0-9_\']*)', + relevance: 0 + }, + { + className: 'variable', + begin: '[A-Z][a-zA-Z0-9_\']*', + relevance: 0 + } + ] + } +}; diff --git a/output/Scratch/js/highlight/languages/erlang.js b/output/Scratch/js/highlight/languages/erlang.js new file mode 100644 index 000000000..cae906a04 --- /dev/null +++ b/output/Scratch/js/highlight/languages/erlang.js @@ -0,0 +1,206 @@ +/* +Language: Erlang +Description: Erlang is a general-purpose functional language, with strict evaluation, single assignment, and dynamic typing. +Author: Nikolay Zakharov , Dmitry Kovega +*/ + +hljs.LANGUAGES.erlang = function(){ + var BASIC_ATOM_RE = '[a-z\'][a-zA-Z0-9_\']*'; + var FUNCTION_NAME_RE = '(' + BASIC_ATOM_RE + ':' + BASIC_ATOM_RE + '|' + BASIC_ATOM_RE + ')'; + var ERLANG_RESERVED = { + 'keyword': { + 'after': 1, + 'and': 1, + 'andalso': 10, + 'band': 1, + 'begin': 1, + 'bnot': 1, + 'bor': 1, + 'bsl': 1, + 'bzr': 1, + 'bxor': 1, + 'case': 1, + 'catch': 1, + 'cond': 1, + 'div': 1, + 'end': 1, + 'fun': 1, + 'let': 1, + 'not': 1, + 'of': 1, + 'orelse': 10, + 'query': 1, + 'receive': 1, + 'rem': 1, + 'try': 1, + 'when': 1, + 'xor': 1 + }, + 'literal': {'false': 1, 'true': 1} + }; + + var COMMENT = { + className: 'comment', + begin: '%', end: '$', + relevance: 0 + }; + var NUMBER = { + className: 'number', + begin: '\\b(\\d+#[a-fA-F0-9]+|\\d+(\\.\\d+)?([eE][-+]?\\d+)?)', + relevance: 0 + }; + var NAMED_FUN = { + begin: 'fun\\s+' + BASIC_ATOM_RE + '/\\d+' + }; + var FUNCTION_CALL = { + begin: FUNCTION_NAME_RE + '\\(', end: '\\)', + returnBegin: true, + relevance: 0, + contains: [ + { + className: 'function_name', begin: FUNCTION_NAME_RE, + relevance: 0 + }, + { + begin: '\\(', end: '\\)', endsWithParent: true, + returnEnd: true, + relevance: 0 + // "contains" defined later + } + ] + }; + var TUPLE = { + className: 'tuple', + begin: '{', end: '}', + relevance: 0 + // "contains" defined later + }; + var VAR1 = { + className: 'variable', + begin: '\\b_([A-Z][A-Za-z0-9_]*)?', + relevance: 0 + }; + var VAR2 = { + className: 'variable', + begin: '[A-Z][a-zA-Z0-9_]*', + relevance: 0 + }; + var RECORD_ACCESS = { + begin: '#', end: '}', + illegal: '.', + relevance: 0, + returnBegin: true, + contains: [ + { + className: 'record_name', + begin: '#' + hljs.UNDERSCORE_IDENT_RE, + relevance: 0 + }, + { + begin: '{', endsWithParent: true, + relevance: 0 + // "contains" defined later + } + ] + }; + + var BLOCK_STATEMENTS = { + keywords: ERLANG_RESERVED, + begin: '(fun|receive|if|try|case)', end: 'end' + }; + BLOCK_STATEMENTS.contains = [ + COMMENT, + NAMED_FUN, + hljs.inherit(hljs.APOS_STRING_MODE, {className: ''}), + BLOCK_STATEMENTS, + FUNCTION_CALL, + hljs.QUOTE_STRING_MODE, + NUMBER, + TUPLE, + VAR1, VAR2, + RECORD_ACCESS + ]; + + var BASIC_MODES = [ + COMMENT, + NAMED_FUN, + BLOCK_STATEMENTS, + FUNCTION_CALL, + hljs.QUOTE_STRING_MODE, + NUMBER, + TUPLE, + VAR1, VAR2, + RECORD_ACCESS + ]; + FUNCTION_CALL.contains[1].contains = BASIC_MODES; + TUPLE.contains = BASIC_MODES; + RECORD_ACCESS.contains[1].contains = BASIC_MODES; + + var PARAMS = { + className: 'params', + begin: '\\(', end: '\\)', + endsWithParent: true, + contains: BASIC_MODES + }; + return { + defaultMode: { + keywords: ERLANG_RESERVED, + illegal: '(', endsWithParent: true, + contains: BASIC_MODES + } + ] + }, + COMMENT, + { + className: 'pp', + begin: '^-', end: '\\.', + relevance: 0, + excludeEnd: true, + returnBegin: true, + lexems: '-' + hljs.IDENT_RE, + keywords: { + '-module':1, + '-record':1, + '-undef':1, + '-export':1, + '-ifdef':1, + '-ifndef':1, + '-author':1, + '-copyright':1, + '-doc':1, + '-vsn':1, + '-import': 1, + '-include': 1, + '-include_lib': 1, + '-compile': 1, + '-define': 1, + '-else': 1, + '-endif': 1, + '-file': 1, + '-behaviour': 1, + '-behavior': 1 + }, + contains: [PARAMS] + }, + NUMBER, + hljs.QUOTE_STRING_MODE, + RECORD_ACCESS, + VAR1, VAR2, + TUPLE + ] + } + }; +}(); diff --git a/output/Scratch/js/highlight/languages/go.js b/output/Scratch/js/highlight/languages/go.js new file mode 100644 index 000000000..daf620fab --- /dev/null +++ b/output/Scratch/js/highlight/languages/go.js @@ -0,0 +1,59 @@ +/* +Language: Go +Author: Stephan Kountso aka StepLg +Contributors: Evgeny Stepanischev +Description: Google go language (golang). For info about language see http://golang.org/ +*/ + +hljs.LANGUAGES.go = function(){ + var GO_KEYWORDS = { + 'keyword': { + 'break' : 1, 'default' : 1, 'func' : 1, 'interface' : 1, 'select' : 1, + 'case' : 1, 'map' : 1, 'struct' : 1, 'chan' : 1, + 'else' : 1, 'goto' : 1, 'package' : 1, 'switch' : 1, 'const' : 1, + 'fallthrough' : 1, 'if' : 1, 'range' : 1, 'type' : 1, 'continue' : 1, + 'for' : 1, 'import' : 1, 'return' : 1, 'var' : 1, 'go': 1, 'defer' : 1 + }, + 'constant': { + 'true': 1, 'false': 1, 'iota': 1, 'nil': 1 + }, + 'typename': { + 'bool': 1, 'byte': 1, 'complex64': 1, 'complex128': 1, 'float32': 1, + 'float64': 1, 'int8': 1, 'int16': 1, 'int32': 1, 'int64': 1, 'string': 1, + 'uint8': 1, 'uint16': 1, 'uint32': 1, 'uint64': 1, 'int': 1, 'uint': 1, + 'uintptr': 1, 'rune': 1 + }, + 'built_in': { + 'append': 1, 'cap': 1, 'close': 1, 'complex': 1, 'copy': 1, 'imag': 1, + 'len': 1, 'make': 1, 'new': 1, 'panic': 1, 'print': 1, 'println': 1, + 'real': 1, 'recover': 1, 'delete': 1 + } + }; + return { + defaultMode: { + keywords: GO_KEYWORDS, + illegal: ' +*/ + +hljs.LANGUAGES.haskell = function(){ + var LABEL = { + className: 'label', + begin: '\\b[A-Z][\\w\']*', + relevance: 0 + }; + var CONTAINER = { + className: 'container', + begin: '\\(', end: '\\)', + contains: [ + {className: 'label', begin: '\\b[A-Z][\\w\\(\\)\\.\']*'}, + {className: 'title', begin: '[_a-z][\\w\']*'} + ] + }; + + return { + defaultMode: { + keywords: { + 'keyword': { + 'let': 1, 'in': 1, 'if': 1, 'then': 1, 'else': 1, 'case': 1, 'of': 1, + 'where': 1, 'do': 1, 'module': 1, 'import': 1, 'hiding': 1, + 'qualified': 1, 'type': 1, 'data': 1, 'newtype': 1, 'deriving': 1, + 'class': 1, 'instance': 1, 'null': 1, 'not': 1, 'as': 1 + } + }, + contains: [ + { + className: 'comment', + begin: '--', end: '$' + }, + { + className: 'comment', + begin: '{-', end: '-}' + }, + { + className: 'string', + begin: '\\s+\'', end: '\'', + contains: [hljs.BACKSLASH_ESCAPE], + relevance: 0 + }, + hljs.QUOTE_STRING_MODE, + { + className: 'import', + begin: '\\bimport', end: '$', + keywords: {'import': 1, 'qualified': 1, 'as': 1, 'hiding': 1}, + contains: [CONTAINER] + }, + { + className: 'module', + begin: '\\bmodule', end: 'where', + keywords: {'module': 1, 'where': 1}, + contains: [CONTAINER] + }, + { + className: 'class', + begin: '\\b(class|instance|data|(new)?type)', end: '(where|$)', + keywords: {'class': 1, 'where': 1, 'instance': 1,'data': 1,'type': 1,'newtype': 1, 'deriving': 1}, + contains: [LABEL] + }, + hljs.C_NUMBER_MODE, + { + className: 'shebang', + begin: '#!\\/usr\\/bin\\/env\ runhaskell', end: '$' + }, + LABEL, + { + className: 'title', begin: '^[_a-z][\\w\']*' + } + ] + } + }; +}(); diff --git a/output/Scratch/js/highlight/languages/ini.js b/output/Scratch/js/highlight/languages/ini.js new file mode 100644 index 000000000..b68251f1f --- /dev/null +++ b/output/Scratch/js/highlight/languages/ini.js @@ -0,0 +1,32 @@ +/* +Language: Ini +*/ + +hljs.LANGUAGES.ini = { + case_insensitive: true, + defaultMode: { + illegal: '[^\\s]', + contains: [ + { + className: 'comment', + begin: ';', end: '$' + }, + { + className: 'title', + begin: '^\\[', end: '\\]' + }, + { + className: 'setting', + begin: '^[a-z0-9_\\[\\]]+[ \\t]*=[ \\t]*', end: '$', + contains: [ + { + className: 'value', + endsWithParent: true, + keywords: {'on': 1, 'off': 1, 'true': 1, 'false': 1, 'yes': 1, 'no': 1}, + contains: [hljs.QUOTE_STRING_MODE, hljs.NUMBER_MODE] + } + ] + } + ] + } +}; diff --git a/output/Scratch/js/highlight/languages/java.js b/output/Scratch/js/highlight/languages/java.js new file mode 100644 index 000000000..0bc745ef7 --- /dev/null +++ b/output/Scratch/js/highlight/languages/java.js @@ -0,0 +1,53 @@ +/* +Language: Java +Author: Vsevolod Solovyov +*/ + +hljs.LANGUAGES.java = { + defaultMode: { + keywords: { + 'false': 1, 'synchronized': 1, 'int': 1, 'abstract': 1, 'float': 1, 'private': 1, 'char': 1, 'interface': 1, + 'boolean': 1, 'static': 1, 'null': 1, 'if': 1, 'const': 1, 'for': 1, 'true': 1, 'while': 1, 'long': 1, + 'throw': 1, 'strictfp': 1, 'finally': 1, 'protected': 1, 'extends': 1, 'import': 1, 'native': 1, 'final': 1, + 'implements': 1, 'return': 1, 'void': 1, 'enum': 1, 'else': 1, 'break': 1, 'transient': 1, 'new': 1, 'catch': 1, + 'instanceof': 1, 'byte': 1, 'super': 1, 'class': 1, 'volatile': 1, 'case': 1, 'assert': 1, 'short': 1, + 'package': 1, 'default': 1, 'double': 1, 'public': 1, 'try': 1, 'this': 1, 'switch': 1, 'continue': 1, + 'throws': 1 + }, + contains: [ + { + className: 'javadoc', + begin: '/\\*\\*', end: '\\*/', + contains: [{ + className: 'javadoctag', begin: '@[A-Za-z]+' + }], + relevance: 10 + }, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + { + className: 'class', + begin: '(class |interface )', end: '{', + keywords: {'class': 1, 'interface': 1}, + illegal: ':', + contains: [ + { + begin: '(implements|extends)', + keywords: {'extends': 1, 'implements': 1}, + relevance: 10 + }, + { + className: 'title', + begin: hljs.UNDERSCORE_IDENT_RE + } + ] + }, + hljs.C_NUMBER_MODE, + { + className: 'annotation', begin: '@[A-Za-z]+' + } + ] + } +}; diff --git a/output/Scratch/js/highlight/languages/javascript.js b/output/Scratch/js/highlight/languages/javascript.js new file mode 100644 index 000000000..4f63cd556 --- /dev/null +++ b/output/Scratch/js/highlight/languages/javascript.js @@ -0,0 +1,57 @@ +/* +Language: JavaScript +*/ + +hljs.LANGUAGES.javascript = { + defaultMode: { + keywords: { + 'keyword': { + 'in': 1, 'if': 1, 'for': 1, 'while': 1, 'finally': 1, 'var': 1, 'new': 1, 'function': 1, 'do': 1, + 'return': 1, 'void': 1, 'else': 1, 'break': 1, 'catch': 1, 'instanceof': 1, 'with': 1, 'throw': 1, + 'case': 1, 'default': 1, 'try': 1, 'this': 1, 'switch': 1, 'continue': 1, 'typeof': 1, 'delete': 1 + }, + 'literal': {'true': 1, 'false': 1, 'null': 1} + }, + contains: [ + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + hljs.C_NUMBER_MODE, + { // regexp container + begin: '(' + hljs.RE_STARTERS_RE + '|case|return|throw)\\s*', + keywords: {'return': 1, 'throw': 1, 'case': 1}, + contains: [ + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + { + className: 'regexp', + begin: '/', end: '/[gim]*', + contains: [{begin: '\\\\/'}] + } + ], + relevance: 0 + }, + { + className: 'function', + begin: '\\bfunction\\b', end: '{', + keywords: {'function': 1}, + contains: [ + { + className: 'title', begin: '[A-Za-z$_][0-9A-Za-z$_]*' + }, + { + className: 'params', + begin: '\\(', end: '\\)', + contains: [ + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE + ] + } + ] + } + ] + } +}; diff --git a/output/Scratch/js/highlight/languages/lisp.js b/output/Scratch/js/highlight/languages/lisp.js new file mode 100644 index 000000000..e49e4756a --- /dev/null +++ b/output/Scratch/js/highlight/languages/lisp.js @@ -0,0 +1,88 @@ +/* +Language: Lisp +Description: Generic lisp syntax +Author: Vasily Polovnyov +*/ + +hljs.LANGUAGES.lisp = function(){ + var LISP_IDENT_RE = '[a-zA-Z_\\-\\+\\*\\/\\<\\=\\>\\&\\#][a-zA-Z0-9_\\-\\+\\*\\/\\<\\=\\>\\&\\#]*'; + var LISP_SIMPLE_NUMBER_RE = '(\\-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s)(\\+|\\-)?\\d+)?'; + var LITERAL = { + className: 'literal', + begin: '\\b(t{1}|nil)\\b' + }; + var NUMBERS = [ + { + className: 'number', begin: LISP_SIMPLE_NUMBER_RE + }, + { + className: 'number', begin: '#b[0-1]+(/[0-1]+)?' + }, + { + className: 'number', begin: '#o[0-7]+(/[0-7]+)?' + }, + { + className: 'number', begin: '#x[0-9a-f]+(/[0-9a-f]+)?' + }, + { + className: 'number', begin: '#c\\(' + LISP_SIMPLE_NUMBER_RE + ' +' + LISP_SIMPLE_NUMBER_RE, end: '\\)' + } + ] + var STRING = { + className: 'string', + begin: '"', end: '"', + contains: [hljs.BACKSLASH_ESCAPE], + relevance: 0 + }; + var COMMENT = { + className: 'comment', + begin: ';', end: '$' + }; + var VARIABLE = { + className: 'variable', + begin: '\\*', end: '\\*' + }; + var KEYWORD = { + className: 'keyword', + begin: '[:&]' + LISP_IDENT_RE + }; + var QUOTED_LIST = { + begin: '\\(', end: '\\)', + contains: ['self', LITERAL, STRING].concat(NUMBERS) + }; + var QUOTED1 = { + className: 'quoted', + begin: '[\'`]\\(', end: '\\)', + contains: NUMBERS.concat([STRING, VARIABLE, KEYWORD, QUOTED_LIST]) + }; + var QUOTED2 = { + className: 'quoted', + begin: '\\(quote ', end: '\\)', + keywords: {'title': {'quote': 1}}, + contains: NUMBERS.concat([STRING, VARIABLE, KEYWORD, QUOTED_LIST]) + }; + var LIST = { + className: 'list', + begin: '\\(', end: '\\)' + }; + var BODY = { + className: 'body', + endsWithParent: true, excludeEnd: true + }; + LIST.contains = [{className: 'title', begin: LISP_IDENT_RE}, BODY]; + BODY.contains = [QUOTED1, QUOTED2, LIST, LITERAL].concat(NUMBERS).concat([STRING, COMMENT, VARIABLE, KEYWORD]); + + return { + case_insensitive: true, + defaultMode: { + illegal: '[^\\s]', + contains: NUMBERS.concat([ + LITERAL, + STRING, + COMMENT, + QUOTED1, QUOTED2, + LIST + ]) + } + }; +}(); diff --git a/output/Scratch/js/highlight/languages/lua.js b/output/Scratch/js/highlight/languages/lua.js new file mode 100644 index 000000000..827504f4d --- /dev/null +++ b/output/Scratch/js/highlight/languages/lua.js @@ -0,0 +1,75 @@ +/* +Language: Lua +Author: Andrew Fedorov +*/ + +hljs.LANGUAGES.lua = function() { + var OPENING_LONG_BRACKET = '\\[=*\\['; + var CLOSING_LONG_BRACKET = '\\]=*\\]'; + var LONG_BRACKETS = { + begin: OPENING_LONG_BRACKET, end: CLOSING_LONG_BRACKET, + contains: ['self'] + }; + var COMMENTS = [ + { + className: 'comment', + begin: '--(?!' + OPENING_LONG_BRACKET + ')', end: '$' + }, + { + className: 'comment', + begin: '--' + OPENING_LONG_BRACKET, end: CLOSING_LONG_BRACKET, + contains: [LONG_BRACKETS], + relevance: 10 + } + ] + return { + defaultMode: { + lexems: hljs.UNDERSCORE_IDENT_RE, + keywords: { + 'keyword': { + 'and': 1, 'break': 1, 'do': 1, 'else': 1, 'elseif': 1, 'end': 1, + 'false': 1, 'for': 1, 'if': 1, 'in': 1, 'local': 1, 'nil': 1, + 'not': 1, 'or': 1, 'repeat': 1, 'return': 1, 'then': 1, 'true': 1, + 'until': 1, 'while': 1 + }, + 'built_in': { + '_G': 1, '_VERSION': 1, 'assert': 1, 'collectgarbage': 1, 'dofile': 1, + 'error': 1, 'getfenv': 1, 'getmetatable': 1, 'ipairs': 1, 'load': 1, + 'loadfile': 1, 'loadstring': 1, 'module': 1, 'next': 1, 'pairs': 1, + 'pcall': 1, 'print': 1, 'rawequal': 1, 'rawget': 1, 'rawset': 1, + 'require': 1, 'select': 1, 'setfenv': 1, 'setmetatable': 1, + 'tonumber': 1, 'tostring': 1, 'type': 1, 'unpack': 1, 'xpcall': 1, + 'coroutine': 1, 'debug': 1, 'io': 1, 'math': 1, 'os': 1, 'package': 1, + 'string': 1, 'table': 1 + } + }, + contains: COMMENTS.concat([ + { + className: 'function', + begin: '\\bfunction\\b', end: '\\)', + keywords: {'function': 1}, + contains: [ + { + className: 'title', + begin: '([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*' + }, + { + className: 'params', + begin: '\\(', endsWithParent: true, + contains: COMMENTS + } + ].concat(COMMENTS) + }, + hljs.C_NUMBER_MODE, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + { + className: 'string', + begin: OPENING_LONG_BRACKET, end: CLOSING_LONG_BRACKET, + contains: [LONG_BRACKETS], + relevance: 10 + } + ]) + } + }; +}(); diff --git a/output/Scratch/js/highlight/languages/markdown.js b/output/Scratch/js/highlight/languages/markdown.js new file mode 100644 index 000000000..06b3181dc --- /dev/null +++ b/output/Scratch/js/highlight/languages/markdown.js @@ -0,0 +1,79 @@ +/* +Language: Markdown +Requires: xml.js +Author: John Crepezzi +Website: http://seejohncode.com/ +*/ + +hljs.LANGUAGES.markdown = { + case_insensitive: true, + defaultMode: { + contains: [ + // highlight headers + { + className: 'header', + begin: '^#{1,3}', end: '$' + }, + { + className: 'header', + begin: '^.+?\\n[=-]{2,}$' + }, + // inline html + { + begin: '<', end: '>', + subLanguage: 'xml' + }, + // lists (indicators only) + { + className: 'bullet', + begin: '^([*+-]|(\\d+\\.))\\s+' + }, + // strong segments + { + className: 'strong', + begin: '[*_]{2}.+?[*_]{2}' + }, + // emphasis segments + { + className: 'emphasis', + begin: '[*_].+?[*_]' + }, + // blockquotes + { + className: 'blockquote', + begin: '^>\\s+', end: '$' + }, + // code snippets + { + className: 'code', + begin: '`.+?`' + }, + { + className: 'code', + begin: '^ ', end: '$', + relevance: 0 + }, + // horizontal rules + { + className: 'horizontal_rule', + begin: '^-{3,}', end: '$' + }, + // using links - title and link + { + begin: '\\[.+?\\]\\(.+?\\)', + returnBegin: true, + contains: [ + { + className: 'link_label', + begin: '\\[.+\\]' + }, + { + className: 'link_url', + begin: '\\(', end: '\\)', + excludeBegin: true, excludeEnd: true + } + ] + } + ] + } +}; diff --git a/output/Scratch/js/highlight/languages/matlab.js b/output/Scratch/js/highlight/languages/matlab.js new file mode 100644 index 000000000..d162f5acb --- /dev/null +++ b/output/Scratch/js/highlight/languages/matlab.js @@ -0,0 +1,74 @@ +/* +Language: Matlab +Author: Denis Bardadym +*/ + +hljs.LANGUAGES.matlab = { + defaultMode: { + keywords: { + 'keyword': { + 'break': 1, 'case': 1,'catch': 1,'classdef': 1,'continue': 1,'else': 1,'elseif': 1,'end': 1,'enumerated': 1, + 'events': 1,'for': 1,'function': 1,'global': 1,'if': 1,'methods': 1,'otherwise': 1,'parfor': 1, + 'persistent': 1,'properties': 1,'return': 1,'spmd': 1,'switch': 1,'try': 1,'while': 1 + }, + 'built_in': { + 'sin': 1,'sind': 1,'sinh': 1,'asin': 1,'asind': 1,'asinh': 1,'cos': 1,'cosd': 1,'cosh': 1, + 'acos': 1,'acosd': 1,'acosh': 1,'tan': 1,'tand': 1,'tanh': 1,'atan': 1,'atand': 1,'atan2': 1, + 'atanh': 1,'sec': 1,'secd': 1,'sech': 1,'asec': 1,'asecd': 1,'asech': 1,'csc': 1,'cscd': 1, + 'csch': 1,'acsc': 1,'acscd': 1,'acsch': 1,'cot': 1,'cotd': 1,'coth': 1,'acot': 1,'acotd': 1, + 'acoth': 1,'hypot': 1,'exp': 1,'expm1': 1,'log': 1,'log1p': 1,'log10': 1,'log2': 1,'pow2': 1, + 'realpow': 1,'reallog': 1,'realsqrt': 1,'sqrt': 1,'nthroot': 1,'nextpow2': 1,'abs': 1, + 'angle': 1,'complex': 1,'conj': 1,'imag': 1,'real': 1,'unwrap': 1,'isreal': 1,'cplxpair': 1, + 'fix': 1,'floor': 1,'ceil': 1,'round': 1,'mod': 1,'rem': 1,'sign': 1, + 'airy': 1,'besselj': 1,'bessely': 1,'besselh': 1,'besseli': 1,'besselk': 1,'beta': 1, + 'betainc': 1,'betaln': 1,'ellipj': 1,'ellipke': 1,'erf': 1,'erfc': 1,'erfcx': 1, + 'erfinv': 1,'expint': 1,'gamma': 1,'gammainc': 1,'gammaln': 1,'psi': 1,'legendre': 1, + 'cross': 1,'dot': 1,'factor': 1,'isprime': 1,'primes': 1,'gcd': 1,'lcm': 1,'rat': 1, + 'rats': 1,'perms': 1,'nchoosek': 1,'factorial': 1,'cart2sph': 1,'cart2pol': 1, + 'pol2cart': 1,'sph2cart': 1,'hsv2rgb': 1,'rgb2hsv': 1, + 'zeros': 1,'ones': 1,'eye': 1,'repmat': 1,'rand': 1,'randn': 1,'linspace': 1,'logspace': 1, + 'freqspace': 1,'meshgrid': 1,'accumarray': 1,'size': 1,'length': 1,'ndims': 1,'numel': 1, + 'disp': 1,'isempty': 1,'isequal': 1,'isequalwithequalnans': 1,'cat': 1,'reshape': 1, + 'diag': 1,'blkdiag': 1,'tril': 1,'triu': 1,'fliplr': 1,'flipud': 1,'flipdim': 1,'rot90': 1, + 'find': 1,'end': 1,'sub2ind': 1,'ind2sub': 1,'bsxfun': 1,'ndgrid': 1,'permute': 1, + 'ipermute': 1,'shiftdim': 1,'circshift': 1,'squeeze': 1,'isscalar': 1,'isvector': 1, + 'ans': 1,'eps': 1,'realmax': 1,'realmin': 1,'pi': 1,'i': 1,'inf': 1,'nan': 1,'isnan': 1, + 'isinf': 1,'isfinite': 1,'j': 1,'why': 1,'compan': 1,'gallery': 1,'hadamard': 1,'hankel': 1, + 'hilb': 1,'invhilb': 1,'magic': 1,'pascal': 1,'rosser': 1,'toeplitz': 1,'vander': 1, + 'wilkinson': 1 + }, + }, + illegal: '(//|"|#|/\\*|\\s+/\\w+)', + contains: [ + { + className: 'function', + begin: 'function', end: '$', + keywords: {'function': 1}, + contains: [ + { + className: 'title', + begin: hljs.UNDERSCORE_IDENT_RE + }, + { + className: 'params', + begin: '\\(', end: '\\)' + }, + { + className: 'params', + begin: '\\[', end: '\\]' + } + ] + }, + { + className: 'string', + begin: '\'', end: '\'', + contains: [hljs.BACKSLASH_ESCAPE, {begin: '\'\''}] + }, + { + className: 'comment', + begin: '\\%', end: '$' + }, + hljs.C_NUMBER_MODE + ] + } +}; diff --git a/output/Scratch/js/highlight/languages/mel.js b/output/Scratch/js/highlight/languages/mel.js new file mode 100644 index 000000000..32a5a33a3 --- /dev/null +++ b/output/Scratch/js/highlight/languages/mel.js @@ -0,0 +1,45 @@ +/* +Language: MEL +Description: Maya Embedded Language +Author: Shuen-Huei Guan +*/ + +hljs.LANGUAGES.mel = { + defaultMode: { + keywords: { + 'int': 1, 'float': 1, 'string': 1, 'vector': 1, 'matrix': 1, + 'if': 1, 'else': 1, 'switch': 1, 'case': 1, 'default': 1, 'while': 1, 'do': 1, 'for': 1, 'in': 1, 'break': 1, 'continue': 1, + 'global': 1, 'proc': 1, 'return': 1, + 'about': 1, 'abs': 1, 'addAttr': 1, 'addAttributeEditorNodeHelp': 1, 'addDynamic': 1, 'addNewShelfTab': 1, + 'addPP': 1, 'addPanelCategory': 1, 'addPrefixToName': 1, 'advanceToNextDrivenKey': 1, 'affectedNet': 1, 'affects': 1, + 'aimConstraint': 1, 'air': 1, 'alias': 1, 'aliasAttr': 1, 'align': 1, 'alignCtx': 1, 'alignCurve': 1, 'alignSurface': 1, + 'allViewFit': 1, 'ambientLight': 1, 'angle': 1, 'angleBetween': 1, 'animCone': 1, 'animCurveEditor': 1, 'animDisplay': 1, + 'animView': 1, 'annotate': 1, 'appendStringArray': 1, 'applicationName': 1, 'applyAttrPreset': 1, 'applyTake': 1, 'arcLenDimContext': 1, + 'arcLengthDimension': 1, 'arclen': 1, 'arrayMapper': 1, 'art3dPaintCtx': 1, 'artAttrCtx': 1, 'artAttrPaintVertexCtx': 1, 'artAttrSkinPaintCtx': 1, + 'artAttrTool': 1, 'artBuildPaintMenu': 1, 'artFluidAttrCtx': 1, 'artPuttyCtx': 1, 'artSelectCtx': 1, 'artSetPaintCtx': 1, 'artUserPaintCtx': 1, + 'assignCommand': 1, 'assignInputDevice': 1, 'assignViewportFactories': 1, 'attachCurve': 1, 'attachDeviceAttr': 1, 'attachSurface': 1, 'attrColorSliderGrp': 1, 'attrCompatibility': 1, 'attrControlGrp': 1, 'attrEnumOptionMenu': 1, 'attrEnumOptionMenuGrp': 1, 'attrFieldGrp': 1, 'attrFieldSliderGrp': 1, 'attrNavigationControlGrp': 1, 'attrPresetEditWin': 1, 'attributeExists': 1, 'attributeInfo': 1, 'attributeMenu': 1, 'attributeQuery': 1, 'autoKeyframe': 1, 'autoPlace': 1, 'bakeClip': 1, 'bakeFluidShading': 1, 'bakePartialHistory': 1, 'bakeResults': 1, 'bakeSimulation': 1, 'basename': 1, 'basenameEx': 1, 'batchRender': 1, 'bessel': 1, 'bevel': 1, 'bevelPlus': 1, 'binMembership': 1, 'bindSkin': 1, 'blend2': 1, 'blendShape': 1, 'blendShapeEditor': 1, 'blendShapePanel': 1, 'blendTwoAttr': 1, 'blindDataType': 1, 'boneLattice': 1, 'boundary': 1, 'boxDollyCtx': 1, 'boxZoomCtx': 1, 'bufferCurve': 1, 'buildBookmarkMenu': 1, 'buildKeyframeMenu': 1, 'button': 1, 'buttonManip': 1, 'CBG': 1, 'cacheFile': 1, 'cacheFileCombine': 1, 'cacheFileMerge': 1, 'cacheFileTrack': 1, 'camera': 1, 'cameraView': 1, 'canCreateManip': 1, 'canvas': 1, 'capitalizeString': 1, 'catch': 1, 'catchQuiet': 1, 'ceil': 1, 'changeSubdivComponentDisplayLevel': 1, 'changeSubdivRegion': 1, 'channelBox': 1, 'character': 1, 'characterMap': 1, 'characterOutlineEditor': 1, 'characterize': 1, 'chdir': 1, 'checkBox': 1, 'checkBoxGrp': 1, 'checkDefaultRenderGlobals': 1, 'choice': 1, 'circle': 1, 'circularFillet': 1, 'clamp': 1, 'clear': 1, 'clearCache': 1, 'clip': 1, 'clipEditor': 1, 'clipEditorCurrentTimeCtx': 1, 'clipSchedule': 1, 'clipSchedulerOutliner': 1, 'clipTrimBefore': 1, 'closeCurve': 1, 'closeSurface': 1, 'cluster': 1, 'cmdFileOutput': 1, 'cmdScrollFieldExecuter': 1, 'cmdScrollFieldReporter': 1, 'cmdShell': 1, 'coarsenSubdivSelectionList': 1, 'collision': 1, 'color': 1, 'colorAtPoint': 1, 'colorEditor': 1, 'colorIndex': 1, 'colorIndexSliderGrp': 1, 'colorSliderButtonGrp': 1, 'colorSliderGrp': 1, 'columnLayout': 1, 'commandEcho': 1, 'commandLine': 1, 'commandPort': 1, 'compactHairSystem': 1, 'componentEditor': 1, 'compositingInterop': 1, 'computePolysetVolume': 1, 'condition': 1, 'cone': 1, 'confirmDialog': 1, 'connectAttr': 1, 'connectControl': 1, 'connectDynamic': 1, 'connectJoint': 1, 'connectionInfo': 1, 'constrain': 1, 'constrainValue': 1, 'constructionHistory': 1, 'container': 1, 'containsMultibyte': 1, 'contextInfo': 1, 'control': 1, 'convertFromOldLayers': 1, 'convertIffToPsd': 1, 'convertLightmap': 1, 'convertSolidTx': 1, 'convertTessellation': 1, 'convertUnit': 1, 'copyArray': 1, 'copyFlexor': 1, 'copyKey': 1, 'copySkinWeights': 1, 'cos': 1, 'cpButton': 1, 'cpCache': 1, 'cpClothSet': 1, 'cpCollision': 1, 'cpConstraint': 1, 'cpConvClothToMesh': 1, 'cpForces': 1, 'cpGetSolverAttr': 1, 'cpPanel': 1, 'cpProperty': 1, 'cpRigidCollisionFilter': 1, 'cpSeam': 1, 'cpSetEdit': 1, 'cpSetSolverAttr': 1, 'cpSolver': 1, 'cpSolverTypes': 1, 'cpTool': 1, 'cpUpdateClothUVs': 1, 'createDisplayLayer': 1, 'createDrawCtx': 1, 'createEditor': 1, 'createLayeredPsdFile': 1, 'createMotionField': 1, 'createNewShelf': 1, 'createNode': 1, 'createRenderLayer': 1, 'createSubdivRegion': 1, 'cross': 1, 'crossProduct': 1, 'ctxAbort': 1, 'ctxCompletion': 1, 'ctxEditMode': 1, 'ctxTraverse': 1, 'currentCtx': 1, 'currentTime': 1, 'currentTimeCtx': 1, 'currentUnit': 1, 'currentUnit': 1, 'curve': 1, 'curveAddPtCtx': 1, 'curveCVCtx': 1, 'curveEPCtx': 1, 'curveEditorCtx': 1, 'curveIntersect': 1, 'curveMoveEPCtx': 1, 'curveOnSurface': 1, 'curveSketchCtx': 1, 'cutKey': 1, 'cycleCheck': 1, 'cylinder': 1, 'dagPose': 1, 'date': 1, 'defaultLightListCheckBox': 1, 'defaultNavigation': 1, 'defineDataServer': 1, 'defineVirtualDevice': 1, 'deformer': 1, 'deg_to_rad': 1, 'delete': 1, 'deleteAttr': 1, 'deleteShadingGroupsAndMaterials': 1, 'deleteShelfTab': 1, 'deleteUI': 1, 'deleteUnusedBrushes': 1, 'delrandstr': 1, 'detachCurve': 1, 'detachDeviceAttr': 1, 'detachSurface': 1, 'deviceEditor': 1, 'devicePanel': 1, 'dgInfo': 1, 'dgdirty': 1, 'dgeval': 1, 'dgtimer': 1, 'dimWhen': 1, 'directKeyCtx': 1, 'directionalLight': 1, 'dirmap': 1, 'dirname': 1, 'disable': 1, 'disconnectAttr': 1, 'disconnectJoint': 1, 'diskCache': 1, 'displacementToPoly': 1, 'displayAffected': 1, 'displayColor': 1, 'displayCull': 1, 'displayLevelOfDetail': 1, 'displayPref': 1, 'displayRGBColor': 1, 'displaySmoothness': 1, 'displayStats': 1, 'displayString': 1, 'displaySurface': 1, 'distanceDimContext': 1, 'distanceDimension': 1, 'doBlur': 1, 'dolly': 1, 'dollyCtx': 1, 'dopeSheetEditor': 1, 'dot': 1, 'dotProduct': 1, 'doubleProfileBirailSurface': 1, 'drag': 1, 'dragAttrContext': 1, 'draggerContext': 1, 'dropoffLocator': 1, 'duplicate': 1, 'duplicateCurve': 1, 'duplicateSurface': 1, 'dynCache': 1, 'dynControl': 1, 'dynExport': 1, 'dynExpression': 1, 'dynGlobals': 1, 'dynPaintEditor': 1, 'dynParticleCtx': 1, 'dynPref': 1, 'dynRelEdPanel': 1, 'dynRelEditor': 1, 'dynamicLoad': 1, 'editAttrLimits': 1, 'editDisplayLayerGlobals': 1, 'editDisplayLayerMembers': 1, 'editRenderLayerAdjustment': 1, 'editRenderLayerGlobals': 1, 'editRenderLayerMembers': 1, 'editor': 1, 'editorTemplate': 1, 'effector': 1, 'emit': 1, 'emitter': 1, 'enableDevice': 1, 'encodeString': 1, 'endString': 1, 'endsWith': 1, 'env': 1, 'equivalent': 1, 'equivalentTol': 1, 'erf': 1, 'error': 1, 'eval': 1, 'eval': 1, 'evalDeferred': 1, 'evalEcho': 1, 'event': 1, 'exactWorldBoundingBox': 1, 'exclusiveLightCheckBox': 1, 'exec': 1, 'executeForEachObject': 1, 'exists': 1, 'exp': 1, 'expression': 1, 'expressionEditorListen': 1, 'extendCurve': 1, 'extendSurface': 1, 'extrude': 1, 'fcheck': 1, 'fclose': 1, 'feof': 1, 'fflush': 1, 'fgetline': 1, 'fgetword': 1, 'file': 1, 'fileBrowserDialog': 1, 'fileDialog': 1, 'fileExtension': 1, 'fileInfo': 1, 'filetest': 1, 'filletCurve': 1, 'filter': 1, 'filterCurve': 1, 'filterExpand': 1, 'filterStudioImport': 1, 'findAllIntersections': 1, 'findAnimCurves': 1, 'findKeyframe': 1, 'findMenuItem': 1, 'findRelatedSkinCluster': 1, 'finder': 1, 'firstParentOf': 1, 'fitBspline': 1, 'flexor': 1, 'floatEq': 1, 'floatField': 1, 'floatFieldGrp': 1, 'floatScrollBar': 1, 'floatSlider': 1, 'floatSlider2': 1, 'floatSliderButtonGrp': 1, 'floatSliderGrp': 1, 'floor': 1, 'flow': 1, 'fluidCacheInfo': 1, 'fluidEmitter': 1, 'fluidVoxelInfo': 1, 'flushUndo': 1, 'fmod': 1, 'fontDialog': 1, 'fopen': 1, 'formLayout': 1, 'format': 1, 'fprint': 1, 'frameLayout': 1, 'fread': 1, 'freeFormFillet': 1, 'frewind': 1, 'fromNativePath': 1, 'fwrite': 1, 'gamma': 1, 'gauss': 1, 'geometryConstraint': 1, 'getApplicationVersionAsFloat': 1, 'getAttr': 1, 'getClassification': 1, 'getDefaultBrush': 1, 'getFileList': 1, 'getFluidAttr': 1, 'getInputDeviceRange': 1, 'getMayaPanelTypes': 1, 'getModifiers': 1, 'getPanel': 1, 'getParticleAttr': 1, 'getPluginResource': 1, 'getenv': 1, 'getpid': 1, 'glRender': 1, 'glRenderEditor': 1, 'globalStitch': 1, 'gmatch': 1, 'goal': 1, 'gotoBindPose': 1, 'grabColor': 1, 'gradientControl': 1, 'gradientControlNoAttr': 1, 'graphDollyCtx': 1, 'graphSelectContext': 1, 'graphTrackCtx': 1, 'gravity': 1, 'grid': 1, 'gridLayout': 1, 'group': 1, 'groupObjectsByName': 1, 'HfAddAttractorToAS': 1, 'HfAssignAS': 1, 'HfBuildEqualMap': 1, 'HfBuildFurFiles': 1, 'HfBuildFurImages': 1, 'HfCancelAFR': 1, 'HfConnectASToHF': 1, 'HfCreateAttractor': 1, 'HfDeleteAS': 1, 'HfEditAS': 1, 'HfPerformCreateAS': 1, 'HfRemoveAttractorFromAS': 1, 'HfSelectAttached': 1, 'HfSelectAttractors': 1, 'HfUnAssignAS': 1, 'hardenPointCurve': 1, 'hardware': 1, 'hardwareRenderPanel': 1, 'headsUpDisplay': 1, 'headsUpMessage': 1, 'help': 1, 'helpLine': 1, 'hermite': 1, 'hide': 1, 'hilite': 1, 'hitTest': 1, 'hotBox': 1, 'hotkey': 1, 'hotkeyCheck': 1, 'hsv_to_rgb': 1, 'hudButton': 1, 'hudSlider': 1, 'hudSliderButton': 1, 'hwReflectionMap': 1, 'hwRender': 1, 'hwRenderLoad': 1, 'hyperGraph': 1, 'hyperPanel': 1, 'hyperShade': 1, 'hypot': 1, 'iconTextButton': 1, 'iconTextCheckBox': 1, 'iconTextRadioButton': 1, 'iconTextRadioCollection': 1, 'iconTextScrollList': 1, 'iconTextStaticLabel': 1, 'ikHandle': 1, 'ikHandleCtx': 1, 'ikHandleDisplayScale': 1, 'ikSolver': 1, 'ikSplineHandleCtx': 1, 'ikSystem': 1, 'ikSystemInfo': 1, 'ikfkDisplayMethod': 1, 'illustratorCurves': 1, 'image': 1, 'imfPlugins': 1, 'inheritTransform': 1, 'insertJoint': 1, 'insertJointCtx': 1, 'insertKeyCtx': 1, 'insertKnotCurve': 1, 'insertKnotSurface': 1, 'instance': 1, 'instanceable': 1, 'instancer': 1, 'intField': 1, 'intFieldGrp': 1, 'intScrollBar': 1, 'intSlider': 1, 'intSliderGrp': 1, 'interToUI': 1, 'internalVar': 1, 'intersect': 1, 'iprEngine': 1, 'isAnimCurve': 1, 'isConnected': 1, 'isDirty': 1, 'isParentOf': 1, 'isSameObject': 1, 'isTrue': 1, 'isValidObjectName': 1, 'isValidString': 1, 'isValidUiName': 1, 'isolateSelect': 1, 'itemFilter': 1, 'itemFilterAttr': 1, 'itemFilterRender': 1, 'itemFilterType': 1, 'joint': 1, 'jointCluster': 1, 'jointCtx': 1, 'jointDisplayScale': 1, 'jointLattice': 1, 'keyTangent': 1, 'keyframe': 1, 'keyframeOutliner': 1, 'keyframeRegionCurrentTimeCtx': 1, 'keyframeRegionDirectKeyCtx': 1, 'keyframeRegionDollyCtx': 1, 'keyframeRegionInsertKeyCtx': 1, 'keyframeRegionMoveKeyCtx': 1, 'keyframeRegionScaleKeyCtx': 1, 'keyframeRegionSelectKeyCtx': 1, 'keyframeRegionSetKeyCtx': 1, 'keyframeRegionTrackCtx': 1, 'keyframeStats': 1, 'lassoContext': 1, 'lattice': 1, 'latticeDeformKeyCtx': 1, 'launch': 1, 'launchImageEditor': 1, 'layerButton': 1, 'layeredShaderPort': 1, 'layeredTexturePort': 1, 'layout': 1, 'layoutDialog': 1, 'lightList': 1, 'lightListEditor': 1, 'lightListPanel': 1, 'lightlink': 1, 'lineIntersection': 1, 'linearPrecision': 1, 'linstep': 1, 'listAnimatable': 1, 'listAttr': 1, 'listCameras': 1, 'listConnections': 1, 'listDeviceAttachments': 1, 'listHistory': 1, 'listInputDeviceAxes': 1, 'listInputDeviceButtons': 1, 'listInputDevices': 1, 'listMenuAnnotation': 1, 'listNodeTypes': 1, 'listPanelCategories': 1, 'listRelatives': 1, 'listSets': 1, 'listTransforms': 1, 'listUnselected': 1, 'listerEditor': 1, 'loadFluid': 1, 'loadNewShelf': 1, 'loadPlugin': 1, 'loadPluginLanguageResources': 1, 'loadPrefObjects': 1, 'localizedPanelLabel': 1, 'lockNode': 1, 'loft': 1, 'log': 1, 'longNameOf': 1, 'lookThru': 1, 'ls': 1, 'lsThroughFilter': 1, 'lsType': 1, 'lsUI': 1, 'Mayatomr': 1, 'mag': 1, 'makeIdentity': 1, 'makeLive': 1, 'makePaintable': 1, 'makeRoll': 1, 'makeSingleSurface': 1, 'makeTubeOn': 1, 'makebot': 1, 'manipMoveContext': 1, 'manipMoveLimitsCtx': 1, 'manipOptions': 1, 'manipRotateContext': 1, 'manipRotateLimitsCtx': 1, 'manipScaleContext': 1, 'manipScaleLimitsCtx': 1, 'marker': 1, 'match': 1, 'max': 1, 'memory': 1, 'menu': 1, 'menuBarLayout': 1, 'menuEditor': 1, 'menuItem': 1, 'menuItemToShelf': 1, 'menuSet': 1, 'menuSetPref': 1, 'messageLine': 1, 'min': 1, 'minimizeApp': 1, 'mirrorJoint': 1, 'modelCurrentTimeCtx': 1, 'modelEditor': 1, 'modelPanel': 1, 'mouse': 1, 'movIn': 1, 'movOut': 1, 'move': 1, 'moveIKtoFK': 1, 'moveKeyCtx': 1, 'moveVertexAlongDirection': 1, 'multiProfileBirailSurface': 1, 'mute': 1, 'nParticle': 1, 'nameCommand': 1, 'nameField': 1, 'namespace': 1, 'namespaceInfo': 1, 'newPanelItems': 1, 'newton': 1, 'nodeCast': 1, 'nodeIconButton': 1, 'nodeOutliner': 1, 'nodePreset': 1, 'nodeType': 1, 'noise': 1, 'nonLinear': 1, 'normalConstraint': 1, 'normalize': 1, 'nurbsBoolean': 1, 'nurbsCopyUVSet': 1, 'nurbsCube': 1, 'nurbsEditUV': 1, 'nurbsPlane': 1, 'nurbsSelect': 1, 'nurbsSquare': 1, 'nurbsToPoly': 1, 'nurbsToPolygonsPref': 1, 'nurbsToSubdiv': 1, 'nurbsToSubdivPref': 1, 'nurbsUVSet': 1, 'nurbsViewDirectionVector': 1, 'objExists': 1, 'objectCenter': 1, 'objectLayer': 1, 'objectType': 1, 'objectTypeUI': 1, 'obsoleteProc': 1, 'oceanNurbsPreviewPlane': 1, 'offsetCurve': 1, 'offsetCurveOnSurface': 1, 'offsetSurface': 1, 'openGLExtension': 1, 'openMayaPref': 1, 'optionMenu': 1, 'optionMenuGrp': 1, 'optionVar': 1, 'orbit': 1, 'orbitCtx': 1, 'orientConstraint': 1, 'outlinerEditor': 1, 'outlinerPanel': 1, 'overrideModifier': 1, 'paintEffectsDisplay': 1, 'pairBlend': 1, 'palettePort': 1, 'paneLayout': 1, 'panel': 1, 'panelConfiguration': 1, 'panelHistory': 1, 'paramDimContext': 1, 'paramDimension': 1, 'paramLocator': 1, 'parent': 1, 'parentConstraint': 1, 'particle': 1, 'particleExists': 1, 'particleInstancer': 1, 'particleRenderInfo': 1, 'partition': 1, 'pasteKey': 1, 'pathAnimation': 1, 'pause': 1, 'pclose': 1, 'percent': 1, 'performanceOptions': 1, 'pfxstrokes': 1, 'pickWalk': 1, 'picture': 1, 'pixelMove': 1, 'planarSrf': 1, 'plane': 1, 'play': 1, 'playbackOptions': 1, 'playblast': 1, 'plugAttr': 1, 'plugNode': 1, 'pluginInfo': 1, 'pluginResourceUtil': 1, 'pointConstraint': 1, 'pointCurveConstraint': 1, 'pointLight': 1, 'pointMatrixMult': 1, 'pointOnCurve': 1, 'pointOnSurface': 1, 'pointPosition': 1, 'poleVectorConstraint': 1, 'polyAppend': 1, 'polyAppendFacetCtx': 1, 'polyAppendVertex': 1, 'polyAutoProjection': 1, 'polyAverageNormal': 1, 'polyAverageVertex': 1, 'polyBevel': 1, 'polyBlendColor': 1, 'polyBlindData': 1, 'polyBoolOp': 1, 'polyBridgeEdge': 1, 'polyCacheMonitor': 1, 'polyCheck': 1, 'polyChipOff': 1, 'polyClipboard': 1, 'polyCloseBorder': 1, 'polyCollapseEdge': 1, 'polyCollapseFacet': 1, 'polyColorBlindData': 1, 'polyColorDel': 1, 'polyColorPerVertex': 1, 'polyColorSet': 1, 'polyCompare': 1, 'polyCone': 1, 'polyCopyUV': 1, 'polyCrease': 1, 'polyCreaseCtx': 1, 'polyCreateFacet': 1, 'polyCreateFacetCtx': 1, 'polyCube': 1, 'polyCut': 1, 'polyCutCtx': 1, 'polyCylinder': 1, 'polyCylindricalProjection': 1, 'polyDelEdge': 1, 'polyDelFacet': 1, 'polyDelVertex': 1, 'polyDuplicateAndConnect': 1, 'polyDuplicateEdge': 1, 'polyEditUV': 1, 'polyEditUVShell': 1, 'polyEvaluate': 1, 'polyExtrudeEdge': 1, 'polyExtrudeFacet': 1, 'polyExtrudeVertex': 1, 'polyFlipEdge': 1, 'polyFlipUV': 1, 'polyForceUV': 1, 'polyGeoSampler': 1, 'polyHelix': 1, 'polyInfo': 1, 'polyInstallAction': 1, 'polyLayoutUV': 1, 'polyListComponentConversion': 1, 'polyMapCut': 1, 'polyMapDel': 1, 'polyMapSew': 1, 'polyMapSewMove': 1, 'polyMergeEdge': 1, 'polyMergeEdgeCtx': 1, 'polyMergeFacet': 1, 'polyMergeFacetCtx': 1, 'polyMergeUV': 1, 'polyMergeVertex': 1, 'polyMirrorFace': 1, 'polyMoveEdge': 1, 'polyMoveFacet': 1, 'polyMoveFacetUV': 1, 'polyMoveUV': 1, 'polyMoveVertex': 1, 'polyNormal': 1, 'polyNormalPerVertex': 1, 'polyNormalizeUV': 1, 'polyOptUvs': 1, 'polyOptions': 1, 'polyOutput': 1, 'polyPipe': 1, 'polyPlanarProjection': 1, 'polyPlane': 1, 'polyPlatonicSolid': 1, 'polyPoke': 1, 'polyPrimitive': 1, 'polyPrism': 1, 'polyProjection': 1, 'polyPyramid': 1, 'polyQuad': 1, 'polyQueryBlindData': 1, 'polyReduce': 1, 'polySelect': 1, 'polySelectConstraint': 1, 'polySelectConstraintMonitor': 1, 'polySelectCtx': 1, 'polySelectEditCtx': 1, 'polySeparate': 1, 'polySetToFaceNormal': 1, 'polySewEdge': 1, 'polyShortestPathCtx': 1, 'polySmooth': 1, 'polySoftEdge': 1, 'polySphere': 1, 'polySphericalProjection': 1, 'polySplit': 1, 'polySplitCtx': 1, 'polySplitEdge': 1, 'polySplitRing': 1, 'polySplitVertex': 1, 'polyStraightenUVBorder': 1, 'polySubdivideEdge': 1, 'polySubdivideFacet': 1, 'polyToSubdiv': 1, 'polyTorus': 1, 'polyTransfer': 1, 'polyTriangulate': 1, 'polyUVSet': 1, 'polyUnite': 1, 'polyWedgeFace': 1, 'popen': 1, 'popupMenu': 1, 'pose': 1, 'pow': 1, 'preloadRefEd': 1, 'print': 1, 'progressBar': 1, 'progressWindow': 1, 'projFileViewer': 1, 'projectCurve': 1, 'projectTangent': 1, 'projectionContext': 1, 'projectionManip': 1, 'promptDialog': 1, 'propModCtx': 1, 'propMove': 1, 'psdChannelOutliner': 1, 'psdEditTextureFile': 1, 'psdExport': 1, 'psdTextureFile': 1, 'putenv': 1, 'pwd': 1, 'python': 1, 'querySubdiv': 1, 'quit': 1, 'rad_to_deg': 1, 'radial': 1, 'radioButton': 1, 'radioButtonGrp': 1, 'radioCollection': 1, 'radioMenuItemCollection': 1, 'rampColorPort': 1, 'rand': 1, 'randomizeFollicles': 1, 'randstate': 1, 'rangeControl': 1, 'readTake': 1, 'rebuildCurve': 1, 'rebuildSurface': 1, 'recordAttr': 1, 'recordDevice': 1, 'redo': 1, 'reference': 1, 'referenceEdit': 1, 'referenceQuery': 1, 'refineSubdivSelectionList': 1, 'refresh': 1, 'refreshAE': 1, 'registerPluginResource': 1, 'rehash': 1, 'reloadImage': 1, 'removeJoint': 1, 'removeMultiInstance': 1, 'removePanelCategory': 1, 'rename': 1, 'renameAttr': 1, 'renameSelectionList': 1, 'renameUI': 1, 'render': 1, 'renderGlobalsNode': 1, 'renderInfo': 1, 'renderLayerButton': 1, 'renderLayerParent': 1, 'renderLayerPostProcess': 1, 'renderLayerUnparent': 1, 'renderManip': 1, 'renderPartition': 1, 'renderQualityNode': 1, 'renderSettings': 1, 'renderThumbnailUpdate': 1, 'renderWindowEditor': 1, 'renderWindowSelectContext': 1, 'renderer': 1, 'reorder': 1, 'reorderDeformers': 1, 'requires': 1, 'reroot': 1, 'resampleFluid': 1, 'resetAE': 1, 'resetPfxToPolyCamera': 1, 'resetTool': 1, 'resolutionNode': 1, 'retarget': 1, 'reverseCurve': 1, 'reverseSurface': 1, 'revolve': 1, 'rgb_to_hsv': 1, 'rigidBody': 1, 'rigidSolver': 1, 'roll': 1, 'rollCtx': 1, 'rootOf': 1, 'rot': 1, 'rotate': 1, 'rotationInterpolation': 1, 'roundConstantRadius': 1, 'rowColumnLayout': 1, 'rowLayout': 1, 'runTimeCommand': 1, 'runup': 1, 'sampleImage': 1, 'saveAllShelves': 1, 'saveAttrPreset': 1, 'saveFluid': 1, 'saveImage': 1, 'saveInitialState': 1, 'saveMenu': 1, 'savePrefObjects': 1, 'savePrefs': 1, 'saveShelf': 1, 'saveToolSettings': 1, 'scale': 1, 'scaleBrushBrightness': 1, 'scaleComponents': 1, 'scaleConstraint': 1, 'scaleKey': 1, 'scaleKeyCtx': 1, 'sceneEditor': 1, 'sceneUIReplacement': 1, 'scmh': 1, 'scriptCtx': 1, 'scriptEditorInfo': 1, 'scriptJob': 1, 'scriptNode': 1, 'scriptTable': 1, 'scriptToShelf': 1, 'scriptedPanel': 1, 'scriptedPanelType': 1, 'scrollField': 1, 'scrollLayout': 1, 'sculpt': 1, 'searchPathArray': 1, 'seed': 1, 'selLoadSettings': 1, 'select': 1, 'selectContext': 1, 'selectCurveCV': 1, 'selectKey': 1, 'selectKeyCtx': 1, 'selectKeyframeRegionCtx': 1, 'selectMode': 1, 'selectPref': 1, 'selectPriority': 1, 'selectType': 1, 'selectedNodes': 1, 'selectionConnection': 1, 'separator': 1, 'setAttr': 1, 'setAttrEnumResource': 1, 'setAttrMapping': 1, 'setAttrNiceNameResource': 1, 'setConstraintRestPosition': 1, 'setDefaultShadingGroup': 1, 'setDrivenKeyframe': 1, 'setDynamic': 1, 'setEditCtx': 1, 'setEditor': 1, 'setFluidAttr': 1, 'setFocus': 1, 'setInfinity': 1, 'setInputDeviceMapping': 1, 'setKeyCtx': 1, 'setKeyPath': 1, 'setKeyframe': 1, 'setKeyframeBlendshapeTargetWts': 1, 'setMenuMode': 1, 'setNodeNiceNameResource': 1, 'setNodeTypeFlag': 1, 'setParent': 1, 'setParticleAttr': 1, 'setPfxToPolyCamera': 1, 'setPluginResource': 1, 'setProject': 1, 'setStampDensity': 1, 'setStartupMessage': 1, 'setState': 1, 'setToolTo': 1, 'setUITemplate': 1, 'setXformManip': 1, 'sets': 1, 'shadingConnection': 1, 'shadingGeometryRelCtx': 1, 'shadingLightRelCtx': 1, 'shadingNetworkCompare': 1, 'shadingNode': 1, 'shapeCompare': 1, 'shelfButton': 1, 'shelfLayout': 1, 'shelfTabLayout': 1, 'shellField': 1, 'shortNameOf': 1, 'showHelp': 1, 'showHidden': 1, 'showManipCtx': 1, 'showSelectionInTitle': 1, 'showShadingGroupAttrEditor': 1, 'showWindow': 1, 'sign': 1, 'simplify': 1, 'sin': 1, 'singleProfileBirailSurface': 1, 'size': 1, 'sizeBytes': 1, 'skinCluster': 1, 'skinPercent': 1, 'smoothCurve': 1, 'smoothTangentSurface': 1, 'smoothstep': 1, 'snap2to2': 1, 'snapKey': 1, 'snapMode': 1, 'snapTogetherCtx': 1, 'snapshot': 1, 'soft': 1, 'softMod': 1, 'softModCtx': 1, 'sort': 1, 'sound': 1, 'soundControl': 1, 'source': 1, 'spaceLocator': 1, 'sphere': 1, 'sphrand': 1, 'spotLight': 1, 'spotLightPreviewPort': 1, 'spreadSheetEditor': 1, 'spring': 1, 'sqrt': 1, 'squareSurface': 1, 'srtContext': 1, 'stackTrace': 1, 'startString': 1, 'startsWith': 1, 'stitchAndExplodeShell': 1, 'stitchSurface': 1, 'stitchSurfacePoints': 1, 'strcmp': 1, 'stringArrayCatenate': 1, 'stringArrayContains': 1, 'stringArrayCount': 1, 'stringArrayInsertAtIndex': 1, 'stringArrayIntersector': 1, 'stringArrayRemove': 1, 'stringArrayRemoveAtIndex': 1, 'stringArrayRemoveDuplicates': 1, 'stringArrayRemoveExact': 1, 'stringArrayToString': 1, 'stringToStringArray': 1, 'strip': 1, 'stripPrefixFromName': 1, 'stroke': 1, 'subdAutoProjection': 1, 'subdCleanTopology': 1, 'subdCollapse': 1, 'subdDuplicateAndConnect': 1, 'subdEditUV': 1, 'subdListComponentConversion': 1, 'subdMapCut': 1, 'subdMapSewMove': 1, 'subdMatchTopology': 1, 'subdMirror': 1, 'subdToBlind': 1, 'subdToPoly': 1, 'subdTransferUVsToCache': 1, 'subdiv': 1, 'subdivCrease': 1, 'subdivDisplaySmoothness': 1, 'substitute': 1, 'substituteAllString': 1, 'substituteGeometry': 1, 'substring': 1, 'surface': 1, 'surfaceSampler': 1, 'surfaceShaderList': 1, 'swatchDisplayPort': 1, 'switchTable': 1, 'symbolButton': 1, 'symbolCheckBox': 1, 'sysFile': 1, 'system': 1, 'tabLayout': 1, 'tan': 1, 'tangentConstraint': 1, 'texLatticeDeformContext': 1, 'texManipContext': 1, 'texMoveContext': 1, 'texMoveUVShellContext': 1, 'texRotateContext': 1, 'texScaleContext': 1, 'texSelectContext': 1, 'texSelectShortestPathCtx': 1, 'texSmudgeUVContext': 1, 'texWinToolCtx': 1, 'text': 1, 'textCurves': 1, 'textField': 1, 'textFieldButtonGrp': 1, 'textFieldGrp': 1, 'textManip': 1, 'textScrollList': 1, 'textToShelf': 1, 'textureDisplacePlane': 1, 'textureHairColor': 1, 'texturePlacementContext': 1, 'textureWindow': 1, 'threadCount': 1, 'threePointArcCtx': 1, 'timeControl': 1, 'timePort': 1, 'timerX': 1, 'toNativePath': 1, 'toggle': 1, 'toggleAxis': 1, 'toggleWindowVisibility': 1, 'tokenize': 1, 'tokenizeList': 1, 'tolerance': 1, 'tolower': 1, 'toolButton': 1, 'toolCollection': 1, 'toolDropped': 1, 'toolHasOptions': 1, 'toolPropertyWindow': 1, 'torus': 1, 'toupper': 1, 'trace': 1, 'track': 1, 'trackCtx': 1, 'transferAttributes': 1, 'transformCompare': 1, 'transformLimits': 1, 'translator': 1, 'trim': 1, 'trunc': 1, 'truncateFluidCache': 1, 'truncateHairCache': 1, 'tumble': 1, 'tumbleCtx': 1, 'turbulence': 1, 'twoPointArcCtx': 1, 'uiRes': 1, 'uiTemplate': 1, 'unassignInputDevice': 1, 'undo': 1, 'undoInfo': 1, 'ungroup': 1, 'uniform': 1, 'unit': 1, 'unloadPlugin': 1, 'untangleUV': 1, 'untitledFileName': 1, 'untrim': 1, 'upAxis': 1, 'updateAE': 1, 'userCtx': 1, 'uvLink': 1, 'uvSnapshot': 1, 'validateShelfName': 1, 'vectorize': 1, 'view2dToolCtx': 1, 'viewCamera': 1, 'viewClipPlane': 1, 'viewFit': 1, 'viewHeadOn': 1, 'viewLookAt': 1, 'viewManip': 1, 'viewPlace': 1, 'viewSet': 1, 'visor': 1, 'volumeAxis': 1, 'vortex': 1, 'waitCursor': 1, 'warning': 1, 'webBrowser': 1, 'webBrowserPrefs': 1, 'whatIs': 1, 'window': 1, 'windowPref': 1, 'wire': 1, 'wireContext': 1, 'workspace': 1, 'wrinkle': 1, 'wrinkleContext': 1, 'writeTake': 1, 'xbmLangPathList': 1, 'xform': 1 + }, + illegal: ' +*/ + +hljs.LANGUAGES.nginx = function() { + var VAR1 = { + className: 'variable', + begin: '\\$\\d+' + }; + var VAR2 = { + className: 'variable', + begin: '\\${', end: '}' + }; + var VAR3 = { + className: 'variable', + begin: '[\\$\\@]' + hljs.UNDERSCORE_IDENT_RE + }; + + return { + defaultMode: { + contains: [ + hljs.HASH_COMMENT_MODE, + { // directive + begin: hljs.UNDERSCORE_IDENT_RE, end: ';|{', returnEnd: true, + keywords: { + accept_mutex: 1, accept_mutex_delay: 1, access_log: 1, + add_after_body: 1, add_before_body: 1, add_header: 1, + addition_types: 1, alias: 1, allow: 1, ancient_browser: 1, + ancient_browser_value: 1, auth_basic: 1, auth_basic_user_file: 1, + autoindex: 1, autoindex_exact_size: 1, autoindex_localtime: 1, + 'break': 1, charset: 1, charset_map: 1, + charset_types: 1, client_body_buffer_size: 1, + client_body_in_file_only: 1, client_body_in_single_buffer: 1, + client_body_temp_path: 1, client_body_timeout: 1, + client_header_buffer_size: 1, client_header_timeout: 1, + client_max_body_size: 1, connection_pool_size: 1, connections: 1, + create_full_put_path: 1, daemon: 1, dav_access: 1, dav_methods: 1, + debug_connection: 1, debug_points: 1, default_type: 1, deny: 1, + directio: 1, directio_alignment: 1, echo: 1, echo_after_body: 1, + echo_before_body: 1, echo_blocking_sleep: 1, echo_duplicate: 1, + echo_end: 1, echo_exec: 1, echo_flush: 1, echo_foreach_split: 1, + echo_location: 1, echo_location_async: 1, echo_read_request_body: 1, + echo_request_body: 1, echo_reset_timer: 1, echo_sleep: 1, + echo_subrequest: 1, echo_subrequest_async: 1, empty_gif: 1, + env: 1, error_log: 1, error_page: 1, + events: 1, expires: 1, fastcgi_bind: 1, fastcgi_buffer_size: 1, + fastcgi_buffers: 1, fastcgi_busy_buffers_size: 1, fastcgi_cache: 1, + fastcgi_cache_key: 1, fastcgi_cache_methods: 1, + fastcgi_cache_min_uses: 1, fastcgi_cache_path: 1, + fastcgi_cache_use_stale: 1, fastcgi_cache_valid: 1, + fastcgi_catch_stderr: 1, fastcgi_connect_timeout: 1, + fastcgi_hide_header: 1, fastcgi_ignore_client_abort: 1, + fastcgi_ignore_headers: 1, fastcgi_index: 1, + fastcgi_intercept_errors: 1, fastcgi_max_temp_file_size: 1, + fastcgi_next_upstream: 1, fastcgi_param: 1, fastcgi_pass: 1, + fastcgi_pass_header: 1, fastcgi_pass_request_body: 1, + fastcgi_pass_request_headers: 1, fastcgi_read_timeout: 1, + fastcgi_send_lowat: 1, fastcgi_send_timeout: 1, + fastcgi_split_path_info: 1, fastcgi_store: 1, fastcgi_store_access: 1, + fastcgi_temp_file_write_size: 1, fastcgi_temp_path: 1, + fastcgi_upstream_fail_timeout: 1, fastcgi_upstream_max_fails: 1, + flv: 1, geo: 1, geoip_city: 1, geoip_country: 1, gzip: 1, + gzip_buffers: 1, gzip_comp_level: 1, gzip_disable: 1, gzip_hash: 1, + gzip_http_version: 1, gzip_min_length: 1, gzip_no_buffer: 1, + gzip_proxied: 1, gzip_static: 1, gzip_types: 1, gzip_vary: 1, + gzip_window: 1, http: 1, 'if': 1, if_modified_since: 1, + ignore_invalid_headers: 1, image_filter: 1, image_filter_buffer: 1, + image_filter_jpeg_quality: 1, image_filter_transparency: 1, include: 1, + index: 1, internal: 1, ip_hash: 1, js: 1, js_load: 1, js_require: 1, + js_utf8: 1, keepalive_requests: 1, keepalive_timeout: 1, + kqueue_changes: 1, kqueue_events: 1, large_client_header_buffers: 1, + limit_conn: 1, limit_conn_log_level: 1, limit_except: 1, limit_rate: 1, + limit_rate_after: 1, limit_req: 1, limit_req_log_level: 1, + limit_req_zone: 1, limit_zone: 1, lingering_time: 1, + lingering_timeout: 1, listen: 1, location: 1, lock_file: 1, + log_format: 1, log_not_found: 1, log_subrequest: 1, map: 1, + map_hash_bucket_size: 1, map_hash_max_size: 1, master_process: 1, + memcached_bind: 1, memcached_buffer_size: 1, + memcached_connect_timeout: 1, memcached_next_upstream: 1, + memcached_pass: 1, memcached_read_timeout: 1, + memcached_send_timeout: 1, memcached_upstream_fail_timeout: 1, + memcached_upstream_max_fails: 1, merge_slashes: 1, min_delete_depth: 1, + modern_browser: 1, modern_browser_value: 1, more_clear_headers: 1, + more_clear_input_headers: 1, more_set_headers: 1, + more_set_input_headers: 1, msie_padding: 1, msie_refresh: 1, + multi_accept: 1, open_file_cache: 1, open_file_cache_errors: 1, + open_file_cache_events: 1, open_file_cache_min_uses: 1, + open_file_cache_retest: 1, open_file_cache_valid: 1, + open_log_file_cache: 1, optimize_server_names: 1, output_buffers: 1, + override_charset: 1, perl: 1, perl_modules: 1, + perl_require: 1, perl_set: 1, pid: 1, port_in_redirect: 1, + post_action: 1, postpone_gzipping: 1, postpone_output: 1, + proxy_bind: 1, proxy_buffer_size: 1, proxy_buffering: 1, + proxy_buffers: 1, proxy_busy_buffers_size: 1, proxy_cache: 1, + proxy_cache_key: 1, proxy_cache_methods: 1, proxy_cache_min_uses: 1, + proxy_cache_path: 1, proxy_cache_use_stale: 1, proxy_cache_valid: 1, + proxy_connect_timeout: 1, proxy_headers_hash_bucket_size: 1, + proxy_headers_hash_max_size: 1, proxy_hide_header: 1, + proxy_ignore_client_abort: 1, proxy_ignore_headers: 1, + proxy_intercept_errors: 1, proxy_max_temp_file_size: 1, + proxy_method: 1, proxy_next_upstream: 1, proxy_pass: 1, + proxy_pass_header: 1, proxy_pass_request_body: 1, + proxy_pass_request_headers: 1, proxy_read_timeout: 1, + proxy_redirect: 1, proxy_send_lowat: 1, proxy_send_timeout: 1, + proxy_set_body: 1, proxy_set_header: 1, proxy_store: 1, + proxy_store_access: 1, proxy_temp_file_write_size: 1, + proxy_temp_path: 1, proxy_upstream_fail_timeout: 1, + proxy_upstream_max_fails: 1, push_authorized_channels_only: 1, + push_channel_group: 1, push_max_channel_id_length: 1, + push_max_channel_subscribers: 1, push_max_message_buffer_length: 1, + push_max_reserved_memory: 1, push_message_buffer_length: 1, + push_message_timeout: 1, push_min_message_buffer_length: 1, + push_min_message_recipients: 1, push_publisher: 1, + push_store_messages: 1, push_subscriber: 1, + push_subscriber_concurrency: 1, random_index: 1, read_ahead: 1, + real_ip_header: 1, recursive_error_pages: 1, request_pool_size: 1, + reset_timedout_connection: 1, resolver: 1, resolver_timeout: 1, + 'return': 1, rewrite: 1, rewrite_log: 1, root: 1, satisfy: 1, + satisfy_any: 1, send_lowat: 1, send_timeout: 1, sendfile: 1, + sendfile_max_chunk: 1, server: 1, server_name: 1, + server_name_in_redirect: 1, server_names_hash_bucket_size: 1, + server_names_hash_max_size: 1, server_tokens: 1, 'set': 1, + set_real_ip_from: 1, source_charset: 1, ssi: 1, + ssi_ignore_recycled_buffers: 1, ssi_min_file_chunk: 1, + ssi_silent_errors: 1, ssi_types: 1, ssi_value_length: 1, ssl: 1, + ssl_certificate: 1, ssl_certificate_key: 1, ssl_ciphers: 1, + ssl_client_certificate: 1, ssl_crl: 1, ssl_dhparam: 1, + ssl_prefer_server_ciphers: 1, ssl_protocols: 1, ssl_session_cache: 1, + ssl_session_timeout: 1, ssl_verify_client: 1, ssl_verify_depth: 1, + sub_filter: 1, sub_filter_once: 1, sub_filter_types: 1, tcp_nodelay: 1, + tcp_nopush: 1, timer_resolution: 1, try_files: 1, types: 1, + types_hash_bucket_size: 1, types_hash_max_size: 1, + underscores_in_headers: 1, uninitialized_variable_warn: 1, upstream: 1, + use: 1, user: 1, userid: 1, userid_domain: 1, userid_expires: 1, userid_mark: 1, + userid_name: 1, userid_p3p: 1, userid_path: 1, userid_service: 1, + valid_referers: 1, variables_hash_bucket_size: 1, + variables_hash_max_size: 1, worker_connections: 1, + worker_cpu_affinity: 1, worker_priority: 1, worker_processes: 1, + worker_rlimit_core: 1, worker_rlimit_nofile: 1, + worker_rlimit_sigpending: 1, working_directory: 1, xml_entities: 1, + xslt_stylesheet: 1, xslt_types: 1 + }, + relevance: 0, + contains: [ + hljs.HASH_COMMENT_MODE, + { + begin: '\\s', end: '[;{]', returnBegin: true, returnEnd: true, + lexems: '[a-z/]+', + keywords: { + 'built_in': { + 'on': 1, 'off': 1, 'yes': 1, 'no': 1, 'true': 1, 'false': 1, + 'none': 1, 'blocked': 1, 'debug': 1, 'info': 1, 'notice': 1, + 'warn': 1, 'error': 1, 'crit': 1, 'select': 1, 'permanent': 1, + 'redirect': 1, 'kqueue': 1, 'rtsig': 1, 'epoll': 1, 'poll': 1, + '/dev/poll': 1 + } + }, + relevance: 0, + contains: [ + hljs.HASH_COMMENT_MODE, + { + className: 'string', + begin: '"', end: '"', + contains: [hljs.BACKSLASH_ESCAPE, VAR1, VAR2, VAR3], + relevance: 0 + }, + { + className: 'string', + begin: "'", end: "'", + contains: [hljs.BACKSLASH_ESCAPE, VAR1, VAR2, VAR3], + relevance: 0 + }, + { + className: 'string', + begin: '([a-z]+):/', end: '[;\\s]', returnEnd: true + }, + { + className: 'regexp', + begin: "\\s\\^", end: "\\s|{|;", returnEnd: true, + contains: [hljs.BACKSLASH_ESCAPE, VAR1, VAR2, VAR3] + }, + // regexp locations (~, ~*) + { + className: 'regexp', + begin: "~\\*?\\s+", end: "\\s|{|;", returnEnd: true, + contains: [hljs.BACKSLASH_ESCAPE, VAR1, VAR2, VAR3] + }, + // *.example.com + { + className: 'regexp', + begin: "\\*(\\.[a-z\\-]+)+", + contains: [hljs.BACKSLASH_ESCAPE, VAR1, VAR2, VAR3] + }, + // sub.example.* + { + className: 'regexp', + begin: "([a-z\\-]+\\.)+\\*", + contains: [hljs.BACKSLASH_ESCAPE, VAR1, VAR2, VAR3] + }, + // IP + { + className: 'number', + begin: '\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\b' + }, + // units + { + className: 'number', + begin: '\\s\\d+[kKmMgGdshdwy]*\\b', + relevance: 0 + }, + VAR1, VAR2, VAR3 + ] + } + ] + } + ] + } + } +}(); diff --git a/output/Scratch/js/highlight/languages/objectivec.js b/output/Scratch/js/highlight/languages/objectivec.js new file mode 100644 index 000000000..a76fe535f --- /dev/null +++ b/output/Scratch/js/highlight/languages/objectivec.js @@ -0,0 +1,94 @@ +/* +Language: Objective C +Author: Valerii Hiora +*/ + +hljs.LANGUAGES.objectivec = function(){ + var OBJC_KEYWORDS = { + 'keyword': { + 'false': 1, 'int': 1, 'float': 1, 'while': 1, 'private': 1, 'char': 1, + 'catch': 1, 'export': 1, 'sizeof': 2, 'typedef': 2, 'const': 1, + 'struct': 1, 'for': 1, 'union': 1, 'unsigned': 1, 'long': 1, + 'volatile': 2, 'static': 1, 'protected': 1, 'bool': 1, 'mutable': 1, + 'if': 1, 'public': 1, 'do': 1, 'return': 1, 'goto': 1, 'void': 2, + 'enum': 1, 'else': 1, 'break': 1, 'extern': 1, 'true': 1, 'class': 1, + 'asm': 1, 'case': 1, 'short': 1, 'default': 1, 'double': 1, 'throw': 1, + 'register': 1, 'explicit': 1, 'signed': 1, 'typename': 1, 'try': 1, + 'this': 1, 'switch': 1, 'continue': 1, 'wchar_t': 1, 'inline': 1, + 'readonly': 1, 'assign': 1, 'property': 1, 'protocol': 10, 'self': 1, + 'synchronized': 1, 'end': 1, 'synthesize': 50, 'id': 1, 'optional': 1, + 'required': 1, 'implementation': 10, 'nonatomic': 1,'interface': 1, + 'super': 1, 'unichar': 1, 'finally': 2, 'dynamic': 2, 'nil': 1 + }, + 'built_in': { + 'YES': 5, 'NO': 5, 'NULL': 1, 'IBOutlet': 50, 'IBAction': 50, + 'NSString': 50, 'NSDictionary': 50, 'CGRect': 50, 'CGPoint': 50, + 'NSRange': 50, 'release': 1, 'retain': 1, 'autorelease': 50, + 'UIButton': 50, 'UILabel': 50, 'UITextView': 50, 'UIWebView': 50, + 'MKMapView': 50, 'UISegmentedControl': 50, 'NSObject': 50, + 'UITableViewDelegate': 50, 'UITableViewDataSource': 50, 'NSThread': 50, + 'UIActivityIndicator': 50, 'UITabbar': 50, 'UIToolBar': 50, + 'UIBarButtonItem': 50, 'UIImageView': 50, 'NSAutoreleasePool': 50, + 'UITableView': 50, 'BOOL': 1, 'NSInteger': 20, 'CGFloat': 20, + 'NSException': 50, 'NSLog': 50, 'NSMutableString': 50, + 'NSMutableArray': 50, 'NSMutableDictionary': 50, 'NSURL': 50 + } + }; + return { + defaultMode: { + keywords: OBJC_KEYWORDS, + illegal: '' + } + ] + }, + { + className: 'preprocessor', + begin: '#', + end: '$' + }, + { + className: 'class', + begin: 'interface|class|protocol|implementation', + end: '({|$)', + keywords: { + 'interface': 1, + 'class': 1, + 'protocol': 5, + 'implementation': 5 + }, + contains: [{ + className: 'id', + begin: hljs.UNDERSCORE_IDENT_RE + } + ] + } + ] + } + }; +}(); diff --git a/output/Scratch/js/highlight/languages/parser3.js b/output/Scratch/js/highlight/languages/parser3.js new file mode 100644 index 000000000..2b5fe43bc --- /dev/null +++ b/output/Scratch/js/highlight/languages/parser3.js @@ -0,0 +1,50 @@ +/* +Language: Parser3 +Requires: xml.js +Author: Oleg Volchkov +*/ + +hljs.LANGUAGES.parser3 = { + defaultMode: { + subLanguage: 'html', + contains: [ + { + className: 'comment', + begin: '^#', end: '$' + }, + { + className: 'comment', + begin: '\\^rem{', end: '}', + relevance: 10, + contains: [ + { + begin: '{', end: '}', + contains: ['self'] + } + ] + }, + { + className: 'preprocessor', + begin: '^@(?:BASE|USE|CLASS|OPTIONS)$', + relevance: 10 + }, + { + className: 'title', + begin: '@[\\w\\-]+\\[[\\w^;\\-]*\\](?:\\[[\\w^;\\-]*\\])?(?:.*)$' + }, + { + className: 'variable', + begin: '\\$\\{?[\\w\\-\\.\\:]+\\}?' + }, + { + className: 'keyword', + begin: '\\^[\\w\\-\\.\\:]+' + }, + { + className: 'number', + begin: '\\^#[0-9a-fA-F]+' + }, + hljs.C_NUMBER_MODE + ] + } +}; diff --git a/output/Scratch/js/highlight/languages/perl.js b/output/Scratch/js/highlight/languages/perl.js new file mode 100644 index 000000000..8ead1157b --- /dev/null +++ b/output/Scratch/js/highlight/languages/perl.js @@ -0,0 +1,181 @@ +/* +Language: Perl +Author: Peter Leonov +*/ + +hljs.LANGUAGES.perl = function(){ + var PERL_KEYWORDS = { + 'getpwent': 1, 'getservent': 1, 'quotemeta': 1, 'msgrcv': 1, 'scalar': 1, 'kill': 1, 'dbmclose': 1, 'undef': 1, + 'lc': 1, 'ma': 1, 'syswrite': 1, 'tr': 1, 'send': 1, 'umask': 1, 'sysopen': 1, 'shmwrite': 1, 'vec': 1, 'qx': 1, + 'utime': 1, 'local': 1, 'oct': 1, 'semctl': 1, 'localtime': 1, 'readpipe': 1, 'do': 1, 'return': 1, 'format': 1, + 'read': 1, 'sprintf': 1, 'dbmopen': 1, 'pop': 1, 'getpgrp': 1, 'not': 1, 'getpwnam': 1, 'rewinddir': 1, 'qq': 1, + 'fileno': 1, 'qw': 1, 'endprotoent': 1, 'wait': 1, 'sethostent': 1, 'bless': 1, 's': 1, 'opendir': 1, + 'continue': 1, 'each': 1, 'sleep': 1, 'endgrent': 1, 'shutdown': 1, 'dump': 1, 'chomp': 1, 'connect': 1, + 'getsockname': 1, 'die': 1, 'socketpair': 1, 'close': 1, 'flock': 1, 'exists': 1, 'index': 1, 'shmget': 1, + 'sub': 1, 'for': 1, 'endpwent': 1, 'redo': 1, 'lstat': 1, 'msgctl': 1, 'setpgrp': 1, 'abs': 1, 'exit': 1, + 'select': 1, 'print': 1, 'ref': 1, 'gethostbyaddr': 1, 'unshift': 1, 'fcntl': 1, 'syscall': 1, 'goto': 1, + 'getnetbyaddr': 1, 'join': 1, 'gmtime': 1, 'symlink': 1, 'semget': 1, 'splice': 1, 'x': 1, 'getpeername': 1, + 'recv': 1, 'log': 1, 'setsockopt': 1, 'cos': 1, 'last': 1, 'reverse': 1, 'gethostbyname': 1, 'getgrnam': 1, + 'study': 1, 'formline': 1, 'endhostent': 1, 'times': 1, 'chop': 1, 'length': 1, 'gethostent': 1, 'getnetent': 1, + 'pack': 1, 'getprotoent': 1, 'getservbyname': 1, 'rand': 1, 'mkdir': 1, 'pos': 1, 'chmod': 1, 'y': 1, 'substr': 1, + 'endnetent': 1, 'printf': 1, 'next': 1, 'open': 1, 'msgsnd': 1, 'readdir': 1, 'use': 1, 'unlink': 1, + 'getsockopt': 1, 'getpriority': 1, 'rindex': 1, 'wantarray': 1, 'hex': 1, 'system': 1, 'getservbyport': 1, + 'endservent': 1, 'int': 1, 'chr': 1, 'untie': 1, 'rmdir': 1, 'prototype': 1, 'tell': 1, 'listen': 1, 'fork': 1, + 'shmread': 1, 'ucfirst': 1, 'setprotoent': 1, 'else': 1, 'sysseek': 1, 'link': 1, 'getgrgid': 1, 'shmctl': 1, + 'waitpid': 1, 'unpack': 1, 'getnetbyname': 1, 'reset': 1, 'chdir': 1, 'grep': 1, 'split': 1, 'require': 1, + 'caller': 1, 'lcfirst': 1, 'until': 1, 'warn': 1, 'while': 1, 'values': 1, 'shift': 1, 'telldir': 1, 'getpwuid': 1, + 'my': 1, 'getprotobynumber': 1, 'delete': 1, 'and': 1, 'sort': 1, 'uc': 1, 'defined': 1, 'srand': 1, 'accept': 1, + 'package': 1, 'seekdir': 1, 'getprotobyname': 1, 'semop': 1, 'our': 1, 'rename': 1, 'seek': 1, 'if': 1, 'q': 1, + 'chroot': 1, 'sysread': 1, 'setpwent': 1, 'no': 1, 'crypt': 1, 'getc': 1, 'chown': 1, 'sqrt': 1, 'write': 1, + 'setnetent': 1, 'setpriority': 1, 'foreach': 1, 'tie': 1, 'sin': 1, 'msgget': 1, 'map': 1, 'stat': 1, + 'getlogin': 1, 'unless': 1, 'elsif': 1, 'truncate': 1, 'exec': 1, 'keys': 1, 'glob': 1, 'tied': 1, 'closedir': 1, + 'ioctl': 1, 'socket': 1, 'readlink': 1, 'eval': 1, 'xor': 1, 'readline': 1, 'binmode': 1, 'setservent': 1, + 'eof': 1, 'ord': 1, 'bind': 1, 'alarm': 1, 'pipe': 1, 'atan2': 1, 'getgrent': 1, 'exp': 1, 'time': 1, 'push': 1, + 'setgrent': 1, 'gt': 1, 'lt': 1, 'or': 1, 'ne': 1, 'm': 1 + }; + var SUBST = { + className: 'subst', + begin: '[$@]\\{', end: '\\}', + keywords: PERL_KEYWORDS, + relevance: 10 + }; + var VAR1 = { + className: 'variable', + begin: '\\$\\d' + }; + var VAR2 = { + className: 'variable', + begin: '[\\$\\%\\@\\*](\\^\\w\\b|#\\w+(\\:\\:\\w+)*|[^\\s\\w{]|{\\w+}|\\w+(\\:\\:\\w*)*)' + }; + var STRING_CONTAINS = [hljs.BACKSLASH_ESCAPE, SUBST, VAR1, VAR2]; + var METHOD = { + begin: '->', + contains: [ + {begin: hljs.IDENT_RE}, + {begin: '{', end: '}'} + ] + }; + var COMMENT = { + className: 'comment', + begin: '^(__END__|__DATA__)', end: '\\n$', + relevance: 5 + } + var PERL_DEFAULT_CONTAINS = [ + VAR1, VAR2, + hljs.HASH_COMMENT_MODE, + COMMENT, + METHOD, + { + className: 'string', + begin: 'q[qwxr]?\\s*\\(', end: '\\)', + contains: STRING_CONTAINS, + relevance: 5 + }, + { + className: 'string', + begin: 'q[qwxr]?\\s*\\[', end: '\\]', + contains: STRING_CONTAINS, + relevance: 5 + }, + { + className: 'string', + begin: 'q[qwxr]?\\s*\\{', end: '\\}', + contains: STRING_CONTAINS, + relevance: 5 + }, + { + className: 'string', + begin: 'q[qwxr]?\\s*\\|', end: '\\|', + contains: STRING_CONTAINS, + relevance: 5 + }, + { + className: 'string', + begin: 'q[qwxr]?\\s*\\<', end: '\\>', + contains: STRING_CONTAINS, + relevance: 5 + }, + { + className: 'string', + begin: 'qw\\s+q', end: 'q', + contains: STRING_CONTAINS, + relevance: 5 + }, + { + className: 'string', + begin: '\'', end: '\'', + contains: [hljs.BACKSLASH_ESCAPE], + relevance: 0 + }, + { + className: 'string', + begin: '"', end: '"', + contains: STRING_CONTAINS, + relevance: 0 + }, + { + className: 'string', + begin: '`', end: '`', + contains: [hljs.BACKSLASH_ESCAPE] + }, + { + className: 'string', + begin: '{\\w+}', + relevance: 0 + }, + { + className: 'string', + begin: '\-?\\w+\\s*\\=\\>', + relevance: 0 + }, + { + className: 'number', + begin: '(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b', + relevance: 0 + }, + { // regexp container + begin: '(' + hljs.RE_STARTERS_RE + '|split|return|print|reverse|grep)\\s*', + keywords: {'split': 1, 'return': 1, 'print': 1, 'reverse': 1, 'grep': 1}, + relevance: 0, + contains: [ + hljs.HASH_COMMENT_MODE, + COMMENT, + { + className: 'regexp', + begin: '(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*', + relevance: 10 + }, + { + className: 'regexp', + begin: '(m|qr)?/', end: '/[a-z]*', + contains: [hljs.BACKSLASH_ESCAPE], + relevance: 0 // allows empty "//" which is a common comment delimiter in other languages + } + ] + }, + { + className: 'sub', + begin: '\\bsub\\b', end: '(\\s*\\(.*?\\))?[;{]', + keywords: {'sub':1}, + relevance: 5 + }, + { + className: 'operator', + begin: '-\\w\\b', + relevance: 0 + }, + { + className: 'pod', + begin: '\\=\\w', end: '\\=cut' + } + ]; + SUBST.contains = PERL_DEFAULT_CONTAINS; + METHOD.contains[1].contains = PERL_DEFAULT_CONTAINS; + + return { + defaultMode: { + keywords: PERL_KEYWORDS, + contains: PERL_DEFAULT_CONTAINS + } + }; +}(); diff --git a/output/Scratch/js/highlight/languages/php.js b/output/Scratch/js/highlight/languages/php.js new file mode 100644 index 000000000..64d8de13f --- /dev/null +++ b/output/Scratch/js/highlight/languages/php.js @@ -0,0 +1,77 @@ +/* +Language: PHP +Author: Victor Karamzin +Contributors: Evgeny Stepanischev +*/ + +hljs.LANGUAGES.php = { + case_insensitive: true, + defaultMode: { + keywords: { + 'and': 1, 'include_once': 1, 'list': 1, 'abstract': 1, 'global': 1, + 'private': 1, 'echo': 1, 'interface': 1, 'as': 1, 'static': 1, + 'endswitch': 1, 'array': 1, 'null': 1, 'if': 1, 'endwhile': 1, 'or': 1, + 'const': 1, 'for': 1, 'endforeach': 1, 'self': 1, 'var': 1, 'while': 1, + 'isset': 1, 'public': 1, 'protected': 1, 'exit': 1, 'foreach': 1, + 'throw': 1, 'elseif': 1, 'extends': 1, 'include': 1, '__FILE__': 1, + 'empty': 1, 'require_once': 1, 'function': 1, 'do': 1, 'xor': 1, + 'return': 1, 'implements': 1, 'parent': 1, 'clone': 1, 'use': 1, + '__CLASS__': 1, '__LINE__': 1, 'else': 1, 'break': 1, 'print': 1, + 'eval': 1, 'new': 1, 'catch': 1, '__METHOD__': 1, 'class': 1, 'case': 1, + 'exception': 1, 'php_user_filter': 1, 'default': 1, 'die': 1, + 'require': 1, '__FUNCTION__': 1, 'enddeclare': 1, 'final': 1, 'try': 1, + 'this': 1, 'switch': 1, 'continue': 1, 'endfor': 1, 'endif': 1, + 'declare': 1, 'unset': 1, 'true': 1, 'false': 1, 'namespace': 1, 'trait':1, + 'goto':1, 'instanceof':1, '__DIR__':1, '__NAMESPACE__':1, '__halt_compiler':1 + }, + contains: [ + hljs.C_LINE_COMMENT_MODE, + hljs.HASH_COMMENT_MODE, + { + className: 'comment', + begin: '/\\*', end: '\\*/', + contains: [{ + className: 'phpdoc', + begin: '\\s@[A-Za-z]+' + }] + }, + { + className: 'comment', + excludeBegin: true, + begin: '__halt_compiler[^;]+;', end: '[\\n\\r]$' + }, + hljs.C_NUMBER_MODE, // 0x..., 0..., decimal, float + hljs.BINARY_NUMBER_MODE, // 0b... + hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}), + hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}), + { + className: 'string', + begin: 'b"', end: '"', + contains: [hljs.BACKSLASH_ESCAPE] + }, + { + className: 'string', + begin: 'b\'', end: '\'', + contains: [hljs.BACKSLASH_ESCAPE] + }, + { + className: 'string', + begin: '<<<[\'"]?\\w+[\'"]?$', end: '^\\w+;', + contains: [hljs.BACKSLASH_ESCAPE] + }, + { + className: 'variable', + begin: '\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*' + }, + { + className: 'preprocessor', + begin: '<\\?php', + relevance: 10 + }, + { + className: 'preprocessor', + begin: '\\?>' + } + ] + } +}; diff --git a/output/Scratch/js/highlight/languages/profile.js b/output/Scratch/js/highlight/languages/profile.js new file mode 100644 index 000000000..09715b7e6 --- /dev/null +++ b/output/Scratch/js/highlight/languages/profile.js @@ -0,0 +1,49 @@ +/* +Language: Python profile +Description: Python profiler results +Author: Brian Beck +*/ + +hljs.LANGUAGES.profile = { + defaultMode: { + contains: [ + hljs.C_NUMBER_MODE, + { + className: 'builtin', + begin: '{', end: '}$', + excludeBegin: true, excludeEnd: true, + contains: [hljs.APOS_STRING_MODE, hljs.QUOTE_STRING_MODE], + relevance: 0 + }, + { + className: 'filename', + begin: '[a-zA-Z_][\\da-zA-Z_]+\\.[\\da-zA-Z_]{1,3}', end: ':', + excludeEnd: true + }, + { + className: 'header', + begin: '(ncalls|tottime|cumtime)', end: '$', + keywords: {'ncalls': 1, 'tottime': 10, 'cumtime': 10, 'filename': 1}, + relevance: 10 + }, + { + className: 'summary', + begin: 'function calls', end: '$', + contains: [hljs.C_NUMBER_MODE], + relevance: 10 + }, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + { + className: 'function', + begin: '\\(', end: '\\)$', + contains: [{ + className: 'title', + begin: hljs.UNDERSCORE_IDENT_RE, + relevance: 0 + }], + relevance: 0 + } + ] + } +}; diff --git a/output/Scratch/js/highlight/languages/python.js b/output/Scratch/js/highlight/languages/python.js new file mode 100644 index 000000000..7617f7a21 --- /dev/null +++ b/output/Scratch/js/highlight/languages/python.js @@ -0,0 +1,90 @@ +/* +Language: Python +*/ + +hljs.LANGUAGES.python = function() { + var STRINGS = [ + { + className: 'string', + begin: '(u|b)?r?\'\'\'', end: '\'\'\'', + relevance: 10 + }, + { + className: 'string', + begin: '(u|b)?r?"""', end: '"""', + relevance: 10 + }, + { + className: 'string', + begin: '(u|r|ur)\'', end: '\'', + contains: [hljs.BACKSLASH_ESCAPE], + relevance: 10 + }, + { + className: 'string', + begin: '(u|r|ur)"', end: '"', + contains: [hljs.BACKSLASH_ESCAPE], + relevance: 10 + }, + { + className: 'string', + begin: '(b|br)\'', end: '\'', + contains: [hljs.BACKSLASH_ESCAPE] + }, + { + className: 'string', + begin: '(b|br)"', end: '"', + contains: [hljs.BACKSLASH_ESCAPE] + } + ].concat([ + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE + ]); + var TITLE = { + className: 'title', begin: hljs.UNDERSCORE_IDENT_RE + }; + var PARAMS = { + className: 'params', + begin: '\\(', end: '\\)', + contains: STRINGS.concat([hljs.C_NUMBER_MODE]) + }; + + return { + defaultMode: { + keywords: { + 'keyword': { + 'and': 1, 'elif': 1, 'is': 1, 'global': 1, 'as': 1, 'in': 1, 'if': 1, 'from': 1, 'raise': 1, 'for': 1, + 'except': 1, 'finally': 1, 'print': 1, 'import': 1, 'pass': 1, 'return': 1, 'exec': 1, 'else': 1, + 'break': 1, 'not': 1, 'with': 1, 'class': 1, 'assert': 1, 'yield': 1, 'try': 1, 'while': 1, 'continue': 1, + 'del': 1, 'or': 1, 'def': 1, 'lambda': 1, 'nonlocal': 10 + }, + 'built_in': {'None': 1, 'True': 1, 'False': 1, 'Ellipsis': 1, 'NotImplemented': 1} + }, + illegal: '(|\\?)', + contains: STRINGS.concat([ + hljs.HASH_COMMENT_MODE, + { + className: 'function', + begin: '\\bdef ', end: ':', + illegal: '$', + keywords: {'def': 1}, + contains: [TITLE, PARAMS], + relevance: 10 + }, + { + className: 'class', + begin: '\\bclass ', end: ':', + illegal: '[${]', + keywords: {'class': 1}, + contains: [TITLE, PARAMS], + relevance: 10 + }, + hljs.C_NUMBER_MODE, + { + className: 'decorator', + begin: '@', end: '$' + } + ]) + } + }; +}(); diff --git a/output/Scratch/js/highlight/languages/renderman.js b/output/Scratch/js/highlight/languages/renderman.js new file mode 100644 index 000000000..5988ef5a2 --- /dev/null +++ b/output/Scratch/js/highlight/languages/renderman.js @@ -0,0 +1,230 @@ +/* +Language: RenderMan +Description: RenderMan Languages RIB and RSL +Author: Konstantin Evdokimenko +Contributors: Shuen-Huei Guan +*/ + +hljs.LANGUAGES.rib = { + defaultMode: { + keywords: { + 'keyword': { + 'ArchiveRecord': 1, + 'AreaLightSource': 1, + 'Atmosphere': 1, + 'Attribute': 1, + 'AttributeBegin': 1, + 'AttributeEnd': 1, + 'Basis': 1, + 'Begin': 1, + 'Blobby': 1, + 'Bound': 1, + 'Clipping': 1, + 'ClippingPlane': 1, + 'Color': 1, + 'ColorSamples': 1, + 'ConcatTransform': 1, + 'Cone': 1, + 'CoordinateSystem': 1, + 'CoordSysTransform': 1, + 'CropWindow': 1, + 'Curves': 1, + 'Cylinder': 1, + 'DepthOfField': 1, + 'Detail': 1, + 'DetailRange': 1, + 'Disk': 1, + 'Displacement': 1, + 'Display': 1, + 'End': 1, + 'ErrorHandler': 1, + 'Exposure': 1, + 'Exterior': 1, + 'Format': 1, + 'FrameAspectRatio': 1, + 'FrameBegin': 1, + 'FrameEnd': 1, + 'GeneralPolygon': 1, + 'GeometricApproximation': 1, + 'Geometry': 1, + 'Hider': 1, + 'Hyperboloid': 1, + 'Identity': 1, + 'Illuminate': 1, + 'Imager': 1, + 'Interior': 1, + 'LightSource': 1, + 'MakeCubeFaceEnvironment': 1, + 'MakeLatLongEnvironment': 1, + 'MakeShadow': 1, + 'MakeTexture': 1, + 'Matte': 1, + 'MotionBegin': 1, + 'MotionEnd': 1, + 'NuPatch': 1, + 'ObjectBegin': 1, + 'ObjectEnd': 1, + 'ObjectInstance': 1, + 'Opacity': 1, + 'Option': 1, + 'Orientation': 1, + 'Paraboloid': 1, + 'Patch': 1, + 'PatchMesh': 1, + 'Perspective': 1, + 'PixelFilter': 1, + 'PixelSamples': 1, + 'PixelVariance': 1, + 'Points': 1, + 'PointsGeneralPolygons': 1, + 'PointsPolygons': 1, + 'Polygon': 1, + 'Procedural': 1, + 'Projection': 1, + 'Quantize': 1, + 'ReadArchive': 1, + 'RelativeDetail': 1, + 'ReverseOrientation': 1, + 'Rotate': 1, + 'Scale': 1, + 'ScreenWindow': 1, + 'ShadingInterpolation': 1, + 'ShadingRate': 1, + 'Shutter': 1, + 'Sides': 1, + 'Skew': 1, + 'SolidBegin': 1, + 'SolidEnd': 1, + 'Sphere': 1, + 'SubdivisionMesh': 1, + 'Surface': 1, + 'TextureCoordinates': 1, + 'Torus': 1, + 'Transform': 1, + 'TransformBegin': 1, + 'TransformEnd': 1, + 'TransformPoints': 1, + 'Translate': 1, + 'TrimCurve': 1, + 'WorldBegin': 1, + 'WorldEnd': 1 + } + }, + illegal: ' +Contributors: Peter Leonov , Vasily Polovnyov , Loren Segal +*/ + +hljs.LANGUAGES.ruby = function(){ + var RUBY_IDENT_RE = '[a-zA-Z_][a-zA-Z0-9_]*(\\!|\\?)?'; + var RUBY_METHOD_RE = '[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?'; + var RUBY_KEYWORDS = { + 'keyword': { + 'and': 1, 'false': 1, 'then': 1, 'defined': 1, 'module': 1, 'in': 1, 'return': 1, 'redo': 1, 'if': 1, + 'BEGIN': 1, 'retry': 1, 'end': 1, 'for': 1, 'true': 1, 'self': 1, 'when': 1, 'next': 1, 'until': 1, 'do': 1, + 'begin': 1, 'unless': 1, 'END': 1, 'rescue': 1, 'nil': 1, 'else': 1, 'break': 1, 'undef': 1, 'not': 1, + 'super': 1, 'class': 1, 'case': 1, 'require': 1, 'yield': 1, 'alias': 1, 'while': 1, 'ensure': 1, + 'elsif': 1, 'or': 1, 'def': 1 + }, + 'keymethods': { + '__id__': 1, '__send__': 1, 'abort': 1, 'abs': 1, 'all?': 1, 'allocate': 1, 'ancestors': 1, 'any?': 1, + 'arity': 1, 'assoc': 1, 'at': 1, 'at_exit': 1, 'autoload': 1, 'autoload?': 1, 'between?': 1, 'binding': 1, + 'binmode': 1, 'block_given?': 1, 'call': 1, 'callcc': 1, 'caller': 1, 'capitalize': 1, 'capitalize!': 1, + 'casecmp': 1, 'catch': 1, 'ceil': 1, 'center': 1, 'chomp': 1, 'chomp!': 1, 'chop': 1, 'chop!': 1, 'chr': 1, + 'class': 1, 'class_eval': 1, 'class_variable_defined?': 1, 'class_variables': 1, 'clear': 1, 'clone': 1, + 'close': 1, 'close_read': 1, 'close_write': 1, 'closed?': 1, 'coerce': 1, 'collect': 1, 'collect!': 1, + 'compact': 1, 'compact!': 1, 'concat': 1, 'const_defined?': 1, 'const_get': 1, 'const_missing': 1, + 'const_set': 1, 'constants': 1, 'count': 1, 'crypt': 1, 'default': 1, 'default_proc': 1, 'delete': 1, + 'delete!': 1, 'delete_at': 1, 'delete_if': 1, 'detect': 1, 'display': 1, 'div': 1, 'divmod': 1, + 'downcase': 1, 'downcase!': 1, 'downto': 1, 'dump': 1, 'dup': 1, 'each': 1, 'each_byte': 1, + 'each_index': 1, 'each_key': 1, 'each_line': 1, 'each_pair': 1, 'each_value': 1, 'each_with_index': 1, + 'empty?': 1, 'entries': 1, 'eof': 1, 'eof?': 1, 'eql?': 1, 'equal?': 1, 'eval': 1, 'exec': 1, 'exit': 1, + 'exit!': 1, 'extend': 1, 'fail': 1, 'fcntl': 1, 'fetch': 1, 'fileno': 1, 'fill': 1, 'find': 1, 'find_all': 1, + 'first': 1, 'flatten': 1, 'flatten!': 1, 'floor': 1, 'flush': 1, 'for_fd': 1, 'foreach': 1, 'fork': 1, + 'format': 1, 'freeze': 1, 'frozen?': 1, 'fsync': 1, 'getc': 1, 'gets': 1, 'global_variables': 1, 'grep': 1, + 'gsub': 1, 'gsub!': 1, 'has_key?': 1, 'has_value?': 1, 'hash': 1, 'hex': 1, 'id': 1, 'include': 1, + 'include?': 1, 'included_modules': 1, 'index': 1, 'indexes': 1, 'indices': 1, 'induced_from': 1, + 'inject': 1, 'insert': 1, 'inspect': 1, 'instance_eval': 1, 'instance_method': 1, 'instance_methods': 1, + 'instance_of?': 1, 'instance_variable_defined?': 1, 'instance_variable_get': 1, 'instance_variable_set': 1, + 'instance_variables': 1, 'integer?': 1, 'intern': 1, 'invert': 1, 'ioctl': 1, 'is_a?': 1, 'isatty': 1, + 'iterator?': 1, 'join': 1, 'key?': 1, 'keys': 1, 'kind_of?': 1, 'lambda': 1, 'last': 1, 'length': 1, + 'lineno': 1, 'ljust': 1, 'load': 1, 'local_variables': 1, 'loop': 1, 'lstrip': 1, 'lstrip!': 1, 'map': 1, + 'map!': 1, 'match': 1, 'max': 1, 'member?': 1, 'merge': 1, 'merge!': 1, 'method': 1, 'method_defined?': 1, + 'method_missing': 1, 'methods': 1, 'min': 1, 'module_eval': 1, 'modulo': 1, 'name': 1, 'nesting': 1, 'new': 1, + 'next': 1, 'next!': 1, 'nil?': 1, 'nitems': 1, 'nonzero?': 1, 'object_id': 1, 'oct': 1, 'open': 1, 'pack': 1, + 'partition': 1, 'pid': 1, 'pipe': 1, 'pop': 1, 'popen': 1, 'pos': 1, 'prec': 1, 'prec_f': 1, 'prec_i': 1, + 'print': 1, 'printf': 1, 'private_class_method': 1, 'private_instance_methods': 1, 'private_method_defined?': 1, + 'private_methods': 1, 'proc': 1, 'protected_instance_methods': 1, 'protected_method_defined?': 1, + 'protected_methods': 1, 'public_class_method': 1, 'public_instance_methods': 1, 'public_method_defined?': 1, + 'public_methods': 1, 'push': 1, 'putc': 1, 'puts': 1, 'quo': 1, 'raise': 1, 'rand': 1, 'rassoc': 1, 'read': 1, + 'read_nonblock': 1, 'readchar': 1, 'readline': 1, 'readlines': 1, 'readpartial': 1, 'rehash': 1, 'reject': 1, + 'reject!': 1, 'remainder': 1, 'reopen': 1, 'replace': 1, 'require': 1, 'respond_to?': 1, 'reverse': 1, + 'reverse!': 1, 'reverse_each': 1, 'rewind': 1, 'rindex': 1, 'rjust': 1, 'round': 1, 'rstrip': 1, 'rstrip!': 1, + 'scan': 1, 'seek': 1, 'select': 1, 'send': 1, 'set_trace_func': 1, 'shift': 1, 'singleton_method_added': 1, + 'singleton_methods': 1, 'size': 1, 'sleep': 1, 'slice': 1, 'slice!': 1, 'sort': 1, 'sort!': 1, 'sort_by': 1, + 'split': 1, 'sprintf': 1, 'squeeze': 1, 'squeeze!': 1, 'srand': 1, 'stat': 1, 'step': 1, 'store': 1, 'strip': 1, + 'strip!': 1, 'sub': 1, 'sub!': 1, 'succ': 1, 'succ!': 1, 'sum': 1, 'superclass': 1, 'swapcase': 1, 'swapcase!': 1, + 'sync': 1, 'syscall': 1, 'sysopen': 1, 'sysread': 1, 'sysseek': 1, 'system': 1, 'syswrite': 1, 'taint': 1, + 'tainted?': 1, 'tell': 1, 'test': 1, 'throw': 1, 'times': 1, 'to_a': 1, 'to_ary': 1, 'to_f': 1, 'to_hash': 1, + 'to_i': 1, 'to_int': 1, 'to_io': 1, 'to_proc': 1, 'to_s': 1, 'to_str': 1, 'to_sym': 1, 'tr': 1, 'tr!': 1, + 'tr_s': 1, 'tr_s!': 1, 'trace_var': 1, 'transpose': 1, 'trap': 1, 'truncate': 1, 'tty?': 1, 'type': 1, + 'ungetc': 1, 'uniq': 1, 'uniq!': 1, 'unpack': 1, 'unshift': 1, 'untaint': 1, 'untrace_var': 1, 'upcase': 1, + 'upcase!': 1, 'update': 1, 'upto': 1, 'value?': 1, 'values': 1, 'values_at': 1, 'warn': 1, 'write': 1, + 'write_nonblock': 1, 'zero?': 1, 'zip': 1 + } + }; + var YARDOCTAG = { + className: 'yardoctag', + begin: '@[A-Za-z]+' + }; + var COMMENTS = [ + { + className: 'comment', + begin: '#', end: '$', + contains: [YARDOCTAG] + }, + { + className: 'comment', + begin: '^\\=begin', end: '^\\=end', + contains: [YARDOCTAG], + relevance: 10 + }, + { + className: 'comment', + begin: '^__END__', end: '\\n$' + } + ]; + var SUBST = { + className: 'subst', + begin: '#\\{', end: '}', + lexems: RUBY_IDENT_RE, + keywords: RUBY_KEYWORDS + }; + var STR_CONTAINS = [hljs.BACKSLASH_ESCAPE, SUBST]; + var STRINGS = [ + { + className: 'string', + begin: '\'', end: '\'', + contains: STR_CONTAINS, + relevance: 0 + }, + { + className: 'string', + begin: '"', end: '"', + contains: STR_CONTAINS, + relevance: 0 + }, + { + className: 'string', + begin: '%[qw]?\\(', end: '\\)', + contains: STR_CONTAINS, + relevance: 10 + }, + { + className: 'string', + begin: '%[qw]?\\[', end: '\\]', + contains: STR_CONTAINS, + relevance: 10 + }, + { + className: 'string', + begin: '%[qw]?{', end: '}', + contains: STR_CONTAINS, + relevance: 10 + }, + { + className: 'string', + begin: '%[qw]?<', end: '>', + contains: STR_CONTAINS, + relevance: 10 + }, + { + className: 'string', + begin: '%[qw]?/', end: '/', + contains: STR_CONTAINS, + relevance: 10 + }, + { + className: 'string', + begin: '%[qw]?%', end: '%', + contains: STR_CONTAINS, + relevance: 10 + }, + { + className: 'string', + begin: '%[qw]?-', end: '-', + contains: STR_CONTAINS, + relevance: 10 + }, + { + className: 'string', + begin: '%[qw]?\\|', end: '\\|', + contains: STR_CONTAINS, + relevance: 10 + } + ]; + var FUNCTION = { + className: 'function', + begin: '\\bdef\\s+', end: ' |$|;', + lexems: RUBY_IDENT_RE, + keywords: RUBY_KEYWORDS, + contains: [ + { + className: 'title', + begin: RUBY_METHOD_RE, + lexems: RUBY_IDENT_RE, + keywords: RUBY_KEYWORDS + }, + { + className: 'params', + begin: '\\(', end: '\\)', + lexems: RUBY_IDENT_RE, + keywords: RUBY_KEYWORDS + } + ].concat(COMMENTS) + }; + var IDENTIFIER = { + className: 'identifier', + begin: RUBY_IDENT_RE, + lexems: RUBY_IDENT_RE, + keywords: RUBY_KEYWORDS, + relevance: 0 + }; + + var RUBY_DEFAULT_CONTAINS = COMMENTS.concat(STRINGS.concat([ + { + className: 'class', + begin: '\\b(class|module)\\b', end: '$|;', + keywords: {'class': 1, 'module': 1}, + contains: [ + { + className: 'title', + begin: '[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?', + relevance: 0 + }, + { + className: 'inheritance', + begin: '<\\s*', + contains: [{ + className: 'parent', + begin: '(' + hljs.IDENT_RE + '::)?' + hljs.IDENT_RE + }] + } + ].concat(COMMENTS) + }, + FUNCTION, + { + className: 'constant', + begin: '(::)?([A-Z]\\w*(::)?)+', + relevance: 0 + }, + { + className: 'symbol', + begin: ':', + contains: STRINGS.concat([IDENTIFIER]), + relevance: 0 + }, + { + className: 'number', + begin: '(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b', + relevance: 0 + }, + { + className: 'number', + begin: '\\?\\w' + }, + { + className: 'variable', + begin: '(\\$\\W)|((\\$|\\@\\@?)(\\w+))' + }, + IDENTIFIER, + { // regexp container + begin: '(' + hljs.RE_STARTERS_RE + ')\\s*', + contains: COMMENTS.concat([ + { + className: 'regexp', + begin: '/', end: '/[a-z]*', + illegal: '\\n', + contains: [hljs.BACKSLASH_ESCAPE] + } + ]), + relevance: 0 + } + ])); + SUBST.contains = RUBY_DEFAULT_CONTAINS; + FUNCTION.contains[1].contains = RUBY_DEFAULT_CONTAINS; + + return { + defaultMode: { + lexems: RUBY_IDENT_RE, + keywords: RUBY_KEYWORDS, + contains: RUBY_DEFAULT_CONTAINS + } + }; +}(); diff --git a/output/Scratch/js/highlight/languages/rust.js b/output/Scratch/js/highlight/languages/rust.js new file mode 100644 index 000000000..f97d8f64a --- /dev/null +++ b/output/Scratch/js/highlight/languages/rust.js @@ -0,0 +1,80 @@ +/* +Language: Rust +Author: Andrey Vlasovskikh +*/ + +hljs.LANGUAGES.rust = function() { + var TITLE = { + className: 'title', + begin: hljs.UNDERSCORE_IDENT_RE + }; + var QUOTE_STRING = { + className: 'string', + begin: '"', end: '"', + contains: [hljs.BACKSLASH_ESCAPE], + relevance: 0 + }; + var NUMBER = { + className: 'number', + begin: '\\b(0[xb][A-Za-z0-9_]+|[0-9_]+(\\.[0-9_]+)?([uif](8|16|32|64)?)?)', + relevance: 0 + }; + var KEYWORDS = { + 'alt': 1, 'any': 1, 'as': 1, 'assert': 1, + 'be': 1, 'bind': 1, 'block': 1, 'bool': 1, 'break': 1, + 'char': 1, 'check': 1, 'claim': 1, 'const': 1, 'cont': 1, + 'dir': 1, 'do': 1, + 'else': 1, 'enum': 1, 'export': 1, + 'f32': 1, 'f64': 1, 'fail': 1, 'false': 1, 'float': 1, 'fn': 10, 'for': 1, + 'i16': 1, 'i32': 1, 'i64': 1, 'i8': 1, 'if': 1, 'iface': 10, 'impl': 10, 'import': 1, 'in': 1, 'int': 1, + 'let': 1, 'log': 1, + 'mod': 1, 'mutable': 1, + 'native': 1, 'note': 1, + 'of': 1, + 'prove': 1, 'pure': 10, + 'resource': 1, 'ret': 1, + 'self': 1, 'str': 1, 'syntax': 1, + 'true': 1, 'type': 1, + 'u16': 1, 'u32': 1, 'u64': 1, 'u8': 1, 'uint': 1, 'unchecked': 1, 'unsafe': 1, 'use': 1, + 'vec': 1, + 'while': 1 + }; + return { + defaultMode: { + keywords: KEYWORDS, + illegal: ' +*/ + +hljs.LANGUAGES.scala = function() { + var ANNOTATION = { + className: 'annotation', begin: '@[A-Za-z]+' + }; + var STRING = { + className: 'string', + begin: 'u?r?"""', end: '"""', + relevance: 10 + }; + return { + defaultMode: { + keywords: { + 'type': 1, 'yield': 1, 'lazy': 1, 'override': 1, 'def': 1, 'with': 1, 'val':1, 'var': 1, 'false': 1, 'true': 1, + 'sealed': 1, 'abstract': 1, 'private': 1, 'trait': 1, 'object': 1, 'null': 1, 'if': 1, 'for': 1, 'while': 1, + 'throw': 1, 'finally': 1, 'protected': 1, 'extends': 1, 'import': 1, 'final': 1, 'return': 1, 'else': 1, + 'break': 1, 'new': 1, 'catch': 1, 'super': 1, 'class': 1, 'case': 1,'package': 1, 'default': 1, 'try': 1, + 'this': 1, 'match': 1, 'continue': 1, 'throws': 1 + }, + contains: [ + { + className: 'javadoc', + begin: '/\\*\\*', end: '\\*/', + contains: [{ + className: 'javadoctag', + begin: '@[A-Za-z]+' + }], + relevance: 10 + }, + hljs.C_LINE_COMMENT_MODE, hljs.C_BLOCK_COMMENT_MODE, + hljs.APOS_STRING_MODE, hljs.QUOTE_STRING_MODE, STRING, + { + className: 'class', + begin: '((case )?class |object |trait )', end: '({|$)', + illegal: ':', + keywords: {'case' : 1, 'class': 1, 'trait': 1, 'object': 1}, + contains: [ + { + begin: '(extends|with)', + keywords: {'extends': 1, 'with': 1}, + relevance: 10 + }, + { + className: 'title', + begin: hljs.UNDERSCORE_IDENT_RE + }, + { + className: 'params', + begin: '\\(', end: '\\)', + contains: [ + hljs.APOS_STRING_MODE, hljs.QUOTE_STRING_MODE, STRING, + ANNOTATION + ] + } + ] + }, + hljs.C_NUMBER_MODE, + ANNOTATION + ] + } + }; +}(); diff --git a/output/Scratch/js/highlight/languages/smalltalk.js b/output/Scratch/js/highlight/languages/smalltalk.js new file mode 100644 index 000000000..4f3c4f29f --- /dev/null +++ b/output/Scratch/js/highlight/languages/smalltalk.js @@ -0,0 +1,55 @@ +/* +Language: Smalltalk +Author: Vladimir Gubarkov +*/ + +hljs.LANGUAGES.smalltalk = function() { + var VAR_IDENT_RE = '[a-z][a-zA-Z0-9_]*'; + var CHAR = { + className: 'char', + begin: '\\$.{1}' + }; + var SYMBOL = { + className: 'symbol', + begin: '#' + hljs.UNDERSCORE_IDENT_RE + }; + return { + defaultMode: { + keywords: {'self': 1, 'super': 1, 'nil': 1, 'true': 1, 'false': 1, 'thisContext': 1}, // only 6 + contains: [ + { + className: 'comment', + begin: '"', end: '"', + relevance: 0 + }, + hljs.APOS_STRING_MODE, + { + className: 'class', + begin: '\\b[A-Z][A-Za-z0-9_]*', + relevance: 0 + }, + { + className: 'method', + begin: VAR_IDENT_RE + ':' + }, + hljs.C_NUMBER_MODE, + SYMBOL, + CHAR, + { + className: 'localvars', + begin: '\\|\\s*((' + VAR_IDENT_RE + ')\\s*)+\\|' + }, + { + className: 'array', + begin: '\\#\\(', end: '\\)', + contains: [ + hljs.APOS_STRING_MODE, + CHAR, + hljs.C_NUMBER_MODE, + SYMBOL + ] + } + ] + } + }; +}(); diff --git a/output/Scratch/js/highlight/languages/sql.js b/output/Scratch/js/highlight/languages/sql.js new file mode 100644 index 000000000..376da7f81 --- /dev/null +++ b/output/Scratch/js/highlight/languages/sql.js @@ -0,0 +1,90 @@ +/* +Language: SQL +*/ + +hljs.LANGUAGES.sql = { + case_insensitive: true, + defaultMode: { + illegal: '[^\\s]', + contains: [ + { + className: 'operator', + begin: '(begin|start|commit|rollback|savepoint|lock|alter|create|drop|rename|call|delete|do|handler|insert|load|replace|select|truncate|update|set|show|pragma|grant)\\b', end: ';|$', + keywords: { + 'keyword': { + 'all': 1, 'partial': 1, 'global': 1, 'month': 1, + 'current_timestamp': 1, 'using': 1, 'go': 1, 'revoke': 1, + 'smallint': 1, 'indicator': 1, 'end-exec': 1, 'disconnect': 1, + 'zone': 1, 'with': 1, 'character': 1, 'assertion': 1, 'to': 1, + 'add': 1, 'current_user': 1, 'usage': 1, 'input': 1, 'local': 1, + 'alter': 1, 'match': 1, 'collate': 1, 'real': 1, 'then': 1, + 'rollback': 1, 'get': 1, 'read': 1, 'timestamp': 1, + 'session_user': 1, 'not': 1, 'integer': 1, 'bit': 1, 'unique': 1, + 'day': 1, 'minute': 1, 'desc': 1, 'insert': 1, 'execute': 1, + 'like': 1, 'ilike': 2, 'level': 1, 'decimal': 1, 'drop': 1, + 'continue': 1, 'isolation': 1, 'found': 1, 'where': 1, + 'constraints': 1, 'domain': 1, 'right': 1, 'national': 1, 'some': 1, + 'module': 1, 'transaction': 1, 'relative': 1, 'second': 1, + 'connect': 1, 'escape': 1, 'close': 1, 'system_user': 1, 'for': 1, + 'deferred': 1, 'section': 1, 'cast': 1, 'current': 1, 'sqlstate': 1, + 'allocate': 1, 'intersect': 1, 'deallocate': 1, 'numeric': 1, + 'public': 1, 'preserve': 1, 'full': 1, 'goto': 1, 'initially': 1, + 'asc': 1, 'no': 1, 'key': 1, 'output': 1, 'collation': 1, 'group': 1, + 'by': 1, 'union': 1, 'session': 1, 'both': 1, 'last': 1, + 'language': 1, 'constraint': 1, 'column': 1, 'of': 1, 'space': 1, + 'foreign': 1, 'deferrable': 1, 'prior': 1, 'connection': 1, + 'unknown': 1, 'action': 1, 'commit': 1, 'view': 1, 'or': 1, + 'first': 1, 'into': 1, 'float': 1, 'year': 1, 'primary': 1, + 'cascaded': 1, 'except': 1, 'restrict': 1, 'set': 1, 'references': 1, + 'names': 1, 'table': 1, 'outer': 1, 'open': 1, 'select': 1, + 'size': 1, 'are': 1, 'rows': 1, 'from': 1, 'prepare': 1, + 'distinct': 1, 'leading': 1, 'create': 1, 'only': 1, 'next': 1, + 'inner': 1, 'authorization': 1, 'schema': 1, 'corresponding': 1, + 'option': 1, 'declare': 1, 'precision': 1, 'immediate': 1, 'else': 1, + 'timezone_minute': 1, 'external': 1, 'varying': 1, 'translation': 1, + 'true': 1, 'case': 1, 'exception': 1, 'join': 1, 'hour': 1, + 'default': 1, 'double': 1, 'scroll': 1, 'value': 1, 'cursor': 1, + 'descriptor': 1, 'values': 1, 'dec': 1, 'fetch': 1, 'procedure': 1, + 'delete': 1, 'and': 1, 'false': 1, 'int': 1, 'is': 1, 'describe': 1, + 'char': 1, 'as': 1, 'at': 1, 'in': 1, 'varchar': 1, 'null': 1, + 'trailing': 1, 'any': 1, 'absolute': 1, 'current_time': 1, 'end': 1, + 'grant': 1, 'privileges': 1, 'when': 1, 'cross': 1, 'check': 1, + 'write': 1, 'current_date': 1, 'pad': 1, 'begin': 1, 'temporary': 1, + 'exec': 1, 'time': 1, 'update': 1, 'catalog': 1, 'user': 1, 'sql': 1, + 'date': 1, 'on': 1, 'identity': 1, 'timezone_hour': 1, 'natural': 1, + 'whenever': 1, 'interval': 1, 'work': 1, 'order': 1, 'cascade': 1, + 'diagnostics': 1, 'nchar': 1, 'having': 1, 'left': 1, 'call': 1, + 'do': 1, 'handler': 1, 'load': 1, 'replace': 1, 'truncate': 1, + 'start': 1, 'lock': 1, 'show': 1, 'pragma': 1}, + 'aggregate': {'count': 1, 'sum': 1, 'min': 1, 'max': 1, 'avg': 1} + }, + contains: [ + { + className: 'string', + begin: '\'', end: '\'', + contains: [hljs.BACKSLASH_ESCAPE, {begin: '\'\''}], + relevance: 0 + }, + { + className: 'string', + begin: '"', end: '"', + contains: [hljs.BACKSLASH_ESCAPE, {begin: '""'}], + relevance: 0 + }, + { + className: 'string', + begin: '`', end: '`', + contains: [hljs.BACKSLASH_ESCAPE] + }, + hljs.C_NUMBER_MODE, + {begin: '\\n'} + ] + }, + hljs.C_BLOCK_COMMENT_MODE, + { + className: 'comment', + begin: '--', end: '$' + } + ] + } +}; diff --git a/output/Scratch/js/highlight/languages/tex.js b/output/Scratch/js/highlight/languages/tex.js new file mode 100644 index 000000000..36da6ecba --- /dev/null +++ b/output/Scratch/js/highlight/languages/tex.js @@ -0,0 +1,62 @@ +/* +Language: TeX +Author: Vladimir Moskva +Website: http://fulc.ru/ +*/ + +hljs.LANGUAGES.tex = function() { + var COMMAND1 = { + className: 'command', + begin: '\\\\[a-zA-Zа-яА-я]+[\\*]?', + relevance: 10 + }; + var COMMAND2 = { + className: 'command', + begin: '\\\\[^a-zA-Zа-яА-я0-9]', + relevance: 0 + }; + var SPECIAL = { + className: 'special', + begin: '[{}\\[\\]\\&#~]', + relevance: 0 + }; + + return { + defaultMode: { + contains: [ + { // parameter + begin: '\\\\[a-zA-Zа-яА-я]+[\\*]? *= *-?\\d*\\.?\\d+(pt|pc|mm|cm|in|dd|cc|ex|em)?', + returnBegin: true, + contains: [ + COMMAND1, COMMAND2, + { + className: 'number', + begin: ' *=', end: '-?\\d*\\.?\\d+(pt|pc|mm|cm|in|dd|cc|ex|em)?', + excludeBegin: true + } + ], + relevance: 10 + }, + COMMAND1, COMMAND2, + SPECIAL, + { + className: 'formula', + begin: '\\$\\$', end: '\\$\\$', + contains: [COMMAND1, COMMAND2, SPECIAL], + relevance: 0 + }, + { + className: 'formula', + begin: '\\$', end: '\\$', + contains: [COMMAND1, COMMAND2, SPECIAL], + relevance: 0 + }, + { + className: 'comment', + begin: '%', end: '$', + relevance: 0 + } + ] + } + }; +}(); diff --git a/output/Scratch/js/highlight/languages/vala.js b/output/Scratch/js/highlight/languages/vala.js new file mode 100644 index 000000000..e730050b7 --- /dev/null +++ b/output/Scratch/js/highlight/languages/vala.js @@ -0,0 +1,74 @@ +/* +Language: Vala +Author: Antono Vasiljev +Description: Vala is a new programming language that aims to bring modern programming language features to GNOME developers without imposing any additional runtime requirements and without using a different ABI compared to applications and libraries written in C. +*/ + +hljs.LANGUAGES.vala = { + defaultMode: { + keywords: { + keyword: { + // Value types + 'char': 1, 'uchar': 1, 'unichar': 1, + 'int': 1, 'uint': 1, 'long': 1, 'ulong': 1, + 'short': 1, 'ushort': 1, + 'int8': 1, 'int16': 1, 'int32': 1, 'int64': 1, + 'uint8': 1, 'uint16': 1, 'uint32': 1, 'uint64': 1, + 'float': 1, 'double': 1, 'bool': 1, 'struct': 1, 'enum': 1, + 'string': 1, 'void': 1, + // Reference types + 'weak': 5, 'unowned': 5, 'owned': 5, + // Modifiers + 'async': 5, 'signal': 5, 'static': 1, 'abstract': 1, 'interface': 1, 'override': 1, + // Control Structures + 'while': 1, 'do': 1, 'for': 1, 'foreach': 1, 'else': 1, 'switch': 1, + 'case': 1, 'break': 1, 'default': 1, 'return': 1, 'try': 1, 'catch': 1, + // Visibility + 'public': 1, 'private': 1, 'protected': 1, 'internal': 1, + // Other + 'using': 1, 'new': 1, 'this': 1, 'get': 1, 'set': 1, 'const': 1, + 'stdout': 1, 'stdin': 1, 'stderr': 1, 'var': 1, + // Builtins + 'DBus': 2, 'GLib': 2, 'CCode': 10, 'Gee': 10, 'Object': 1 + }, + literal: { 'false': 1, 'true': 1, 'null': 1 } + }, + contains: [ + { + className: 'class', + begin: '(class |interface |delegate |namespace )', end: '{', + keywords: {'class': 1, 'interface': 1}, + contains: [ + { + begin: '(implements|extends)', + keywords: {'extends': 1, 'implements': 1} + }, + { + className: 'title', + begin: hljs.UNDERSCORE_IDENT_RE + } + ] + }, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + { + className: 'string', + begin: '"""', end: '"""', + relevance: 5 + }, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + hljs.C_NUMBER_MODE, + { + className: 'preprocessor', + begin: '^#', end: '$', + relevance: 2 + }, + { + className: 'constant', + begin: ' [A-Z_]+ ', + relevance: 0 + } + ] + } +}; diff --git a/output/Scratch/js/highlight/languages/vbscript.js b/output/Scratch/js/highlight/languages/vbscript.js new file mode 100644 index 000000000..7f4394b29 --- /dev/null +++ b/output/Scratch/js/highlight/languages/vbscript.js @@ -0,0 +1,54 @@ +/* +Language: VBScript +Author: Nikita Ledyaev +Contributors: Michal Gabrukiewicz +*/ + +hljs.LANGUAGES.vbscript = { + case_insensitive: true, + defaultMode: { + keywords: { + 'keyword': { + 'call': 1, 'class': 1, 'const': 1, 'dim': 1, 'do': 1, 'loop': 1, 'erase': 1, 'execute': 1, 'executeglobal': 1, + 'exit': 1, 'for': 1, 'each': 1, 'next': 1, 'function': 1, 'if': 1, 'then': 1, 'else': 1, 'on': 1, 'error': 1, + 'option': 1, 'explicit': 1, 'new': 1, 'private': 1, 'property': 1, 'let': 1, 'get': 1, 'public': 1, + 'randomize': 1, 'redim': 1, 'rem': 1, 'select': 1, 'case': 1, 'set': 1, 'stop': 1, 'sub': 1, 'while': 1, + 'wend': 1, 'with': 1, 'end': 1, 'to': 1, 'elseif': 1, 'is': 1, 'or': 1, 'xor': 1, 'and': 1, 'not': 1, + 'class_initialize': 1, 'class_terminate': 1, 'default': 1, 'preserve': 1, 'in': 1, 'me': 1, 'byval': 1, + 'byref': 1, 'step': 1, 'resume': 1, 'goto': 1 + }, + 'built_in': { + 'lcase': 1, 'month': 1, 'vartype': 1, 'instrrev': 1, 'ubound': 1, 'setlocale': 1, 'getobject': 1, + 'rgb': 1, 'getref': 1, 'string': 1, 'weekdayname': 1, 'rnd': 1, 'dateadd': 1, 'monthname': 1, 'now': 1, + 'day': 1, 'minute': 1, 'isarray': 1, 'cbool': 1, 'round': 1, 'formatcurrency': 1, 'conversions': 1, + 'csng': 1, 'timevalue': 1, 'second': 1, 'year': 1, 'space': 1, 'abs': 1, 'clng': 1, 'timeserial': 1, + 'fixs': 1, 'len': 1, 'asc': 1, 'isempty': 1, 'maths': 1, 'dateserial': 1, 'atn': 1, 'timer': 1, + 'isobject': 1, 'filter': 1, 'weekday': 1, 'datevalue': 1, 'ccur': 1, 'isdate': 1, 'instr': 1, 'datediff': 1, + 'formatdatetime': 1, 'replace': 1, 'isnull': 1, 'right': 1, 'sgn': 1, 'array': 1, 'snumeric': 1, 'log': 1, + 'cdbl': 1, 'hex': 1, 'chr': 1, 'lbound': 1, 'msgbox': 1, 'ucase': 1, 'getlocale': 1, 'cos': 1, 'cdate': 1, + 'cbyte': 1, 'rtrim': 1, 'join': 1, 'hour': 1, 'oct': 1, 'typename': 1, 'trim': 1, 'strcomp': 1, 'int': 1, + 'createobject': 1, 'loadpicture': 1, 'tan': 1, 'formatnumber': 1, 'mid': 1, 'scriptenginebuildversion': 1, + 'scriptengine': 1, 'split': 1, 'scriptengineminorversion': 1, 'cint': 1, 'sin': 1, 'datepart': 1, 'ltrim': 1, + 'sqr': 1, 'scriptenginemajorversion': 1, 'time': 1, 'derived': 1, 'eval': 1, 'date': 1, 'formatpercent': 1, + 'exp': 1, 'inputbox': 1, 'left': 1, 'ascw': 1, 'chrw': 1, 'regexp': 1, 'server': 1, 'response': 1, + 'request': 1, 'cstr': 1, 'err': 1 + }, + 'literal': {'true': 1, 'false': 1, 'null': 1, 'nothing': 1, 'empty': 1} + }, + illegal: '//', + contains: [ + { // can't use standard QUOTE_STRING_MODE since it's compiled with its own escape and doesn't use the local one + className: 'string', + begin: '"', end: '"', + illegal: '\\n', + contains: [{begin: '""'}], + relevance: 0 + }, + { + className: 'comment', + begin: '\'', end: '$' + }, + hljs.C_NUMBER_MODE + ] + } +}; diff --git a/output/Scratch/js/highlight/languages/vhdl.js b/output/Scratch/js/highlight/languages/vhdl.js new file mode 100644 index 000000000..9f5c359a5 --- /dev/null +++ b/output/Scratch/js/highlight/languages/vhdl.js @@ -0,0 +1,46 @@ +/* +Language: VHDL +Description: VHDL is a hardware description language used in electronic design automation to describe digital and mixed-signal systems. +Author: Igor Kalnitsky +Website: http://kalnitsky.org.ua/ +*/ + +hljs.LANGUAGES.vhdl = { + case_insensitive: true, + defaultMode: { + keywords: { + 'keyword': { + 'abs': 1, 'access': 1, 'after': 1, 'alias': 1, 'all': 1, 'and': 1, 'architecture': 2, 'array': 1, 'assert': 1, + 'attribute': 1, 'begin': 1, 'block': 1, 'body': 1, 'buffer': 1, 'bus': 1, 'case': 1, 'component': 2, + 'configuration': 1, 'constant': 1, 'disconnect': 2, 'downto': 2, 'else': 1, 'elsif': 1, 'end': 1, 'entity': 2, + 'exit': 1, 'file': 1, 'for': 1, 'function': 1, 'generate': 2, 'generic': 2, 'group': 1, 'guarded': 2, 'if': 0, + 'impure': 2, 'in': 1, 'inertial': 1, 'inout': 1, 'is': 1, 'label': 1, 'library': 1, 'linkage': 1, 'literal': 1, + 'loop': 1, 'map': 1, 'mod': 1, 'nand': 1, 'new': 1, 'next': 1, 'nor': 1, 'not': 1, 'null': 1, 'of': 1, 'on': 1, + 'open': 1, 'or': 1, 'others': 1, 'out': 1, 'package': 1, 'port': 2, 'postponed': 1, 'procedure': 1, + 'process': 1, 'pure': 2, 'range': 1, 'record': 1, 'register': 1, 'reject': 1, 'return': 1, 'rol': 1, 'ror': 1, + 'select': 1, 'severity': 1, 'signal': 1, 'shared': 1, 'sla': 1, 'sli': 1, 'sra': 1, 'srl': 1, 'subtype': 2, + 'then': 1, 'to': 1, 'transport': 1, 'type': 1, 'units': 1, 'until': 1, 'use': 1, 'variable': 1, 'wait': 1, + 'when': 1, 'while': 1, 'with': 1, 'xnor': 1, 'xor': 1 + }, + 'type': { + 'boolean': 1, 'bit': 1, 'character': 1, 'severity_level': 2, 'integer': 1, 'time': 1, 'delay_length': 2, + 'natural': 1, 'positive': 1, 'string': 1, 'bit_vector': 2, 'file_open_kind': 2, 'file_open_status': 2, + 'std_ulogic': 2, 'std_ulogic_vector': 2, 'std_logic': 2, 'std_logic_vector': 2 + } + }, + illegal: '{', + contains: [ + { + className: 'comment', + begin: '--', end: '$' + }, + hljs.QUOTE_STRING_MODE, + hljs.C_NUMBER_MODE, + { + className: 'literal', + begin: '\'(U|X|0|1|Z|W|L|H|-)', end: '\'', + contains: [hljs.BACKSLASH_ESCAPE] + } + ] + } +}; diff --git a/output/Scratch/js/highlight/languages/xml.js b/output/Scratch/js/highlight/languages/xml.js new file mode 100644 index 000000000..24f377eca --- /dev/null +++ b/output/Scratch/js/highlight/languages/xml.js @@ -0,0 +1,110 @@ +/* +Language: HTML, XML +*/ + +hljs.LANGUAGES.xml = function(){ + var XML_IDENT_RE = '[A-Za-z0-9\\._:-]+'; + var TAG_INTERNALS = { + endsWithParent: true, + contains: [ + { + className: 'attribute', + begin: XML_IDENT_RE, + relevance: 0 + }, + { + begin: '="', returnBegin: true, end: '"', + contains: [{ + className: 'value', + begin: '"', endsWithParent: true + }] + }, + { + begin: '=\'', returnBegin: true, end: '\'', + contains: [{ + className: 'value', + begin: '\'', endsWithParent: true + }] + }, + { + begin: '=', + contains: [{ + className: 'value', + begin: '[^\\s/>]+' + }] + } + ] + }; + return { + case_insensitive: true, + defaultMode: { + contains: [ + { + className: 'pi', + begin: '<\\?', end: '\\?>', + relevance: 10 + }, + { + className: 'doctype', + begin: '', + relevance: 10, + contains: [{begin: '\\[', end: '\\]'}] + }, + { + className: 'comment', + begin: '', + relevance: 10 + }, + { + className: 'cdata', + begin: '<\\!\\[CDATA\\[', end: '\\]\\]>', + relevance: 10 + }, + { + className: 'tag', + /* + The lookahead pattern (?=...) ensures that 'begin' only matches + '|$)', end: '>', + keywords: {'title': {'style': 1}}, + contains: [TAG_INTERNALS], + starts: { + className: 'css', + end: '', returnEnd: true, + subLanguage: 'css' + } + }, + { + className: 'tag', + // See the comment in the + + + + + + + +

This is a demo/test page showing all languages supported by highlight.js. +Most snippets do not contain working code :-). + +

+

Styles

+
+ +

Automatically detected languages

+ +

...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Python + +
+@requires_authorization
+def somefunc(param1='', param2=0):
+    r'''A docstring'''
+    if param1 > param2: # interesting
+        print 'Gre\'ater'
+    return (param2 - param1 + 1) or None
+
+class SomeClass:
pass +
+ +
Python's profiler output + +
       261917242 function calls in 686.251 CPU seconds
+
+       ncalls  tottime  filename:lineno(function)
+       152824  513.894  {method 'sort' of 'list' objects}
+    129590630   83.894  rrule.py:842(__cmp__)
+    129590630   82.439  {cmp}
+       153900    1.296  rrule.py:399(_iter)
+304393/151570    0.963  rrule.py:102(_iter_cached)
+
+ +
Ruby + +
class A < B; def self.create(object = User) object end end
+class Zebra; def inspect; "X#{2 + self.object_id}" end end
+
+module ABC::DEF
+  include Comparable
+
+  # @param test
+  # @return [String] nothing
+  def foo(test)
+    Thread.new do |blockvar|
+      ABC::DEF.reverse(:a_symbol, :'a symbol' + 'test' + test)
+    end.join
+  end
+
+  def [](index) self[index] end
+  def ==(other) other == self end
+end
+
+anIdentifier = an_identifier
+Constant = 1
+
+ +
Perl + +
# loads object
+sub load
+{
+  my $flds = $c->db_load($id,@_) || do {
+    Carp::carp "Can`t load (class: $c, id: $id): '$!'"; return undef
+  };
+  my $o = $c->_perl_new();
+  $id12 = $id / 24 / 3600;
+  $o->{'ID'} = $id12 + 123;
+  $o->{'PAPA'} = $flds->{'PAPA'};
+  #$o->{'SHCUT'} = $flds->{'SHCUT'};
+  my $p = $o->props;
+  my $vt;
+  $string =~ m/^sought_text$/;
+  $items = split //, 'abc';
+  for my $key (keys %$p)
+  {
+    if(${$vt.'::property'}) {
+      $o->{$key . '_real'} = $flds->{$key};
+      tie $o->{$key}, 'CMSBuilder::Property', $o, $key;
+    } else {
+      $o->{$key} = $flds->{$key};
+      $o->kill();
+    }
+  }
+  $o->save if delete $o->{'_save_after_load'};
+  return $o;
+}
+
+foreach my $num (0..$#array) {
+  # something
+}
+
+ +
PHP + +
require_once 'Zend.php';
+require_once 'Zend/Uri/Exception.php';
+require_once 'Zend/Uri/Http.php';
+require_once 'Zend/Uri/Mailto.php';
+
+abstract class Zend_Uri
+{
+
+  /**
+   * Return a string representation of this URI.
+   *
+   * @see     getUri()
+   * @return  string
+   */
+  public function __toString()
+  {
+      return $this->getUri();
+  }
+
+  static public function factory($uri = 'http')
+  {
+      $uri = explode(':', $uri, 2);
+      $scheme = strtolower($uri[0]);
+      $schemeSpecific = isset($uri[1]) ? $uri[1] : '';
+      $desc = 'Multi
+line description';
+
+      // Security check: $scheme is used to load a class file,
+      // so only alphanumerics are allowed.
+      if (!ctype_alnum($scheme)) {
+          throw new Zend_Uri_Exception('Illegal scheme');
+      }
+  }
+}
+
+__halt_compiler () ; datahere
+datahere
+datahere */
+datahere
+
+
+ +
Scala + +
object abstractTypes extends Application {
+  abstract class SeqBuffer {
+    type T; val element: Seq[T]; def length = element.length
+  }
+}
+
+/** Turn command line arguments to uppercase */
+object Main {
+  def main(args: Array[String]) {
+    val res = for (a <- args) yield a.toUpperCase
+    println("Arguments: " + res.toString)
+  }
+}
+
+/** Maps are easy to use in Scala. */
+object Maps {
+  val colors = Map("red" -> 0xFF0000,
+                   "turquoise" -> 0x00FFFF,
+                   "black" -> 0x000000,
+                   "orange" -> 0xFF8040,
+                   "brown" -> 0x804000)
+  def main(args: Array[String]) {
+    for (name <- args) println(
+      colors.get(name) match {
+        case Some(code) =>
+          name + " has code: " + code
+        case None =>
+          "Unknown color: " + name
+      }
+    )
+  }
+}
+
+ +
Go + +
package main
+
+import (
+    "fmt"
+    "rand"
+    "os"
+)
+
+const (
+    Sunday = iota
+    Partyday
+    numberOfDays  // this constant is not exported
+)
+
+type Foo interface {
+    FooFunc(int, float32) (complex128, []int)
+}
+
+// simple comment
+type Bar struct {
+    os.File /* multi
+    line
+    comment */
+
+    PublicData chan int
+}
+
+func main() {
+    ch := make(chan int)
+    ch <- 1
+    x, ok := <- ch
+    ok = true
+    x = nil
+    float_var := 1.0e10
+    defer fmt.Println('\'')
+    defer fmt.Println(`exitting now\`)
+    var fv1 float64 = 0.75
+    go println(len("hello world!"))
+    return
+}
+
+
+ +
XML + +
<?xml version="1.0"?>
+<response value="ok" xml:lang="en">
+  <text>Ok</text>
+  <comment html_allowed="true"/>
+  <ns1:description><![CDATA[
+  CDATA is <not> magical.
+  ]]></ns1:description>
+  <a></a> <a/>
+</response>
+
+ +
HTML (with inline css and javascript) + +
<!DOCTYPE html5>
+<head>
+  <title>Title</title>
+
+  <style>
+    body {
+      width: 500px;
+    }
+  </style>
+
+  <script type="application/javascript">
+    function someFunction() {
+      return true;
+    }
+  </script>
+
+<body>
+  <p class="something" id='12'>Something</p>
+  <p class=something>Something</p>
+  <!-- comment -->
+  <p class>Something</p>
+  <p class="something" title="p">Something</p>
+</body>
+
+ +
Markdown + +
+# hello world
+
+you can write text [with links](http://example.com).
+
+* one _thing_ has *em*phasis
+* two __things__ are **bold**
+
+---
+
+hello world
+===========
+
+<this_is inline="xml"></this_is>
+
+> markdown is so cool
+
+    so are code segments
+
+1. one thing (yeah!)
+2. two thing `i can write code`, and `more` wipee!
+
+ +
Django templates + +
{% if articles|length %}
+{% for article in articles %}
+
+{# Striped table #}
+<tr class="{% cycle odd,even %}">
+  <td>{{ article|default:"Hi... "|escape }}</td>
+  <td {% if article.today %}class="today"{% endif %}>{{ article.date|date:"d.m.Y" }}</td>
+</tr>
+
+{% endfor %}
+{% endif %}
+
+{% comment %}
+Comments may be long and
+multiline.
+{% endcomment %}
+
+ +
CSS + +
body,
+html {
+  font: Tahoma, Arial, san-serif;
+  background: url('hatch.png');
+}
+
+@import url('print.css');
+
+@media screen and (-webkit-min-device-pixel-ratio: 0) {
+  body:first-of-type pre::after {
+    content: 'highlight: ' attr(class);
+  }
+}
+
+@page:right {
+ margin: 1cm 2cm 1.3cm 4cm;
+}
+
+@font-face {
+	font-family: Chunkfive;
+	src: url('Chunkfive.otf');
+}
+
+#content {
+  width: /* wide enough */ 100% /* 400px */;
+  height: 100%
+}
+
+p[lang=ru] {
+  color: #F0F0F0; background: white !important;
+}
+
+ +
JavaScript + +
function $initHighlight(block) {
+  if (block.className.search(/\bno\-highlight\b/) != -1)
+    return false;
+  try {
+    blockText(block);
+  } catch (e) {
+    if (e == 'Complex markup')
+      return;
+  }//try
+  var classes = block.className.split(/\s+/);
+  for (var i = 0 / 2; i < classes.length; i++) { // "0 / 2" should not be parsed as regexp start
+    if (LANGUAGES[classes[i]]) {
+      highlightLanguage(block, classes[i]);
+      return;
+    }//if
+  }//for
+  highlightAuto(block);
+}//initHighlight
+ +
CoffeeScript + +
grade = (student) ->
+  if student.excellentWork
+    "A+"
+  else if student.okayStuff
+    if student.triedHard then "B" else "B-"
+  else
+    "C"
+
+eldest = if 24 > 21 then "Liz" else "Ike"
+
+square = (x) -> x * x
+
+two = -> 2
+
+math =
+  root:   Math.sqrt
+  square: square
+  cube:   (x) -> x * square x
+
+race = (winner, runners...) ->
+  print winner, runners
+
+hi = `function() {
+  return [document.title, "Hello JavaScript"].join(": ");
+}`
+
+substr = "JavaScript numbers test #{ 010 / 0xf }"
+
+heredoc = """
+CoffeeScript numbers test #{ 010 / 0b10 }
+"""
+
+###
+CoffeeScript Compiler v1.2.0
+Released under the MIT License
+###
+
+OPERATOR = /// ^ (
+?: [-=]>             # function
+ | [-+*/%<>&|^!?=]=  # compound assign / compare
+ | >>>=?             # zero-fill right shift
+ | ([-+:])\1         # doubles
+ | ([&|<>])\2=?      # logic / shift
+ | \?\.              # soak access
+ | \.{2,3}           # range or splat
+) ///
+ +
ActionScript + +
package org.example.dummy {
+    import org.dummy.*;
+
+    /*define package inline interface*/
+    public interface IFooBarzable {
+        public function foo(... pairs):Array;
+    }
+
+    public class FooBar implements IFooBarzable {
+        static private var cnt:uint = 0;
+
+        private var bar:String;
+
+        //constructor
+        public function TestBar(bar:String):void {
+            bar = bar;
+
+            ++cnt;
+        }
+
+        public function foo(... pairs):Array {
+            pairs.push(bar);
+
+            return pairs;
+        }
+
+        protected function includeTestFile():void {
+            include "Test.as";
+        }
+    }
+}
+ +
VBScript + +
' creating configuration storage and initializing with default values
+Set cfg = CreateObject("Scripting.Dictionary")
+
+' reading ini file
+for i = 0 to ubound(ini_strings)
+    s = trim(ini_strings(i))
+
+    ' skipping empty strings and comments
+    if mid(s, 1, 1) <> "#" and len(s) > 0 then
+      ' obtaining key and value
+      parts = split(s, "=", -1, 1)
+
+      if ubound(parts)+1 = 2 then
+        parts(0) = trim(parts(0))
+        parts(1) = trim(parts(1))
+
+        ' reading configuration and filenames
+        select case lcase(parts(0))
+          case "uncompressed""_postfix" cfg.item("uncompressed""_postfix") = parts(1)
+          case "f"
+                    options = split(parts(1), "|", -1, 1)
+                    if ubound(options)+1 = 2 then
+                      ' 0: filename,  1: options
+                      ff.add trim(options(0)), trim(options(1))
+                    end if
+        end select
+      end if
+    end if
+next
+ +
Lua + +
--[[
+Simple signal/slot implementation
+]]
+local signal_mt = {
+    __index = {
+        register = table.insert
+    }
+}
+function signal_mt.__index:emit(... --[[ Comment in params ]])
+    for _, slot in ipairs(self) do
+        slot(self, ...)
+    end
+end
+local function create_signal()
+    return setmetatable({}, signal_mt)
+end
+
+-- Signal test
+local signal = create_signal()
+signal:register(function (signal, ...)
+    print(...)
+end)
+signal:emit('Answer to Life, the Universe, and Everything:', 42)
+
+--[==[ [=[ [[
+Nested ]]
+multi-line ]=]
+comment ]==]
+[==[ Nested
+[=[ multi-line
+[[ string
+]] ]=] ]==]
+
+ +
Delphi + +
TList=Class(TObject)
+Private
+  Some: String;
+Public
+  Procedure Inside; // Suxx
+End;{TList}
+
+Procedure CopyFile(InFileName,var OutFileName:String);
+Const
+  BufSize=4096; (* Huh? *)
+Var
+  InFile,OutFile:TStream;
+  Buffer:Array[1..BufSize] Of Byte;
+  ReadBufSize:Integer;
+Begin
+  InFile:=Nil;
+  OutFile:=Nil;
+  Try
+    InFile:=TFileStream.Create(InFileName,fmOpenRead);
+    OutFile:=TFileStream.Create(OutFileName,fmCreate);
+    Repeat
+      ReadBufSize:=InFile.Read(Buffer,BufSize);
+      OutFile.Write(Buffer,ReadBufSize);
+    Until ReadBufSize<>BufSize;
+    Log('File '''+InFileName+''' copied'#13#10);
+  Finally
+    InFile.Free;
+    OutFile.Free;
+  End;{Try}
+End;{CopyFile}
+
+ +
Java + +
package l2f.gameserver.model;
+
+import java.util.ArrayList;
+
+/**
+ * Mother class of all character objects of the world (PC, NPC...)<BR><BR>
+ *
+ */
+public abstract class L2Character extends L2Object
+{
+  protected static final Logger _log = Logger.getLogger(L2Character.class.getName());
+
+  public static final Short ABNORMAL_EFFECT_BLEEDING = 0x0001; // not sure
+  public static final Short ABNORMAL_EFFECT_POISON = 0x0002;
+
+  public void detachAI() {
+    _ai = null;
+    //jbf = null;
+    if (1 > 5) {
+      return;
+    }
+  }
+
+  public void moveTo(int x, int y, int z) {
+    moveTo(x, y, z, 0);
+  }
+
+  /** Task of AI notification */
+  @SuppressWarnings( { "nls", "unqualified-field-access", "boxing" })
+  public class NotifyAITask implements Runnable {
+    private final CtrlEvent _evt;
+
+    public void run() {
+      try {
+        getAI().notifyEvent(_evt, null, null);
+      } catch (Throwable t) {
+        _log.warning("Exception " + t);
+        t.printStackTrace();
+      }
+    }
+  }
+
+}
+
+ +
C++ + +
#include <iostream>
+
+int main(int argc, char *argv[]) {
+
+  /* An annoying "Hello World" example */
+  for (auto i = 0; i < 0xFFFF; i++)
+    cout << "Hello, World!" << endl;
+
+  char c = '\n';
+  unordered_map <string, vector<string> > m;
+  m["key"] = "\\\\"; // this is an error
+
+  return -2e3 + 12l;
+}
+
+ +
Objective C + +
+
+#import <UIKit/UIKit.h>
+#import "Dependency.h"
+
+@protocol WorldDataSource
+@optional
+- (NSString*)worldName;
+@required
+- (BOOL)allowsToLive;
+@end
+
+@interface Test : NSObject <HelloDelegate, WorldDataSource> {
+	NSString *_greeting;
+}
+
+@property (nonatomic, readonly) NSString *greeting;
+- (IBAction) show;
+@end
+
+@implementation Test
+
+@synthesize test=_test;
+
++ (id) test {
+	return [self testWithGreeting:@"Hello, world!\nFoo bar!"];
+}
+
++ (id) testWithGreeting:(NSString*)greeting {
+	return [[[self alloc] initWithGreeting:greeting] autorelease];
+}
+
+- (id) initWithGreeting:(NSString*)greeting {
+	if ( (self = [super init]) ) {
+		_greeting = [greeting retain];
+	}
+	return self;
+}
+
+- (void) dealloc {
+	[_greeting release];
+	[super dealloc];
+}
+
+@end
+
+
+ +
Vala + +
using DBus;
+
+namespace Test {
+  class Foo : Object {
+    public signal void some_event ();   // definition of the signal
+    public void method () {
+      some_event ();                    // emitting the signal (callbacks get invoked)
+    }
+  }
+}
+
+/* defining a class */
+class Track : GLib.Object {              /* subclassing 'GLib.Object' */
+	public double mass;                  /* a public field */
+	public double name { get; set; }     /* a public property */
+	private bool terminated = false;     /* a private field */
+	public void terminate() {            /* a public method */
+	  terminated = true;
+	}
+}
+
+const ALL_UPPER_CASE = "you should follow this convention";
+
+var t = new Track();      // same as: Track t = new Track();
+var s = "hello";          // same as: string s = "hello";
+var l = new List<int>();       // same as: List<int> l = new List<int>();
+var i = 10;               // same as: int i = 10;
+
+
+#if (ololo)
+Regex regex = /foo/;
+#endif
+
+/*
+ * Entry point can be outside class
+ */
+void main () {
+  var long_string = """
+    Example of "verbatim string".
+    Same as in @"string" in C#
+  """
+  var foo = new Foo ();
+  foo.some_event.connect (callback_a);      // connecting the callback functions
+  foo.some_event.connect (callback_b);
+  foo.method ();
+}
+
+ +
C# + +
using System;
+
+#pragma warning disable 414, 3021
+
+public class Program
+{
+    /// <summary>The entry point to the program.</summary>
+    /// <remarks>
+    /// Using the Visual Studio style, the tags in this comment
+    /// should be grey, but this text should be green.
+    /// This comment should be green on the inside:
+    /// <!-- I'm green! -->
+    /// </remarks>
+    public static int Main(string[] args)
+    {
+        Console.WriteLine("Hello, World!");
+        string s = @"This
+""string""
+spans
+multiple
+lines!";
+        return 0;
+    }
+}
+
+ +
RenderMan RSL + +
#define TEST_DEFINE 3.14
+/*	plastic surface shader
+ *
+ * 	Pixie is:
+ * 	(c) Copyright 1999-2003 Okan Arikan. All rights reserved.
+ */
+
+surface plastic (float Ka = 1, Kd = 0.5, Ks = 0.5, roughness = 0.1;
+                 color specularcolor = 1;) {
+  normal Nf = faceforward (normalize(N),I);
+  Ci = Cs * (Ka*ambient() + Kd*diffuse(Nf)) + specularcolor * Ks *
+       specular(Nf,-normalize(I),roughness);
+  Oi = Os;
+  Ci *= Oi;
+}
+
+ +
RenderMan RIB + +
FrameBegin 0
+Display "Scene" "framebuffer" "rgb"
+Option "searchpath" "shader" "+&:/home/kew"
+Option "trace" "int maxdepth" [4]
+Attribute "visibility" "trace" [1]
+Attribute "irradiance" "maxerror" [0.1]
+Attribute "visibility" "transmission" "opaque"
+Format 640 480 1.0
+ShadingRate 2
+PixelFilter "catmull-rom" 1 1
+PixelSamples 4 4
+Projection "perspective" "fov" 49.5502811377
+Scale 1 1 -1
+
+WorldBegin
+
+ReadArchive "Lamp.002_Light/instance.rib"
+Surface "plastic"
+ReadArchive "Cube.004_Mesh/instance.rib"
+# ReadArchive "Sphere.010_Mesh/instance.rib"
+# ReadArchive "Sphere.009_Mesh/instance.rib"
+ReadArchive "Sphere.006_Mesh/instance.rib"
+
+WorldEnd
+FrameEnd
+
+ +
MEL (Maya Embedded Language) + +
proc string[] getSelectedLights()
+
+{
+  string $selectedLights[];
+
+  string $select[] = `ls -sl -dag -leaf`;
+
+  for ( $shape in $select )
+  {
+    // Determine if this is a light.
+    //
+    string $class[] = getClassification( `nodeType $shape` );
+
+
+    if ( ( `size $class` ) > 0 && ( "light" == $class[0] ) )
+    {
+      $selectedLights[ `size $selectedLights` ] = $shape;
+    }
+  }
+
+  // Result is an array of all lights included in
+
+  // current selection list.
+  return $selectedLights;
+}
+
+ +
SQL + +
BEGIN;
+CREATE TABLE "cicero_topic" (
+    "id" serial NOT NULL PRIMARY KEY,
+    "forum_id" integer NOT NULL,
+    "subject" varchar(255) NOT NULL,
+    "created" timestamp with time zone NOT NULL
+);
+ALTER TABLE "cicero_topic"
+ADD CONSTRAINT forum_id_refs_id_4be56999
+FOREIGN KEY ("forum_id")
+REFERENCES "cicero_forum" ("id")
+DEFERRABLE INITIALLY DEFERRED;
+
+-- Initials
+insert into "cicero_forum"
+  ("slug", "name", "group", "ordering")
+values
+  ('test', 'Forum for te''sting', 'Test', 0);
+
+-- Test
+select count(*) from cicero_forum;
+
+COMMIT;
+
+ +
SmallTalk + +
Object>>method: num
+    "comment 123"
+    | var1 var2 |
+    (1 to: num) do: [:i | |var| ^i].
+    Klass with: var1.
+    Klass new.
+    arr := #('123' 123.345 #hello Transcript var $@).
+    arr := #().
+    var2 = arr at: 3.
+    ^ self abc
+
+heapExample
+    "HeapTest new heapExample"
+    "Multiline
+    decription"
+    | n rnd array time sorted |
+    n := 5000.
+    "# of elements to sort"
+    rnd := Random new.
+    array := (1 to: n)
+                collect: [:i | rnd next].
+    "First, the heap version"
+    time := Time
+                millisecondsToRun: [sorted := Heap withAll: array.
+    1
+        to: n
+        do: [:i |
+            sorted removeFirst.
+            sorted add: rnd next]].
+    Transcript cr; show: 'Time for Heap: ' , time printString , ' msecs'.
+    "The quicksort version"
+    time := Time
+                millisecondsToRun: [sorted := SortedCollection withAll: array.
+    1
+        to: n
+        do: [:i |
+            sorted removeFirst.
+            sorted add: rnd next]].
+    Transcript cr; show: 'Time for SortedCollection: ' , time printString , ' msecs'
+
+ +
Lisp + +
(defun prompt-for-cd ()
+   "Prompts
+    for CD"
+   (prompt-read "Title" 1.53 1 2/4 1.7 1.7e0 2.9E-4 +42 -7 #b001 #b001/100 #o777 #O777 #xabc55 #c(0 -5.6))
+   (prompt-read "Artist" &rest)
+   (or (parse-integer (prompt-read "Rating") :junk-allowed t) 0)
+  (if x (format t "yes") (format t "no" nil) ;and here comment
+  )
+  ;; second line comment
+  '(+ 1 2)
+  (defvar *lines*)                ; list of all lines
+  (position-if-not #'sys::whitespacep line :start beg))
+  (quote (privet 1 2 3))
+  '(hello world)
+  (* 5 7)
+  (1 2 34 5)
+  (:use "aaaa")
+  (let ((x 10) (y 20))
+    (print (+ x y))
+  )
+ +
Ini file + +
;Settings relating to the location and loading of the database
+[Database]
+ProfileDir=.
+ShowProfileMgr=smart
+Profile1_Name[] = "\|/_-=MegaDestoyer=-_\|/"
+DefaultProfile=True
+AutoCreate = no
+
+[AutoExec]
+Use="prompt"
+Glob=autoexec_*.ini
+AskAboutIgnoredPlugins=0
+
+ +
Apache + +
# rewrite`s rules for wordpress pretty url
+LoadModule rewrite_module  modules/mod_rewrite.so
+RewriteCond %{REQUEST_FILENAME} !-f
+RewriteCond %{REQUEST_FILENAME} !-d
+RewriteRule . index.php [NC,L]
+
+ExpiresActive On
+ExpiresByType application/x-javascript  "access plus 1 days"
+
+<Location /maps/>
+  RewriteMap map txt:map.txt
+  RewriteMap lower int:tolower
+  RewriteCond %{REQUEST_URI} ^/([^/.]+)\.html$ [NC]
+  RewriteCond ${map:${lower:%1}|NOT_FOUND} !NOT_FOUND
+  RewriteRule .? /index.php?q=${map:${lower:%1}} [NC,L]
+</Location>
+
+ +
nginx + +
user  www www;
+worker_processes  2;
+pid /var/run/nginx.pid;
+error_log  /var/log/nginx.error_log  debug | info | notice | warn | error | crit;
+
+events {
+    connections   2000;
+    use kqueue | rtsig | epoll | /dev/poll | select | poll;
+}
+
+http {
+    log_format main      '$remote_addr - $remote_user [$time_local] '
+                         '"$request" $status $bytes_sent '
+                         '"$http_referer" "$http_user_agent" '
+                         '"$gzip_ratio"';
+
+    send_timeout 3m;
+    client_header_buffer_size 1k;
+
+    gzip on;
+    gzip_min_length 1100;
+
+    #lingering_time 30;
+
+    server {
+        listen        one.example.com;
+        server_name   one.example.com  www.one.example.com;
+        access_log   /var/log/nginx.access_log  main;
+
+        location / {
+            proxy_pass         http://127.0.0.1/;
+            proxy_redirect     off;
+            proxy_set_header   Host             $host;
+            proxy_set_header   X-Real-IP        $remote_addr;
+            charset            koi8-r;
+        }
+
+        location ~* \.(jpg|jpeg|gif)$ {
+            root         /spool/www;
+        }
+    }
+}
+
+ +
Diff + +
Index: languages/ini.js
+===================================================================
+--- languages/ini.js    (revision 199)
++++ languages/ini.js    (revision 200)
+@@ -1,8 +1,7 @@
+ hljs.LANGUAGES.ini =
+ {
+   case_insensitive: true,
+-  defaultMode:
+-  {
++  defaultMode: {
+     contains: ['comment', 'title', 'setting'],
+     illegal: '[^\\s]'
+   },
+
+*** /path/to/original timestamp
+--- /path/to/new      timestamp
+***************
+*** 1,3 ****
+--- 1,9 ----
++ This is an important
++ notice! It should
++ therefore be located at
++ the beginning of this
++ document!
+
+! compress the size of the
+! changes.
+
+  It is important to spell
+
+ +
DOS batch files + +
cd \
+copy a b
+ping 192.168.0.1
+@rem ping 192.168.0.1
+net stop sharedaccess
+del %tmp% /f /s /q
+del %temp% /f /s /q
+ipconfig /flushdns
+taskkill /F /IM JAVA.EXE /T
+
+cd Photoshop/Adobe Photoshop CS3/AMT/
+if exist application.sif (
+    ren application.sif _application.sif
+) else (
+    ren _application.sif application.sif
+)
+
+taskkill /F /IM proquota.exe /T
+
+sfc /SCANNOW
+
+set path = test
+
+xcopy %1\*.* %2
+
+ +
Bash + +
#!/bin/bash
+
+###### BEGIN CONFIG
+ACCEPTED_HOSTS="/root/.hag_accepted.conf"
+BE_VERBOSE=false
+###### END CONFIG
+
+if [ "$UID" -ne 0 ]
+then
+ echo "Superuser rights is required"
+ echo 'Printing the # sign'
+ exit 2
+fi
+
+genApacheConf(){
+ if [[ "$2" = "www" ]]
+ then
+  full_domain=$1
+ else
+  full_domain=$2.$1
+ fi
+ host_root="${APACHE_HOME_DIR}$1/$2"
+ echo -e "# Host $1/$2 :"
+}
+
+ +
CMake + +
project(test)
+cmake_minimum_required(VERSION 2.6)
+
+# IF LINUX
+if (${CMAKE_SYSTEM_NAME} MATCHES Linux)
+    message("\nOS:\t\tLinux")
+endif()
+
+# IF WINDOWS
+if (${CMAKE_SYSTEM_NAME} MATCHES Windows)
+    message("\nOS:\t\tWindows")
+endif()
+
+set(test test0.cpp test1.cpp test2.cpp)
+
+include_directories(./)
+
+set(EXECUTABLE_OUTPUT_PATH ../bin)
+
+add_subdirectory(src)
+
+add_executable(test WIN32 ${test})
+
+target_link_libraries(test msimg32)
+
+ +
Axapta + +
class ExchRateLoadBatch extends RunBaseBatch {
+  ExchRateLoad rbc;
+  container currencies;
+  boolean actual;
+  boolean overwrite;
+  date beg;
+  date end;
+
+  #define.CurrentVersion(5)
+
+  #localmacro.CurrentList
+    currencies,
+    actual,
+    beg,
+    end
+  #endmacro
+}
+
+public boolean unpack(container packedClass) {
+  container       base;
+  boolean         ret;
+  Integer         version    = runbase::getVersion(packedClass);
+
+  switch (version) {
+    case #CurrentVersion:
+      [version, #CurrentList] = packedClass;
+      return true;
+    default:
+      return false;
+  }
+  return ret;
+}
+
+ +
1С + +

+#Если Клиент Тогда
+Перем СимвольныйКодКаталога = "ля-ля-ля"; //комментарий
+Функция Сообщить(Знач ТекстСообщения, ТекстСообщения2) Экспорт //комментарий к функции
+  x=ТекстСообщения+ТекстСообщения2+"
+  |строка1
+  |строка2
+  |строка3";
+КонецФункции
+#КонецЕсли
+
+// Процедура ПриНачалеРаботыСистемы
+//
+Процедура ПриНачалеРаботыСистемы()
+  Обработки.Помощник.ПолучитьФорму("Форма").Открыть();
+  d = '21.01.2008'
+КонецПроцедуры
+
+ +
AVR Assembler + +
;* Title:       Block Copy Routines
+;* Version:     1.1
+
+.include "8515def.inc"
+
+    rjmp    RESET   ;reset handle
+
+.def    flashsize=r16       ;size of block to be copied
+
+flash2ram:
+    lpm         ;get constant
+    st  Y+,r0       ;store in SRAM and increment Y-pointer
+    adiw    ZL,1        ;increment Z-pointer
+    dec flashsize
+    brne    flash2ram   ;if not end of table, loop more
+    ret
+
+.def    ramtemp =r1     ;temporary storage register
+.def    ramsize =r16        ;size of block to be copied
+
+ +
VHDL + +
------------------------------------
+-- RS Trigger with Assynch. Reset --
+------------------------------------
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.all;
+
+entity RS_AR is
+	generic (T: Time := 0ns);
+
+	port(
+		 -- Default RS Trigger
+		 R  : in  STD_LOGIC;
+		 S  : in  STD_LOGIC;
+		 Q  : out STD_LOGIC;
+		 nQ : out STD_LOGIC;
+
+		 -- Special Input Signals
+		 AR : in  STD_LOGIC; -- assynch. reset
+		 C  : in  STD_LOGIC  -- synch. signal
+	     );
+end RS_AR;
+
+
+architecture RS_AR of RS_AR is
+	signal QT: std_logic; -- Q(t)
+begin
+
+	process(C, AR) is
+		subtype RS is std_logic_vector ( 1 downto 0 );
+	begin
+		if AR='0' then
+			QT <= '0';
+		else
+			if rising_edge(C) then
+
+				if not (R'stable(T) and S'stable(T)) then
+				QT <= 'X';
+				else
+
+				case RS'(R&S) is
+					when "01" => QT <= '1';
+					when "10" => QT <= '0';
+					when "11" => QT <= 'X';
+					when others => null;
+				end case;
+
+				end if;
+			end if;
+		end if;
+	end process;
+
+	Q  <= QT;
+	nQ <= not QT;
+
+end RS_AR;
+
+ +
Parser 3 + +
@CLASS
+base
+
+@USE
+module.p
+
+@BASE
+class
+
+# Comment for code
+@create[aParam1;aParam2][local1;local2]
+  ^connect[mysql://host/database?ClientCharset=windows-1251]
+  ^for[i](1;10){
+    <p class="paragraph">^eval($i+10)</p>
+    ^connect[mysql://host/database]{
+      $tab[^table::sql{select * from `table` where a='1'}]
+      $var_Name[some${value}]
+    }
+  }
+
+  ^rem{
+    Multiline comment with code: $var
+    ^while(true){
+      ^for[i](1;10){
+        ^sleep[]
+      }
+    }
+  }
+  ^taint[^#0A]
+
+@GET_base[]
+## Comment for code
+  # Isn't comment
+  $result[$.hash_item1[one] $.hash_item2[two]]
+
+ +
TeX + +
+\documentclass{article}
+\usepackage[koi8-r]{inputenc}
+\hoffset=0pt
+\voffset=.3em
+\tolerance=400
+\newcommand{\eTiX}{\TeX}
+\begin{document}
+\section*{Highlight.js}
+\begin{table}[c|c]
+$\frac 12\, + \, \frac 1{x^3}\text{Hello \! world}$ & \textbf{Goodbye\~ world} \\\eTiX $ \pi=400 $
+\end{table}
+Ch\'erie, \c{c}a ne me pla\^\i t pas! % comment \b
+G\"otterd\"ammerung~45\%=34.
+$$
+    \int\limits_{0}^{\pi}\frac{4}{x-7}=3
+$$
+\end{document}
+
+ +
Haskell + +
+module Shapes
+( Point(..)  ,
+  Shape(..)  ,
+  surface    ,
+  baseCircle ,
+  baseRect
+) where
+
+-- Single line comment
+{-
+multi
+line
+comment
+-}
+data Point = Point Float Float deriving (Show)
+data Shape = Circle Point Float | Rectangle Point Point deriving (Show)
+
+surface :: Shape -> Float
+surface (Circle _ r) = pi * r^2
+surface (Rectangle (Point x1 y1) (Point x2 y2)) = (abs $ x2 - x1) * (abs $ y2 - y1)
+
+baseCircle :: Float -> Shape
+baseCircle r = Circle(Point 0 0) r
+
+baseRect :: Float -> Float -> Shape
+baseRect w h = Rectangle (Point 0 0) (Point w h)
+
+ +
Erlang + +
-module(ssh_cli).
+
+-behaviour(ssh_channel).
+
+-include("ssh.hrl").
+%% backwards compatibility
+-export([listen/1, listen/2, listen/3, listen/4, stop/1]).
+
+%% state
+-record(state, {
+	  cm,
+	  channel
+	 }).
+
+test(Foo)->Foo.
+
+init([Shell, Exec]) ->
+    {ok, #state{shell = Shell, exec = Exec}};
+init([Shell]) ->
+    false = not true,
+    io:format("Hello, \"~p!~n", [atom_to_list('World')]),
+    {ok, #state{shell = Shell}}.
+
+concat([Single]) -> Single;
+concat(RList) ->
+    EpsilonFree = lists:filter(
+        fun (Element) ->
+            case Element of
+                epsilon -> false;
+                _ -> true
+            end
+        end,
+        RList),
+    case EpsilonFree of
+        [Single] -> Single;
+        Other -> {concat, Other}
+    end.
+
+union_dot_union({union, _}=U1, {union, _}=U2) ->
+    union(lists:flatten(
+        lists:map(
+            fun (X1) ->
+                lists:map(
+                    fun (X2) ->
+                        concat([X1, X2])
+                    end,
+                    union_to_list(U2)
+                )
+            end,
+            union_to_list(U1)
+        ))).
+
+ +
Erlang REPL + +
1> Str = "abcd".
+"abcd"
+2> L = test:length(Str).
+4
+3> Descriptor = {L, list_to_atom(Str)}.
+{4,abcd}
+4> L.
+4
+5> b().
+Descriptor = {4,abcd}
+L = 4
+Str = "abcd"
+ok
+6> f(L).
+ok
+7> b().
+Descriptor = {4,abcd}
+Str = "abcd"
+ok
+8> {L, _} = Descriptor.
+{4,abcd}
+9> L.
+4
+10> 2#101.
+5
+11> 1.85e+3.
+1850
+
+ +
Rust + +
+use std;
+
+import std::io;
+export fac, test1;
+
+123;                               // type int
+123u;                              // type uint
+123_u;                             // type uint
+0xff00;                            // type int
+0xff_u8;                           // type u8
+0b1111_1111_1001_0000_i32;         // type i32
+123.0;                             // type float
+0.1;                               // type float
+3f;                                // type float
+0.1f32;                            // type f32
+12E+99_f64;                        // type f64
+
+/* Factorial */
+fn fac(n: int) -> int {
+    let s: str = "This is
+a multi-line string.
+
+It ends with an unescaped '\"'.";
+    let c: char = 'Ф';
+
+    let result = 1, i = 1;
+    while i <= n { // No parens around the condition
+        result *= i;
+        i += 1;
+    }
+    ret result;
+}
+
+pure fn pure_length<T>(ls: list<T>) -> uint { /* ... */ }
+
+type t = map::hashtbl<int,str>;
+let x = id::<int>(10);
+
+// Define some modules.
+#[path = "foo.rs"]
+mod foo;
+
+iface seq<T> {
+    fn len() -> uint;
+}
+
+impl <T> of seq<T> for [T] {
+    fn len() -> uint { vec::len(self) }
+    fn iter(b: fn(T)) {
+        for elt in self { b(elt); }
+    }
+}
+
+enum list<T> {
+    nil;
+    cons(T, @list<T>);
+}
+
+let a: list<int> = cons(7, @cons(13, @nil));
+
+ +
Matlab + +
n = 20; % number of points
+points = [random('unid', 100, n, 1), random('unid', 100, n, 1)];
+len = zeros(1, n - 1);
+points = sortrows(points);
+%% Initial set of points
+plot(points(:,1),points(:,2));
+for i = 1: n-1
+    len(i) = points(i + 1, 1) - points(i, 1);
+end
+while(max(len) > 2 * min(len))
+    [d, i] = max(len);
+    k = on_margin(points, i, d, -1);
+    m = on_margin(points, i + 1, d, 1);
+    xm = 0; ym = 0;
+%% New point
+    if(i == 1 || i + 1 == n)
+        xm = mean(points([i,i+1],1))
+        ym = mean(points([i,i+1],2))
+    else
+        [xm, ym] = dlg1(points([k, i, i + 1, m], 1), ...
+            points([k, i, i + 1, m], 2))
+    end
+
+    points = [ points(1:i, :); [xm, ym]; points(i + 1:end, :)];
+end
+
+function [net] = get_fit_network(inputs, targets)
+    % Create Network
+    numHiddenNeurons = 20;  % Adjust as desired
+    net = newfit(inputs,targets,numHiddenNeurons);
+    net.trainParam.goal = 0.01;
+    net.trainParam.epochs = 1000;
+    % Train and Apply Network
+    [net,tr] = train(net,inputs,targets);
+end
+
+ +
+ + + + +

Special tests

+ + + + + + + + + + +
Explicit Python highlighting + +
for x in [1, 2, 3]:
+  count(x)
+
+ +
Language set on <pre> + +
for x in [1, 2, 3]:
+  count(x)
+
+ +
HTML5-style language class (language-python) + +
for x in [1, 2, 3]:
+  count(x)
+
+ +
Replacing TAB with 4 spaces + +
for x in [1, 2, 3]:
+	count(x)
+
+ +
Custom markup + +
<div id="contents">
+  <p>Hello, World!Goodbye, cruel world!
+</div>
+
+ +
Custom markup + TAB replacement + +
for x in [1, 2, 3]:
+	count(x)
+	if x == 3:
+		count(x + 1)
+
+ +
Non-pre container + +
for x in [1, 2, 3]:
+  count(x)
+
+ + +
Disabled highlighting + +
<div id="contents">
+  <p>Hello, World!
+</div>
+
+ +