diff --git a/site/css/prism.css b/site/css/prism.css new file mode 100644 index 0000000..f92b455 --- /dev/null +++ b/site/css/prism.css @@ -0,0 +1,226 @@ +/* http://prismjs.com/download.html?themes=prism-coy&languages=clike+javascript+ruby+java+python+scheme */ +/** + * prism.js Coy theme for JavaScript, CoffeeScript, CSS and HTML + * Based on https://github.com/tshedor/workshop-wp-theme (Example: http://workshop.kansan.com/category/sessions/basics or http://workshop.timshedor.com/category/sessions/basics); + * @author Tim Shedor + */ + +/** + * UNUSED, but kept checked-in for reference. + */ + +code[class*="language-"], +pre[class*="language-"] { + color: black; + background: none; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +/* Code blocks */ +pre[class*="language-"] { + position: relative; + margin: .5em 0; + box-shadow: -1px 0px 0px 0px #358ccb, 0px 0px 0px 1px #dfdfdf; + border-left: 10px solid #358ccb; + background-color: #fdfdfd; + background-image: linear-gradient(transparent 50%, rgba(69, 142, 209, 0.04) 50%); + background-size: 3em 3em; + background-origin: content-box; + overflow: visible; + padding: 0; +} + +code[class*="language"] { + max-height: inherit; + height: 100%; + padding: 0 1em; + display: block; + overflow: auto; +} + +/* Margin bottom to accomodate shadow */ +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background-color: #fdfdfd; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + margin-bottom: 1em; +} + +/* Inline code */ +:not(pre) > code[class*="language-"] { + position: relative; + padding: .2em; + border-radius: 0.3em; + color: #c92c2c; + border: 1px solid rgba(0, 0, 0, 0.1); + display: inline; + white-space: normal; +} + +pre[class*="language-"]:before, +pre[class*="language-"]:after { + content: ''; + z-index: -2; + display: block; + position: absolute; + bottom: 0.75em; + left: 0.18em; + width: 40%; + height: 20%; + max-height: 13em; + box-shadow: 0px 13px 8px #979797; + -webkit-transform: rotate(-2deg); + -moz-transform: rotate(-2deg); + -ms-transform: rotate(-2deg); + -o-transform: rotate(-2deg); + transform: rotate(-2deg); +} + +:not(pre) > code[class*="language-"]:after, +pre[class*="language-"]:after { + right: 0.75em; + left: auto; + -webkit-transform: rotate(2deg); + -moz-transform: rotate(2deg); + -ms-transform: rotate(2deg); + -o-transform: rotate(2deg); + transform: rotate(2deg); +} + +.token.comment, +.token.block-comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: #7D8B99; +} + +.token.punctuation { + color: #5F6364; +} + +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.function-name, +.token.constant, +.token.symbol, +.token.deleted { + color: #c92c2c; +} + +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.function, +.token.builtin, +.token.inserted { + color: #2f9c0a; +} + +.token.operator, +.token.entity, +.token.url, +.token.variable { + color: #a67f59; + background: rgba(255, 255, 255, 0.5); +} + +.token.atrule, +.token.attr-value, +.token.keyword, +.token.class-name { + color: #1990b8; +} + +.token.regex, +.token.important { + color: #e90; +} + +.language-css .token.string, +.style .token.string { + color: #a67f59; + background: rgba(255, 255, 255, 0.5); +} + +.token.important { + font-weight: normal; +} + +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} + +.namespace { + opacity: .7; +} + +@media screen and (max-width: 767px) { + pre[class*="language-"]:before, + pre[class*="language-"]:after { + bottom: 14px; + box-shadow: none; + } + +} + +/* Plugin styles */ +.token.tab:not(:empty):before, +.token.cr:before, +.token.lf:before { + color: #e0d7d1; +} + +/* Plugin styles: Line Numbers */ +pre[class*="language-"].line-numbers { + padding-left: 0; +} + +pre[class*="language-"].line-numbers code { + padding-left: 3.8em; +} + +pre[class*="language-"].line-numbers .line-numbers-rows { + left: 0; +} + +/* Plugin styles: Line Highlight */ +pre[class*="language-"][data-line] { + padding-top: 0; + padding-bottom: 0; + padding-left: 0; +} +pre[data-line] code { + position: relative; + padding-left: 4em; +} +pre .line-highlight { + margin-top: 0; +} diff --git a/site/css/pyret.css b/site/css/pyret.css new file mode 100644 index 0000000..eb57bd4 --- /dev/null +++ b/site/css/pyret.css @@ -0,0 +1,68 @@ +.CodeMirror, .inlineExample { line-height: 1.5; border: 1px solid black; background: #f8f8f8; color: #eee; } +.CodeMirror div.CodeMirror-cursors { z-index: 9500; } +.CodeMirror div.CodeMirror-cursor { border-left: 2px solid #111; } + +.cptteach-fixed { line-height: 1.5; background: #ddd; } +.CodeMirror-matchingbracket { + position: relative; +} +.CodeMirror-matchingbracket::before { + content: ""; + position: absolute; + height: 100%; + width: 100%; + border: 0px solid rgb(90, 149, 217); + z-index: 1000; +} +.CodeMirror-matchingbracket.open::before { + border-width: 0.3ex 0px 0px 0.3ex; + border-top-left-radius: 0.4ex; + margin: -0.3ex; +} +.CodeMirror-matchingbracket.close::before { + border-width: 0px 0.3ex 0.3ex 0px; + border-bottom-right-radius: 0.4ex; + margin: 0.3ex; +} +div.CodeMirror span.CodeMirror-matchingbracket-region { + position: relative; + background-color: hsl(220, 100%, 95%); + border-top: 0.1em solid hsl(220, 100%, 95%); + border-bottom: 0.1em solid hsl(220, 100%, 95%); +} +div.CodeMirror span.CodeMirror-matchingbracket-region:last-of-type { + box-shadow: 0.5em 0 0.25em hsl(220, 100%, 95%); +} +div.CodeMirror span.CodeMirror-matchingbracket-region:first-of-type { + box-shadow: -0.5em 0 0.25em hsl(220, 100%, 95%); +} +div.CodeMirror span.CodeMirror-matchingbracket-region:first-of-type:last-of-type { + box-shadow: -0.5em 0 0.25em hsl(220, 100%, 95%), 0.5em 0 0.25em hsl(220, 100%, 95%); +} +div.CodeMirror span.CodeMirror-matchingbracket.open { + box-shadow: -0.3ex 0 0.3ex hsl(220, 100%, 95%); +} +div.CodeMirror span.CodeMirror-matchingbracket.open:last-of-type { + box-shadow: 0.5em 0 0.25em hsl(220, 100%, 95%), -0.3ex 0 0.3ex hsl(220, 100%, 95%); +} +div.CodeMirror span.CodeMirror-matchingbracket.close { + box-shadow: 0.3ex 0 0.3ex hsl(220, 100%, 95%); +} +div.CodeMirror span.CodeMirror-matchingbracket.close:first-of-type { + box-shadow: -0.5em 0 0.25em hsl(220, 100%, 95%), 0.3ex 0 0.3ex hsl(220, 100%, 95%); +} +div.CodeMirror span.CodeMirror-matchingbracket { + font-weight: 600; + color: initial; +} +div.CodeMirror span.CodeMirror-nonmatchingbracket { + font-weight: bold; + background-color: #fdd; + color: #e11; +} +div.CodeMirror span.CodeMirror-nonmatchingbracket-region { + background-color: #fdc; + border-top: 0.1em solid #fdd; + border-bottom: 0.1em solid #fdd; + z-index: 4000; +} diff --git a/site/css/theme-coy.css b/site/css/theme-coy.css new file mode 100644 index 0000000..88673dd --- /dev/null +++ b/site/css/theme-coy.css @@ -0,0 +1,17 @@ +.cm-s-default.CodeMirror { color: black; } +.cm-s-default .cm-comment, .token.comment, .token.block-comment { color: #cd7054; } +.cm-s-default .cm-boolean, .token.boolean { color: #c92c2c; } +.cm-s-default .cm-builtin, .token.punctuation .token.operator { color: #5F6364; } +.cm-s-default .cm-function-name, .token.function-name, .token.function { color: #2f9c0a; } +.cm-s-default .cm-variable, .token.variable { + +} +.cm-s-default .cm-keyword, .token.keyword { color: #1990b8; font-weight: bold; } +.cm-s-default .cm-number, .token.number { color: #c92c2c; } +.cm-s-default .cm-roughnum { color: #c92c2c; } +.cm-s-default .cm-bad-number { color: red; font-weight: bold; } +.cm-s-default .cm-string, .token.string { color: #a67f59; } +.cm-s-default .cm-unterminated-string { color: red; font-weight: bold; } +.cm-s-default .cm-type, .token.class-name { color: #374049; } + + diff --git a/site/css/theme-cpo.css b/site/css/theme-cpo.css new file mode 100644 index 0000000..e192c5a --- /dev/null +++ b/site/css/theme-cpo.css @@ -0,0 +1,15 @@ +.cm-s-default.CodeMirror { color: black; } +.cm-s-default .cm-comment, .token.comment, .token.block-comment { color: #cd7054; } +.cm-s-default .cm-boolean, .token.boolean { color: darkred; } +.cm-s-default .cm-builtin, .token.punctuation .token.operator { color: #555; } +.cm-s-default .cm-function-name, .token.function-name, .token.function { color: #374049; } +.cm-s-default .cm-variable, .token.variable { color: #4d5966; } +.cm-s-default .cm-keyword, .token.keyword { color: black; font-weight: bold; } +.cm-s-default .cm-number, .token.number { color: navy; } +.cm-s-default .cm-roughnum { color: blue; } +.cm-s-default .cm-bad-number { color: red; font-weight: bold; } +.cm-s-default .cm-string, .token.string { color: forestgreen; } +.cm-s-default .cm-unterminated-string { color: red; font-weight: bold; } +.cm-s-default .cm-type { color: #374049; } + + diff --git a/site/js/prism.min.js b/site/js/prism.min.js new file mode 100644 index 0000000..8f75276 --- /dev/null +++ b/site/js/prism.min.js @@ -0,0 +1,9 @@ +/* http://prismjs.com/download.html?themes=prism-coy&languages=clike+javascript+ruby+java+ocaml+python+scheme */ +var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(){var e=/\blang(?:uage)?-(\w+)\b/i,t=0,n=_self.Prism={manual:_self.Prism&&_self.Prism.manual,util:{encode:function(e){return e instanceof a?new a(e.type,n.util.encode(e.content),e.alias):"Array"===n.util.type(e)?e.map(n.util.encode):e.replace(/&/g,"&").replace(/e.length)return;if(!(w instanceof s)){h.lastIndex=0;var _=h.exec(w),P=1;if(!_&&m&&b!=t.length-1){if(h.lastIndex=k,_=h.exec(e),!_)break;for(var A=_.index+(d?_[1].length:0),j=_.index+_[0].length,x=b,O=k,S=t.length;S>x&&(j>O||!t[x].type&&!t[x-1].greedy);++x)O+=t[x].length,A>=O&&(++b,k=O);if(t[b]instanceof s||t[x-1].greedy)continue;P=x-b,w=e.slice(k,O),_.index-=k}if(_){d&&(p=_[1].length);var A=_.index+p,_=_[0].slice(p),j=A+_.length,N=w.slice(0,A),C=w.slice(j),E=[b,P];N&&(++b,k+=N.length,E.push(N));var L=new s(u,f?n.tokenize(_,f):_,y,_,m);if(E.push(L),C&&E.push(C),Array.prototype.splice.apply(t,E),1!=P&&n.matchGrammar(e,t,a,b,k,!0,u),l)break}else if(l)break}}}}},tokenize:function(e,t){var a=[e],r=t.rest;if(r){for(var i in r)t[i]=r[i];delete t.rest}return n.matchGrammar(e,a,t,0,0,!1),a},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},a=n.Token=function(e,t,n,a,r){this.type=e,this.content=t,this.alias=n,this.length=0|(a||"").length,this.greedy=!!r};if(a.stringify=function(e,t,r){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(n){return a.stringify(n,t,e)}).join("");var i={type:e.type,content:a.stringify(e.content,t,r),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:r};if("comment"==i.type&&(i.attributes.spellcheck="true"),e.alias){var l="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,l)}n.hooks.run("wrap",i);var o=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(o?" "+o:"")+">"+i.content+""},!_self.document)return _self.addEventListener?(_self.addEventListener("message",function(e){var t=JSON.parse(e.data),a=t.language,r=t.code,i=t.immediateClose;_self.postMessage(n.highlight(r,n.languages[a],a)),i&&_self.close()},!1),_self.Prism):_self.Prism;var r=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return r&&(n.filename=r.src,!document.addEventListener||n.manual||r.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),_self.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism); +Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:{pattern:/(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,"boolean":/\b(true|false)\b/,"function":/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/}; +Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/,number:/\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,"function":/[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^\/])\/(?!\/)(\[.+?]|\\.|[^\/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0}}),Prism.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\\\|\\?[^\\])*?`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}}}),Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:Prism.languages.javascript,alias:"language-javascript"}}),Prism.languages.js=Prism.languages.javascript; +!function(e){e.languages.ruby=e.languages.extend("clike",{comment:[/#(?!\{[^\r\n]*?\}).*/,/^=begin(?:\r?\n|\r)(?:.*(?:\r?\n|\r))*?=end/m],keyword:/\b(alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|false|for|if|in|module|new|next|nil|not|or|raise|redo|require|rescue|retry|return|self|super|then|throw|true|undef|unless|until|when|while|yield)\b/});var n={pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"tag"},rest:e.util.clone(e.languages.ruby)}};e.languages.insertBefore("ruby","keyword",{regex:[{pattern:/%r([^a-zA-Z0-9\s\{\(\[<])(?:[^\\]|\\[\s\S])*?\1[gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/%r\((?:[^()\\]|\\[\s\S])*\)[gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/%r\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}[gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/%r\[(?:[^\[\]\\]|\\[\s\S])*\][gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/%r<(?:[^<>\\]|\\[\s\S])*>[gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/(^|[^\/])\/(?!\/)(\[.+?]|\\.|[^\/\\\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0}],variable:/[@$]+[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\b)/,symbol:/:[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\b)/}),e.languages.insertBefore("ruby","number",{builtin:/\b(Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|File|Fixnum|Float|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/,constant:/\b[A-Z][a-zA-Z_0-9]*(?:[?!]|\b)/}),e.languages.ruby.string=[{pattern:/%[qQiIwWxs]?([^a-zA-Z0-9\s\{\(\[<])(?:[^\\]|\\[\s\S])*?\1/,greedy:!0,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?\((?:[^()\\]|\\[\s\S])*\)/,greedy:!0,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}/,greedy:!0,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?\[(?:[^\[\]\\]|\\[\s\S])*\]/,greedy:!0,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?<(?:[^<>\\]|\\[\s\S])*>/,greedy:!0,inside:{interpolation:n}},{pattern:/("|')(#\{[^}]+\}|\\(?:\r?\n|\r)|\\?.)*?\1/,greedy:!0,inside:{interpolation:n}}]}(Prism); +Prism.languages.java=Prism.languages.extend("clike",{keyword:/\b(abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\b/,number:/\b0b[01]+\b|\b0x[\da-f]*\.?[\da-fp\-]+\b|\b\d*\.?\d+(?:e[+-]?\d+)?[df]?\b/i,operator:{pattern:/(^|[^.])(?:\+[+=]?|-[-=]?|!=?|<>?>?=?|==?|&[&=]?|\|[|=]?|\*=?|\/=?|%=?|\^=?|[?:~])/m,lookbehind:!0}}),Prism.languages.insertBefore("java","function",{annotation:{alias:"punctuation",pattern:/(^|[^.])@\w+/,lookbehind:!0}}); +Prism.languages.ocaml={comment:/\(\*[\s\S]*?\*\)/,string:[{pattern:/"(?:\\.|[^\\\r\n"])*"/,greedy:!0},{pattern:/(['`])(?:\\(?:\d+|x[\da-f]+|.)|(?!\1)[^\\\r\n])\1/i,greedy:!0}],number:/\b-?(?:0x[\da-f][\da-f_]+|(?:0[bo])?\d[\d_]*\.?[\d_]*(?:e[+-]?[\d_]+)?)/i,type:{pattern:/\B['`][a-z\d_]*/i,alias:"variable"},directive:{pattern:/\B#[a-z\d_]+/i,alias:"function"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|object|of|open|prefix|private|rec|then|sig|struct|to|try|type|val|value|virtual|where|while|with)\b/,"boolean":/\b(?:false|true)\b/,operator:/:=|[=<>@^|&+\-*\/$%!?~][!$%&\*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lxor|lsl|lsr|mod|nor|or)\b/,punctuation:/[(){}\[\]|_.,:;]/}; +Prism.languages.python={"triple-quoted-string":{pattern:/"""[\s\S]+?"""|'''[\s\S]+?'''/,alias:"string"},comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},string:{pattern:/("|')(?:\\\\|\\?[^\\\r\n])*?\1/,greedy:!0},"function":{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_][a-zA-Z0-9_]*(?=\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)[a-z0-9_]+/i,lookbehind:!0},keyword:/\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|pass|print|raise|return|try|while|with|yield)\b/,"boolean":/\b(?:True|False)\b/,number:/\b-?(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:or|and|not)\b/,punctuation:/[{}[\];(),.:]/}; +Prism.languages.scheme={comment:/;.*/,string:{pattern:/"(?:[^"\\\r\n]|\\.)*?"|'[^('\s]*/,greedy:!0},keyword:{pattern:/(\()(?:define(?:-syntax|-library|-values)?|(?:case-)?lambda|let(?:\*|rec)?(?:-values)?|else|if|cond|begin|delay(?:-force)?|parameterize|guard|set!|(?:quasi-)?quote|syntax-rules)/,lookbehind:!0},builtin:{pattern:/(\()(?:(?:cons|car|cdr|list|call-with-current-continuation|call\/cc|append|abs|apply|eval)\b|null\?|pair\?|boolean\?|eof-object\?|char\?|procedure\?|number\?|port\?|string\?|vector\?|symbol\?|bytevector\?)/,lookbehind:!0},number:{pattern:/(\s|\))[-+]?\d*\.?\d+(?:\s*[-+]\s*\d*\.?\d+i)?\b/,lookbehind:!0},"boolean":/#[tf]/,operator:{pattern:/(\()(?:[-+*%\/]|[<>]=?|=>?)/,lookbehind:!0},"function":{pattern:/(\()[^\s()]*(?=\s)/,lookbehind:!0},punctuation:/[()]/}; diff --git a/src/page-template.html b/src/page-template.html index 93a02af..3d346a4 100644 --- a/src/page-template.html +++ b/src/page-template.html @@ -1,5 +1,6 @@ @(define disable-prefix (dynamic-require 'scribble/text 'disable-prefix)) @(define xexpr->string (dynamic-require 'xml 'xexpr->string)) + @@ -31,6 +32,8 @@ + + @|code|}) + @(define (highlighted-code #:lang lang . code) + @list{@|code|}) + @(define (two-langs header words other-lang pyret-code other-code) (define other-block @list{ @@ -477,7 +483,7 @@

Highlights vs. Existing Languages

n * n end } -@disable-prefix{ +@highlighted-code[#:lang "python"]{ def square(n): return n * n } @@ -492,7 +498,7 @@

Highlights vs. Existing Languages

fun square(n) -> Number: n * n end} -@disable-prefix{ +@highlighted-code[#:lang "java"]{ static int square(int n) @"{" return n * n; @"}"}) @@ -507,7 +513,7 @@

Highlights vs. Existing Languages

-> BST % (is-balanced): # self-balancing tree insertion end} -@disable-prefix{ +@highlighted-code[#:lang "python"]{ def insert(e, s): # tree insertion but with # invariants neither @@ -522,7 +528,7 @@

Highlights vs. Existing Languages

# this is true ((1 / 3) * 3) == 1 } -@disable-prefix{ +@highlighted-code[#:lang "java"]{ // this is not true ((1 / 3) * 3) == 1 }) @@ -540,7 +546,7 @@

Highlights vs. Existing Languages

[list: 2,4,6,8].first is 2 end } -@disable-prefix{ +@highlighted-code[#:lang "python"]{ import unittest class TestLists(unittest.TestCase): def test_empty_first(self): @@ -575,7 +581,7 @@

Highlights vs. Existing Languages

| leaf | node(v, l, r) end} -@disable-prefix{ +@highlighted-code[#:lang "python"]{ class BinTree: pass class leaf(BinTree): @@ -611,7 +617,7 @@

Highlights vs. Existing Languages

a.name end } -@disable-prefix{ +@highlighted-code[#:lang "ocaml"]{ type animal = | Elephant of string * float | Tiger of string * float @@ -640,7 +646,7 @@

Highlights vs. Existing Languages

a.name end } -@disable-prefix{ +@highlighted-code[#:lang "scheme"]{ (struct elephant (name weight)) (struct tiger (name stripes)) (struct horse (name races-won)) @@ -667,7 +673,9 @@

Highlights vs. Existing Languages

"JavaScript" @disable-prefix{ o = @"{" - method my-method(self, x): self.y + x end, + method my-method(self, x): + self.y + x + end, y: 10 @"}" method-as-fun = o.my-method @@ -676,7 +684,7 @@

Highlights vs. Existing Languages

method-as-fun(5) is 15 end } -@disable-prefix{ +@highlighted-code[#:lang "javascript"]{ var o = @"{" my_method: function(x) @"{" return this.y + x; @@ -694,7 +702,9 @@

Highlights vs. Existing Languages

"Ruby" @disable-prefix{ o = @"{" - method my-method(self, x): self.y + x end, + method my-method(self, x): + self.y + x + end, y: 10 @"}" method-as-fun = o.my-method @@ -703,7 +713,7 @@

Highlights vs. Existing Languages

method-as-fun(5) is 15 end } -@disable-prefix{ +@highlighted-code[#:lang "ruby"]{ o = Object.new def o.my_method(x) self.y + x @@ -750,6 +760,11 @@

Welcome

+ +