diff --git a/assets/app/config.js b/assets/app/config.js
index b0ab3b8..a99675c 100644
--- a/assets/app/config.js
+++ b/assets/app/config.js
@@ -20,10 +20,12 @@
handlebars: prefix + '/vendor/handlebars/handlebars.runtime',
jquery: prefix + '/vendor/jquery/dist/jquery',
marionette: prefix + '/vendor/marionette/lib/backbone.marionette',
+ prism: prefix + '/vendor/prism/prism',
underscore: prefix + '/vendor/underscore/underscore'
},
shim: {
handlebars: {exports: 'Handlebars'},
+ prism: {exports: 'Prism'},
underscore: {exports: '_'}
}
};
diff --git a/assets/app/lib/syntax.js b/assets/app/lib/syntax.js
new file mode 100644
index 0000000..3826113
--- /dev/null
+++ b/assets/app/lib/syntax.js
@@ -0,0 +1,6 @@
+define(['prism'], function (Prism) {
+ return function (text, language) {
+ language = language || 'javascript';
+ return Prism.highlight(text, Prism.languages[language]);
+ };
+});
diff --git a/assets/app/widgets/slide/template.hbs b/assets/app/widgets/slide/template.hbs
index 6f6dd15..ad5c206 100644
--- a/assets/app/widgets/slide/template.hbs
+++ b/assets/app/widgets/slide/template.hbs
@@ -1,4 +1,2 @@
-
-{{code}}
-
+
diff --git a/assets/app/widgets/slide/view.js b/assets/app/widgets/slide/view.js
index a200171..53aff7a 100644
--- a/assets/app/widgets/slide/view.js
+++ b/assets/app/widgets/slide/view.js
@@ -2,8 +2,9 @@ define([
'underscore',
'marionette',
'lib/markdown',
+ 'lib/syntax',
'widgets/slide/template'
-], function AppSlideWidget(_, Marionette, markdown, template) {
+], function AppSlideWidget(_, Marionette, markdown, syntax, template) {
'use strict';
var SlideView = Marionette.ItemView.extend({
@@ -11,7 +12,7 @@ define([
ui: {
copy: '.copy',
- code: 'pre.language-javascript'
+ code: '.language-javascript'
},
modelEvents: {
@@ -23,6 +24,10 @@ define([
if (copy) {
this.ui.copy.html(markdown(copy));
}
+ var code = this.model.get('code');
+ if (code) {
+ this.ui.code.html(syntax(code));
+ }
}
});
diff --git a/assets/index.html b/assets/index.html
index 393f461..bacf589 100644
--- a/assets/index.html
+++ b/assets/index.html
@@ -6,6 +6,7 @@
+
diff --git a/bower.json b/bower.json
index 1fd9dab..84b5701 100644
--- a/bower.json
+++ b/bower.json
@@ -17,10 +17,11 @@
"tests"
],
"dependencies": {
+ "commonmark": "~0.17.1",
+ "handlebars": "~1.3.0",
"marionette": "~2.3.1",
"normalize-scss": "~3.0.2",
- "requirejs": "~2.1.15",
- "handlebars": "~1.3.0",
- "commonmark": "~0.17.1"
+ "prism": "git@github.com:LeaVerou/prism.git#gh-pages",
+ "requirejs": "~2.1.15"
}
}
diff --git a/test/app/lib/syntax.js b/test/app/lib/syntax.js
new file mode 100644
index 0000000..6991432
--- /dev/null
+++ b/test/app/lib/syntax.js
@@ -0,0 +1,9 @@
+define(['jquery', 'lib/syntax'], function ($, syntax) {
+ describe('syntax', function () {
+ it('→ converts javascript to html', function () {
+ var src = 'function () {console.log("hi");}';
+ var actual = syntax(src);
+ expect($(actual).text()).toBe(src);
+ });
+ });
+});
diff --git a/vendor/prism/.bower.json b/vendor/prism/.bower.json
new file mode 100644
index 0000000..8c17166
--- /dev/null
+++ b/vendor/prism/.bower.json
@@ -0,0 +1,35 @@
+{
+ "name": "prism",
+ "main": [
+ "prism.js",
+ "themes/prism.css"
+ ],
+ "homepage": "http://prismjs.com",
+ "authors": "Lea Verou",
+ "description": "Lightweight, robust, elegant syntax highlighting. A spin-off project from Dabblet.",
+ "license": "MIT",
+ "ignore": [
+ "**/.*",
+ "img",
+ "templates",
+ "CNAME",
+ "*.html",
+ "style.css",
+ "favicon.png",
+ "logo.svg",
+ "download.js",
+ "prefixfree.min.js",
+ "utopia.js",
+ "code.js"
+ ],
+ "_release": "e147458ad2",
+ "_resolution": {
+ "type": "branch",
+ "branch": "gh-pages",
+ "commit": "e147458ad2befc0cdd4072d5c0805c11496ce958"
+ },
+ "_source": "git@github.com:LeaVerou/prism.git",
+ "_target": "gh-pages",
+ "_originalSource": "git@github.com:LeaVerou/prism.git",
+ "_direct": true
+}
\ No newline at end of file
diff --git a/vendor/prism/LICENSE b/vendor/prism/LICENSE
new file mode 100644
index 0000000..eab2c31
--- /dev/null
+++ b/vendor/prism/LICENSE
@@ -0,0 +1,21 @@
+MIT LICENSE
+
+Copyright (c) 2012-2013 Lea Verou
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/vendor/prism/README.md b/vendor/prism/README.md
new file mode 100644
index 0000000..3c97a68
--- /dev/null
+++ b/vendor/prism/README.md
@@ -0,0 +1,22 @@
+# [Prism](http://prismjs.com/)
+
+Prism is a lightweight, robust, elegant syntax highlighting library. It's a spin-off project from [Dabblet](http://dabblet.com/).
+
+You can learn more on http://prismjs.com/.
+
+Why another syntax highlighter?: http://lea.verou.me/2012/07/introducing-prism-an-awesome-new-syntax-highlighter/#more-1841
+
+## Contribute to Prism!
+
+Prism depends on community contributions to expand and cover a wider array of use cases. If you like it, considering giving back by sending a pull request. Here are a few tips:
+
+- Read the [documentation](http://prismjs.com/extending.html). Prism was designed to be extensible.
+- Do not edit prism.js, it’s just the version of Prism used by the Prism website and is built automatically. Limit your changes to the unminified files in the components/ folder. The minified files are also generated automatically.
+- Currently the build system building prism.js and the minified files is just a bunch of local settings in CodeKit. If someone wants to help export them to a config file, please contact me by opening an issue.
+- Please follow the code conventions used in the files already. For example, I use [tabs for indentation and spaces for alignment](http://lea.verou.me/2012/01/why-tabs-are-clearly-superior/). Opening braces are on the same line, closing braces on their own line regardless of construct. There is a space before the opening brace. etc etc.
+- Please try to err towards more smaller PRs rather than few huge PRs. If a PR includes changes I want to merge and changes I don't, handling it becomes difficult.
+- My time is very limited these days, so it might take a long time to review longer PRs (short ones are usually merged very quickly), especially those modifying the Prism Core. This doesn't mean your PR is rejected.
+- If you contribute a new language definition, you will be responsible for handling bug reports about that language definition. Soon I plan to add usernames of project owners for themes, plugins and language definitions so this becomes more clear to users.
+- If you add a new language definition, theme or plugin, you need to add it to `components.js` as well, so that it becomes available to the download build page.
+
+Thank you so much for contributing!!
diff --git a/vendor/prism/bower.json b/vendor/prism/bower.json
new file mode 100644
index 0000000..822afac
--- /dev/null
+++ b/vendor/prism/bower.json
@@ -0,0 +1,26 @@
+{
+ "name": "prism",
+ "version": "0.0.1",
+ "main": [
+ "prism.js",
+ "themes/prism.css"
+ ],
+ "homepage": "http://prismjs.com",
+ "authors": "Lea Verou",
+ "description": "Lightweight, robust, elegant syntax highlighting. A spin-off project from Dabblet.",
+ "license": "MIT",
+ "ignore": [
+ "**/.*",
+ "img",
+ "templates",
+ "CNAME",
+ "*.html",
+ "style.css",
+ "favicon.png",
+ "logo.svg",
+ "download.js",
+ "prefixfree.min.js",
+ "utopia.js",
+ "code.js"
+ ]
+}
diff --git a/vendor/prism/components.js b/vendor/prism/components.js
new file mode 100644
index 0000000..3b92c04
--- /dev/null
+++ b/vendor/prism/components.js
@@ -0,0 +1,334 @@
+var components = {
+ "core": {
+ "meta": {
+ "path": "components/prism-core.js",
+ "option": "mandatory"
+ },
+ "core": "Core"
+ },
+ "themes": {
+ "meta": {
+ "path": "themes/{id}.css",
+ "link": "index.html?theme={id}",
+ "exclusive": true
+ },
+ "prism": {
+ "title": "Default",
+ "option": "default"
+ },
+ "prism-dark": "Dark",
+ "prism-funky": "Funky",
+ "prism-okaidia": {
+ "title": "Okaidia",
+ "owner": "ocodia"
+ },
+ "prism-twilight": {
+ "title": "Twilight",
+ "owner": "remybach"
+ },
+ "prism-coy": {
+ "title": "Coy",
+ "owner": "tshedor"
+ }
+ },
+ "languages": {
+ "meta": {
+ "path": "components/prism-{id}",
+ "noCSS": true,
+ "examplesPath": "examples/prism-{id}"
+ },
+ "markup": {
+ "title": "Markup",
+ "option": "default"
+ },
+ "twig": {
+ "title": "Twig",
+ "require": "markup",
+ "owner": "brandonkelly"
+ },
+ "css": {
+ "title": "CSS",
+ "option": "default"
+ },
+ "css-extras": {
+ "title": "CSS Extras",
+ "require": "css",
+ "owner": "milesj"
+ },
+ "clike": {
+ "title": "C-like",
+ "option": "default"
+ },
+ "eiffel": {
+ "title": "Eiffel",
+ "owner": "Conaclos"
+ },
+ "javascript": {
+ "title": "JavaScript",
+ "option": "default",
+ "require": "clike"
+ },
+ "java": {
+ "title": "Java",
+ "require": "clike",
+ "owner": "sherblot"
+ },
+ "php": {
+ "title": "PHP",
+ "require": "clike",
+ "owner": "milesj"
+ },
+ "php-extras": {
+ "title": "PHP Extras",
+ "require": "php",
+ "owner": "milesj"
+ },
+ "coffeescript": {
+ "title": "CoffeeScript",
+ "require": "javascript",
+ "owner": "R-osey"
+ },
+ "scss": {
+ "title": "Sass (Scss)",
+ "require": "css",
+ "owner": "MoOx"
+ },
+ "bash": {
+ "title": "Bash",
+ "require": "clike",
+ "owner": "zeitgeist87"
+ },
+ "c": {
+ "title": "C",
+ "require": "clike",
+ "owner": "zeitgeist87"
+ },
+ "cpp": {
+ "title": "C++",
+ "require": "c",
+ "owner": "zeitgeist87"
+ },
+ "python": {
+ "title": "Python",
+ "owner": "multipetros"
+ },
+ "julia": {
+ "title": "julia",
+ "owner": "cdagnino"
+ },
+ "sql": {
+ "title": "SQL",
+ "owner": "multipetros"
+ },
+ "groovy": {
+ "title": "Groovy",
+ "require": "clike",
+ "owner": "robfletcher"
+ },
+ "http": {
+ "title": "HTTP",
+ "owner": "danielgtaylor"
+ },
+ "ruby": {
+ "title": "Ruby",
+ "require": "clike",
+ "owner": "samflores"
+ },
+ "rip": {
+ "title": "Rip",
+ "owner": "ravinggenius"
+ },
+ "gherkin": {
+ "title": "Gherkin",
+ "owner": "mvalipour"
+ },
+ "csharp": {
+ "title": "C#",
+ "require": "clike",
+ "owner": "mvalipour"
+ },
+ "go": {
+ "title": "Go",
+ "require": "clike",
+ "owner": "arnehormann"
+ },
+ "nsis": {
+ "title": "NSIS",
+ "owner": "idleberg"
+ },
+ "aspnet": {
+ "title": "ASP.NET (C#)",
+ "require": "markup",
+ "owner": "nauzilus"
+ },
+ "scala": {
+ "title": "Scala",
+ "require": "java",
+ "owner": "jozic"
+ },
+ "haskell": {
+ "title": "Haskell",
+ "owner": "bholst"
+ },
+ "swift": {
+ "title": "Swift",
+ "require": "clike",
+ "owner": "chrischares"
+ },
+ "objectivec": {
+ "title": "Objective-C",
+ "require": "c",
+ "owner": "uranusjr"
+ },
+ "autohotkey": {
+ "title": "AutoHotkey",
+ "owner": "aviaryan"
+ },
+ "ini": {
+ "title": "Ini",
+ "owner": "aviaryan"
+ },
+ "latex": {
+ "title": "LaTeX",
+ "owner": "japborst"
+ },
+ "apacheconf": {
+ "title": "Apache Configuration",
+ "owner": "GuiTeK"
+ },
+ "git": {
+ "title": "Git",
+ "owner": "lgiraudel"
+ },
+ "scheme" : {
+ "title": "Scheme",
+ "owner" : "bacchus123"
+ },
+ "nasm": {
+ "title": "NASM",
+ "owner": "rbmj"
+ },
+ "perl": {
+ "title": "Perl",
+ "owner": "Golmote"
+ },
+ "handlebars": {
+ "title": "Handlebars",
+ "require": "markup",
+ "owner": "Golmote"
+ },
+ "matlab": {
+ "title": "MATLAB",
+ "owner": "Golmote"
+ },
+ "less": {
+ "title": "Less",
+ "require": "css",
+ "owner": "Golmote"
+ },
+ "r": {
+ "title": "R",
+ "owner": "Golmote"
+ },
+ "lolcode": {
+ "title": "LOLCODE",
+ "owner": "Golmote"
+ },
+ "fortran": {
+ "title": "Fortran",
+ "owner": "Golmote"
+ },
+ "erlang": {
+ "title": "Erlang",
+ "owner": "Golmote"
+ },
+ "haml": {
+ "title": "Haml",
+ "require": "ruby",
+ "owner": "Golmote"
+ },
+ "jade": {
+ "title": "Jade",
+ "require": "javascript",
+ "owner": "Golmote"
+ },
+ "pascal": {
+ "title": "Pascal",
+ "owner": "Golmote"
+ },
+ "applescript": {
+ "title": "AppleScript",
+ "owner": "Golmote"
+ },
+ "rust": {
+ "title": "Rust",
+ "owner": "Golmote"
+ },
+ "dart": {
+ "title": "Dart",
+ "require": "clike",
+ "owner": "Golmote"
+ },
+ "powershell": {
+ "title": "PowerShell",
+ "owner": "nauzilus"
+ },
+ "smarty": {
+ "title": "Smarty",
+ "require": "markup",
+ "owner": "Golmote"
+ },
+ "actionscript": {
+ "title": "ActionScript",
+ "require": "javascript",
+ "owner": "Golmote"
+ },
+ "markdown": {
+ "title": "Markdown",
+ "require": "markup",
+ "owner": "Golmote"
+ },
+ "jsx":{
+ "title": "React JSX",
+ "require": ["markup", "javascript"],
+ "owner": "vkbansal"
+ },
+ "typescript":{
+ "title": "TypeScript",
+ "require": "javascript",
+ "owner": "vkbansal"
+ },
+ "fsharp": {
+ "title": "F#",
+ "require": "clike",
+ "owner": "simonreynolds7"
+ }
+ },
+ "plugins": {
+ "meta": {
+ "path": "plugins/{id}/prism-{id}",
+ "link": "plugins/{id}/"
+ },
+ "line-highlight": "Line Highlight",
+ "line-numbers": {
+ "title": "Line Numbers",
+ "owner": "kuba-kubula"
+ },
+ "show-invisibles": "Show Invisibles",
+ "autolinker": "Autolinker",
+ "wpd": "WebPlatform Docs",
+ "file-highlight": {
+ "title": "File Highlight",
+ "noCSS": true
+ },
+ "show-language": {
+ "title": "Show Language",
+ "owner": "nauzilus"
+ },
+ "highlight-keywords": {
+ "title": "Highlight Keywords",
+ "owner": "vkbansal",
+ "noCSS": true
+ }
+ }
+};
diff --git a/vendor/prism/components/prism-actionscript.js b/vendor/prism/components/prism-actionscript.js
new file mode 100644
index 0000000..66b3f72
--- /dev/null
+++ b/vendor/prism/components/prism-actionscript.js
@@ -0,0 +1,20 @@
+/* TODO
+ Fix XML highlighting
+ */
+
+Prism.languages.actionscript = Prism.languages.extend('javascript', {
+ 'keyword': /\b(?:as|break|case|catch|class|const|default|delete|do|else|extends|finally|for|function|if|implements|import|in|instanceof|interface|internal|is|native|new|null|package|private|protected|public|return|super|switch|this|throw|try|typeof|use|var|void|while|with|dynamic|each|final|get|include|namespace|native|override|set|static)\b/,
+ 'operator': /(?:[+\-*\/%^]|&&?|\|\|?|<|>>?>?|[!=]=)=?|[=~?@]/
+});
+Prism.languages.actionscript['class-name'].alias = 'function';
+
+if (Prism.languages.markup) {
+ Prism.languages.insertBefore('actionscript', 'operator', {
+ 'xml': {
+ pattern: /(^|[^.])<[\s\S]*>(?=\s*($|[\r\n,.;\]})<]))/,
+ inside: {
+ rest: Prism.languages.markup
+ }
+ }
+ });
+}
\ No newline at end of file
diff --git a/vendor/prism/components/prism-actionscript.min.js b/vendor/prism/components/prism-actionscript.min.js
new file mode 100644
index 0000000..cbe958c
--- /dev/null
+++ b/vendor/prism/components/prism-actionscript.min.js
@@ -0,0 +1 @@
+Prism.languages.actionscript=Prism.languages.extend("javascript",{keyword:/\b(?:as|break|case|catch|class|const|default|delete|do|else|extends|finally|for|function|if|implements|import|in|instanceof|interface|internal|is|native|new|null|package|private|protected|public|return|super|switch|this|throw|try|typeof|use|var|void|while|with|dynamic|each|final|get|include|namespace|native|override|set|static)\b/,operator:/(?:[+\-*\/%^]|&&?|\|\|?|<|>>?>?|[!=]=)=?|[=~?@]/}),Prism.languages.actionscript["class-name"].alias="function",Prism.languages.markup&&Prism.languages.insertBefore("actionscript","operator",{xml:{pattern:/(^|[^.])<[\s\S]*>(?=\s*($|[\r\n,.;\]})<]))/,inside:{rest:Prism.languages.markup}}});
\ No newline at end of file
diff --git a/vendor/prism/components/prism-apacheconf.js b/vendor/prism/components/prism-apacheconf.js
new file mode 100644
index 0000000..63c4d9b
--- /dev/null
+++ b/vendor/prism/components/prism-apacheconf.js
@@ -0,0 +1,46 @@
+Prism.languages.apacheconf = {
+ 'comment': /#.*/g,
+ 'directive-inline': {
+ pattern: /^\s*\b(AcceptFilter|AcceptPathInfo|AccessFileName|Action|AddAlt|AddAltByEncoding|AddAltByType|AddCharset|AddDefaultCharset|AddDescription|AddEncoding|AddHandler|AddIcon|AddIconByEncoding|AddIconByType|AddInputFilter|AddLanguage|AddModuleInfo|AddOutputFilter|AddOutputFilterByType|AddType|Alias|AliasMatch|Allow|AllowCONNECT|AllowEncodedSlashes|AllowMethods|AllowOverride|AllowOverrideList|Anonymous|Anonymous_LogEmail|Anonymous_MustGiveEmail|Anonymous_NoUserID|Anonymous_VerifyEmail|AsyncRequestWorkerFactor|AuthBasicAuthoritative|AuthBasicFake|AuthBasicProvider|AuthBasicUseDigestAlgorithm|AuthDBDUserPWQuery|AuthDBDUserRealmQuery|AuthDBMGroupFile|AuthDBMType|AuthDBMUserFile|AuthDigestAlgorithm|AuthDigestDomain|AuthDigestNonceLifetime|AuthDigestProvider|AuthDigestQop|AuthDigestShmemSize|AuthFormAuthoritative|AuthFormBody|AuthFormDisableNoStore|AuthFormFakeBasicAuth|AuthFormLocation|AuthFormLoginRequiredLocation|AuthFormLoginSuccessLocation|AuthFormLogoutLocation|AuthFormMethod|AuthFormMimetype|AuthFormPassword|AuthFormProvider|AuthFormSitePassphrase|AuthFormSize|AuthFormUsername|AuthGroupFile|AuthLDAPAuthorizePrefix|AuthLDAPBindAuthoritative|AuthLDAPBindDN|AuthLDAPBindPassword|AuthLDAPCharsetConfig|AuthLDAPCompareAsUser|AuthLDAPCompareDNOnServer|AuthLDAPDereferenceAliases|AuthLDAPGroupAttribute|AuthLDAPGroupAttributeIsDN|AuthLDAPInitialBindAsUser|AuthLDAPInitialBindPattern|AuthLDAPMaxSubGroupDepth|AuthLDAPRemoteUserAttribute|AuthLDAPRemoteUserIsDN|AuthLDAPSearchAsUser|AuthLDAPSubGroupAttribute|AuthLDAPSubGroupClass|AuthLDAPUrl|AuthMerging|AuthName|AuthnCacheContext|AuthnCacheEnable|AuthnCacheProvideFor|AuthnCacheSOCache|AuthnCacheTimeout|AuthnzFcgiCheckAuthnProvider|AuthnzFcgiDefineProvider|AuthType|AuthUserFile|AuthzDBDLoginToReferer|AuthzDBDQuery|AuthzDBDRedirectQuery|AuthzDBMType|AuthzSendForbiddenOnFailure|BalancerGrowth|BalancerInherit|BalancerMember|BalancerPersist|BrowserMatch|BrowserMatchNoCase|BufferedLogs|BufferSize|CacheDefaultExpire|CacheDetailHeader|CacheDirLength|CacheDirLevels|CacheDisable|CacheEnable|CacheFile|CacheHeader|CacheIgnoreCacheControl|CacheIgnoreHeaders|CacheIgnoreNoLastMod|CacheIgnoreQueryString|CacheIgnoreURLSessionIdentifiers|CacheKeyBaseURL|CacheLastModifiedFactor|CacheLock|CacheLockMaxAge|CacheLockPath|CacheMaxExpire|CacheMaxFileSize|CacheMinExpire|CacheMinFileSize|CacheNegotiatedDocs|CacheQuickHandler|CacheReadSize|CacheReadTime|CacheRoot|CacheSocache|CacheSocacheMaxSize|CacheSocacheMaxTime|CacheSocacheMinTime|CacheSocacheReadSize|CacheSocacheReadTime|CacheStaleOnError|CacheStoreExpired|CacheStoreNoStore|CacheStorePrivate|CGIDScriptTimeout|CGIMapExtension|CharsetDefault|CharsetOptions|CharsetSourceEnc|CheckCaseOnly|CheckSpelling|ChrootDir|ContentDigest|CookieDomain|CookieExpires|CookieName|CookieStyle|CookieTracking|CoreDumpDirectory|CustomLog|Dav|DavDepthInfinity|DavGenericLockDB|DavLockDB|DavMinTimeout|DBDExptime|DBDInitSQL|DBDKeep|DBDMax|DBDMin|DBDParams|DBDPersist|DBDPrepareSQL|DBDriver|DefaultIcon|DefaultLanguage|DefaultRuntimeDir|DefaultType|Define|DeflateBufferSize|DeflateCompressionLevel|DeflateFilterNote|DeflateInflateLimitRequestBody|DeflateInflateRatioBurst|DeflateInflateRatioLimit|DeflateMemLevel|DeflateWindowSize|Deny|DirectoryCheckHandler|DirectoryIndex|DirectoryIndexRedirect|DirectorySlash|DocumentRoot|DTracePrivileges|DumpIOInput|DumpIOOutput|EnableExceptionHook|EnableMMAP|EnableSendfile|Error|ErrorDocument|ErrorLog|ErrorLogFormat|Example|ExpiresActive|ExpiresByType|ExpiresDefault|ExtendedStatus|ExtFilterDefine|ExtFilterOptions|FallbackResource|FileETag|FilterChain|FilterDeclare|FilterProtocol|FilterProvider|FilterTrace|ForceLanguagePriority|ForceType|ForensicLog|GprofDir|GracefulShutdownTimeout|Group|Header|HeaderName|HeartbeatAddress|HeartbeatListen|HeartbeatMaxServers|HeartbeatStorage|HeartbeatStorage|HostnameLookups|IdentityCheck|IdentityCheckTimeout|ImapBase|ImapDefault|ImapMenu|Include|IncludeOptional|IndexHeadInsert|IndexIgnore|IndexIgnoreReset|IndexOptions|IndexOrderDefault|IndexStyleSheet|InputSed|ISAPIAppendLogToErrors|ISAPIAppendLogToQuery|ISAPICacheFile|ISAPIFakeAsync|ISAPILogNotSupported|ISAPIReadAheadBuffer|KeepAlive|KeepAliveTimeout|KeptBodySize|LanguagePriority|LDAPCacheEntries|LDAPCacheTTL|LDAPConnectionPoolTTL|LDAPConnectionTimeout|LDAPLibraryDebug|LDAPOpCacheEntries|LDAPOpCacheTTL|LDAPReferralHopLimit|LDAPReferrals|LDAPRetries|LDAPRetryDelay|LDAPSharedCacheFile|LDAPSharedCacheSize|LDAPTimeout|LDAPTrustedClientCert|LDAPTrustedGlobalCert|LDAPTrustedMode|LDAPVerifyServerCert|LimitInternalRecursion|LimitRequestBody|LimitRequestFields|LimitRequestFieldSize|LimitRequestLine|LimitXMLRequestBody|Listen|ListenBackLog|LoadFile|LoadModule|LogFormat|LogLevel|LogMessage|LuaAuthzProvider|LuaCodeCache|LuaHookAccessChecker|LuaHookAuthChecker|LuaHookCheckUserID|LuaHookFixups|LuaHookInsertFilter|LuaHookLog|LuaHookMapToStorage|LuaHookTranslateName|LuaHookTypeChecker|LuaInherit|LuaInputFilter|LuaMapHandler|LuaOutputFilter|LuaPackageCPath|LuaPackagePath|LuaQuickHandler|LuaRoot|LuaScope|MaxConnectionsPerChild|MaxKeepAliveRequests|MaxMemFree|MaxRangeOverlaps|MaxRangeReversals|MaxRanges|MaxRequestWorkers|MaxSpareServers|MaxSpareThreads|MaxThreads|MergeTrailers|MetaDir|MetaFiles|MetaSuffix|MimeMagicFile|MinSpareServers|MinSpareThreads|MMapFile|ModemStandard|ModMimeUsePathInfo|MultiviewsMatch|Mutex|NameVirtualHost|NoProxy|NWSSLTrustedCerts|NWSSLUpgradeable|Options|Order|OutputSed|PassEnv|PidFile|PrivilegesMode|Protocol|ProtocolEcho|ProxyAddHeaders|ProxyBadHeader|ProxyBlock|ProxyDomain|ProxyErrorOverride|ProxyExpressDBMFile|ProxyExpressDBMType|ProxyExpressEnable|ProxyFtpDirCharset|ProxyFtpEscapeWildcards|ProxyFtpListOnWildcard|ProxyHTMLBufSize|ProxyHTMLCharsetOut|ProxyHTMLDocType|ProxyHTMLEnable|ProxyHTMLEvents|ProxyHTMLExtended|ProxyHTMLFixups|ProxyHTMLInterp|ProxyHTMLLinks|ProxyHTMLMeta|ProxyHTMLStripComments|ProxyHTMLURLMap|ProxyIOBufferSize|ProxyMaxForwards|ProxyPass|ProxyPassInherit|ProxyPassInterpolateEnv|ProxyPassMatch|ProxyPassReverse|ProxyPassReverseCookieDomain|ProxyPassReverseCookiePath|ProxyPreserveHost|ProxyReceiveBufferSize|ProxyRemote|ProxyRemoteMatch|ProxyRequests|ProxySCGIInternalRedirect|ProxySCGISendfile|ProxySet|ProxySourceAddress|ProxyStatus|ProxyTimeout|ProxyVia|ReadmeName|ReceiveBufferSize|Redirect|RedirectMatch|RedirectPermanent|RedirectTemp|ReflectorHeader|RemoteIPHeader|RemoteIPInternalProxy|RemoteIPInternalProxyList|RemoteIPProxiesHeader|RemoteIPTrustedProxy|RemoteIPTrustedProxyList|RemoveCharset|RemoveEncoding|RemoveHandler|RemoveInputFilter|RemoveLanguage|RemoveOutputFilter|RemoveType|RequestHeader|RequestReadTimeout|Require|RewriteBase|RewriteCond|RewriteEngine|RewriteMap|RewriteOptions|RewriteRule|RLimitCPU|RLimitMEM|RLimitNPROC|Satisfy|ScoreBoardFile|Script|ScriptAlias|ScriptAliasMatch|ScriptInterpreterSource|ScriptLog|ScriptLogBuffer|ScriptLogLength|ScriptSock|SecureListen|SeeRequestTail|SendBufferSize|ServerAdmin|ServerAlias|ServerLimit|ServerName|ServerPath|ServerRoot|ServerSignature|ServerTokens|Session|SessionCookieName|SessionCookieName2|SessionCookieRemove|SessionCryptoCipher|SessionCryptoDriver|SessionCryptoPassphrase|SessionCryptoPassphraseFile|SessionDBDCookieName|SessionDBDCookieName2|SessionDBDCookieRemove|SessionDBDDeleteLabel|SessionDBDInsertLabel|SessionDBDPerUser|SessionDBDSelectLabel|SessionDBDUpdateLabel|SessionEnv|SessionExclude|SessionHeader|SessionInclude|SessionMaxAge|SetEnv|SetEnvIf|SetEnvIfExpr|SetEnvIfNoCase|SetHandler|SetInputFilter|SetOutputFilter|SSIEndTag|SSIErrorMsg|SSIETag|SSILastModified|SSILegacyExprParser|SSIStartTag|SSITimeFormat|SSIUndefinedEcho|SSLCACertificateFile|SSLCACertificatePath|SSLCADNRequestFile|SSLCADNRequestPath|SSLCARevocationCheck|SSLCARevocationFile|SSLCARevocationPath|SSLCertificateChainFile|SSLCertificateFile|SSLCertificateKeyFile|SSLCipherSuite|SSLCompression|SSLCryptoDevice|SSLEngine|SSLFIPS|SSLHonorCipherOrder|SSLInsecureRenegotiation|SSLOCSPDefaultResponder|SSLOCSPEnable|SSLOCSPOverrideResponder|SSLOCSPResponderTimeout|SSLOCSPResponseMaxAge|SSLOCSPResponseTimeSkew|SSLOCSPUseRequestNonce|SSLOpenSSLConfCmd|SSLOptions|SSLPassPhraseDialog|SSLProtocol|SSLProxyCACertificateFile|SSLProxyCACertificatePath|SSLProxyCARevocationCheck|SSLProxyCARevocationFile|SSLProxyCARevocationPath|SSLProxyCheckPeerCN|SSLProxyCheckPeerExpire|SSLProxyCheckPeerName|SSLProxyCipherSuite|SSLProxyEngine|SSLProxyMachineCertificateChainFile|SSLProxyMachineCertificateFile|SSLProxyMachineCertificatePath|SSLProxyProtocol|SSLProxyVerify|SSLProxyVerifyDepth|SSLRandomSeed|SSLRenegBufferSize|SSLRequire|SSLRequireSSL|SSLSessionCache|SSLSessionCacheTimeout|SSLSessionTicketKeyFile|SSLSRPUnknownUserSeed|SSLSRPVerifierFile|SSLStaplingCache|SSLStaplingErrorCacheTimeout|SSLStaplingFakeTryLater|SSLStaplingForceURL|SSLStaplingResponderTimeout|SSLStaplingResponseMaxAge|SSLStaplingResponseTimeSkew|SSLStaplingReturnResponderErrors|SSLStaplingStandardCacheTimeout|SSLStrictSNIVHostCheck|SSLUserName|SSLUseStapling|SSLVerifyClient|SSLVerifyDepth|StartServers|StartThreads|Substitute|Suexec|SuexecUserGroup|ThreadLimit|ThreadsPerChild|ThreadStackSize|TimeOut|TraceEnable|TransferLog|TypesConfig|UnDefine|UndefMacro|UnsetEnv|Use|UseCanonicalName|UseCanonicalPhysicalPort|User|UserDir|VHostCGIMode|VHostCGIPrivs|VHostGroup|VHostPrivs|VHostSecure|VHostUser|VirtualDocumentRoot|VirtualDocumentRootIP|VirtualScriptAlias|VirtualScriptAliasIP|WatchdogInterval|XBitHack|xml2EncAlias|xml2EncDefault|xml2StartParse)\b/gmi,
+ alias: 'property'
+ },
+ 'directive-block': {
+ pattern: /<\/?\b(AuthnProviderAlias|AuthzProviderAlias|Directory|DirectoryMatch|Else|ElseIf|Files|FilesMatch|If|IfDefine|IfModule|IfVersion|Limit|LimitExcept|Location|LocationMatch|Macro|Proxy|RequireAll|RequireAny|RequireNone|VirtualHost)\b *.*>/gi,
+ inside: {
+ 'directive-block': {
+ pattern: /^<\/?\w+/,
+ inside: {
+ 'punctuation': /^<\/?/
+ },
+ alias: 'tag'
+ },
+ 'directive-block-parameter': {
+ pattern: /.*[^>]/,
+ inside: {
+ 'punctuation': /:/,
+ 'string': {
+ pattern: /("|').*\1/g,
+ inside: {
+ 'variable': /(\$|%)\{?(\w\.?(\+|\-|:)?)+\}?/g
+ }
+ }
+ },
+ alias: 'attr-value'
+ },
+ 'punctuation': />/
+ },
+ alias: 'tag'
+ },
+ 'directive-flags': {
+ pattern: /\[(\w,?)+\]/g,
+ alias: 'keyword'
+ },
+ 'string': {
+ pattern: /("|').*\1/g,
+ inside: {
+ 'variable': /(\$|%)\{?(\w\.?(\+|\-|:)?)+\}?/g
+ }
+ },
+ 'variable': /(\$|%)\{?(\w\.?(\+|\-|:)?)+\}?/g,
+ 'regex': /\^?.*\$|\^.*\$?/g
+};
diff --git a/vendor/prism/components/prism-apacheconf.min.js b/vendor/prism/components/prism-apacheconf.min.js
new file mode 100644
index 0000000..fc5b3b1
--- /dev/null
+++ b/vendor/prism/components/prism-apacheconf.min.js
@@ -0,0 +1 @@
+Prism.languages.apacheconf={comment:/#.*/g,"directive-inline":{pattern:/^\s*\b(AcceptFilter|AcceptPathInfo|AccessFileName|Action|AddAlt|AddAltByEncoding|AddAltByType|AddCharset|AddDefaultCharset|AddDescription|AddEncoding|AddHandler|AddIcon|AddIconByEncoding|AddIconByType|AddInputFilter|AddLanguage|AddModuleInfo|AddOutputFilter|AddOutputFilterByType|AddType|Alias|AliasMatch|Allow|AllowCONNECT|AllowEncodedSlashes|AllowMethods|AllowOverride|AllowOverrideList|Anonymous|Anonymous_LogEmail|Anonymous_MustGiveEmail|Anonymous_NoUserID|Anonymous_VerifyEmail|AsyncRequestWorkerFactor|AuthBasicAuthoritative|AuthBasicFake|AuthBasicProvider|AuthBasicUseDigestAlgorithm|AuthDBDUserPWQuery|AuthDBDUserRealmQuery|AuthDBMGroupFile|AuthDBMType|AuthDBMUserFile|AuthDigestAlgorithm|AuthDigestDomain|AuthDigestNonceLifetime|AuthDigestProvider|AuthDigestQop|AuthDigestShmemSize|AuthFormAuthoritative|AuthFormBody|AuthFormDisableNoStore|AuthFormFakeBasicAuth|AuthFormLocation|AuthFormLoginRequiredLocation|AuthFormLoginSuccessLocation|AuthFormLogoutLocation|AuthFormMethod|AuthFormMimetype|AuthFormPassword|AuthFormProvider|AuthFormSitePassphrase|AuthFormSize|AuthFormUsername|AuthGroupFile|AuthLDAPAuthorizePrefix|AuthLDAPBindAuthoritative|AuthLDAPBindDN|AuthLDAPBindPassword|AuthLDAPCharsetConfig|AuthLDAPCompareAsUser|AuthLDAPCompareDNOnServer|AuthLDAPDereferenceAliases|AuthLDAPGroupAttribute|AuthLDAPGroupAttributeIsDN|AuthLDAPInitialBindAsUser|AuthLDAPInitialBindPattern|AuthLDAPMaxSubGroupDepth|AuthLDAPRemoteUserAttribute|AuthLDAPRemoteUserIsDN|AuthLDAPSearchAsUser|AuthLDAPSubGroupAttribute|AuthLDAPSubGroupClass|AuthLDAPUrl|AuthMerging|AuthName|AuthnCacheContext|AuthnCacheEnable|AuthnCacheProvideFor|AuthnCacheSOCache|AuthnCacheTimeout|AuthnzFcgiCheckAuthnProvider|AuthnzFcgiDefineProvider|AuthType|AuthUserFile|AuthzDBDLoginToReferer|AuthzDBDQuery|AuthzDBDRedirectQuery|AuthzDBMType|AuthzSendForbiddenOnFailure|BalancerGrowth|BalancerInherit|BalancerMember|BalancerPersist|BrowserMatch|BrowserMatchNoCase|BufferedLogs|BufferSize|CacheDefaultExpire|CacheDetailHeader|CacheDirLength|CacheDirLevels|CacheDisable|CacheEnable|CacheFile|CacheHeader|CacheIgnoreCacheControl|CacheIgnoreHeaders|CacheIgnoreNoLastMod|CacheIgnoreQueryString|CacheIgnoreURLSessionIdentifiers|CacheKeyBaseURL|CacheLastModifiedFactor|CacheLock|CacheLockMaxAge|CacheLockPath|CacheMaxExpire|CacheMaxFileSize|CacheMinExpire|CacheMinFileSize|CacheNegotiatedDocs|CacheQuickHandler|CacheReadSize|CacheReadTime|CacheRoot|CacheSocache|CacheSocacheMaxSize|CacheSocacheMaxTime|CacheSocacheMinTime|CacheSocacheReadSize|CacheSocacheReadTime|CacheStaleOnError|CacheStoreExpired|CacheStoreNoStore|CacheStorePrivate|CGIDScriptTimeout|CGIMapExtension|CharsetDefault|CharsetOptions|CharsetSourceEnc|CheckCaseOnly|CheckSpelling|ChrootDir|ContentDigest|CookieDomain|CookieExpires|CookieName|CookieStyle|CookieTracking|CoreDumpDirectory|CustomLog|Dav|DavDepthInfinity|DavGenericLockDB|DavLockDB|DavMinTimeout|DBDExptime|DBDInitSQL|DBDKeep|DBDMax|DBDMin|DBDParams|DBDPersist|DBDPrepareSQL|DBDriver|DefaultIcon|DefaultLanguage|DefaultRuntimeDir|DefaultType|Define|DeflateBufferSize|DeflateCompressionLevel|DeflateFilterNote|DeflateInflateLimitRequestBody|DeflateInflateRatioBurst|DeflateInflateRatioLimit|DeflateMemLevel|DeflateWindowSize|Deny|DirectoryCheckHandler|DirectoryIndex|DirectoryIndexRedirect|DirectorySlash|DocumentRoot|DTracePrivileges|DumpIOInput|DumpIOOutput|EnableExceptionHook|EnableMMAP|EnableSendfile|Error|ErrorDocument|ErrorLog|ErrorLogFormat|Example|ExpiresActive|ExpiresByType|ExpiresDefault|ExtendedStatus|ExtFilterDefine|ExtFilterOptions|FallbackResource|FileETag|FilterChain|FilterDeclare|FilterProtocol|FilterProvider|FilterTrace|ForceLanguagePriority|ForceType|ForensicLog|GprofDir|GracefulShutdownTimeout|Group|Header|HeaderName|HeartbeatAddress|HeartbeatListen|HeartbeatMaxServers|HeartbeatStorage|HeartbeatStorage|HostnameLookups|IdentityCheck|IdentityCheckTimeout|ImapBase|ImapDefault|ImapMenu|Include|IncludeOptional|IndexHeadInsert|IndexIgnore|IndexIgnoreReset|IndexOptions|IndexOrderDefault|IndexStyleSheet|InputSed|ISAPIAppendLogToErrors|ISAPIAppendLogToQuery|ISAPICacheFile|ISAPIFakeAsync|ISAPILogNotSupported|ISAPIReadAheadBuffer|KeepAlive|KeepAliveTimeout|KeptBodySize|LanguagePriority|LDAPCacheEntries|LDAPCacheTTL|LDAPConnectionPoolTTL|LDAPConnectionTimeout|LDAPLibraryDebug|LDAPOpCacheEntries|LDAPOpCacheTTL|LDAPReferralHopLimit|LDAPReferrals|LDAPRetries|LDAPRetryDelay|LDAPSharedCacheFile|LDAPSharedCacheSize|LDAPTimeout|LDAPTrustedClientCert|LDAPTrustedGlobalCert|LDAPTrustedMode|LDAPVerifyServerCert|LimitInternalRecursion|LimitRequestBody|LimitRequestFields|LimitRequestFieldSize|LimitRequestLine|LimitXMLRequestBody|Listen|ListenBackLog|LoadFile|LoadModule|LogFormat|LogLevel|LogMessage|LuaAuthzProvider|LuaCodeCache|LuaHookAccessChecker|LuaHookAuthChecker|LuaHookCheckUserID|LuaHookFixups|LuaHookInsertFilter|LuaHookLog|LuaHookMapToStorage|LuaHookTranslateName|LuaHookTypeChecker|LuaInherit|LuaInputFilter|LuaMapHandler|LuaOutputFilter|LuaPackageCPath|LuaPackagePath|LuaQuickHandler|LuaRoot|LuaScope|MaxConnectionsPerChild|MaxKeepAliveRequests|MaxMemFree|MaxRangeOverlaps|MaxRangeReversals|MaxRanges|MaxRequestWorkers|MaxSpareServers|MaxSpareThreads|MaxThreads|MergeTrailers|MetaDir|MetaFiles|MetaSuffix|MimeMagicFile|MinSpareServers|MinSpareThreads|MMapFile|ModemStandard|ModMimeUsePathInfo|MultiviewsMatch|Mutex|NameVirtualHost|NoProxy|NWSSLTrustedCerts|NWSSLUpgradeable|Options|Order|OutputSed|PassEnv|PidFile|PrivilegesMode|Protocol|ProtocolEcho|ProxyAddHeaders|ProxyBadHeader|ProxyBlock|ProxyDomain|ProxyErrorOverride|ProxyExpressDBMFile|ProxyExpressDBMType|ProxyExpressEnable|ProxyFtpDirCharset|ProxyFtpEscapeWildcards|ProxyFtpListOnWildcard|ProxyHTMLBufSize|ProxyHTMLCharsetOut|ProxyHTMLDocType|ProxyHTMLEnable|ProxyHTMLEvents|ProxyHTMLExtended|ProxyHTMLFixups|ProxyHTMLInterp|ProxyHTMLLinks|ProxyHTMLMeta|ProxyHTMLStripComments|ProxyHTMLURLMap|ProxyIOBufferSize|ProxyMaxForwards|ProxyPass|ProxyPassInherit|ProxyPassInterpolateEnv|ProxyPassMatch|ProxyPassReverse|ProxyPassReverseCookieDomain|ProxyPassReverseCookiePath|ProxyPreserveHost|ProxyReceiveBufferSize|ProxyRemote|ProxyRemoteMatch|ProxyRequests|ProxySCGIInternalRedirect|ProxySCGISendfile|ProxySet|ProxySourceAddress|ProxyStatus|ProxyTimeout|ProxyVia|ReadmeName|ReceiveBufferSize|Redirect|RedirectMatch|RedirectPermanent|RedirectTemp|ReflectorHeader|RemoteIPHeader|RemoteIPInternalProxy|RemoteIPInternalProxyList|RemoteIPProxiesHeader|RemoteIPTrustedProxy|RemoteIPTrustedProxyList|RemoveCharset|RemoveEncoding|RemoveHandler|RemoveInputFilter|RemoveLanguage|RemoveOutputFilter|RemoveType|RequestHeader|RequestReadTimeout|Require|RewriteBase|RewriteCond|RewriteEngine|RewriteMap|RewriteOptions|RewriteRule|RLimitCPU|RLimitMEM|RLimitNPROC|Satisfy|ScoreBoardFile|Script|ScriptAlias|ScriptAliasMatch|ScriptInterpreterSource|ScriptLog|ScriptLogBuffer|ScriptLogLength|ScriptSock|SecureListen|SeeRequestTail|SendBufferSize|ServerAdmin|ServerAlias|ServerLimit|ServerName|ServerPath|ServerRoot|ServerSignature|ServerTokens|Session|SessionCookieName|SessionCookieName2|SessionCookieRemove|SessionCryptoCipher|SessionCryptoDriver|SessionCryptoPassphrase|SessionCryptoPassphraseFile|SessionDBDCookieName|SessionDBDCookieName2|SessionDBDCookieRemove|SessionDBDDeleteLabel|SessionDBDInsertLabel|SessionDBDPerUser|SessionDBDSelectLabel|SessionDBDUpdateLabel|SessionEnv|SessionExclude|SessionHeader|SessionInclude|SessionMaxAge|SetEnv|SetEnvIf|SetEnvIfExpr|SetEnvIfNoCase|SetHandler|SetInputFilter|SetOutputFilter|SSIEndTag|SSIErrorMsg|SSIETag|SSILastModified|SSILegacyExprParser|SSIStartTag|SSITimeFormat|SSIUndefinedEcho|SSLCACertificateFile|SSLCACertificatePath|SSLCADNRequestFile|SSLCADNRequestPath|SSLCARevocationCheck|SSLCARevocationFile|SSLCARevocationPath|SSLCertificateChainFile|SSLCertificateFile|SSLCertificateKeyFile|SSLCipherSuite|SSLCompression|SSLCryptoDevice|SSLEngine|SSLFIPS|SSLHonorCipherOrder|SSLInsecureRenegotiation|SSLOCSPDefaultResponder|SSLOCSPEnable|SSLOCSPOverrideResponder|SSLOCSPResponderTimeout|SSLOCSPResponseMaxAge|SSLOCSPResponseTimeSkew|SSLOCSPUseRequestNonce|SSLOpenSSLConfCmd|SSLOptions|SSLPassPhraseDialog|SSLProtocol|SSLProxyCACertificateFile|SSLProxyCACertificatePath|SSLProxyCARevocationCheck|SSLProxyCARevocationFile|SSLProxyCARevocationPath|SSLProxyCheckPeerCN|SSLProxyCheckPeerExpire|SSLProxyCheckPeerName|SSLProxyCipherSuite|SSLProxyEngine|SSLProxyMachineCertificateChainFile|SSLProxyMachineCertificateFile|SSLProxyMachineCertificatePath|SSLProxyProtocol|SSLProxyVerify|SSLProxyVerifyDepth|SSLRandomSeed|SSLRenegBufferSize|SSLRequire|SSLRequireSSL|SSLSessionCache|SSLSessionCacheTimeout|SSLSessionTicketKeyFile|SSLSRPUnknownUserSeed|SSLSRPVerifierFile|SSLStaplingCache|SSLStaplingErrorCacheTimeout|SSLStaplingFakeTryLater|SSLStaplingForceURL|SSLStaplingResponderTimeout|SSLStaplingResponseMaxAge|SSLStaplingResponseTimeSkew|SSLStaplingReturnResponderErrors|SSLStaplingStandardCacheTimeout|SSLStrictSNIVHostCheck|SSLUserName|SSLUseStapling|SSLVerifyClient|SSLVerifyDepth|StartServers|StartThreads|Substitute|Suexec|SuexecUserGroup|ThreadLimit|ThreadsPerChild|ThreadStackSize|TimeOut|TraceEnable|TransferLog|TypesConfig|UnDefine|UndefMacro|UnsetEnv|Use|UseCanonicalName|UseCanonicalPhysicalPort|User|UserDir|VHostCGIMode|VHostCGIPrivs|VHostGroup|VHostPrivs|VHostSecure|VHostUser|VirtualDocumentRoot|VirtualDocumentRootIP|VirtualScriptAlias|VirtualScriptAliasIP|WatchdogInterval|XBitHack|xml2EncAlias|xml2EncDefault|xml2StartParse)\b/gim,alias:"property"},"directive-block":{pattern:/<\/?\b(AuthnProviderAlias|AuthzProviderAlias|Directory|DirectoryMatch|Else|ElseIf|Files|FilesMatch|If|IfDefine|IfModule|IfVersion|Limit|LimitExcept|Location|LocationMatch|Macro|Proxy|RequireAll|RequireAny|RequireNone|VirtualHost)\b *.*>/gi,inside:{"directive-block":{pattern:/^<\/?\w+/,inside:{punctuation:/^<\/?/},alias:"tag"},"directive-block-parameter":{pattern:/.*[^>]/,inside:{punctuation:/:/,string:{pattern:/("|').*\1/g,inside:{variable:/(\$|%)\{?(\w\.?(\+|\-|:)?)+\}?/g}}},alias:"attr-value"},punctuation:/>/},alias:"tag"},"directive-flags":{pattern:/\[(\w,?)+\]/g,alias:"keyword"},string:{pattern:/("|').*\1/g,inside:{variable:/(\$|%)\{?(\w\.?(\+|\-|:)?)+\}?/g}},variable:/(\$|%)\{?(\w\.?(\+|\-|:)?)+\}?/g,regex:/\^?.*\$|\^.*\$?/g};
\ No newline at end of file
diff --git a/vendor/prism/components/prism-applescript.js b/vendor/prism/components/prism-applescript.js
new file mode 100644
index 0000000..9dd52bc
--- /dev/null
+++ b/vendor/prism/components/prism-applescript.js
@@ -0,0 +1,23 @@
+/* TODO
+ Add support for nested block comments...
+*/
+
+Prism.languages.applescript = {
+ 'comment': [
+ /\(\*[\w\W]*?\*\)/,
+ /--.+/,
+ /#.+/
+ ],
+ 'string': /"(?:\\?.)*?"/,
+ 'operator': [
+ /[&=≠≤≥*+\-\/÷^]|[<>]=?/,
+ /\b(?:(?:start|begin|end)s? with|(?:(?:does not|doesn't) contain|contains?)|(?:is|isn't|is not) (?:in|contained by)|(?:(?:is|isn't|is not) )?(?:greater|less) than(?: or equal)?(?: to)?|(?:(?:does not|doesn't) come|comes) (?:before|after)|(?:is|isn't|is not) equal(?: to)?|(?:(?:does not|doesn't) equal|equals|equal to|isn't|is not)|(?:a )?(?:ref(?: to)?|reference to)|(?:and|or|div|mod|as|not))\b/
+ ],
+ 'keyword': /\b(?:about|above|after|against|and|apart from|around|as|aside from|at|back|before|beginning|behind|below|beneath|beside|between|but|by|considering|contain|contains|continue|copy|div|does|eighth|else|end|equal|equals|error|every|exit|false|fifth|first|for|fourth|from|front|get|given|global|if|ignoring|in|instead of|into|is|it|its|last|local|me|middle|mod|my|ninth|not|of|on|onto|or|out of|over|prop|property|put|ref|reference|repeat|return|returning|script|second|set|seventh|since|sixth|some|tell|tenth|that|the|then|third|through|thru|timeout|times|to|transaction|true|try|until|where|while|whose|with|without)\b/g,
+ 'class': {
+ pattern: /\b(?:alias|application|boolean|class|constant|date|file|integer|list|number|POSIX file|real|record|reference|RGB color|script|text|centimetres|centimeters|feet|inches|kilometres|kilometers|metres|meters|miles|yards|square feet|square kilometres|square kilometers|square metres|square meters|square miles|square yards|cubic centimetres|cubic centimeters|cubic feet|cubic inches|cubic metres|cubic meters|cubic yards|gallons|litres|liters|quarts|grams|kilograms|ounces|pounds|degrees Celsius|degrees Fahrenheit|degrees Kelvin)\b/,
+ alias: 'builtin'
+ },
+ 'number': /\b-?\d*\.?\d+([Ee]-?\d+)?\b/,
+ 'punctuation': /[{}():,¬«»《》]/
+};
\ No newline at end of file
diff --git a/vendor/prism/components/prism-applescript.min.js b/vendor/prism/components/prism-applescript.min.js
new file mode 100644
index 0000000..d93dd10
--- /dev/null
+++ b/vendor/prism/components/prism-applescript.min.js
@@ -0,0 +1 @@
+Prism.languages.applescript={comment:[/\(\*[\w\W]*?\*\)/,/--.+/,/#.+/],string:/"(?:\\?.)*?"/,operator:[/[&=≠≤≥*+\-\/÷^]|[<>]=?/,/\b(?:(?:start|begin|end)s? with|(?:(?:does not|doesn't) contain|contains?)|(?:is|isn't|is not) (?:in|contained by)|(?:(?:is|isn't|is not) )?(?:greater|less) than(?: or equal)?(?: to)?|(?:(?:does not|doesn't) come|comes) (?:before|after)|(?:is|isn't|is not) equal(?: to)?|(?:(?:does not|doesn't) equal|equals|equal to|isn't|is not)|(?:a )?(?:ref(?: to)?|reference to)|(?:and|or|div|mod|as|not))\b/],keyword:/\b(?:about|above|after|against|and|apart from|around|as|aside from|at|back|before|beginning|behind|below|beneath|beside|between|but|by|considering|contain|contains|continue|copy|div|does|eighth|else|end|equal|equals|error|every|exit|false|fifth|first|for|fourth|from|front|get|given|global|if|ignoring|in|instead of|into|is|it|its|last|local|me|middle|mod|my|ninth|not|of|on|onto|or|out of|over|prop|property|put|ref|reference|repeat|return|returning|script|second|set|seventh|since|sixth|some|tell|tenth|that|the|then|third|through|thru|timeout|times|to|transaction|true|try|until|where|while|whose|with|without)\b/g,"class":{pattern:/\b(?:alias|application|boolean|class|constant|date|file|integer|list|number|POSIX file|real|record|reference|RGB color|script|text|centimetres|centimeters|feet|inches|kilometres|kilometers|metres|meters|miles|yards|square feet|square kilometres|square kilometers|square metres|square meters|square miles|square yards|cubic centimetres|cubic centimeters|cubic feet|cubic inches|cubic metres|cubic meters|cubic yards|gallons|litres|liters|quarts|grams|kilograms|ounces|pounds|degrees Celsius|degrees Fahrenheit|degrees Kelvin)\b/,alias:"builtin"},number:/\b-?\d*\.?\d+([Ee]-?\d+)?\b/,punctuation:/[{}():,¬«»《》]/};
\ No newline at end of file
diff --git a/vendor/prism/components/prism-aspnet.js b/vendor/prism/components/prism-aspnet.js
new file mode 100644
index 0000000..d4e72cf
--- /dev/null
+++ b/vendor/prism/components/prism-aspnet.js
@@ -0,0 +1,49 @@
+Prism.languages.aspnet = Prism.languages.extend('markup', {
+ 'page-directive tag': {
+ pattern: /<%\s*@.*%>/gi,
+ inside: {
+ 'page-directive tag': /<%\s*@\s*(?:Assembly|Control|Implements|Import|Master|MasterType|OutputCache|Page|PreviousPageType|Reference|Register)?|%>/ig,
+ rest: Prism.languages.markup.tag.inside
+ }
+ },
+ 'directive tag': {
+ pattern: /<%.*%>/gi,
+ inside: {
+ 'directive tag': /<%\s*?[$=%#:]{0,2}|%>/gi,
+ rest: Prism.languages.csharp
+ }
+ }
+});
+
+// match directives of attribute value foo="<% Bar %>"
+Prism.languages.insertBefore('inside', 'punctuation', {
+ 'directive tag': Prism.languages.aspnet['directive tag']
+}, Prism.languages.aspnet.tag.inside["attr-value"]);
+
+Prism.languages.insertBefore('aspnet', 'comment', {
+ 'asp comment': /<%--[\w\W]*?--%>/g
+});
+
+// script runat="server" contains csharp, not javascript
+Prism.languages.insertBefore('aspnet', Prism.languages.javascript ? 'script' : 'tag', {
+ 'asp script': {
+ pattern: /