├── .gitignore
├── .travis.yml
├── CNAME
├── Gemfile
├── Gemfile.lock
├── README.md
├── bin
└── specljs_runner.js
├── config.rb
├── css
├── sass
│ ├── _helpers.sass
│ ├── _static.sass
│ └── style.sass
└── style.css
├── epl-v10.html
├── images
├── paper.jpg
└── zencircle.png
├── index.html
├── project.clj
├── script
├── build
└── deploy
├── spec
├── features
│ └── koans_spec.rb
├── koans
│ └── meditations_spec.cljs
└── spec_helper.rb
├── src
└── koans
│ ├── core.cljs
│ ├── meditations.cljs
│ ├── meditations
│ ├── 01_equality.cljs
│ ├── 02_lists.cljs
│ ├── 03_vectors.cljs
│ ├── 04_sets.cljs
│ ├── 05_maps.cljs
│ ├── 06_functions.cljs
│ ├── 07_conditionals.cljs
│ ├── 08_higher_order_functions.cljs
│ ├── 09_runtime_polymorphism.cljs
│ ├── 10_lazy_sequences.cljs
│ ├── 11_sequence_comprehensions.cljs
│ ├── 12_creating_functions.cljs
│ ├── 13_recursion.cljs
│ ├── 14_destructuring.cljs
│ ├── 15_atoms.cljs
│ ├── 15_refs.cljs
│ ├── 16_datatypes.cljs
│ └── 17_partition.cljs
│ └── utils.cljs
└── vendor
├── highlight.pack.js
└── styles
├── arta.css
├── ascetic.css
├── brown_paper.css
├── brown_papersq.png
├── dark.css
├── default.css
├── docco.css
├── far.css
├── foundation.css
├── github.css
├── googlecode.css
├── idea.css
├── ir_black.css
├── magula.css
├── mono-blue.css
├── monokai.css
├── monokai_sublime.css
├── obsidian.css
├── pojoaque.css
├── pojoaque.jpg
├── railscasts.css
├── rainbow.css
├── school_book.css
├── school_book.png
├── solarized_dark.css
├── solarized_light.css
├── sunburst.css
├── tomorrow-night-blue.css
├── tomorrow-night-bright.css
├── tomorrow-night-eighties.css
├── tomorrow-night.css
├── tomorrow.css
├── vs.css
├── xcode.css
└── zenburn.css
/.gitignore:
--------------------------------------------------------------------------------
1 | out/*
2 | repl.out/*
3 | target/*
4 | .lein-repl-history
5 | koans.sublime*
6 | .sass-cache
7 | koans.js
8 | webrepl.js
9 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: clojure
2 | lein: lein2
3 | script: lein2 cljsbuild test
--------------------------------------------------------------------------------
/CNAME:
--------------------------------------------------------------------------------
1 | clojurescriptkoans.com
--------------------------------------------------------------------------------
/Gemfile:
--------------------------------------------------------------------------------
1 | source "https://rubygems.org"
2 |
3 | gem 'capybara'
4 | gem 'capybara-webkit'
5 | gem 'rack'
6 | gem 'rspec'
7 |
--------------------------------------------------------------------------------
/Gemfile.lock:
--------------------------------------------------------------------------------
1 | GEM
2 | remote: https://rubygems.org/
3 | specs:
4 | capybara (2.1.0)
5 | mime-types (>= 1.16)
6 | nokogiri (>= 1.3.3)
7 | rack (>= 1.0.0)
8 | rack-test (>= 0.5.4)
9 | xpath (~> 2.0)
10 | capybara-webkit (1.0.0)
11 | capybara (~> 2.0, >= 2.0.2)
12 | json
13 | diff-lcs (1.2.5)
14 | json (1.8.1)
15 | mime-types (2.0)
16 | mini_portile (0.5.2)
17 | nokogiri (1.6.0)
18 | mini_portile (~> 0.5.0)
19 | rack (1.5.2)
20 | rack-test (0.6.2)
21 | rack (>= 1.0)
22 | rspec (2.14.1)
23 | rspec-core (~> 2.14.0)
24 | rspec-expectations (~> 2.14.0)
25 | rspec-mocks (~> 2.14.0)
26 | rspec-core (2.14.7)
27 | rspec-expectations (2.14.4)
28 | diff-lcs (>= 1.1.3, < 2.0)
29 | rspec-mocks (2.14.4)
30 | xpath (2.0.0)
31 | nokogiri (~> 1.3)
32 |
33 | PLATFORMS
34 | ruby
35 |
36 | DEPENDENCIES
37 | capybara
38 | capybara-webkit
39 | rack
40 | rspec
41 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ClojureScript Koans Online
2 | ==========================
3 | http://clojurescriptkoans.com
4 |
5 | The ClojureScript Koans are a fun and easy way to get started with ClojureScript. No experience with Clojure or ClojureScript is assumed or required, and since they're run in-browser they don't require a functioning Clojure development environment.
6 |
7 | They are adapted from the [Clojure Koans](http://clojurekoans.com), with some minor changes to accommodate the differences between Clojure and ClojureScript.
8 |
9 |
10 | Development
11 | -----------
12 | You will need [Leiningen](http://leiningen.org).
13 |
14 | If you wish to edit the project's stylesheets, you will need to have [Sass](http://sass-lang.com) and [Compass](http://compass-style.org) installed. The project contains a Compass `config.rb` file.
15 |
16 | ### Editing the Koans
17 | The koans themselves live in the `src/koans/meditations` folder. For a given set, the `koans` variable should contain a sequence of description strings and their matching S-expressions. Within the S-expressions, any instances of `:__` will be replaced by an input box. There are instances where ClojureScript's `pr-str` function will alter the displayed form of an expression (e.g. replacing quote characters with a `(quote)` expression); if this happens, you can quote the entire S-expression to have it displayed exactly as written.
18 |
19 | If you need to define new functions for a section, add them to the `fns` vector. Like the koans, a function may either be a quoted S-expression or a string, and any instances of the symbol `:__` will be replaced with an input field. If you wish to specify proper indentation, whitespace is maintained in the string form. In either case, syntax highlighting will automatically be applied.
20 |
21 | If you want to create a new category of koans, you will also need to add your category to the structure in `meditations.cljs`.
22 |
23 |
24 | ### Helper Scripts
25 | The `script` folder contains a number of helpful scripts. All are designed to be run from the root project directory.
26 |
27 | `build`: Does a clean recompile of the application code.
28 |
29 | `deploy`: If you're hosting the site on GitHub Pages, this will deploy the latest version of your code. It merges your current branch into the `gh-pages` branch, generates a static copy with compiled JS/CSS, and then pushes the `gh-pages` branch to your default remote. See the script's source for caveats.
30 |
31 |
32 | Related Projects
33 | ----------------
34 | * [Russian translation](https://clojurescript.ru/koans/) by [Roman Liutikov](https://github.com/roman01la)
35 |
36 |
37 | Contributing
38 | ------------
39 | Pull requests are encouraged!
40 |
41 |
42 | License
43 | -------
44 | The use and distribution terms for this software are covered by the Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can be found in the file epl-v10.html at the root of this distribution. By using this software in any fashion, you are agreeing to be bound by the terms of this license.
45 |
--------------------------------------------------------------------------------
/bin/specljs_runner.js:
--------------------------------------------------------------------------------
1 | #! /usr/bin/env phantomjs
2 |
3 | var fs = require("fs");
4 | var p = require('webpage').create();
5 | var sys = require('system');
6 |
7 | p.onConsoleMessage = function (x) {
8 | fs.write("/dev/stdout", x, "w");
9 | };
10 |
11 | for (var i = 0; i < phantom.args.length; i++) {
12 | p.injectJs(phantom.args[i]);
13 | }
14 |
15 | var result = p.evaluate(function () {
16 | specljs.run.standard.armed = true;
17 | return specljs.run.standard.run_specs(
18 | cljs.core.keyword("color"), true
19 | );
20 | });
21 |
22 | phantom.exit(result);
23 |
--------------------------------------------------------------------------------
/config.rb:
--------------------------------------------------------------------------------
1 | # Require any additional compass plugins here.
2 |
3 | # Set this to the root of your project when deployed:
4 | http_path = "/"
5 | css_dir = "css"
6 | sass_dir = "css/sass"
7 | images_dir = "images"
8 | javascripts_dir = "javascripts"
9 |
10 | # You can select your preferred output style here (can be overridden via the command line):
11 | # output_style = :expanded or :nested or :compact or :compressed
12 |
13 | # To enable relative paths to assets via compass helper functions. Uncomment:
14 | # relative_assets = true
15 |
16 | # To disable debugging comments that display the original location of your selectors. Uncomment:
17 | # line_comments = false
18 |
19 | preferred_syntax = :sass
20 |
--------------------------------------------------------------------------------
/css/sass/_helpers.sass:
--------------------------------------------------------------------------------
1 | @import "compass/css3/transition"
2 |
3 | @mixin code-font
4 | font:
5 | size: 24px
6 | family: Monaco, Inconsolata, Menlo, Courier
7 |
8 | @mixin header-font
9 | font:
10 | family: Optima, PT Sans, Lucida Grande, sans-serif
11 | weight: 100
12 |
13 |
14 | @mixin fadeable
15 | display: none
--------------------------------------------------------------------------------
/css/sass/_static.sass:
--------------------------------------------------------------------------------
1 | .static
2 | +fadeable
3 | font-size: 20px
4 | line-height: 1.5em
5 | margin: auto
6 | text-align: justify
7 | width: 100%
8 |
9 | h1
10 | +header-font
11 | line-height: 1.5em
12 |
13 | .about
14 | clear: both
15 |
16 | .start
17 | background: lighten(#42733C, 20%)
18 | box-shadow: 0px 0px 5px 0.5px rgba(0, 0, 0, 0.1)
19 | color: rgba(255, 255, 255, 0.9)
20 | float: right
21 | font-size: 25px
22 | +header-font
23 | margin-top: 20px
24 | margin-bottom: 50px
25 | padding: 10px
26 | text-align: center
27 | text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.1)
28 |
29 |
30 | .content
31 | margin: auto
32 | width: 650px
33 |
34 | #the-end
35 | .share
36 | margin: auto
37 | vertical-align: top
38 | width: 100px
39 |
40 | iframe
41 | width: 200px
42 | height: 200px
43 |
44 | ul
45 | margin-left: 60px
46 | margin-bottom: 40px
47 | a
48 | +header-font
--------------------------------------------------------------------------------
/css/sass/style.sass:
--------------------------------------------------------------------------------
1 | @import "helpers"
2 | @import "static"
3 |
4 | $input-blue: #0088DA
5 | body
6 | background-color: #F0E8E1
7 | backgound: url("../images/paper.jpg")
8 | color: #555
9 | font:
10 | family: 'Sorts Mill Goudy', serif
11 | size: 28px
12 | overflow-x: hidden
13 | text-shadow: 0px 0px 10px rgba(255, 255, 255, 0.8)
14 |
15 | a
16 | color: darken($input-blue, 5%)
17 | text-decoration: none
18 |
19 | .category
20 | +fadeable
21 | +header-font
22 | font-weight: 200
23 | left: 40px
24 | position: absolute
25 | text:
26 | shadow: 0px 0px 10px rgba(255, 255, 255, 0.5)
27 | transform: capitalize
28 | top: 20px
29 |
30 | &.unfaded
31 | opacity: 0.7
32 |
33 | .circle
34 | bottom: 20px
35 | height: 50%
36 | opacity: 0.1
37 | position: fixed
38 | right: 20px
39 | z-index: -1
40 |
41 | .error
42 | color: #D33
43 | font-size: 18px
44 | padding-top: 10px
45 | +fadeable
46 |
47 | .functions
48 | margin: 20px
49 | padding-top: 30px
50 | text-align: center
51 |
52 | .function
53 | background-color: rgba(0, 0, 0, 0.05)
54 | box-shadow: 0px 0px 5px 0.5px rgba(0, 0, 0, 0.2)
55 | display: inline-block
56 | margin: 10px
57 | max-width: 860px
58 | padding:
59 | top: 10px
60 | bottom: 10px
61 | left: 18px
62 | right: 18px
63 | text-align: left
64 | vertical-align: top
65 |
66 | pre, input
67 | +code-font
68 | display: inline-block
69 | font-size: 16px
70 |
71 | input
72 | border-bottom: 1px dashed #AAA
73 | margin-right: 6px
74 |
75 |
76 | .koan
77 | +fadeable
78 | max-width: 900px
79 | margin: auto
80 | padding-top: 15%
81 | text-align: center
82 |
83 | &.has-functions
84 | padding-top: 8%
85 |
86 | .description
87 | margin: 20px
88 | width: 100%
89 |
90 | .code-box
91 | background: rgba(255, 255, 255, 0.7)
92 | box-shadow: 0px 0px 5px 0.5px rgba(0, 0, 0, 0.1)
93 | display: inline-block
94 | +code-font
95 | text-shadow: none
96 | +transition(background-color 1s)
97 |
98 | &.incorrect
99 | background-color: rgba(255, 0, 0, 0.2)
100 |
101 | padding:
102 | left: 20px
103 | right: 20px
104 | top: 10px
105 | bottom: 10px
106 |
107 | .shadow
108 | position: absolute
109 | visibility: hidden
110 |
111 | .parentheses-0
112 | color: #097ACC
113 |
114 | .parentheses-1
115 | color: #FF7E64
116 |
117 | .parentheses-2
118 | color: #25FFE7
119 |
120 | .parentheses-3
121 | color: #CC0D09
122 |
123 | .parentheses-4
124 | color: #4C7899
125 |
126 | .parentheses-5
127 | color: #55CC09
128 |
129 | .parentheses-6
130 | color: #99614C
131 |
132 | input
133 | background-color: transparent
134 | border: none
135 | border-bottom: 1px dashed #AAA
136 | +code-font
137 | color: darken($input-blue, 10%)
138 | text-align: center
139 | +transition(width 0.2s ease-in-out)
140 | width: 56px
141 |
142 | -webkit-appearance: none
143 | &:focus
144 | outline: none
--------------------------------------------------------------------------------
/css/style.css:
--------------------------------------------------------------------------------
1 | /* line 1, sass/_static.sass */
2 | .static {
3 | display: none;
4 | font-size: 20px;
5 | line-height: 1.5em;
6 | margin: auto;
7 | text-align: justify;
8 | width: 100%;
9 | }
10 | /* line 9, sass/_static.sass */
11 | .static h1 {
12 | font-family: Optima, PT Sans, Lucida Grande, sans-serif;
13 | font-weight: 100;
14 | line-height: 1.5em;
15 | }
16 | /* line 13, sass/_static.sass */
17 | .static .about {
18 | clear: both;
19 | }
20 | /* line 16, sass/_static.sass */
21 | .static .start {
22 | background: #6eaf66;
23 | box-shadow: 0px 0px 5px 0.5px rgba(0, 0, 0, 0.1);
24 | color: rgba(255, 255, 255, 0.9);
25 | float: right;
26 | font-size: 25px;
27 | font-family: Optima, PT Sans, Lucida Grande, sans-serif;
28 | font-weight: 100;
29 | margin-top: 20px;
30 | margin-bottom: 50px;
31 | padding: 10px;
32 | text-align: center;
33 | text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.1);
34 | }
35 | /* line 30, sass/_static.sass */
36 | .static .content {
37 | margin: auto;
38 | width: 650px;
39 | }
40 |
41 | /* line 35, sass/_static.sass */
42 | #the-end .share {
43 | margin: auto;
44 | vertical-align: top;
45 | width: 100px;
46 | }
47 | /* line 40, sass/_static.sass */
48 | #the-end .share iframe {
49 | width: 200px;
50 | height: 200px;
51 | }
52 | /* line 44, sass/_static.sass */
53 | #the-end ul {
54 | margin-left: 60px;
55 | margin-bottom: 40px;
56 | }
57 | /* line 47, sass/_static.sass */
58 | #the-end a {
59 | font-family: Optima, PT Sans, Lucida Grande, sans-serif;
60 | font-weight: 100;
61 | }
62 |
63 | /* line 5, sass/style.sass */
64 | body {
65 | background-color: #F0E8E1;
66 | backgound: url("../images/paper.jpg");
67 | color: #555;
68 | font-family: "Sorts Mill Goudy", serif;
69 | font-size: 28px;
70 | overflow-x: hidden;
71 | text-shadow: 0px 0px 10px rgba(255, 255, 255, 0.8);
72 | }
73 |
74 | /* line 15, sass/style.sass */
75 | a {
76 | color: #0078c1;
77 | text-decoration: none;
78 | }
79 |
80 | /* line 19, sass/style.sass */
81 | .category {
82 | display: none;
83 | font-family: Optima, PT Sans, Lucida Grande, sans-serif;
84 | font-weight: 100;
85 | font-weight: 200;
86 | left: 40px;
87 | position: absolute;
88 | text-shadow: 0px 0px 10px rgba(255, 255, 255, 0.5);
89 | text-transform: capitalize;
90 | top: 20px;
91 | }
92 | /* line 30, sass/style.sass */
93 | .category.unfaded {
94 | opacity: 0.7;
95 | }
96 |
97 | /* line 33, sass/style.sass */
98 | .circle {
99 | bottom: 20px;
100 | height: 50%;
101 | opacity: 0.1;
102 | position: fixed;
103 | right: 20px;
104 | z-index: -1;
105 | }
106 |
107 | /* line 41, sass/style.sass */
108 | .error {
109 | color: #D33;
110 | font-size: 18px;
111 | padding-top: 10px;
112 | display: none;
113 | }
114 |
115 | /* line 47, sass/style.sass */
116 | .functions {
117 | margin: 20px;
118 | padding-top: 30px;
119 | text-align: center;
120 | }
121 | /* line 52, sass/style.sass */
122 | .functions .function {
123 | background-color: rgba(0, 0, 0, 0.05);
124 | box-shadow: 0px 0px 5px 0.5px rgba(0, 0, 0, 0.2);
125 | display: inline-block;
126 | margin: 10px;
127 | max-width: 860px;
128 | padding-top: 10px;
129 | padding-bottom: 10px;
130 | padding-left: 18px;
131 | padding-right: 18px;
132 | text-align: left;
133 | vertical-align: top;
134 | }
135 | /* line 66, sass/style.sass */
136 | .functions .function pre, .functions .function input {
137 | font-size: 24px;
138 | font-family: Monaco, Inconsolata, Menlo, Courier;
139 | display: inline-block;
140 | font-size: 16px;
141 | }
142 | /* line 71, sass/style.sass */
143 | .functions .function input {
144 | border-bottom: 1px dashed #AAA;
145 | margin-right: 6px;
146 | }
147 |
148 | /* line 76, sass/style.sass */
149 | .koan {
150 | display: none;
151 | max-width: 900px;
152 | margin: auto;
153 | padding-top: 15%;
154 | text-align: center;
155 | }
156 | /* line 83, sass/style.sass */
157 | .koan.has-functions {
158 | padding-top: 8%;
159 | }
160 | /* line 86, sass/style.sass */
161 | .koan .description {
162 | margin: 20px;
163 | width: 100%;
164 | }
165 | /* line 90, sass/style.sass */
166 | .koan .code-box {
167 | background: rgba(255, 255, 255, 0.7);
168 | box-shadow: 0px 0px 5px 0.5px rgba(0, 0, 0, 0.1);
169 | display: inline-block;
170 | font-size: 24px;
171 | font-family: Monaco, Inconsolata, Menlo, Courier;
172 | text-shadow: none;
173 | -moz-transition: background-color 1s;
174 | -o-transition: background-color 1s;
175 | -webkit-transition: background-color 1s;
176 | transition: background-color 1s;
177 | padding-left: 20px;
178 | padding-right: 20px;
179 | padding-top: 10px;
180 | padding-bottom: 10px;
181 | }
182 | /* line 98, sass/style.sass */
183 | .koan .code-box.incorrect {
184 | background-color: rgba(255, 0, 0, 0.2);
185 | }
186 | /* line 107, sass/style.sass */
187 | .koan .shadow {
188 | position: absolute;
189 | visibility: hidden;
190 | }
191 | /* line 111, sass/style.sass */
192 | .koan .parentheses-0 {
193 | color: #097ACC;
194 | }
195 | /* line 114, sass/style.sass */
196 | .koan .parentheses-1 {
197 | color: #FF7E64;
198 | }
199 | /* line 117, sass/style.sass */
200 | .koan .parentheses-2 {
201 | color: #25FFE7;
202 | }
203 | /* line 120, sass/style.sass */
204 | .koan .parentheses-3 {
205 | color: #CC0D09;
206 | }
207 | /* line 123, sass/style.sass */
208 | .koan .parentheses-4 {
209 | color: #4C7899;
210 | }
211 | /* line 126, sass/style.sass */
212 | .koan .parentheses-5 {
213 | color: #55CC09;
214 | }
215 | /* line 129, sass/style.sass */
216 | .koan .parentheses-6 {
217 | color: #99614C;
218 | }
219 | /* line 132, sass/style.sass */
220 | .koan input {
221 | background-color: transparent;
222 | border: none;
223 | border-bottom: 1px dashed #AAA;
224 | font-size: 24px;
225 | font-family: Monaco, Inconsolata, Menlo, Courier;
226 | color: #0068a7;
227 | text-align: center;
228 | -moz-transition: width 0.2s ease-in-out;
229 | -o-transition: width 0.2s ease-in-out;
230 | -webkit-transition: width 0.2s ease-in-out;
231 | transition: width 0.2s ease-in-out;
232 | width: 56px;
233 | -webkit-appearance: none;
234 | }
235 | /* line 143, sass/style.sass */
236 | .koan input:focus {
237 | outline: none;
238 | }
239 |
--------------------------------------------------------------------------------
/epl-v10.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Eclipse Public License - Version 1.0
9 |
26 |
27 |
28 |
29 |
30 |
31 | Eclipse Public License - v 1.0
32 |
33 | THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
34 | PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
35 | DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
36 | AGREEMENT.
37 |
38 | 1. DEFINITIONS
39 |
40 | "Contribution" means:
41 |
42 | a) in the case of the initial Contributor, the initial
43 | code and documentation distributed under this Agreement, and
44 | b) in the case of each subsequent Contributor:
45 | i) changes to the Program, and
46 | ii) additions to the Program;
47 | where such changes and/or additions to the Program
48 | originate from and are distributed by that particular Contributor. A
49 | Contribution 'originates' from a Contributor if it was added to the
50 | Program by such Contributor itself or anyone acting on such
51 | Contributor's behalf. Contributions do not include additions to the
52 | Program which: (i) are separate modules of software distributed in
53 | conjunction with the Program under their own license agreement, and (ii)
54 | are not derivative works of the Program.
55 |
56 | "Contributor" means any person or entity that distributes
57 | the Program.
58 |
59 | "Licensed Patents" mean patent claims licensable by a
60 | Contributor which are necessarily infringed by the use or sale of its
61 | Contribution alone or when combined with the Program.
62 |
63 | "Program" means the Contributions distributed in accordance
64 | with this Agreement.
65 |
66 | "Recipient" means anyone who receives the Program under
67 | this Agreement, including all Contributors.
68 |
69 | 2. GRANT OF RIGHTS
70 |
71 | a) Subject to the terms of this Agreement, each
72 | Contributor hereby grants Recipient a non-exclusive, worldwide,
73 | royalty-free copyright license to reproduce, prepare derivative works
74 | of, publicly display, publicly perform, distribute and sublicense the
75 | Contribution of such Contributor, if any, and such derivative works, in
76 | source code and object code form.
77 |
78 | b) Subject to the terms of this Agreement, each
79 | Contributor hereby grants Recipient a non-exclusive, worldwide,
80 | royalty-free patent license under Licensed Patents to make, use, sell,
81 | offer to sell, import and otherwise transfer the Contribution of such
82 | Contributor, if any, in source code and object code form. This patent
83 | license shall apply to the combination of the Contribution and the
84 | Program if, at the time the Contribution is added by the Contributor,
85 | such addition of the Contribution causes such combination to be covered
86 | by the Licensed Patents. The patent license shall not apply to any other
87 | combinations which include the Contribution. No hardware per se is
88 | licensed hereunder.
89 |
90 | c) Recipient understands that although each Contributor
91 | grants the licenses to its Contributions set forth herein, no assurances
92 | are provided by any Contributor that the Program does not infringe the
93 | patent or other intellectual property rights of any other entity. Each
94 | Contributor disclaims any liability to Recipient for claims brought by
95 | any other entity based on infringement of intellectual property rights
96 | or otherwise. As a condition to exercising the rights and licenses
97 | granted hereunder, each Recipient hereby assumes sole responsibility to
98 | secure any other intellectual property rights needed, if any. For
99 | example, if a third party patent license is required to allow Recipient
100 | to distribute the Program, it is Recipient's responsibility to acquire
101 | that license before distributing the Program.
102 |
103 | d) Each Contributor represents that to its knowledge it
104 | has sufficient copyright rights in its Contribution, if any, to grant
105 | the copyright license set forth in this Agreement.
106 |
107 | 3. REQUIREMENTS
108 |
109 | A Contributor may choose to distribute the Program in object code
110 | form under its own license agreement, provided that:
111 |
112 | a) it complies with the terms and conditions of this
113 | Agreement; and
114 |
115 | b) its license agreement:
116 |
117 | i) effectively disclaims on behalf of all Contributors
118 | all warranties and conditions, express and implied, including warranties
119 | or conditions of title and non-infringement, and implied warranties or
120 | conditions of merchantability and fitness for a particular purpose;
121 |
122 | ii) effectively excludes on behalf of all Contributors
123 | all liability for damages, including direct, indirect, special,
124 | incidental and consequential damages, such as lost profits;
125 |
126 | iii) states that any provisions which differ from this
127 | Agreement are offered by that Contributor alone and not by any other
128 | party; and
129 |
130 | iv) states that source code for the Program is available
131 | from such Contributor, and informs licensees how to obtain it in a
132 | reasonable manner on or through a medium customarily used for software
133 | exchange.
134 |
135 | When the Program is made available in source code form:
136 |
137 | a) it must be made available under this Agreement; and
138 |
139 | b) a copy of this Agreement must be included with each
140 | copy of the Program.
141 |
142 | Contributors may not remove or alter any copyright notices contained
143 | within the Program.
144 |
145 | Each Contributor must identify itself as the originator of its
146 | Contribution, if any, in a manner that reasonably allows subsequent
147 | Recipients to identify the originator of the Contribution.
148 |
149 | 4. COMMERCIAL DISTRIBUTION
150 |
151 | Commercial distributors of software may accept certain
152 | responsibilities with respect to end users, business partners and the
153 | like. While this license is intended to facilitate the commercial use of
154 | the Program, the Contributor who includes the Program in a commercial
155 | product offering should do so in a manner which does not create
156 | potential liability for other Contributors. Therefore, if a Contributor
157 | includes the Program in a commercial product offering, such Contributor
158 | ("Commercial Contributor") hereby agrees to defend and
159 | indemnify every other Contributor ("Indemnified Contributor")
160 | against any losses, damages and costs (collectively "Losses")
161 | arising from claims, lawsuits and other legal actions brought by a third
162 | party against the Indemnified Contributor to the extent caused by the
163 | acts or omissions of such Commercial Contributor in connection with its
164 | distribution of the Program in a commercial product offering. The
165 | obligations in this section do not apply to any claims or Losses
166 | relating to any actual or alleged intellectual property infringement. In
167 | order to qualify, an Indemnified Contributor must: a) promptly notify
168 | the Commercial Contributor in writing of such claim, and b) allow the
169 | Commercial Contributor to control, and cooperate with the Commercial
170 | Contributor in, the defense and any related settlement negotiations. The
171 | Indemnified Contributor may participate in any such claim at its own
172 | expense.
173 |
174 | For example, a Contributor might include the Program in a commercial
175 | product offering, Product X. That Contributor is then a Commercial
176 | Contributor. If that Commercial Contributor then makes performance
177 | claims, or offers warranties related to Product X, those performance
178 | claims and warranties are such Commercial Contributor's responsibility
179 | alone. Under this section, the Commercial Contributor would have to
180 | defend claims against the other Contributors related to those
181 | performance claims and warranties, and if a court requires any other
182 | Contributor to pay any damages as a result, the Commercial Contributor
183 | must pay those damages.
184 |
185 | 5. NO WARRANTY
186 |
187 | EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
188 | PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
189 | OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
190 | ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
191 | OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
192 | responsible for determining the appropriateness of using and
193 | distributing the Program and assumes all risks associated with its
194 | exercise of rights under this Agreement , including but not limited to
195 | the risks and costs of program errors, compliance with applicable laws,
196 | damage to or loss of data, programs or equipment, and unavailability or
197 | interruption of operations.
198 |
199 | 6. DISCLAIMER OF LIABILITY
200 |
201 | EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
202 | NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
203 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
204 | WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
205 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
206 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
207 | DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
208 | HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
209 |
210 | 7. GENERAL
211 |
212 | If any provision of this Agreement is invalid or unenforceable under
213 | applicable law, it shall not affect the validity or enforceability of
214 | the remainder of the terms of this Agreement, and without further action
215 | by the parties hereto, such provision shall be reformed to the minimum
216 | extent necessary to make such provision valid and enforceable.
217 |
218 | If Recipient institutes patent litigation against any entity
219 | (including a cross-claim or counterclaim in a lawsuit) alleging that the
220 | Program itself (excluding combinations of the Program with other
221 | software or hardware) infringes such Recipient's patent(s), then such
222 | Recipient's rights granted under Section 2(b) shall terminate as of the
223 | date such litigation is filed.
224 |
225 | All Recipient's rights under this Agreement shall terminate if it
226 | fails to comply with any of the material terms or conditions of this
227 | Agreement and does not cure such failure in a reasonable period of time
228 | after becoming aware of such noncompliance. If all Recipient's rights
229 | under this Agreement terminate, Recipient agrees to cease use and
230 | distribution of the Program as soon as reasonably practicable. However,
231 | Recipient's obligations under this Agreement and any licenses granted by
232 | Recipient relating to the Program shall continue and survive.
233 |
234 | Everyone is permitted to copy and distribute copies of this
235 | Agreement, but in order to avoid inconsistency the Agreement is
236 | copyrighted and may only be modified in the following manner. The
237 | Agreement Steward reserves the right to publish new versions (including
238 | revisions) of this Agreement from time to time. No one other than the
239 | Agreement Steward has the right to modify this Agreement. The Eclipse
240 | Foundation is the initial Agreement Steward. The Eclipse Foundation may
241 | assign the responsibility to serve as the Agreement Steward to a
242 | suitable separate entity. Each new version of the Agreement will be
243 | given a distinguishing version number. The Program (including
244 | Contributions) may always be distributed subject to the version of the
245 | Agreement under which it was received. In addition, after a new version
246 | of the Agreement is published, Contributor may elect to distribute the
247 | Program (including its Contributions) under the new version. Except as
248 | expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
249 | rights or licenses to the intellectual property of any Contributor under
250 | this Agreement, whether expressly, by implication, estoppel or
251 | otherwise. All rights in the Program not expressly granted under this
252 | Agreement are reserved.
253 |
254 | This Agreement is governed by the laws of the State of New York and
255 | the intellectual property laws of the United States of America. No party
256 | to this Agreement will bring a legal action under this Agreement more
257 | than one year after the cause of action arose. Each party waives its
258 | rights to a jury trial in any resulting litigation.
259 |
260 |
261 |
262 |
--------------------------------------------------------------------------------
/images/paper.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lazerwalker/clojurescript-koans/c4713e3ccafad2229c5eae038d8bbf433d0d026e/images/paper.jpg
--------------------------------------------------------------------------------
/images/zencircle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lazerwalker/clojurescript-koans/c4713e3ccafad2229c5eae038d8bbf433d0d026e/images/zencircle.png
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ClojureScript Koans
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
ClojureScript Koans
19 |
20 |
The ClojureScript koans walk you along the path of enlightenment to learning ClojureScript . You will explore the mysteries of the ClojureScript language through a series of interactive exercises in your web browser.
21 |
22 |
You don't need any experience with Clojure or ClojureScript. The koans will expose you to the fundamentals of ClojureScript, from basic concepts and syntax through more advanced techniques.
23 |
24 |
If you become vexed, do not be afraid to seek help. You may find it particularly useful to keep a ClojureScript REPL handy as you proceed.
25 |
26 |
27 | You will need to enable JavaScript to begin your journey.
28 |
29 |
30 |
Let us begin ›
31 |
32 |
The ClojureScript Koans were built by Em Lazer-Walker , and are based on the Clojure Koans . The source code is available on GitHub .
33 |
34 |
35 |
36 |
37 |
38 |
The End
39 |
40 |
You have completed the koans, but your true journey is just beginning. Here are a few resources to help you along your way.
41 |
42 |
50 |
51 |
55 |
56 |
57 |
58 |
59 |
60 |
67 |
68 |
77 |
78 |
79 |
--------------------------------------------------------------------------------
/project.clj:
--------------------------------------------------------------------------------
1 | (defproject koans "0.1.0-SNAPSHOT"
2 | :description "FIXME: write this!"
3 | :url "http://example.com/FIXME"
4 |
5 | :profiles {:dev
6 | {:dependencies [[specljs "2.9.1"]]}}
7 |
8 | :dependencies [[org.clojure/clojure "1.7.0"]
9 | [org.clojure/clojurescript "1.7.228"]
10 | [prismatic/dommy "0.1.2"]
11 | [jayq "2.5.4"]]
12 |
13 | :plugins [[lein-cljsbuild "1.1.2"]
14 | [specljs "2.9.1"]]
15 |
16 | :source-paths ["src"]
17 | :test-paths ["spec"]
18 |
19 | :cljsbuild ~(let [run-specs ["phantomjs" "bin/specljs_runner.js" "out/koans_spec.js"]]
20 | { :builds {
21 | :prod {
22 | :source-paths ["src"]
23 | :compiler {
24 | :main 'koans.core
25 | :output-to "koans.js"
26 | :output-dir "out"
27 | :optimizations :none
28 | :source-map true}}}
29 | :test-commands {"test" run-specs}}))
30 |
--------------------------------------------------------------------------------
/script/build:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | rm koans.js
4 | rm -r out/
5 | lein cljsbuild once
6 |
--------------------------------------------------------------------------------
/script/deploy:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | ### WARNING: This script makes some very dangerous assumptions:
4 | # 1. merging master into gh-pages will succeed without conflict
5 | # (it'll try to commit and push despite the dirty state)
6 | # 2. You have no files that are unversioned and not in your .gitignore
7 | # (they'll get added on gh-pages as part of the merge commit)
8 | ###
9 |
10 | git checkout gh-pages
11 | git merge master --no-edit
12 |
13 | script/build && git add -A && git commit --amend -CHEAD && git push origin gh-pages
14 |
15 | git checkout -
--------------------------------------------------------------------------------
/spec/features/koans_spec.rb:
--------------------------------------------------------------------------------
1 | require_relative "../spec_helper.rb"
2 |
3 | describe "koans", js: true do
4 | before do
5 | visit '/index.html'
6 | end
7 |
8 | it "should load the first koan on pageload" do
9 | page.should have_content "We shall contemplate truth by testing reality, via equality"
10 | page.should have_selector "input.user-input"
11 | end
12 |
13 | describe "handling user input" do
14 | context "when the right answer has been entered" do
15 | it "should load a new koan" do
16 | fill_in "code", :with => "true\r"
17 |
18 | page.should have_content "To understand reality, we must compare our expectations against reality"
19 | page.should_not have_content "We shall contemplate truth by testing reality, via equality"
20 | end
21 | end
22 |
23 | context "when the wrong answer has been entered" do
24 | before do
25 | fill_in "code", :with => "false\r"
26 | end
27 |
28 | it "should do nothing" do
29 | page.should have_content "We shall contemplate truth by testing reality, via equality"
30 | end
31 |
32 | it "should show an error message" do
33 | page.should have_content "You have not yet attained enlightenment"
34 | end
35 |
36 | it "should make the input angry" do
37 | page.should have_selector ".code.incorrect"
38 | end
39 | end
40 | end
41 | end
--------------------------------------------------------------------------------
/spec/koans/meditations_spec.cljs:
--------------------------------------------------------------------------------
1 | (ns koans.meditations-spec
2 | (:require-macros [specljs.core :refer [describe context it should should-not
3 | should= should-not-be-same]])
4 | (:require [specljs.core]
5 | [koans.meditations :as meditations]))
6 |
7 | (describe "next-koan-index"
8 | (context "when there are remaining items in the category"
9 | (it "should return the next index"
10 | (def original-koan-index (meditations/KoanIndex. "equality" 0))
11 | (def expected-koan-index (meditations/KoanIndex. "equality" 1))
12 | (should= expected-koan-index (meditations/next-koan-index original-koan-index))))
13 |
14 | (context "when the category is completed")
15 | (it "should return the first koan in the next category"))
16 |
17 | #_(describe "nth-koan"
18 | (it "should return a valid Koan object"
19 | (def koan (meditations/nth-koan 0))
20 | (should (string? (:description koan)))
21 | (should (string? (:before koan)))
22 | (should (string? (:after koan))))
23 |
24 | (it "should return different koans for different indices"
25 | (def koan-0 (meditations/nth-koan 0))
26 | (def koan-1 (meditations/nth-koan 1))
27 | (should-not-be-same koan-0 koan-1)))
--------------------------------------------------------------------------------
/spec/spec_helper.rb:
--------------------------------------------------------------------------------
1 | require 'rack'
2 | require 'capybara'
3 | require 'capybara-webkit'
4 | require 'capybara/dsl'
5 | require 'capybara/session'
6 | require 'capybara/rspec'
7 |
8 | include Capybara::DSL
9 |
10 | Capybara.app = Rack::File.new File.join(File.dirname(__FILE__), "..")
11 |
12 | Capybara.default_driver = :webkit
13 | Capybara.javascript_driver = :webkit
14 |
--------------------------------------------------------------------------------
/src/koans/core.cljs:
--------------------------------------------------------------------------------
1 | (ns koans.core
2 | (:use [jayq.core :only [$]]
3 | [jayq.util :only [log wait]])
4 | (:require
5 | [cljs.js :as cljs]
6 | [cljs.tools.reader :refer [read-string]]
7 | [clojure.set]
8 | [clojure.string]
9 | [koans.meditations :as meditations]
10 | [jayq.core :as $]
11 | [dommy.core :as dommy])
12 | (:use-macros
13 | [dommy.macros :only [deftemplate]]))
14 |
15 | (defonce transitioning? (volatile! false))
16 |
17 | (defn hash-objects [] (clojure.string/split (.-hash js/location) "/" ))
18 |
19 | (defn current-koan-index [] (meditations/KoanIndex.
20 | (subs (first (hash-objects)) 1)
21 | (dec (last (hash-objects)))))
22 |
23 | (defn update-location-hash []
24 | (let [koan (meditations/next-koan-index (current-koan-index))]
25 | (set! (.-hash js/location) (str (:category koan) "/" (inc (:index koan))))))
26 |
27 | (def fadeout-time 600)
28 | (def char-width 14)
29 | (def enter-key 13)
30 | (def parentheses-classes-count 7)
31 |
32 | (defn parentheses-class-name [index]
33 | (str "parentheses-" (mod index parentheses-classes-count)))
34 |
35 | (defn input-with-code-block [parts]
36 | (for [part parts]
37 | (cond
38 | (= part :input)
39 | [:span {:class "code"}
40 | [:span {:class "shadow"}]
41 | [:input {:name "code" :autocorrect "off" :autocapitalize "off"}]]
42 | (vector? part)
43 | [:span {:class (str "text " (parentheses-class-name (second part)))}
44 | (first part)]
45 | :else
46 | [:span {:class "text"}
47 | part])))
48 |
49 | (deftemplate input-with-code [koan]
50 | [:div {:class (str "koan koan-" (:index (current-koan-index)))}
51 | [:div {:class "description"} (:description koan)]
52 | [:div {:class "code-box"}
53 | (input-with-code-block (:code-parts koan))]
54 | (if-not (nil? (:fn-strings koan))
55 | [:div {:class "functions"}
56 | (for [function (:fn-strings koan)]
57 | [:div {:class "function"}
58 | [:pre
59 | (input-with-code-block function)]])])])
60 |
61 | (deftemplate error-message []
62 | [:div {:class "error"} "You have not yet attained enlightenment."])
63 |
64 | (defn input-with-element-content [el]
65 | (->> ($/children ($ el))
66 | (map #(let [$el ($ %)]
67 | (cond ($/has-class $el "text") ($/text $el)
68 | ($/has-class $el "code") ($/val ($ "input" $el)))))
69 | (clojure.string/join "")))
70 |
71 | (defn valid-input? [el]
72 | ;; ensure input string contains at least one valid Clojure form
73 | (let [input ($/val ($ el))]
74 | (or (some? (try (read-string input) (catch :default _ nil)))
75 | (= (subs input 0 3) "nil"))))
76 |
77 | (defn input-string []
78 | (if (not-every? valid-input? ($ ".code-box input"))
79 | ""
80 | (->> (concat ($ ".function pre")
81 | ($ ".code-box"))
82 | (map input-with-element-content)
83 | (clojure.string/join " "))))
84 |
85 | (defn load-next-koan []
86 | (update-location-hash))
87 |
88 | (defn remove-active-koan []
89 | (let [$el ($ :.koan)]
90 | ($/fade-out $el
91 | #($/remove $el))))
92 |
93 | (defn remove-static-pages []
94 | ($/fade-out ($ :.static)))
95 |
96 | (defn category-name [koan-index]
97 | (let [category (:category koan-index)]
98 | (clojure.string/replace category "-" " ")))
99 |
100 | (defn render-koan [koan]
101 | (remove-active-koan)
102 | (remove-static-pages)
103 | (let [$elem ($ (input-with-code koan))
104 | $category ($ :.category)
105 | current-category (category-name (current-koan-index))]
106 | (when-not (empty? (:fn-strings koan))
107 | ($/add-class $elem "has-functions"))
108 | (when (not (= ($/text $category) current-category))
109 | ($/fade-out $category))
110 | (wait fadeout-time (fn []
111 | ($/text $category current-category)
112 | ($/prepend ($ :body) $elem)
113 | ($/fade-in $elem)
114 | ($/fade-in $category)
115 | (.focus (first ($/find $elem :input)))
116 | (vreset! transitioning? false)))))
117 |
118 | (defn render-static-page [selector]
119 | (remove-active-koan)
120 | (let [$el ($ selector)
121 | $other ($ (first (clojure.set/difference #{"#welcome" "#the-end"} #{selector})))]
122 | ($/fade-out $other)
123 | (wait fadeout-time (fn []
124 | ($/fade-out ($ :.category))
125 | ($/fade-in $el)
126 | (vreset! transitioning? false)))))
127 |
128 | (defn render-current-koan []
129 | (cond
130 | (clojure.string/blank? (.-hash js/location))
131 | (render-static-page "#welcome")
132 | (= (:category (current-koan-index)) "complete")
133 | (render-static-page "#the-end")
134 | (meditations/koan-exists? (current-koan-index))
135 | (let [current-koan (meditations/koan-for-index (current-koan-index))]
136 | (render-koan current-koan))
137 | :else
138 | (update-location-hash)))
139 |
140 | (defn resize-input [input]
141 | (let [$input ($ input)
142 | remove-spaces (fn [text] (clojure.string/replace text " " "_"))
143 | $parent ($/parent $input)
144 | $shadow ($/find $parent :.shadow)]
145 | ($/text $shadow (remove-spaces ($/val $input)))
146 | (let [shadow-width ($/width $shadow)
147 | input-width ($/width $input)]
148 | (cond
149 | (>= shadow-width input-width)
150 | ($/width $input (+ shadow-width (* 4 char-width)))
151 | (>= (- input-width (* 4 char-width)) shadow-width)
152 | ($/width $input (+ shadow-width (* 4 char-width)))))))
153 |
154 | (defn show-error-message []
155 | (let [$code-box ($ :.code-box)]
156 | (if ($/has-class $code-box "incorrect")
157 | (let [$error ($ :.error)]
158 | ($/remove-class $code-box "incorrect")
159 | ($/fade-out $error)
160 | (wait 300 #(
161 | ($/add-class $code-box "incorrect")
162 | ($/fade-in $error)
163 | (vreset! transitioning? false))))
164 | (let [$error ($ (error-message))]
165 | ($/add-class $code-box "incorrect")
166 | ($/after ($ :.code-box) $error)
167 | ($/fade-in $error)
168 | (vreset! transitioning? false)))))
169 |
170 | (defonce compiler-state
171 | (cljs/empty-state))
172 |
173 | (defn evaluate-koan []
174 | (when (not @transitioning?)
175 | (let [input (input-string)]
176 | (vreset! transitioning? true)
177 | (log "Evaluating " input)
178 | (cljs/eval-str compiler-state input nil
179 | {:eval cljs/js-eval}
180 | (fn [result]
181 | (log (clj->js result))
182 | (if (or (:error result) (not= (:value result) true))
183 | (show-error-message)
184 | (load-next-koan)))))))
185 |
186 | (defn handle-document-ready []
187 | (let [$doc ($ js/document)]
188 | ($/on $doc :click :.text #(.focus (first ($ :input))))
189 | ($/on $doc :keypress :input #(when (= (.-which %) enter-key) (evaluate-koan)))
190 | ($/on $doc :input :input #(resize-input (.-target %))))
191 | (render-current-koan))
192 |
193 | (defn handle-hashchange []
194 | (render-current-koan)
195 | (js/ga "pageview" (subs (.-hash js/location) 1)))
196 |
197 | (defn init []
198 | ($/document-ready handle-document-ready)
199 | (set! (.-onhashchange js/window) handle-hashchange)
200 | ;; initialize the cljs.user namespace so that def will actually work
201 | (cljs/eval compiler-state '(ns cljs.user) {:eval cljs/js-eval} identity))
202 |
203 | (init)
204 |
--------------------------------------------------------------------------------
/src/koans/meditations.cljs:
--------------------------------------------------------------------------------
1 | (ns koans.meditations
2 | (:require
3 | [clojure.string]
4 | [koans.utils :as utils]
5 | [koans.meditations.equality :as equality]
6 | [koans.meditations.lists :as lists]
7 | [koans.meditations.vectors :as vectors]
8 | [koans.meditations.sets :as sets]
9 | [koans.meditations.maps :as maps]
10 | [koans.meditations.functions :as functions]
11 | [koans.meditations.conditionals :as conditionals]
12 | [koans.meditations.higher-order-functions :as higher-order-functions]
13 | [koans.meditations.runtime-polymorphism :as runtime-polymorphism]
14 | [koans.meditations.lazy-sequences :as lazy-sequences]
15 | [koans.meditations.sequence-comprehensions :as sequence-comprehensions]
16 | [koans.meditations.creating-functions :as creating-functions]
17 | ;[koans.meditations.recursion :as recursion]
18 | [koans.meditations.destructuring :as destructuring]
19 | [koans.meditations.atoms :as atoms]
20 | [koans.meditations.datatypes :as datatypes]
21 | [koans.meditations.partition :as partition]))
22 |
23 | (defrecord Koan [description code-parts fn-strings])
24 | (defrecord KoanIndex [category index])
25 | (defrecord Category [name koans fns])
26 |
27 | (def categories [
28 | (Category. "equality" equality/koans)
29 | (Category. "lists" lists/koans)
30 | (Category. "vectors" vectors/koans)
31 | (Category. "sets" sets/koans)
32 | (Category. "maps" maps/koans)
33 | (Category. "functions" functions/koans functions/fns)
34 | (Category. "conditionals" conditionals/koans conditionals/fns)
35 | (Category. "higher-order-functions" higher-order-functions/koans)
36 | (Category. "runtime-polymorphism" runtime-polymorphism/koans runtime-polymorphism/fns)
37 | (Category. "lazy-sequences" lazy-sequences/koans)
38 | (Category. "sequence-comprehensions" sequence-comprehensions/koans)
39 | (Category. "creating-functions" creating-functions/koans creating-functions/fns)
40 | (Category. "destructuring" destructuring/koans destructuring/fns)
41 | (Category. "atoms" atoms/koans atoms/fns)
42 | ;(Category. "datatypes" datatypes/koans datatypes/fns)
43 | (Category. "partition" partition/koans)
44 | (Category. "complete" '(:the :end))
45 | ])
46 |
47 | (defn category-from-koan-index [koan-index]
48 | (first (filter #(= (:name %) (:category koan-index)) categories)))
49 |
50 | (defn koan-exists? [koan-index]
51 | (< (:index koan-index) (count (partition 2 (:koans (category-from-koan-index koan-index))))))
52 |
53 | (defn next-category [koan-index]
54 | (let [index (inc (utils/index-of (category-from-koan-index koan-index) categories))]
55 | (:name (nth categories index))))
56 |
57 | (defn expr-to-string [expr]
58 | (if (string? expr)
59 | expr
60 | (clojure.string/replace (pr-str expr) #"\(quote (.*?)\)" #(str "'" (%1 1)))))
61 |
62 | (defn next-koan-index [koan]
63 | (let [next-in-category (KoanIndex. (:category koan) (inc (:index koan)))]
64 | (cond
65 | (koan-exists? next-in-category)
66 | next-in-category
67 | (nil? (category-from-koan-index koan))
68 | (KoanIndex. "equality" 0)
69 | (js/isNaN (:index next-in-category))
70 | (KoanIndex. (:category koan) 0)
71 | :else
72 | (KoanIndex. (next-category koan) 0))))
73 |
74 | (defn expr-to-array [expr]
75 | (->> (clojure.string/replace (expr-to-string expr) #":__" "$")
76 | (reduce (fn [{:keys [index result change]} c]
77 | (condp = c
78 | "(" {:index (inc index)
79 | :change true
80 | :result (conj result [c index])}
81 | ")" {:index (dec index)
82 | :change true
83 | :result (conj result [c (dec index)])}
84 | "$" {:index index
85 | :change true
86 | :result (conj result :input)}
87 | {:index index
88 | :result (if change
89 | (conj result c)
90 | (update result (dec (count result)) #(str % c)))
91 | :change false}))
92 | {:index 0
93 | :change false
94 | :result []})
95 | :result))
96 |
97 | (defn koan-for-index [koan-index]
98 | (let [category (category-from-koan-index koan-index)
99 | category-list (partition 2 (:koans category))
100 | item (try
101 | (nth category-list (:index koan-index))
102 | (catch js/Object _ (first category-list)))
103 | description (first item)
104 | code-parts (expr-to-array (last item))
105 | fn-strings (map expr-to-array (:fns category))]
106 | (Koan. description code-parts fn-strings)))
107 |
--------------------------------------------------------------------------------
/src/koans/meditations/01_equality.cljs:
--------------------------------------------------------------------------------
1 | (ns koans.meditations.equality)
2 |
3 | (def koans '(
4 | "We shall contemplate truth by testing reality, via equality"
5 | (= :__ true)
6 |
7 | "To understand reality, we must compare our expectations against reality"
8 | (= :__ (+ 1 1))
9 |
10 | "You can test equality of many things"
11 | (= (+ 3 4) 7 (+ 2 :__))
12 |
13 | "But you may not string yourself along"
14 | (= :__ (= 2 "2"))
15 |
16 | "Something is not equal to nothing"
17 | (= :__ (not (= 1 nil)))
18 |
19 | "Strings, and keywords, and symbols: oh my!"
20 | (= :__ (= "foo" :foo 'foo))
21 |
22 | "Make a keyword with your keyboard"
23 | (= :foo (keyword :__))
24 |
25 | "Symbolism is all around us"
26 | (= 'foo (symbol :__))
27 |
28 | "When things cannot be equal, they must be different"
29 | (not= :fill-in-the-blank :__)
30 | ))
--------------------------------------------------------------------------------
/src/koans/meditations/02_lists.cljs:
--------------------------------------------------------------------------------
1 | (ns koans.meditations.lists)
2 |
3 | (def koans '(
4 | "Lists can be expressed by function or a quoted form"
5 | (= '(:__) (list 1 2 3 4 5))
6 |
7 | "They are Clojure seqs (sequences), so they allow access to the first"
8 | (= :__ (first '(1 2 3 4 5)))
9 | ;
10 | "As well as the rest"
11 | (= :__ (rest '(1 2 3 4 5)))
12 |
13 | "Count your blessings"
14 | (= :__ (count '(dracula dooku chocula)))
15 |
16 | "Before they are gone"
17 | (= :__ (count '()))
18 |
19 | "The rest, when nothing is left, is empty"
20 | (= :__ (rest '(100)))
21 |
22 | "Construction by adding an element to the front is easy"
23 | (= :__ (cons :a '(:b :c :d :e)))
24 |
25 | "Conjoining an element to a list is strikingly similar"
26 | (= :__ (conj '(:b :c :d :e) :a))
27 |
28 | "You can use a list like a stack to get the first element"
29 | (= :__ (peek '(:a :b :c :d :e)))
30 |
31 | "Or the others"
32 | (= :__ (pop '(:a :b :c :d :e)))
33 |
34 | ;; ---
35 | ;"But watch out if you try to pop nothing"
36 | ;(= :__ (try
37 | ; (pop '())
38 | ; (catch IllegalStateException e
39 | ; "No dice!")))
40 |
41 | ;"The rest of nothing isn't so strict"
42 | ;(= :__ (try
43 | ; (rest '())
44 | ; (catch IllegalStateException e
45 | ; "No dice!")))
46 | ;))
47 | ))
--------------------------------------------------------------------------------
/src/koans/meditations/03_vectors.cljs:
--------------------------------------------------------------------------------
1 | (ns koans.meditations.vectors)
2 |
3 | (def koans '(
4 | "You can use vectors in clojure as array-like structures"
5 | (= :__ (count [42]))
6 |
7 | "You can create a vector from a list"
8 | (= :__ (vec '(1)))
9 |
10 | "Or from some elements"
11 | (= :__ (vector nil nil))
12 |
13 | "But you can populate it with any number of elements at once"
14 | (= [1 :__] (vec '(1 2)))
15 |
16 | "Conjoining to a vector is different than to a list"
17 | (= :__ (conj [111 222] 333))
18 |
19 | "You can get the first element of a vector like so"
20 | (= :__ (first [:peanut :butter :and :jelly]))
21 |
22 | "And the last in a similar fashion"
23 | (= :__ (last [:peanut :butter :and :jelly]))
24 |
25 | "Or any index if you wish"
26 | (= :__ (nth [:peanut :butter :and :jelly] 3))
27 |
28 | "You can also slice a vector"
29 | (= :__ (subvec [:peanut :butter :and :jelly] 1 3))
30 |
31 | "Equality with collections is in terms of values"
32 | (= (list 1 2 3) (vector 1 2 :__))
33 | ))
--------------------------------------------------------------------------------
/src/koans/meditations/04_sets.cljs:
--------------------------------------------------------------------------------
1 | (ns koans.meditations.sets)
2 |
3 | (def koans '(
4 | "You can create a set by converting another collection"
5 | (= #{3} (set :__))
6 |
7 | "Counting them is like counting other collections"
8 | (= :__ (count #{1 2 3}))
9 |
10 | "Remember that a set is a *mathematical* set"
11 | (= :__ (set '(1 1 2 2 3 3 4 4 5 5)))
12 |
13 | #_(
14 | "You can ask clojure for the union of two sets"
15 | (= :__ (clojoure.set/union #{1 2 3 4} #{2 3 5}))
16 |
17 | "And also the intersection"
18 | (= :__ (clojure.set/intersection #{1 2 3 4} #{2 3 5}))
19 |
20 | "But don't forget about the difference"
21 | (= :__ (clojure.set/difference #{1 2 3 4 5} #{2 3 5}))
22 | )
23 | ))
--------------------------------------------------------------------------------
/src/koans/meditations/05_maps.cljs:
--------------------------------------------------------------------------------
1 | (ns koans.meditations.maps)
2 |
3 | (def koans '(
4 | "Don't get lost when creating a map"
5 | (= {:a 1 :b 2} (hash-map :a 1 :__))
6 |
7 | "A value must be supplied for each key"
8 | (= {:a 1} (hash-map :a :__))
9 |
10 | "The size is the number of entries"
11 | (= :__ (count {:a 1 :b 2}))
12 |
13 | "You can look up the value for a given key"
14 | (= :__ (get {:a 1 :b 2} :b))
15 |
16 | "Maps can be used as functions to do lookups"
17 | (= :__ ({:a 1 :b 2} :a))
18 |
19 | "And so can keywords"
20 | (= :__ (:a {:a 1 :b 2}))
21 |
22 | "But map keys need not be keywords"
23 | (= :__ ({2006 "Torino" 2010 "Vancouver" 2014 "Sochi"} 2010))
24 |
25 | "You may not be able to find an entry for a key"
26 | (= :__ (get {:a 1 :b 2} :c))
27 |
28 | "But you can provide your own default"
29 | (= :__ (get {:a 1 :b 2} :c :key-not-found))
30 |
31 | "You can find out if a key is present"
32 | (= :__ (contains? {:a nil :b nil} :b))
33 |
34 | "Or if it is missing"
35 | (= :__ (contains? {:a nil :b nil} :c))
36 |
37 | "Maps are immutable, but you can create a new and improved version"
38 | (= {1 "January" 2 :__} (assoc {1 "January" } 2 "February"))
39 |
40 | "You can also create a new version with an entry removed"
41 | (= :__ (dissoc {1 "January" 2 "February"} 2))
42 |
43 | "Often you will need to get the keys, but the order is undependable"
44 | (= (list :__ )
45 | (sort (keys {2010 "Vancouver" 2014 "Sochi" 2006 "Torino"})))
46 |
47 | "You can get the values in a similar way"
48 | (= (list :__)
49 | (sort (vals {2006 "Torino" 2010 "Vancouver" 2014 "Sochi"})))
50 | ))
--------------------------------------------------------------------------------
/src/koans/meditations/06_functions.cljs:
--------------------------------------------------------------------------------
1 | (ns koans.meditations.functions)
2 |
3 | (def koans '(
4 | "Calling a function is like giving it a hug with parentheses"
5 | (= :__ (square 9))
6 |
7 | "Functions are usually defined before they are used"
8 | (= :__ (multiply-by-ten 2))
9 |
10 | "But they can also be defined inline"
11 | (= :__ ((fn [n] (* 5 n)) 2))
12 |
13 | "Or using an even shorter syntax"
14 | "(= :__ (#(* 15 %) 4))"
15 |
16 | "Even anonymous functions may take multiple arguments"
17 | "(= :__ (#(+ %1 %2 %3) 4 5 6))"
18 |
19 | "Arguments can also be skipped"
20 | "(= :__ (#(* 15 %2) 1 2))"
21 |
22 | "One function can beget another"
23 | (= 9 (((fn [] :__)) 4 5))
24 |
25 | "Functions can also take other functions as input"
26 | (= 20 ((fn [f] (f 4 5))
27 | :__))
28 |
29 | "Higher-order functions take function arguments"
30 | (= 25 (:__
31 | (fn [n] (* n n))))
32 |
33 | "But they are often better written using the names of functions"
34 | (= 25 (:__ square))
35 | ))
36 |
37 | (def fns [
38 | "(defn multiply-by-ten [n]
39 | (* 10 n))"
40 | '(defn square [n] (* n n))])
--------------------------------------------------------------------------------
/src/koans/meditations/07_conditionals.cljs:
--------------------------------------------------------------------------------
1 | (ns koans.meditations.conditionals)
2 |
3 | (def koans '(
4 | "You will face many decisions"
5 | (= :__ (if (false? (= 4 5))
6 | :a
7 | :b))
8 |
9 | "Some of them leave you no alternative"
10 | (= :__ (if (> 4 3)
11 | []))
12 |
13 | "And in such a situation you may have nothing"
14 | (= :__ (if (nil? 0)
15 | [:a :b :c]))
16 |
17 | "In others your alternative may be interesting"
18 | (= :glory (if (not (empty? ()))
19 | :doom
20 | :__))
21 |
22 | "You may have a multitude of possible paths"
23 | (let [x 5]
24 | (= :your-road (cond (= x :__) :road-not-taken
25 | (= x :__) :another-road-not-taken
26 | :else :__)))
27 |
28 | "Or your fate may be sealed"
29 | (= :__ (if-not (zero? :__)
30 | 'doom
31 | 'doom))
32 |
33 | "In case of emergency, sound the alarms"
34 | (= :sirens
35 | (explain-defcon-level :__))
36 |
37 | "But admit it when you don't know what to do"
38 | (= :__
39 | (explain-defcon-level :yo-mama))
40 | ))
41 |
42 | (def fns [
43 | "(defn explain-defcon-level [exercise-term]
44 | (case exercise-term
45 | :fade-out :you-and-what-army
46 | :double-take :call-me-when-its-important
47 | :round-house :o-rly
48 | :fast-pace :thats-pretty-bad
49 | :cocked-pistol :sirens
50 | :say-what?))"
51 | ])
--------------------------------------------------------------------------------
/src/koans/meditations/08_higher_order_functions.cljs:
--------------------------------------------------------------------------------
1 | (ns koans.meditations.higher-order-functions)
2 |
3 | (def koans '(
4 | "The map function relates a sequence to another"
5 | (= '(:__) (map (fn [x] (* 4 x)) [1 2 3]))
6 |
7 | "You may create that mapping"
8 | (= '(1 4 9 16 25) (map (fn [x] :__) [1 2 3 4 5]))
9 |
10 | "Or use the names of existing functions"
11 | (= :__ (map nil? [:a :b nil :c :d]))
12 |
13 | "A filter can be strong"
14 | (= :__ (filter (fn [x] false) '(:anything :goes :here)))
15 |
16 | "Or very weak"
17 | (= :__ (filter (fn [x] true) '(:anything :goes :here)))
18 |
19 | "Or somewhere in between"
20 | (= [10 20 30] (filter (fn [x] :__) [10 20 30 40 50 60 70 80]))
21 |
22 | "Maps and filters may be combined"
23 | (= [10 20 30] (map (fn [x] :__) (filter (fn [x] :__) [1 2 3 4 5 6 7 8])))
24 |
25 | "Reducing can increase the result"
26 | (= :__ (reduce (fn [a b] (* a b)) [1 2 3 4]))
27 |
28 | "You can start somewhere else"
29 | (= 2400 (reduce (fn [a b] (* a b)) :__ [1 2 3 4]))
30 |
31 | "Numbers are not the only things one can reduce"
32 | (= "longest" (reduce (fn [a b]
33 | (if (< :__) b a))
34 | ["which" "is" "the" "longest" "word"]))
35 | ))
--------------------------------------------------------------------------------
/src/koans/meditations/09_runtime_polymorphism.cljs:
--------------------------------------------------------------------------------
1 | (ns koans.meditations.runtime-polymorphism)
2 |
3 | (def koans '(
4 | "Some functions can be used in different ways - with no arguments"
5 | (= :__ (hello))
6 |
7 | "With one argument"
8 | (= :__ (hello "world"))
9 |
10 | "Or with many arguments"
11 | (= :__
12 | (hello "Peter" "Paul" "Mary"))
13 |
14 | "Multimethods allow more complex dispatching"
15 | (= "Bambi eats veggies."
16 | (diet {:species "deer" :name "Bambi" :age 1 :eater :herbivore}))
17 |
18 | "Different methods are used depending on the dispatch function result"
19 | (= "Simba eats animals."
20 | (diet {:species "lion" :name "Simba" :age 1 :eater :carnivore}))
21 |
22 | "You may use a default method when no others match"
23 | (= "I don't know what Rich Hickey eats."
24 | (diet {:name "Rich Hickey"}))
25 | ))
26 |
27 | (def fns [
28 | "(defn hello
29 | ([] \"Hello World!\")
30 | ([a] (str \"Hello, you silly \" a \".\"))
31 | ([a & more] (str \"Hello to this group: \"
32 | (apply str
33 | (interpose \", \" (concat (list a) more)))
34 | \"!\")))"
35 | "(defmulti diet (fn [x] (:eater x)))"
36 | "(defmethod diet :herbivore [a] :__)"
37 | "(defmethod diet :carnivore [a] :__)"
38 | "(defmethod diet :default [a] :__)"
39 | ])
--------------------------------------------------------------------------------
/src/koans/meditations/10_lazy_sequences.cljs:
--------------------------------------------------------------------------------
1 | (ns koans.meditations.lazy-sequences)
2 |
3 | (def koans '(
4 | "There are many ways to generate a sequence"
5 | (= :__ (range 1 5))
6 |
7 | "The range starts at the beginning by default"
8 | (= :__ (range 5))
9 |
10 | "Only take what you need when the sequence is large"
11 | (= [0 1 2 3 4 5 6 7 8 9]
12 | (take :__ (range 100)))
13 |
14 | "Or limit results by dropping what you don't need"
15 | (= [95 96 97 98 99]
16 | (drop :__ (range 100)))
17 |
18 | "Iteration provides an infinite lazy sequence"
19 | (= :__ (take 20 (iterate inc 0)))
20 |
21 | "Repetition is key"
22 | (= [:a :a :a :a :a :a :a :a :a :a ]
23 | (repeat 10 :__))
24 |
25 | "Iteration can be used for repetition"
26 | (= (repeat 100 :foo)
27 | (take 100 (iterate :__ :foo)))
28 | ))
--------------------------------------------------------------------------------
/src/koans/meditations/11_sequence_comprehensions.cljs:
--------------------------------------------------------------------------------
1 | (ns koans.meditations.sequence-comprehensions)
2 |
3 | (def koans '(
4 | "Sequence comprehensions can bind each element in turn to a symbol"
5 | (= :__
6 | (for [index (range 6)]
7 | index))
8 |
9 | "They can easily emulate mapping"
10 | (= '(0 1 4 9 16 25)
11 | (map (fn [index] (* index index))
12 | (range 6))
13 | (for [index (range 6)]
14 | :__))
15 |
16 | "And also filtering"
17 | (= '(1 3 5 7 9)
18 | (filter odd? (range 10))
19 | (for [index :__ :when (odd? index)]
20 | index))
21 |
22 | "Combinations of these transformations is trivial"
23 | (= '(1 9 25 49 81)
24 | (map (fn [index] (* index index))
25 | (filter odd? (range 10)))
26 | (for [index (range 10) :when :__]
27 | :__))
28 |
29 | "More complex transformations simply take multiple binding forms"
30 | (= [[:top :left] [:top :middle] [:top :right]
31 | [:middle :left] [:middle :middle] [:middle :right]
32 | [:bottom :left] [:bottom :middle] [:bottom :right]]
33 | (for [row [:top :middle :bottom]
34 | column [:left :middle :right]]
35 | :__))
36 | ))
--------------------------------------------------------------------------------
/src/koans/meditations/12_creating_functions.cljs:
--------------------------------------------------------------------------------
1 | (ns koans.meditations.creating-functions)
2 |
3 | (def koans '(
4 | "One may know what they seek by knowing what they do not seek"
5 | (= [:__] (let [not-a-symbol? (complement symbol?)]
6 | (map not-a-symbol? [:a 'b "c"])))
7 |
8 | "Praise and 'complement' may help you separate the wheat from the chaff"
9 | (= [:wheat "wheat" 'wheat]
10 | (let [not-nil? :__]
11 | (filter not-nil? [nil :wheat nil "wheat" nil 'wheat nil])))
12 |
13 | "Partial functions allow procrastination"
14 | (= 20 (let [multiply-by-5 (partial * 5)]
15 | (:__)))
16 |
17 | "Don't forget: first things first"
18 | (= [:__]
19 | (let [ab-adder (partial concat [:a :b])]
20 | (ab-adder [:__])))
21 |
22 | "Functions can join forces as one 'composed' function"
23 | (= 25 (let [inc-and-square (comp square inc)]
24 | (inc-and-square :__)))
25 |
26 | "Have a go on a double dec-er"
27 | (= :__ (let [double-dec (comp dec dec)]
28 | (double-dec 10)))
29 |
30 | "Be careful about the order in which you mix your functions"
31 | (= 99 (let [square-and-dec :__]
32 | (square-and-dec 10)))
33 | ))
34 |
35 | (def fns [
36 | '(defn square [x] (* x x))
37 | ])
38 |
--------------------------------------------------------------------------------
/src/koans/meditations/13_recursion.cljs:
--------------------------------------------------------------------------------
1 | (ns koans.meditations.recursion)
2 |
3 | #_(def koans '(
4 | "Recursion ends with a base case"
5 | (= true (is-even? 0))
6 |
7 | "And starts by moving toward that base case"
8 | (= false (is-even? 1))
9 |
10 | #_(
11 | "Having too many stack frames requires explicit tail calls with recur"
12 | (= false (is-even-bigint? 100003N))
13 | )
14 |
15 | "Reversing directions is easy when you have not gone far"
16 | (= '(1) (recursive-reverse [1]))
17 |
18 | "Yet it becomes more difficult the more steps you take"
19 | (= '(5 4 3 2 1) (recursive-reverse [1 2 3 4 5]))
20 |
21 | "Simple things may appear simple."
22 | (= 1 (factorial 1))
23 |
24 | "They may require other simple steps."
25 | (= 2 (factorial 2))
26 |
27 | "Sometimes a slightly bigger step is necessary"
28 | (= 6 (factorial 3))
29 |
30 | "And eventually you must think harder"
31 | (= 24 (factorial 4))
32 |
33 | #(_
34 | "You can even deal with very large numbers"
35 | (< 1000000000000000000000000N (factorial 1000N))
36 |
37 | "But what happens when the machine limits you?"
38 | (< 1000000000000000000000000N (factorial 100003N))
39 | )
40 | ))
41 |
42 | #_(def fns [
43 | '(defn is-even? [n]
44 | (if (= n 0)
45 | :__
46 | (:___ (is-even? (dec n)))))
47 |
48 | '(defn is-even-bigint? [n]
49 | (loop [n n
50 | acc true]
51 | (if (= n 0)
52 | :__
53 | (recur (dec n) (not acc)))))
54 |
55 | '(defn recursive-reverse [coll]
56 | :__)
57 |
58 | '(defn factorial [n]
59 | :__)
60 | ])
--------------------------------------------------------------------------------
/src/koans/meditations/14_destructuring.cljs:
--------------------------------------------------------------------------------
1 | (ns koans.meditations.destructuring)
2 |
3 | (def koans '(
4 | "Destructuring is an arbiter: it breaks up arguments"
5 | (= :__ ((fn [[a b]] (str b a))
6 | [:foo :bar]))
7 |
8 | "Whether in function definitions"
9 | (= (str "First comes love, "
10 | "then comes marriage, "
11 | "then comes Clojure with the baby carriage")
12 | ((fn [[a b c]] :__)
13 | ["love" "marriage" "Clojure"]))
14 |
15 | "Or in let expressions"
16 | (= "Rich Hickey aka The Clojurer aka Go Time aka Macro Killah"
17 | (let [[first-name last-name & aliases]
18 | (list "Rich" "Hickey" "The Clojurer" "Go Time" "Macro Killah")]
19 | :__))
20 |
21 | "You can regain the full argument if you like arguing"
22 | (= {:original-parts ["Stephen" "Hawking"] :named-parts {:first "Stephen" :last "Hawking"}}
23 | (let [[first-name last-name :as full-name] ["Stephen" "Hawking"]]
24 | :__))
25 |
26 | "Break up maps by key"
27 | (= "123 Test Lane, Testerville, TX"
28 | (let [{street-address :street-address, city :city, state :state} test-address]
29 | :__))
30 |
31 | "Or more succinctly"
32 | (= "123 Test Lane, Testerville, TX"
33 | (let [{:keys [street-address :__]} test-address]
34 | :__))
35 |
36 | "All together now!"
37 | (= "Test Testerson, 123 Test Lane, Testerville, TX"
38 | (:__ ["Test" "Testerson"] test-address))
39 | ))
40 |
41 | (def fns [
42 | "(def test-address
43 | {:street-address \"123 Test Lane\"
44 | :city \"Testerville\"
45 | :state \"TX\"})"
46 | ])
47 |
--------------------------------------------------------------------------------
/src/koans/meditations/15_atoms.cljs:
--------------------------------------------------------------------------------
1 | (ns koans.meditations.atoms)
2 |
3 | (def koans '(
4 | "Atoms are references to values"
5 | "(= :__ (deref atomic-clock))"
6 |
7 | "You can get its value more succintly"
8 | "(= :__ @atomic-clock)"
9 |
10 | "You can even change at the swap meet"
11 | "(= :__ (do
12 | (swap! atomic-clock inc)
13 | @atomic-clock))"
14 |
15 | "Keep taxes out of this: swapping requires no transaction"
16 | "(= 5 (do
17 | :__
18 | @atomic-clock))"
19 |
20 | "Any number of arguments might happen during a swap"
21 | "(= :__ (do
22 | (swap! atomic-clock + 1 2 3 4 5)
23 | @atomic-clock))"
24 |
25 | "Atomic atoms are atomic"
26 | "(= :__ (do
27 | (compare-and-set! atomic-clock 100 :fin)
28 | @atomic-clock))"
29 |
30 | "When your expectations are aligned with reality things, proceed that way"
31 | "(= :fin (do
32 | (compare-and-set! :__)
33 | @atomic-clock))"
34 | ))
35 |
36 | (def fns [
37 | '(def atomic-clock (atom 0))
38 | ])
--------------------------------------------------------------------------------
/src/koans/meditations/15_refs.cljs:
--------------------------------------------------------------------------------
1 | (ns koans.meditations.refs)
2 |
3 | (def koans '(
4 | "In the beginning, there was a word"
5 | (= :__ (deref the-world))
6 |
7 | "You can get the word more succinctly, but it's the same"
8 | (= :__ @the-world)
9 |
10 | "You can be the change you wish to see in the world."
11 | (= :__ (do
12 | (dosync (ref-set the-world "better"))
13 | @the-world))
14 |
15 | "Alter where you need not replace"
16 | (= :__ (let [exclamator (fn [x] (str x "!"))]
17 | (dosync
18 | (alter the-world exclamator)
19 | (alter the-world exclamator)
20 | (alter the-world exclamator))
21 | @the-world))
22 |
23 | "Don't forget to do your work in a transaction!"
24 | (= 0 (do :__
25 | @the-world))
26 |
27 | "Functions passed to alter may depend on the data in the ref"
28 | (= 20 (do
29 | (dosync (alter the-world :___))))
30 |
31 | "Two worlds are better than one"
32 | (= ["Real Jerry" "Bizarro Jerry"]
33 | (do
34 | (dosync
35 | (ref-set the-world {})
36 | (alter the-world assoc :jerry "Real Jerry")
37 | (alter bizarro-world assoc :jerry "Bizarro Jerry")
38 | :__)))
39 | ))
40 |
41 | (def fns [
42 | '(def the-world (ref "hello"))
43 | '(def bizarro-world (ref {}))
44 | ])
--------------------------------------------------------------------------------
/src/koans/meditations/16_datatypes.cljs:
--------------------------------------------------------------------------------
1 | (ns koans.meditations.datatypes)
2 |
3 | (def koans '(
4 | "Holding records is meaningful only when the record is worthy of you"
5 | (= :__ (:prize (Nobel. "peace")))
6 |
7 | "Types are quite similar"
8 | (= :__ (.prize (Pulitzer. "literature")))
9 |
10 | "Records may be treated like maps"
11 | (= :__ (:prize (Nobel. "physics")))
12 |
13 | "While types may not"
14 | (= :__ (:prize (Pulitzer. "poetry")))
15 |
16 | "Further study reveals why"
17 | (= :__
18 | (map map? [(Nobel. "chemistry")
19 | (Pulitzer. "music")]))
20 |
21 | "Either sort of datatype can define methods in a protocol"
22 | (= :__
23 | (with-out-str (present (Oscar. "Best Picture") "Evil Alien Conquerors")))
24 |
25 | #_(
26 | "Surely we can implement our own by now"
27 | (= "You're really the Worst Picture, Final Destination 5... sorry."
28 | (with-out-str (present (Razzie. "Worst Picture") "Final Destination 5")))
29 | )
30 | ))
31 |
32 | (def fns [
33 | '(defrecord Nobel [prize])
34 | '(deftype Pulitzer [prize])
35 |
36 | "(defprotocol Award
37 | (present [this recipient]))"
38 |
39 | "(defrecord Oscar [category]
40 | Award
41 | (present [this recipient]
42 | (print (str \"Congratulations on your \"
43 | (:category this) \" Oscar, \"
44 | recipient
45 | \"!\"))))"
46 |
47 | "(deftype Razzie [category]
48 | Award
49 | (present [this recipient]
50 | :__))"
51 | ])
--------------------------------------------------------------------------------
/src/koans/meditations/17_partition.cljs:
--------------------------------------------------------------------------------
1 | (ns koans.meditations.partition)
2 |
3 | (def koans '(
4 | "To split a collection you can use the partition function"
5 | "(= '((0 1) (2 3)) (:__ 2 (range 4)))"
6 |
7 | "But watch out if there are not enough elements to form n sequences"
8 | (= '(:__) (partition 3 [:a :b :c :d :e]))
9 |
10 | "You can use partition-all to also get partitions with less than n elements"
11 | (= :__ (partition-all 3 (range 5)))
12 |
13 | "If you need to, you can start each sequence with an offset"
14 | "(= '((0 1 2) (5 6 7) (10 11 12)) (partition 3 :__ (range 13)))"
15 |
16 | "Consider padding the last sequence with some default values.."
17 | "(= '((0 1 2) (3 4 5) (6 :hello)) (partition 3 3 [:__] (range 7)))"
18 |
19 | ".. but notice that they will only pad up to given sequence length"
20 | "(= '( (0 1 2) (3 4 5) :__) (partition 3 3 [:this :are \"my\" \"words\"] (range 7)))"
21 | ))
--------------------------------------------------------------------------------
/src/koans/utils.cljs:
--------------------------------------------------------------------------------
1 | (ns koans.utils)
2 |
3 | (defn index-of [item coll]
4 | (first (keep-indexed #(if (= item %2) %1) coll)))
--------------------------------------------------------------------------------
/vendor/highlight.pack.js:
--------------------------------------------------------------------------------
1 | var hljs=new function(){function l(o){return o.replace(/&/gm,"&").replace(//gm,">")}function b(p){for(var o=p.firstChild;o;o=o.nextSibling){if(o.nodeName.toUpperCase()=="CODE"){return o}if(!(o.nodeType==3&&o.nodeValue.match(/\s+/))){break}}}function h(p,o){return Array.prototype.map.call(p.childNodes,function(q){if(q.nodeType==3){return o?q.nodeValue.replace(/\n/g,""):q.nodeValue}if(q.nodeName.toUpperCase()=="BR"){return"\n"}return h(q,o)}).join("")}function a(q){var p=(q.className+" "+(q.parentNode?q.parentNode.className:"")).split(/\s+/);p=p.map(function(r){return r.replace(/^language-/,"")});for(var o=0;o"}function x(z){y+=""+z.nodeName.toLowerCase()+">"}function o(z){(z.event=="start"?t:x)(z.node)}while(p.length||r.length){var w=u();y+=l(v.substr(q,w[0].offset-q));q=w[0].offset;if(w==p){s.reverse().forEach(x);do{o(w.splice(0,1)[0]);w=u()}while(w==p&&w.length&&w[0].offset==q);s.reverse().forEach(t)}else{if(w[0].event=="start"){s.push(w[0].node)}else{s.pop()}o(w.splice(0,1)[0])}}return y+l(v.substr(q))}function f(r){function o(s){return(s&&s.source)||s}function p(t,s){return RegExp(o(t),"m"+(r.cI?"i":"")+(s?"g":""))}function q(z,x){if(z.compiled){return}z.compiled=true;var u=[];if(z.k){var s={};function A(B,t){if(r.cI){t=t.toLowerCase()}t.split(" ").forEach(function(C){var D=C.split("|");s[D[0]]=[B,D[1]?Number(D[1]):1];u.push(D[0])})}z.lR=p(z.l||"\\b"+hljs.IR+"\\b(?!\\.)",true);if(typeof z.k=="string"){A("keyword",z.k)}else{for(var y in z.k){if(!z.k.hasOwnProperty(y)){continue}A(y,z.k[y])}}z.k=s}if(x){if(z.bWK){z.b="\\b("+u.join("|")+")\\b(?!\\.)\\s*"}z.bR=p(z.b?z.b:"\\B|\\b");if(!z.e&&!z.eW){z.e="\\B|\\b"}if(z.e){z.eR=p(z.e)}z.tE=o(z.e)||"";if(z.eW&&x.tE){z.tE+=(z.e?"|":"")+x.tE}}if(z.i){z.iR=p(z.i)}if(z.r===undefined){z.r=1}if(!z.c){z.c=[]}for(var w=0;w'+O[0]+""}else{r+=O[0]}Q=B.lR.lastIndex;O=B.lR.exec(N)}return r+N.substr(Q)}function z(){if(B.sL&&!e[B.sL]){return l(w)}var N=B.subLanguageMode=="continuous"?B.top:undefined;var r=B.sL?d(B.sL,w,true,N):g(w);if(B.r>0){v+=r.keyword_count;A+=r.r}B.top=r.top;return''+r.value+" "}function L(){return B.sL!==undefined?z():I()}function K(O,r){var N=O.cN?'':"";if(O.rB){x+=N;w=""}else{if(O.eB){x+=l(r)+N;w=""}else{x+=N;w=r}}B=Object.create(O,{parent:{value:B}})}function D(N,r){w+=N;if(r===undefined){x+=L();return 0}var P=o(r,B);if(P){x+=L();K(P,r);return P.rB?0:r.length}var Q=s(B,r);if(Q){var O=B;if(!(O.rE||O.eE)){w+=r}x+=L();do{if(B.cN){x+=" "}A+=B.r;B=B.parent}while(B!=Q.parent);if(O.eE){x+=l(r)}w="";if(Q.starts){K(Q.starts,"")}return O.rE?0:r.length}if(t(r,B)){throw new Error('Illegal lexem "'+r+'" for mode "'+(B.cN||"")+'"')}w+=r;return r.length||1}var H=e[E];if(!H){throw new Error('Unknown language: "'+E+'"')}f(H);var B=M||H;var x="";for(var F=B;F!=H;F=F.parent){if(F.cN){x=''+x}}var w="";var A=0;var v=0;try{var u,q,p=0;while(true){B.t.lastIndex=p;u=B.t.exec(G);if(!u){break}q=D(G.substr(p,u.index-p),u[0]);p=u.index+q}D(G.substr(p));for(var F=B;F.parent;F=F.parent){if(F.cN){x+=" "}}return{r:A,keyword_count:v,value:x,language:E,top:B}}catch(J){if(J.message.indexOf("Illegal")!=-1){return{r:0,keyword_count:0,value:l(G)}}else{throw J}}}function g(s){var o={keyword_count:0,r:0,value:l(s)};var q=o;for(var p in e){if(!e.hasOwnProperty(p)){continue}var r=d(p,s,false);r.language=p;if(r.keyword_count+r.r>q.keyword_count+q.r){q=r}if(r.keyword_count+r.r>o.keyword_count+o.r){q=o;o=r}}if(q.language){o.second_best=q}return o}function i(q,p,o){if(p){q=q.replace(/^((<[^>]+>|\t)+)/gm,function(r,v,u,t){return v.replace(/\t/g,p)})}if(o){q=q.replace(/\n/g," ")}return q}function m(r,u,p){var v=h(r,p);var t=a(r);if(t=="no-highlight"){return}var w=t?d(t,v,true):g(v);t=w.language;var o=c(r);if(o.length){var q=document.createElementNS("http://www.w3.org/1999/xhtml","pre");q.innerHTML=w.value;w.value=j(o,c(q),v)}w.value=i(w.value,u,p);var s=r.className;if(!s.match("(\\s|^)(language-)?"+t+"(\\s|$)")){s=s?(s+" "+t):t}r.innerHTML=w.value;r.className=s;r.result={language:t,kw:w.keyword_count,re:w.r};if(w.second_best){r.second_best={language:w.second_best.language,kw:w.second_best.keyword_count,re:w.second_best.r}}}function n(){if(n.called){return}n.called=true;Array.prototype.map.call(document.getElementsByTagNameNS("http://www.w3.org/1999/xhtml","pre"),b).filter(Boolean).forEach(function(o){m(o,hljs.tabReplace)})}function k(){window.addEventListener("DOMContentLoaded",n,false);window.addEventListener("load",n,false)}var e={};this.LANGUAGES=e;this.highlight=d;this.highlightAuto=g;this.fixMarkup=i;this.highlightBlock=m;this.initHighlighting=n;this.initHighlightingOnLoad=k;this.IR="[a-zA-Z][a-zA-Z0-9_]*";this.UIR="[a-zA-Z_][a-zA-Z0-9_]*";this.NR="\\b\\d+(\\.\\d+)?";this.CNR="(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)";this.BNR="\\b(0b[01]+)";this.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|\\.|-|-=|/|/=|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";this.BE={b:"\\\\[\\s\\S]",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.BNM={cN:"number",b:this.BNR,r:0};this.REGEXP_MODE={cN:"regexp",b:/\//,e:/\/[gim]*/,i:/\n/,c:[this.BE,{b:/\[/,e:/\]/,r:0,c:[this.BE]}]};this.inherit=function(q,r){var o={};for(var p in q){o[p]=q[p]}if(r){for(var p in r){o[p]=r[p]}}return o}}();hljs.LANGUAGES.clojure=function(l){var e={built_in:"def cond apply if-not if-let if not not= = < < > <= <= >= == + / * - rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit defmacro defn defn- macroexpand macroexpand-1 for doseq dosync dotimes and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy defstruct first rest cons defprotocol cast coll deftype defrecord last butlast sigs reify second ffirst fnext nfirst nnext defmulti defmethod meta with-meta ns in-ns create-ns import intern refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! import use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if throw printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time ns assert re-find re-groups rand-int rand mod locking assert-valid-fdecl alias namespace resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! memfn to-array future future-call into-array aset gen-class reduce merge map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize"};var f="[a-zA-Z_0-9\\!\\.\\?\\-\\+\\*\\/\\<\\=\\>\\&\\#\\$';]+";var a="[\\s:\\(\\{]+\\d+(\\.\\d+)?";var d={cN:"number",b:a,r:0};var j={cN:"string",b:'"',e:'"',c:[l.BE],r:0};var o={cN:"comment",b:";",e:"$",r:0};var n={cN:"collection",b:"[\\[\\{]",e:"[\\]\\}]"};var c={cN:"comment",b:"\\^"+f};var b={cN:"comment",b:"\\^\\{",e:"\\}"};var h={cN:"attribute",b:"[:]"+f};var m={cN:"list",b:"\\(",e:"\\)"};var g={eW:true,k:{literal:"true false nil"},r:0};var i={k:e,l:f,cN:"title",b:f,starts:g};m.c=[{cN:"comment",b:"comment"},i,g];g.c=[m,j,c,b,o,h,n,d];n.c=[m,j,c,o,h,n,d];return{i:/\S/,c:[o,m]}}(hljs);
--------------------------------------------------------------------------------
/vendor/styles/arta.css:
--------------------------------------------------------------------------------
1 | /*
2 | Date: 17.V.2011
3 | Author: pumbur
4 | */
5 |
6 | pre code
7 | {
8 | display: block; padding: 0.5em;
9 | background: #222;
10 | }
11 |
12 | pre .profile .header *,
13 | pre .ini .title,
14 | pre .nginx .title
15 | {
16 | color: #fff;
17 | }
18 |
19 | pre .comment,
20 | pre .javadoc,
21 | pre .preprocessor,
22 | pre .preprocessor .title,
23 | pre .pragma,
24 | pre .shebang,
25 | pre .profile .summary,
26 | pre .diff,
27 | pre .pi,
28 | pre .doctype,
29 | pre .tag,
30 | pre .template_comment,
31 | pre .css .rules,
32 | pre .tex .special
33 | {
34 | color: #444;
35 | }
36 |
37 | pre .string,
38 | pre .symbol,
39 | pre .diff .change,
40 | pre .regexp,
41 | pre .xml .attribute,
42 | pre .smalltalk .char,
43 | pre .xml .value,
44 | pre .ini .value,
45 | pre .clojure .attribute,
46 | pre .coffeescript .attribute
47 | {
48 | color: #ffcc33;
49 | }
50 |
51 | pre .number,
52 | pre .addition
53 | {
54 | color: #00cc66;
55 | }
56 |
57 | pre .built_in,
58 | pre .literal,
59 | pre .vhdl .typename,
60 | pre .go .constant,
61 | pre .go .typename,
62 | pre .ini .keyword,
63 | pre .lua .title,
64 | pre .perl .variable,
65 | pre .php .variable,
66 | pre .mel .variable,
67 | pre .django .variable,
68 | pre .css .funtion,
69 | pre .smalltalk .method,
70 | pre .hexcolor,
71 | pre .important,
72 | pre .flow,
73 | pre .inheritance,
74 | pre .parser3 .variable
75 | {
76 | color: #32AAEE;
77 | }
78 |
79 | pre .keyword,
80 | pre .tag .title,
81 | pre .css .tag,
82 | pre .css .class,
83 | pre .css .id,
84 | pre .css .pseudo,
85 | pre .css .attr_selector,
86 | pre .lisp .title,
87 | pre .clojure .built_in,
88 | pre .winutils,
89 | pre .tex .command,
90 | pre .request,
91 | pre .status
92 | {
93 | color: #6644aa;
94 | }
95 |
96 | pre .title,
97 | pre .ruby .constant,
98 | pre .vala .constant,
99 | pre .parent,
100 | pre .deletion,
101 | pre .template_tag,
102 | pre .css .keyword,
103 | pre .objectivec .class .id,
104 | pre .smalltalk .class,
105 | pre .lisp .keyword,
106 | pre .apache .tag,
107 | pre .nginx .variable,
108 | pre .envvar,
109 | pre .bash .variable,
110 | pre .go .built_in,
111 | pre .vbscript .built_in,
112 | pre .lua .built_in,
113 | pre .rsl .built_in,
114 | pre .tail,
115 | pre .avrasm .label,
116 | pre .tex .formula,
117 | pre .tex .formula *
118 | {
119 | color: #bb1166;
120 | }
121 |
122 | pre .yardoctag,
123 | pre .phpdoc,
124 | pre .profile .header,
125 | pre .ini .title,
126 | pre .apache .tag,
127 | pre .parser3 .title
128 | {
129 | font-weight: bold;
130 | }
131 |
132 | pre .coffeescript .javascript,
133 | pre .javascript .xml,
134 | pre .tex .formula,
135 | pre .xml .javascript,
136 | pre .xml .vbscript,
137 | pre .xml .css,
138 | pre .xml .cdata
139 | {
140 | opacity: 0.6;
141 | }
142 |
143 | pre code,
144 | pre .javascript,
145 | pre .css,
146 | pre .xml,
147 | pre .subst,
148 | pre .diff .chunk,
149 | pre .css .value,
150 | pre .css .attribute,
151 | pre .lisp .string,
152 | pre .lisp .number,
153 | pre .tail .params,
154 | pre .container,
155 | pre .haskell *,
156 | pre .erlang *,
157 | pre .erlang_repl *
158 | {
159 | color: #aaa;
160 | }
161 |
--------------------------------------------------------------------------------
/vendor/styles/ascetic.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Original style from softwaremaniacs.org (c) Ivan Sagalaev
4 |
5 | */
6 |
7 | pre code {
8 | display: block; padding: 0.5em;
9 | background: white; color: black;
10 | }
11 |
12 | pre .string,
13 | pre .tag .value,
14 | pre .filter .argument,
15 | pre .addition,
16 | pre .change,
17 | pre .apache .tag,
18 | pre .apache .cbracket,
19 | pre .nginx .built_in,
20 | pre .tex .formula {
21 | color: #888;
22 | }
23 |
24 | pre .comment,
25 | pre .template_comment,
26 | pre .shebang,
27 | pre .doctype,
28 | pre .pi,
29 | pre .javadoc,
30 | pre .deletion,
31 | pre .apache .sqbracket {
32 | color: #CCC;
33 | }
34 |
35 | pre .keyword,
36 | pre .tag .title,
37 | pre .ini .title,
38 | pre .lisp .title,
39 | pre .clojure .title,
40 | pre .http .title,
41 | pre .nginx .title,
42 | pre .css .tag,
43 | pre .winutils,
44 | pre .flow,
45 | pre .apache .tag,
46 | pre .tex .command,
47 | pre .request,
48 | pre .status {
49 | font-weight: bold;
50 | }
51 |
--------------------------------------------------------------------------------
/vendor/styles/brown_paper.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Brown Paper style from goldblog.com.ua (c) Zaripov Yura
4 |
5 | */
6 |
7 | pre code {
8 | display: block; padding: 0.5em;
9 | background:#b7a68e url(./brown_papersq.png);
10 | }
11 |
12 | pre .keyword,
13 | pre .literal,
14 | pre .change,
15 | pre .winutils,
16 | pre .flow,
17 | pre .lisp .title,
18 | pre .clojure .built_in,
19 | pre .nginx .title,
20 | pre .tex .special,
21 | pre .request,
22 | pre .status {
23 | color:#005599;
24 | font-weight:bold;
25 | }
26 |
27 | pre code,
28 | pre .subst,
29 | pre .tag .keyword {
30 | color: #363C69;
31 | }
32 |
33 | pre .string,
34 | pre .title,
35 | pre .haskell .type,
36 | pre .tag .value,
37 | pre .css .rules .value,
38 | pre .preprocessor,
39 | pre .pragma,
40 | pre .ruby .symbol,
41 | pre .ruby .symbol .string,
42 | pre .ruby .class .parent,
43 | pre .built_in,
44 | pre .sql .aggregate,
45 | pre .django .template_tag,
46 | pre .django .variable,
47 | pre .smalltalk .class,
48 | pre .javadoc,
49 | pre .ruby .string,
50 | pre .django .filter .argument,
51 | pre .smalltalk .localvars,
52 | pre .smalltalk .array,
53 | pre .attr_selector,
54 | pre .pseudo,
55 | pre .addition,
56 | pre .stream,
57 | pre .envvar,
58 | pre .apache .tag,
59 | pre .apache .cbracket,
60 | pre .tex .number {
61 | color: #2C009F;
62 | }
63 |
64 | pre .comment,
65 | pre .java .annotation,
66 | pre .python .decorator,
67 | pre .template_comment,
68 | pre .pi,
69 | pre .doctype,
70 | pre .deletion,
71 | pre .shebang,
72 | pre .apache .sqbracket,
73 | pre .nginx .built_in,
74 | pre .tex .formula {
75 | color: #802022;
76 | }
77 |
78 | pre .keyword,
79 | pre .literal,
80 | pre .css .id,
81 | pre .phpdoc,
82 | pre .title,
83 | pre .haskell .type,
84 | pre .vbscript .built_in,
85 | pre .sql .aggregate,
86 | pre .rsl .built_in,
87 | pre .smalltalk .class,
88 | pre .diff .header,
89 | pre .chunk,
90 | pre .winutils,
91 | pre .bash .variable,
92 | pre .apache .tag,
93 | pre .tex .command {
94 | font-weight: bold;
95 | }
96 |
97 | pre .coffeescript .javascript,
98 | pre .javascript .xml,
99 | pre .tex .formula,
100 | pre .xml .javascript,
101 | pre .xml .vbscript,
102 | pre .xml .css,
103 | pre .xml .cdata {
104 | opacity: 0.8;
105 | }
106 |
--------------------------------------------------------------------------------
/vendor/styles/brown_papersq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lazerwalker/clojurescript-koans/c4713e3ccafad2229c5eae038d8bbf433d0d026e/vendor/styles/brown_papersq.png
--------------------------------------------------------------------------------
/vendor/styles/dark.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Dark style from softwaremaniacs.org (c) Ivan Sagalaev
4 |
5 | */
6 |
7 | pre code {
8 | display: block; padding: 0.5em;
9 | background: #444;
10 | }
11 |
12 | pre .keyword,
13 | pre .literal,
14 | pre .change,
15 | pre .winutils,
16 | pre .flow,
17 | pre .lisp .title,
18 | pre .clojure .built_in,
19 | pre .nginx .title,
20 | pre .tex .special {
21 | color: white;
22 | }
23 |
24 | pre code,
25 | pre .subst {
26 | color: #DDD;
27 | }
28 |
29 | pre .string,
30 | pre .title,
31 | pre .haskell .type,
32 | pre .ini .title,
33 | pre .tag .value,
34 | pre .css .rules .value,
35 | pre .preprocessor,
36 | pre .pragma,
37 | pre .ruby .symbol,
38 | pre .ruby .symbol .string,
39 | pre .ruby .class .parent,
40 | pre .built_in,
41 | pre .sql .aggregate,
42 | pre .django .template_tag,
43 | pre .django .variable,
44 | pre .smalltalk .class,
45 | pre .javadoc,
46 | pre .ruby .string,
47 | pre .django .filter .argument,
48 | pre .smalltalk .localvars,
49 | pre .smalltalk .array,
50 | pre .attr_selector,
51 | pre .pseudo,
52 | pre .addition,
53 | pre .stream,
54 | pre .envvar,
55 | pre .apache .tag,
56 | pre .apache .cbracket,
57 | pre .tex .command,
58 | pre .prompt,
59 | pre .coffeescript .attribute {
60 | color: #D88;
61 | }
62 |
63 | pre .comment,
64 | pre .java .annotation,
65 | pre .python .decorator,
66 | pre .template_comment,
67 | pre .pi,
68 | pre .doctype,
69 | pre .deletion,
70 | pre .shebang,
71 | pre .apache .sqbracket,
72 | pre .tex .formula {
73 | color: #777;
74 | }
75 |
76 | pre .keyword,
77 | pre .literal,
78 | pre .title,
79 | pre .css .id,
80 | pre .phpdoc,
81 | pre .haskell .type,
82 | pre .vbscript .built_in,
83 | pre .sql .aggregate,
84 | pre .rsl .built_in,
85 | pre .smalltalk .class,
86 | pre .diff .header,
87 | pre .chunk,
88 | pre .winutils,
89 | pre .bash .variable,
90 | pre .apache .tag,
91 | pre .tex .special,
92 | pre .request,
93 | pre .status {
94 | font-weight: bold;
95 | }
96 |
97 | pre .coffeescript .javascript,
98 | pre .javascript .xml,
99 | pre .tex .formula,
100 | pre .xml .javascript,
101 | pre .xml .vbscript,
102 | pre .xml .css,
103 | pre .xml .cdata {
104 | opacity: 0.5;
105 | }
106 |
--------------------------------------------------------------------------------
/vendor/styles/default.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Original style from softwaremaniacs.org (c) Ivan Sagalaev
4 |
5 | */
6 |
7 | pre code {
8 | display: block; padding: 0.5em;
9 | background: #F0F0F0;
10 | }
11 |
12 | pre code,
13 | pre .subst,
14 | pre .tag .title,
15 | pre .lisp .title,
16 | pre .clojure .built_in,
17 | pre .nginx .title {
18 | color: black;
19 | }
20 |
21 | pre .string,
22 | pre .title,
23 | pre .constant,
24 | pre .parent,
25 | pre .tag .value,
26 | pre .rules .value,
27 | pre .rules .value .number,
28 | pre .preprocessor,
29 | pre .pragma,
30 | pre .haml .symbol,
31 | pre .ruby .symbol,
32 | pre .ruby .symbol .string,
33 | pre .aggregate,
34 | pre .template_tag,
35 | pre .django .variable,
36 | pre .smalltalk .class,
37 | pre .addition,
38 | pre .flow,
39 | pre .stream,
40 | pre .bash .variable,
41 | pre .apache .tag,
42 | pre .apache .cbracket,
43 | pre .tex .command,
44 | pre .tex .special,
45 | pre .erlang_repl .function_or_atom,
46 | pre .asciidoc .header,
47 | pre .markdown .header,
48 | pre .coffeescript .attribute {
49 | color: #800;
50 | }
51 |
52 | pre .smartquote,
53 | pre .comment,
54 | pre .annotation,
55 | pre .template_comment,
56 | pre .diff .header,
57 | pre .chunk,
58 | pre .asciidoc .blockquote,
59 | pre .markdown .blockquote {
60 | color: #888;
61 | }
62 |
63 | pre .number,
64 | pre .date,
65 | pre .regexp,
66 | pre .literal,
67 | pre .hexcolor,
68 | pre .smalltalk .symbol,
69 | pre .smalltalk .char,
70 | pre .go .constant,
71 | pre .change,
72 | pre .lasso .variable,
73 | pre .makefile .variable,
74 | pre .asciidoc .bullet,
75 | pre .markdown .bullet,
76 | pre .asciidoc .link_url,
77 | pre .markdown .link_url {
78 | color: #080;
79 | }
80 |
81 | pre .label,
82 | pre .javadoc,
83 | pre .ruby .string,
84 | pre .decorator,
85 | pre .filter .argument,
86 | pre .localvars,
87 | pre .array,
88 | pre .attr_selector,
89 | pre .important,
90 | pre .pseudo,
91 | pre .pi,
92 | pre .haml .bullet,
93 | pre .doctype,
94 | pre .deletion,
95 | pre .envvar,
96 | pre .shebang,
97 | pre .apache .sqbracket,
98 | pre .nginx .built_in,
99 | pre .tex .formula,
100 | pre .erlang_repl .reserved,
101 | pre .prompt,
102 | pre .asciidoc .link_label,
103 | pre .markdown .link_label,
104 | pre .vhdl .attribute,
105 | pre .clojure .attribute,
106 | pre .asciidoc .attribute,
107 | pre .lasso .attribute,
108 | pre .coffeescript .property,
109 | pre .makefile .phony {
110 | color: #88F
111 | }
112 |
113 | pre .keyword,
114 | pre .id,
115 | pre .title,
116 | pre .built_in,
117 | pre .aggregate,
118 | pre .css .tag,
119 | pre .javadoctag,
120 | pre .phpdoc,
121 | pre .yardoctag,
122 | pre .smalltalk .class,
123 | pre .winutils,
124 | pre .bash .variable,
125 | pre .apache .tag,
126 | pre .go .typename,
127 | pre .tex .command,
128 | pre .asciidoc .strong,
129 | pre .markdown .strong,
130 | pre .request,
131 | pre .status {
132 | font-weight: bold;
133 | }
134 |
135 | pre .asciidoc .emphasis,
136 | pre .markdown .emphasis {
137 | font-style: italic;
138 | }
139 |
140 | pre .nginx .built_in {
141 | font-weight: normal;
142 | }
143 |
144 | pre .coffeescript .javascript,
145 | pre .javascript .xml,
146 | pre .lasso .markup,
147 | pre .tex .formula,
148 | pre .xml .javascript,
149 | pre .xml .vbscript,
150 | pre .xml .css,
151 | pre .xml .cdata {
152 | opacity: 0.5;
153 | }
154 |
--------------------------------------------------------------------------------
/vendor/styles/docco.css:
--------------------------------------------------------------------------------
1 | /*
2 | Docco style used in http://jashkenas.github.com/docco/ converted by Simon Madine (@thingsinjars)
3 | */
4 |
5 | pre code {
6 | display: block; padding: 0.5em;
7 | color: #000;
8 | background: #f8f8ff
9 | }
10 |
11 | pre .comment,
12 | pre .template_comment,
13 | pre .diff .header,
14 | pre .javadoc {
15 | color: #408080;
16 | font-style: italic
17 | }
18 |
19 | pre .keyword,
20 | pre .assignment,
21 | pre .literal,
22 | pre .css .rule .keyword,
23 | pre .winutils,
24 | pre .javascript .title,
25 | pre .lisp .title,
26 | pre .subst {
27 | color: #954121;
28 | }
29 |
30 | pre .number,
31 | pre .hexcolor {
32 | color: #40a070
33 | }
34 |
35 | pre .string,
36 | pre .tag .value,
37 | pre .phpdoc,
38 | pre .tex .formula {
39 | color: #219161;
40 | }
41 |
42 | pre .title,
43 | pre .id {
44 | color: #19469D;
45 | }
46 | pre .params {
47 | color: #00F;
48 | }
49 |
50 | pre .javascript .title,
51 | pre .lisp .title,
52 | pre .subst {
53 | font-weight: normal
54 | }
55 |
56 | pre .class .title,
57 | pre .haskell .label,
58 | pre .tex .command {
59 | color: #458;
60 | font-weight: bold
61 | }
62 |
63 | pre .tag,
64 | pre .tag .title,
65 | pre .rules .property,
66 | pre .django .tag .keyword {
67 | color: #000080;
68 | font-weight: normal
69 | }
70 |
71 | pre .attribute,
72 | pre .variable,
73 | pre .instancevar,
74 | pre .lisp .body {
75 | color: #008080
76 | }
77 |
78 | pre .regexp {
79 | color: #B68
80 | }
81 |
82 | pre .class {
83 | color: #458;
84 | font-weight: bold
85 | }
86 |
87 | pre .symbol,
88 | pre .ruby .symbol .string,
89 | pre .ruby .symbol .keyword,
90 | pre .ruby .symbol .keymethods,
91 | pre .lisp .keyword,
92 | pre .tex .special,
93 | pre .input_number {
94 | color: #990073
95 | }
96 |
97 | pre .builtin,
98 | pre .constructor,
99 | pre .built_in,
100 | pre .lisp .title {
101 | color: #0086b3
102 | }
103 |
104 | pre .preprocessor,
105 | pre .pragma,
106 | pre .pi,
107 | pre .doctype,
108 | pre .shebang,
109 | pre .cdata {
110 | color: #999;
111 | font-weight: bold
112 | }
113 |
114 | pre .deletion {
115 | background: #fdd
116 | }
117 |
118 | pre .addition {
119 | background: #dfd
120 | }
121 |
122 | pre .diff .change {
123 | background: #0086b3
124 | }
125 |
126 | pre .chunk {
127 | color: #aaa
128 | }
129 |
130 | pre .tex .formula {
131 | opacity: 0.5;
132 | }
133 |
--------------------------------------------------------------------------------
/vendor/styles/far.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | FAR Style (c) MajestiC
4 |
5 | */
6 |
7 | pre code {
8 | display: block; padding: 0.5em;
9 | background: #000080;
10 | }
11 |
12 | pre code,
13 | pre .subst {
14 | color: #0FF;
15 | }
16 |
17 | pre .string,
18 | pre .ruby .string,
19 | pre .haskell .type,
20 | pre .tag .value,
21 | pre .css .rules .value,
22 | pre .css .rules .value .number,
23 | pre .preprocessor,
24 | pre .pragma,
25 | pre .ruby .symbol,
26 | pre .ruby .symbol .string,
27 | pre .built_in,
28 | pre .sql .aggregate,
29 | pre .django .template_tag,
30 | pre .django .variable,
31 | pre .smalltalk .class,
32 | pre .addition,
33 | pre .apache .tag,
34 | pre .apache .cbracket,
35 | pre .tex .command,
36 | pre .clojure .title,
37 | pre .coffeescript .attribute {
38 | color: #FF0;
39 | }
40 |
41 | pre .keyword,
42 | pre .css .id,
43 | pre .title,
44 | pre .haskell .type,
45 | pre .vbscript .built_in,
46 | pre .sql .aggregate,
47 | pre .rsl .built_in,
48 | pre .smalltalk .class,
49 | pre .xml .tag .title,
50 | pre .winutils,
51 | pre .flow,
52 | pre .change,
53 | pre .envvar,
54 | pre .bash .variable,
55 | pre .tex .special,
56 | pre .clojure .built_in {
57 | color: #FFF;
58 | }
59 |
60 | pre .comment,
61 | pre .phpdoc,
62 | pre .javadoc,
63 | pre .java .annotation,
64 | pre .template_comment,
65 | pre .deletion,
66 | pre .apache .sqbracket,
67 | pre .tex .formula {
68 | color: #888;
69 | }
70 |
71 | pre .number,
72 | pre .date,
73 | pre .regexp,
74 | pre .literal,
75 | pre .smalltalk .symbol,
76 | pre .smalltalk .char,
77 | pre .clojure .attribute {
78 | color: #0F0;
79 | }
80 |
81 | pre .python .decorator,
82 | pre .django .filter .argument,
83 | pre .smalltalk .localvars,
84 | pre .smalltalk .array,
85 | pre .attr_selector,
86 | pre .pseudo,
87 | pre .xml .pi,
88 | pre .diff .header,
89 | pre .chunk,
90 | pre .shebang,
91 | pre .nginx .built_in,
92 | pre .prompt {
93 | color: #008080;
94 | }
95 |
96 | pre .keyword,
97 | pre .css .id,
98 | pre .title,
99 | pre .haskell .type,
100 | pre .vbscript .built_in,
101 | pre .sql .aggregate,
102 | pre .rsl .built_in,
103 | pre .smalltalk .class,
104 | pre .winutils,
105 | pre .flow,
106 | pre .apache .tag,
107 | pre .nginx .built_in,
108 | pre .tex .command,
109 | pre .tex .special,
110 | pre .request,
111 | pre .status {
112 | font-weight: bold;
113 | }
114 |
--------------------------------------------------------------------------------
/vendor/styles/foundation.css:
--------------------------------------------------------------------------------
1 | /*
2 | Description: Foundation 4 docs style for highlight.js
3 | Author: Dan Allen
4 | Website: http://foundation.zurb.com/docs/
5 | Version: 1.0
6 | Date: 2013-04-02
7 | */
8 |
9 | pre code {
10 | display: block; padding: 0.5em;
11 | background: #eee;
12 | }
13 |
14 | pre .header,
15 | pre .decorator,
16 | pre .annotation {
17 | color: #000077;
18 | }
19 |
20 | pre .horizontal_rule,
21 | pre .link_url,
22 | pre .emphasis,
23 | pre .attribute {
24 | color: #070;
25 | }
26 |
27 | pre .emphasis {
28 | font-style: italic;
29 | }
30 |
31 | pre .link_label,
32 | pre .strong,
33 | pre .value,
34 | pre .string,
35 | pre .scss .value .string {
36 | color: #d14;
37 | }
38 |
39 | pre .strong {
40 | font-weight: bold;
41 | }
42 |
43 | pre .blockquote,
44 | pre .comment {
45 | color: #998;
46 | font-style: italic;
47 | }
48 |
49 | pre .asciidoc .title,
50 | pre .function .title {
51 | color: #900;
52 | }
53 |
54 | pre .class {
55 | color: #458;
56 | }
57 |
58 | pre .id,
59 | pre .pseudo,
60 | pre .constant,
61 | pre .hexcolor {
62 | color: teal;
63 | }
64 |
65 | pre .variable {
66 | color: #336699;
67 | }
68 |
69 | pre .bullet,
70 | pre .javadoc {
71 | color: #997700;
72 | }
73 |
74 | pre .pi,
75 | pre .doctype {
76 | color: #3344bb;
77 | }
78 |
79 | pre .code,
80 | pre .number {
81 | color: #099;
82 | }
83 |
84 | pre .important {
85 | color: #f00;
86 | }
87 |
88 | pre .smartquote,
89 | pre .label {
90 | color: #970;
91 | }
92 |
93 | pre .preprocessor,
94 | pre .pragma {
95 | color: #579;
96 | }
97 |
98 | pre .reserved,
99 | pre .keyword,
100 | pre .scss .value {
101 | color: #000;
102 | }
103 |
104 | pre .regexp {
105 | background-color: #fff0ff;
106 | color: #880088;
107 | }
108 |
109 | pre .symbol {
110 | color: #990073;
111 | }
112 |
113 | pre .symbol .string {
114 | color: #a60;
115 | }
116 |
117 | pre .tag {
118 | color: #007700;
119 | }
120 |
121 | pre .at_rule,
122 | pre .at_rule .keyword {
123 | color: #088;
124 | }
125 |
126 | pre .at_rule .preprocessor {
127 | color: #808;
128 | }
129 |
130 | pre .scss .tag,
131 | pre .scss .attribute {
132 | color: #339;
133 | }
134 |
--------------------------------------------------------------------------------
/vendor/styles/github.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | github.com style (c) Vasily Polovnyov
4 |
5 | */
6 |
7 | pre code {
8 | display: block; padding: 0.5em;
9 | color: #333;
10 | background: #f8f8ff
11 | }
12 |
13 | pre .comment,
14 | pre .template_comment,
15 | pre .diff .header,
16 | pre .javadoc {
17 | color: #998;
18 | font-style: italic
19 | }
20 |
21 | pre .keyword,
22 | pre .css .rule .keyword,
23 | pre .winutils,
24 | pre .javascript .title,
25 | pre .nginx .title,
26 | pre .subst,
27 | pre .request,
28 | pre .status {
29 | color: #333;
30 | font-weight: bold
31 | }
32 |
33 | pre .number,
34 | pre .hexcolor,
35 | pre .ruby .constant {
36 | color: #099;
37 | }
38 |
39 | pre .string,
40 | pre .tag .value,
41 | pre .phpdoc,
42 | pre .tex .formula {
43 | color: #d14
44 | }
45 |
46 | pre .title,
47 | pre .id,
48 | pre .coffeescript .params,
49 | pre .scss .preprocessor {
50 | color: #900;
51 | font-weight: bold
52 | }
53 |
54 | pre .javascript .title,
55 | pre .lisp .title,
56 | pre .clojure .title,
57 | pre .subst {
58 | font-weight: normal
59 | }
60 |
61 | pre .class .title,
62 | pre .haskell .type,
63 | pre .vhdl .literal,
64 | pre .tex .command {
65 | color: #458;
66 | font-weight: bold
67 | }
68 |
69 | pre .tag,
70 | pre .tag .title,
71 | pre .rules .property,
72 | pre .django .tag .keyword {
73 | color: #000080;
74 | font-weight: normal
75 | }
76 |
77 | pre .attribute,
78 | pre .variable,
79 | pre .lisp .body {
80 | color: #008080
81 | }
82 |
83 | pre .regexp {
84 | color: #009926
85 | }
86 |
87 | pre .class {
88 | color: #458;
89 | font-weight: bold
90 | }
91 |
92 | pre .symbol,
93 | pre .ruby .symbol .string,
94 | pre .lisp .keyword,
95 | pre .tex .special,
96 | pre .prompt {
97 | color: #990073
98 | }
99 |
100 | pre .built_in,
101 | pre .lisp .title,
102 | pre .clojure .built_in {
103 | color: #0086b3
104 | }
105 |
106 | pre .preprocessor,
107 | pre .pragma,
108 | pre .pi,
109 | pre .doctype,
110 | pre .shebang,
111 | pre .cdata {
112 | color: #999;
113 | font-weight: bold
114 | }
115 |
116 | pre .deletion {
117 | background: #fdd
118 | }
119 |
120 | pre .addition {
121 | background: #dfd
122 | }
123 |
124 | pre .diff .change {
125 | background: #0086b3
126 | }
127 |
128 | pre .chunk {
129 | color: #aaa
130 | }
131 |
--------------------------------------------------------------------------------
/vendor/styles/googlecode.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Google Code style (c) Aahan Krish
4 |
5 | */
6 |
7 | pre code {
8 | display: block; padding: 0.5em;
9 | background: white; color: black;
10 | }
11 |
12 | pre .comment,
13 | pre .template_comment,
14 | pre .javadoc,
15 | pre .comment * {
16 | color: #800;
17 | }
18 |
19 | pre .keyword,
20 | pre .method,
21 | pre .list .title,
22 | pre .clojure .built_in,
23 | pre .nginx .title,
24 | pre .tag .title,
25 | pre .setting .value,
26 | pre .winutils,
27 | pre .tex .command,
28 | pre .http .title,
29 | pre .request,
30 | pre .status {
31 | color: #008;
32 | }
33 |
34 | pre .envvar,
35 | pre .tex .special {
36 | color: #660;
37 | }
38 |
39 | pre .string,
40 | pre .tag .value,
41 | pre .cdata,
42 | pre .filter .argument,
43 | pre .attr_selector,
44 | pre .apache .cbracket,
45 | pre .date,
46 | pre .regexp,
47 | pre .coffeescript .attribute {
48 | color: #080;
49 | }
50 |
51 | pre .sub .identifier,
52 | pre .pi,
53 | pre .tag,
54 | pre .tag .keyword,
55 | pre .decorator,
56 | pre .ini .title,
57 | pre .shebang,
58 | pre .prompt,
59 | pre .hexcolor,
60 | pre .rules .value,
61 | pre .css .value .number,
62 | pre .literal,
63 | pre .symbol,
64 | pre .ruby .symbol .string,
65 | pre .number,
66 | pre .css .function,
67 | pre .clojure .attribute {
68 | color: #066;
69 | }
70 |
71 | pre .class .title,
72 | pre .haskell .type,
73 | pre .smalltalk .class,
74 | pre .javadoctag,
75 | pre .yardoctag,
76 | pre .phpdoc,
77 | pre .typename,
78 | pre .tag .attribute,
79 | pre .doctype,
80 | pre .class .id,
81 | pre .built_in,
82 | pre .setting,
83 | pre .params,
84 | pre .variable,
85 | pre .clojure .title {
86 | color: #606;
87 | }
88 |
89 | pre .css .tag,
90 | pre .rules .property,
91 | pre .pseudo,
92 | pre .subst {
93 | color: #000;
94 | }
95 |
96 | pre .css .class, pre .css .id {
97 | color: #9B703F;
98 | }
99 |
100 | pre .value .important {
101 | color: #ff7700;
102 | font-weight: bold;
103 | }
104 |
105 | pre .rules .keyword {
106 | color: #C5AF75;
107 | }
108 |
109 | pre .annotation,
110 | pre .apache .sqbracket,
111 | pre .nginx .built_in {
112 | color: #9B859D;
113 | }
114 |
115 | pre .preprocessor,
116 | pre .preprocessor *,
117 | pre .pragma {
118 | color: #444;
119 | }
120 |
121 | pre .tex .formula {
122 | background-color: #EEE;
123 | font-style: italic;
124 | }
125 |
126 | pre .diff .header,
127 | pre .chunk {
128 | color: #808080;
129 | font-weight: bold;
130 | }
131 |
132 | pre .diff .change {
133 | background-color: #BCCFF9;
134 | }
135 |
136 | pre .addition {
137 | background-color: #BAEEBA;
138 | }
139 |
140 | pre .deletion {
141 | background-color: #FFC8BD;
142 | }
143 |
144 | pre .comment .yardoctag {
145 | font-weight: bold;
146 | }
147 |
--------------------------------------------------------------------------------
/vendor/styles/idea.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Intellij Idea-like styling (c) Vasily Polovnyov
4 |
5 | */
6 |
7 | pre code {
8 | display: block; padding: 0.5em;
9 | color: #000;
10 | background: #fff;
11 | }
12 |
13 | pre .subst,
14 | pre .title {
15 | font-weight: normal;
16 | color: #000;
17 | }
18 |
19 | pre .comment,
20 | pre .template_comment,
21 | pre .javadoc,
22 | pre .diff .header {
23 | color: #808080;
24 | font-style: italic;
25 | }
26 |
27 | pre .annotation,
28 | pre .decorator,
29 | pre .preprocessor,
30 | pre .pragma,
31 | pre .doctype,
32 | pre .pi,
33 | pre .chunk,
34 | pre .shebang,
35 | pre .apache .cbracket,
36 | pre .prompt,
37 | pre .http .title {
38 | color: #808000;
39 | }
40 |
41 | pre .tag,
42 | pre .pi {
43 | background: #efefef;
44 | }
45 |
46 | pre .tag .title,
47 | pre .id,
48 | pre .attr_selector,
49 | pre .pseudo,
50 | pre .literal,
51 | pre .keyword,
52 | pre .hexcolor,
53 | pre .css .function,
54 | pre .ini .title,
55 | pre .css .class,
56 | pre .list .title,
57 | pre .clojure .title,
58 | pre .nginx .title,
59 | pre .tex .command,
60 | pre .request,
61 | pre .status {
62 | font-weight: bold;
63 | color: #000080;
64 | }
65 |
66 | pre .attribute,
67 | pre .rules .keyword,
68 | pre .number,
69 | pre .date,
70 | pre .regexp,
71 | pre .tex .special {
72 | font-weight: bold;
73 | color: #0000ff;
74 | }
75 |
76 | pre .number,
77 | pre .regexp {
78 | font-weight: normal;
79 | }
80 |
81 | pre .string,
82 | pre .value,
83 | pre .filter .argument,
84 | pre .css .function .params,
85 | pre .apache .tag {
86 | color: #008000;
87 | font-weight: bold;
88 | }
89 |
90 | pre .symbol,
91 | pre .ruby .symbol .string,
92 | pre .char,
93 | pre .tex .formula {
94 | color: #000;
95 | background: #d0eded;
96 | font-style: italic;
97 | }
98 |
99 | pre .phpdoc,
100 | pre .yardoctag,
101 | pre .javadoctag {
102 | text-decoration: underline;
103 | }
104 |
105 | pre .variable,
106 | pre .envvar,
107 | pre .apache .sqbracket,
108 | pre .nginx .built_in {
109 | color: #660e7a;
110 | }
111 |
112 | pre .addition {
113 | background: #baeeba;
114 | }
115 |
116 | pre .deletion {
117 | background: #ffc8bd;
118 | }
119 |
120 | pre .diff .change {
121 | background: #bccff9;
122 | }
123 |
--------------------------------------------------------------------------------
/vendor/styles/ir_black.css:
--------------------------------------------------------------------------------
1 | /*
2 | IR_Black style (c) Vasily Mikhailitchenko
3 | */
4 |
5 | pre code {
6 | display: block; padding: 0.5em;
7 | background: #000; color: #f8f8f8;
8 | }
9 |
10 | pre .shebang,
11 | pre .comment,
12 | pre .template_comment,
13 | pre .javadoc {
14 | color: #7c7c7c;
15 | }
16 |
17 | pre .keyword,
18 | pre .tag,
19 | pre .tex .command,
20 | pre .request,
21 | pre .status,
22 | pre .clojure .attribute {
23 | color: #96CBFE;
24 | }
25 |
26 | pre .sub .keyword,
27 | pre .method,
28 | pre .list .title,
29 | pre .nginx .title {
30 | color: #FFFFB6;
31 | }
32 |
33 | pre .string,
34 | pre .tag .value,
35 | pre .cdata,
36 | pre .filter .argument,
37 | pre .attr_selector,
38 | pre .apache .cbracket,
39 | pre .date,
40 | pre .coffeescript .attribute {
41 | color: #A8FF60;
42 | }
43 |
44 | pre .subst {
45 | color: #DAEFA3;
46 | }
47 |
48 | pre .regexp {
49 | color: #E9C062;
50 | }
51 |
52 | pre .title,
53 | pre .sub .identifier,
54 | pre .pi,
55 | pre .decorator,
56 | pre .tex .special,
57 | pre .haskell .type,
58 | pre .constant,
59 | pre .smalltalk .class,
60 | pre .javadoctag,
61 | pre .yardoctag,
62 | pre .phpdoc,
63 | pre .nginx .built_in {
64 | color: #FFFFB6;
65 | }
66 |
67 | pre .symbol,
68 | pre .ruby .symbol .string,
69 | pre .number,
70 | pre .variable,
71 | pre .vbscript,
72 | pre .literal {
73 | color: #C6C5FE;
74 | }
75 |
76 | pre .css .tag {
77 | color: #96CBFE;
78 | }
79 |
80 | pre .css .rules .property,
81 | pre .css .id {
82 | color: #FFFFB6;
83 | }
84 |
85 | pre .css .class {
86 | color: #FFF;
87 | }
88 |
89 | pre .hexcolor {
90 | color: #C6C5FE;
91 | }
92 |
93 | pre .number {
94 | color:#FF73FD;
95 | }
96 |
97 | pre .coffeescript .javascript,
98 | pre .javascript .xml,
99 | pre .tex .formula,
100 | pre .xml .javascript,
101 | pre .xml .vbscript,
102 | pre .xml .css,
103 | pre .xml .cdata {
104 | opacity: 0.7;
105 | }
106 |
--------------------------------------------------------------------------------
/vendor/styles/magula.css:
--------------------------------------------------------------------------------
1 | /*
2 | Description: Magula style for highligh.js
3 | Author: Ruslan Keba
4 | Website: http://rukeba.com/
5 | Version: 1.0
6 | Date: 2009-01-03
7 | Music: Aphex Twin / Xtal
8 | */
9 |
10 | pre code {
11 | display: block; padding: 0.5em;
12 | background-color: #f4f4f4;
13 | }
14 |
15 | pre code,
16 | pre .subst,
17 | pre .lisp .title,
18 | pre .clojure .built_in {
19 | color: black;
20 | }
21 |
22 | pre .string,
23 | pre .title,
24 | pre .parent,
25 | pre .tag .value,
26 | pre .rules .value,
27 | pre .rules .value .number,
28 | pre .preprocessor,
29 | pre .pragma,
30 | pre .ruby .symbol,
31 | pre .ruby .symbol .string,
32 | pre .aggregate,
33 | pre .template_tag,
34 | pre .django .variable,
35 | pre .smalltalk .class,
36 | pre .addition,
37 | pre .flow,
38 | pre .stream,
39 | pre .bash .variable,
40 | pre .apache .cbracket,
41 | pre .coffeescript .attribute {
42 | color: #050;
43 | }
44 |
45 | pre .comment,
46 | pre .annotation,
47 | pre .template_comment,
48 | pre .diff .header,
49 | pre .chunk {
50 | color: #777;
51 | }
52 |
53 | pre .number,
54 | pre .date,
55 | pre .regexp,
56 | pre .literal,
57 | pre .smalltalk .symbol,
58 | pre .smalltalk .char,
59 | pre .change,
60 | pre .tex .special {
61 | color: #800;
62 | }
63 |
64 | pre .label,
65 | pre .javadoc,
66 | pre .ruby .string,
67 | pre .decorator,
68 | pre .filter .argument,
69 | pre .localvars,
70 | pre .array,
71 | pre .attr_selector,
72 | pre .pseudo,
73 | pre .pi,
74 | pre .doctype,
75 | pre .deletion,
76 | pre .envvar,
77 | pre .shebang,
78 | pre .apache .sqbracket,
79 | pre .nginx .built_in,
80 | pre .tex .formula,
81 | pre .prompt,
82 | pre .clojure .attribute {
83 | color: #00e;
84 | }
85 |
86 | pre .keyword,
87 | pre .id,
88 | pre .phpdoc,
89 | pre .title,
90 | pre .built_in,
91 | pre .aggregate,
92 | pre .smalltalk .class,
93 | pre .winutils,
94 | pre .bash .variable,
95 | pre .apache .tag,
96 | pre .xml .tag,
97 | pre .tex .command,
98 | pre .request,
99 | pre .status {
100 | font-weight: bold;
101 | color: navy;
102 | }
103 |
104 | pre .nginx .built_in {
105 | font-weight: normal;
106 | }
107 |
108 | pre .coffeescript .javascript,
109 | pre .javascript .xml,
110 | pre .tex .formula,
111 | pre .xml .javascript,
112 | pre .xml .vbscript,
113 | pre .xml .css,
114 | pre .xml .cdata {
115 | opacity: 0.5;
116 | }
117 |
118 | /* --- */
119 | pre .apache .tag {
120 | font-weight: bold;
121 | color: blue;
122 | }
123 |
124 |
--------------------------------------------------------------------------------
/vendor/styles/mono-blue.css:
--------------------------------------------------------------------------------
1 | /*
2 | Five-color theme from a single blue hue.
3 | */
4 | pre code {
5 | display: block; padding: 0.5em;
6 | background: #EAEEF3; color: #00193A;
7 | }
8 |
9 | pre .keyword,
10 | pre .title,
11 | pre .important,
12 | pre .request,
13 | pre .header,
14 | pre .javadoctag {
15 | font-weight: bold;
16 | }
17 |
18 | pre .comment,
19 | pre .chunk,
20 | pre .template_comment {
21 | color: #738191;
22 | }
23 |
24 | pre .string,
25 | pre .title,
26 | pre .parent,
27 | pre .built_in,
28 | pre .literal,
29 | pre .filename,
30 | pre .value,
31 | pre .addition,
32 | pre .tag,
33 | pre .argument,
34 | pre .link_label,
35 | pre .blockquote,
36 | pre .header {
37 | color: #0048AB;
38 | }
39 |
40 | pre .decorator,
41 | pre .prompt,
42 | pre .yardoctag,
43 | pre .subst,
44 | pre .symbol,
45 | pre .doctype,
46 | pre .regexp,
47 | pre .preprocessor,
48 | pre .pragma,
49 | pre .pi,
50 | pre .attribute,
51 | pre .attr_selector,
52 | pre .javadoc,
53 | pre .xmlDocTag,
54 | pre .deletion,
55 | pre .shebang,
56 | pre .string .variable,
57 | pre .link_url,
58 | pre .bullet,
59 | pre .sqbracket,
60 | pre .phony {
61 | color: #4C81C9;
62 | }
63 |
--------------------------------------------------------------------------------
/vendor/styles/monokai.css:
--------------------------------------------------------------------------------
1 | /*
2 | Monokai style - ported by Luigi Maselli - http://grigio.org
3 | */
4 |
5 | pre code {
6 | display: block; padding: 0.5em;
7 | background: #272822;
8 | }
9 |
10 | pre .tag,
11 | pre .tag .title,
12 | pre .keyword,
13 | pre .literal,
14 | pre .strong,
15 | pre .change,
16 | pre .winutils,
17 | pre .flow,
18 | pre .lisp .title,
19 | pre .clojure .built_in,
20 | pre .nginx .title,
21 | pre .tex .special {
22 | color: #F92672;
23 | }
24 |
25 | pre code {
26 | color: #DDD;
27 | }
28 |
29 | pre code .constant,
30 | pre .asciidoc .code {
31 | color: #66D9EF;
32 | }
33 |
34 | pre .code,
35 | pre .class .title,
36 | pre .header {
37 | color: white;
38 | }
39 |
40 | pre .link_label,
41 | pre .attribute,
42 | pre .symbol,
43 | pre .symbol .string,
44 | pre .value,
45 | pre .regexp {
46 | color: #BF79DB;
47 | }
48 |
49 | pre .link_url,
50 | pre .tag .value,
51 | pre .string,
52 | pre .bullet,
53 | pre .subst,
54 | pre .title,
55 | pre .emphasis,
56 | pre .haskell .type,
57 | pre .preprocessor,
58 | pre .pragma,
59 | pre .ruby .class .parent,
60 | pre .built_in,
61 | pre .sql .aggregate,
62 | pre .django .template_tag,
63 | pre .django .variable,
64 | pre .smalltalk .class,
65 | pre .javadoc,
66 | pre .django .filter .argument,
67 | pre .smalltalk .localvars,
68 | pre .smalltalk .array,
69 | pre .attr_selector,
70 | pre .pseudo,
71 | pre .addition,
72 | pre .stream,
73 | pre .envvar,
74 | pre .apache .tag,
75 | pre .apache .cbracket,
76 | pre .tex .command,
77 | pre .prompt {
78 | color: #A6E22E;
79 | }
80 |
81 | pre .comment,
82 | pre .java .annotation,
83 | pre .smartquote,
84 | pre .blockquote,
85 | pre .horizontal_rule,
86 | pre .python .decorator,
87 | pre .template_comment,
88 | pre .pi,
89 | pre .doctype,
90 | pre .deletion,
91 | pre .shebang,
92 | pre .apache .sqbracket,
93 | pre .tex .formula {
94 | color: #75715E;
95 | }
96 |
97 | pre .keyword,
98 | pre .literal,
99 | pre .css .id,
100 | pre .phpdoc,
101 | pre .title,
102 | pre .header,
103 | pre .haskell .type,
104 | pre .vbscript .built_in,
105 | pre .sql .aggregate,
106 | pre .rsl .built_in,
107 | pre .smalltalk .class,
108 | pre .diff .header,
109 | pre .chunk,
110 | pre .winutils,
111 | pre .bash .variable,
112 | pre .apache .tag,
113 | pre .tex .special,
114 | pre .request,
115 | pre .status {
116 | font-weight: bold;
117 | }
118 |
119 | pre .coffeescript .javascript,
120 | pre .javascript .xml,
121 | pre .tex .formula,
122 | pre .xml .javascript,
123 | pre .xml .vbscript,
124 | pre .xml .css,
125 | pre .xml .cdata {
126 | opacity: 0.5;
127 | }
128 |
--------------------------------------------------------------------------------
/vendor/styles/monokai_sublime.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Monokai Sublime style. Derived from Monokai by noformnocontent http://nn.mit-license.org/
4 |
5 | */
6 |
7 | pre code {
8 | display: block;
9 | padding: 0.5em;
10 | background: #23241f;
11 | }
12 | pre .tag,
13 | pre code {
14 | color: #f8f8f2;
15 | }
16 | pre .keyword,
17 | pre .function,
18 | pre .literal,
19 | pre .change,
20 | pre .winutils,
21 | pre .flow,
22 | pre .lisp .title,
23 | pre .clojure .built_in,
24 | pre .nginx .title,
25 | pre .tex .special {
26 | color: #66d9ef;
27 | }
28 | pre .variable,
29 | pre .params {
30 | color: #fd9720;
31 | }
32 | pre .constant {
33 | color: #66d9ef;
34 | }
35 | pre .title,
36 | pre .class .title,
37 | pre .css .class {
38 | color: #a6e22e;
39 | }
40 | pre .attribute,
41 | pre .symbol,
42 | pre .symbol .string,
43 | pre .tag .title,
44 | pre .value,
45 | pre .css .tag {
46 | color: #f92672;
47 | }
48 | pre .number,
49 | pre .preprocessor,
50 | pre .pragma,
51 | pre .regexp {
52 | color: #ae81ff;
53 | }
54 | pre .tag .value,
55 | pre .string,
56 | pre .css .id,
57 | pre .subst,
58 | pre .haskell .type,
59 | pre .ruby .class .parent,
60 | pre .built_in,
61 | pre .sql .aggregate,
62 | pre .django .template_tag,
63 | pre .django .variable,
64 | pre .smalltalk .class,
65 | pre .django .filter .argument,
66 | pre .smalltalk .localvars,
67 | pre .smalltalk .array,
68 | pre .attr_selector,
69 | pre .pseudo,
70 | pre .addition,
71 | pre .stream,
72 | pre .envvar,
73 | pre .apache .tag,
74 | pre .apache .cbracket,
75 | pre .tex .command,
76 | pre .prompt {
77 | color: #e6db74;
78 | }
79 | pre .comment,
80 | pre .javadoc,
81 | pre .java .annotation,
82 | pre .python .decorator,
83 | pre .template_comment,
84 | pre .pi,
85 | pre .doctype,
86 | pre .deletion,
87 | pre .shebang,
88 | pre .apache .sqbracket,
89 | pre .tex .formula {
90 | color: #75715e;
91 | }
92 | pre .coffeescript .javascript,
93 | pre .javascript .xml,
94 | pre .tex .formula {
95 | opacity: 0.5;
96 | }
97 | pre .xml .javascript,
98 | pre .xml .vbscript,
99 | pre .xml .css,
100 | pre .xml .cdata {
101 | opacity: 0.5;
102 | }
103 |
--------------------------------------------------------------------------------
/vendor/styles/obsidian.css:
--------------------------------------------------------------------------------
1 | /**
2 | * Obsidian style
3 | * ported by Alexander Marenin (http://github.com/ioncreature)
4 | */
5 |
6 | pre code {
7 | display: block; padding: 0.5em;
8 | background: #282B2E;
9 | }
10 |
11 | pre .keyword,
12 | pre .literal,
13 | pre .change,
14 | pre .winutils,
15 | pre .flow,
16 | pre .lisp .title,
17 | pre .clojure .built_in,
18 | pre .nginx .title,
19 | pre .css .id,
20 | pre .tex .special {
21 | color: #93C763;
22 | }
23 |
24 | pre .number {
25 | color: #FFCD22;
26 | }
27 |
28 | pre code {
29 | color: #E0E2E4;
30 | }
31 |
32 | pre .css .tag,
33 | pre .css .pseudo {
34 | color: #D0D2B5;
35 | }
36 |
37 | pre .attribute,
38 | pre code .constant {
39 | color: #668BB0;
40 | }
41 |
42 | pre .xml .attribute {
43 | color: #B3B689;
44 | }
45 |
46 | pre .xml .tag .value {
47 | color: #E8E2B7;
48 | }
49 |
50 | pre .code,
51 | pre .class .title,
52 | pre .header {
53 | color: white;
54 | }
55 |
56 | pre .class,
57 | pre .hexcolor {
58 | color: #93C763;
59 | }
60 |
61 | pre .regexp {
62 | color: #D39745;
63 | }
64 |
65 | pre .at_rule,
66 | pre .at_rule .keyword {
67 | color: #A082BD;
68 | }
69 |
70 | pre .doctype {
71 | color: #557182;
72 | }
73 |
74 | pre .link_url,
75 | pre .tag,
76 | pre .tag .title,
77 | pre .bullet,
78 | pre .subst,
79 | pre .emphasis,
80 | pre .haskell .type,
81 | pre .preprocessor,
82 | pre .pragma,
83 | pre .ruby .class .parent,
84 | pre .built_in,
85 | pre .sql .aggregate,
86 | pre .django .template_tag,
87 | pre .django .variable,
88 | pre .smalltalk .class,
89 | pre .javadoc,
90 | pre .django .filter .argument,
91 | pre .smalltalk .localvars,
92 | pre .smalltalk .array,
93 | pre .attr_selector,
94 | pre .pseudo,
95 | pre .addition,
96 | pre .stream,
97 | pre .envvar,
98 | pre .apache .tag,
99 | pre .apache .cbracket,
100 | pre .tex .command,
101 | pre .prompt {
102 | color: #8CBBAD;
103 | }
104 |
105 | pre .string {
106 | color: #EC7600;
107 | }
108 |
109 | pre .comment,
110 | pre .java .annotation,
111 | pre .blockquote,
112 | pre .horizontal_rule,
113 | pre .python .decorator,
114 | pre .template_comment,
115 | pre .pi,
116 | pre .deletion,
117 | pre .shebang,
118 | pre .apache .sqbracket,
119 | pre .tex .formula {
120 | color: #818E96;
121 | }
122 |
123 | pre .keyword,
124 | pre .literal,
125 | pre .css .id,
126 | pre .phpdoc,
127 | pre .title,
128 | pre .header,
129 | pre .haskell .type,
130 | pre .vbscript .built_in,
131 | pre .sql .aggregate,
132 | pre .rsl .built_in,
133 | pre .smalltalk .class,
134 | pre .diff .header,
135 | pre .chunk,
136 | pre .winutils,
137 | pre .bash .variable,
138 | pre .apache .tag,
139 | pre .tex .special,
140 | pre .request,
141 | pre .at_rule .keyword,
142 | pre .status {
143 | font-weight: bold;
144 | }
145 |
146 | pre .coffeescript .javascript,
147 | pre .javascript .xml,
148 | pre .tex .formula,
149 | pre .xml .javascript,
150 | pre .xml .vbscript,
151 | pre .xml .css,
152 | pre .xml .cdata {
153 | opacity: 0.5;
154 | }
155 |
--------------------------------------------------------------------------------
/vendor/styles/pojoaque.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Pojoaque Style by Jason Tate
4 | http://web-cms-designs.com/ftopict-10-pojoaque-style-for-highlight-js-code-highlighter.html
5 | Based on Solarized Style from http://ethanschoonover.com/solarized
6 |
7 | */
8 |
9 | pre code {
10 | display: block; padding: 0.5em;
11 | color: #DCCF8F;
12 | background: url(./pojoaque.jpg) repeat scroll left top #181914;
13 | }
14 |
15 | pre .comment,
16 | pre .template_comment,
17 | pre .diff .header,
18 | pre .doctype,
19 | pre .lisp .string,
20 | pre .javadoc {
21 | color: #586e75;
22 | font-style: italic;
23 | }
24 |
25 | pre .keyword,
26 | pre .css .rule .keyword,
27 | pre .winutils,
28 | pre .javascript .title,
29 | pre .method,
30 | pre .addition,
31 | pre .css .tag,
32 | pre .clojure .title,
33 | pre .nginx .title {
34 | color: #B64926;
35 | }
36 |
37 | pre .number,
38 | pre .command,
39 | pre .string,
40 | pre .tag .value,
41 | pre .phpdoc,
42 | pre .tex .formula,
43 | pre .regexp,
44 | pre .hexcolor {
45 | color: #468966;
46 | }
47 |
48 | pre .title,
49 | pre .localvars,
50 | pre .function .title,
51 | pre .chunk,
52 | pre .decorator,
53 | pre .built_in,
54 | pre .lisp .title,
55 | pre .clojure .built_in,
56 | pre .identifier,
57 | pre .id {
58 | color: #FFB03B;
59 | }
60 |
61 | pre .attribute,
62 | pre .variable,
63 | pre .lisp .body,
64 | pre .smalltalk .number,
65 | pre .constant,
66 | pre .class .title,
67 | pre .parent,
68 | pre .haskell .type {
69 | color: #b58900;
70 | }
71 |
72 | pre .css .attribute {
73 | color: #b89859;
74 | }
75 |
76 | pre .css .number,pre .css .hexcolor{
77 | color: #DCCF8F;
78 | }
79 |
80 | pre .css .class {
81 | color: #d3a60c;
82 | }
83 |
84 | pre .preprocessor,
85 | pre .pragma,
86 | pre .pi,
87 | pre .shebang,
88 | pre .symbol,
89 | pre .symbol .string,
90 | pre .diff .change,
91 | pre .special,
92 | pre .attr_selector,
93 | pre .important,
94 | pre .subst,
95 | pre .cdata {
96 | color: #cb4b16;
97 | }
98 |
99 | pre .deletion {
100 | color: #dc322f;
101 | }
102 |
103 | pre .tex .formula {
104 | background: #073642;
105 | }
106 |
--------------------------------------------------------------------------------
/vendor/styles/pojoaque.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lazerwalker/clojurescript-koans/c4713e3ccafad2229c5eae038d8bbf433d0d026e/vendor/styles/pojoaque.jpg
--------------------------------------------------------------------------------
/vendor/styles/railscasts.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Railscasts-like style (c) Visoft, Inc. (Damien White)
4 |
5 | */
6 |
7 | pre code {
8 | display: block;
9 | padding: 0.5em;
10 | background: #232323;
11 | color: #E6E1DC;
12 | }
13 |
14 | pre .comment,
15 | pre .template_comment,
16 | pre .javadoc,
17 | pre .shebang {
18 | color: #BC9458;
19 | font-style: italic;
20 | }
21 |
22 | pre .keyword,
23 | pre .ruby .function .keyword,
24 | pre .request,
25 | pre .status,
26 | pre .nginx .title,
27 | pre .method,
28 | pre .list .title {
29 | color: #C26230;
30 | }
31 |
32 | pre .string,
33 | pre .number,
34 | pre .regexp,
35 | pre .tag .value,
36 | pre .cdata,
37 | pre .filter .argument,
38 | pre .attr_selector,
39 | pre .apache .cbracket,
40 | pre .date,
41 | pre .tex .command,
42 | pre .markdown .link_label {
43 | color: #A5C261;
44 | }
45 |
46 | pre .subst {
47 | color: #519F50;
48 | }
49 |
50 | pre .tag,
51 | pre .tag .keyword,
52 | pre .tag .title,
53 | pre .doctype,
54 | pre .sub .identifier,
55 | pre .pi,
56 | pre .input_number {
57 | color: #E8BF6A;
58 | }
59 |
60 | pre .identifier {
61 | color: #D0D0FF;
62 | }
63 |
64 | pre .class .title,
65 | pre .haskell .type,
66 | pre .smalltalk .class,
67 | pre .javadoctag,
68 | pre .yardoctag,
69 | pre .phpdoc {
70 | text-decoration: none;
71 | }
72 |
73 | pre .constant {
74 | color: #DA4939;
75 | }
76 |
77 |
78 | pre .symbol,
79 | pre .built_in,
80 | pre .ruby .symbol .string,
81 | pre .ruby .symbol .identifier,
82 | pre .markdown .link_url,
83 | pre .attribute {
84 | color: #6D9CBE;
85 | }
86 |
87 | pre .markdown .link_url {
88 | text-decoration: underline;
89 | }
90 |
91 |
92 |
93 | pre .params,
94 | pre .variable,
95 | pre .clojure .attribute {
96 | color: #D0D0FF;
97 | }
98 |
99 | pre .css .tag,
100 | pre .rules .property,
101 | pre .pseudo,
102 | pre .tex .special {
103 | color: #CDA869;
104 | }
105 |
106 | pre .css .class {
107 | color: #9B703F;
108 | }
109 |
110 | pre .rules .keyword {
111 | color: #C5AF75;
112 | }
113 |
114 | pre .rules .value {
115 | color: #CF6A4C;
116 | }
117 |
118 | pre .css .id {
119 | color: #8B98AB;
120 | }
121 |
122 | pre .annotation,
123 | pre .apache .sqbracket,
124 | pre .nginx .built_in {
125 | color: #9B859D;
126 | }
127 |
128 | pre .preprocessor,
129 | pre .preprocessor *
130 | pre .pragma {
131 | color: #8996A8 !important;
132 | }
133 |
134 | pre .hexcolor,
135 | pre .css .value .number {
136 | color: #A5C261;
137 | }
138 |
139 | pre .title,
140 | pre .decorator,
141 | pre .css .function {
142 | color: #FFC66D;
143 | }
144 |
145 | pre .diff .header,
146 | pre .chunk {
147 | background-color: #2F33AB;
148 | color: #E6E1DC;
149 | display: inline-block;
150 | width: 100%;
151 | }
152 |
153 | pre .diff .change {
154 | background-color: #4A410D;
155 | color: #F8F8F8;
156 | display: inline-block;
157 | width: 100%;
158 | }
159 |
160 | pre .addition {
161 | background-color: #144212;
162 | color: #E6E1DC;
163 | display: inline-block;
164 | width: 100%;
165 | }
166 |
167 | pre .deletion {
168 | background-color: #600;
169 | color: #E6E1DC;
170 | display: inline-block;
171 | width: 100%;
172 | }
173 |
174 | pre .coffeescript .javascript,
175 | pre .javascript .xml,
176 | pre .tex .formula,
177 | pre .xml .javascript,
178 | pre .xml .vbscript,
179 | pre .xml .css,
180 | pre .xml .cdata {
181 | opacity: 0.7;
182 | }
183 |
--------------------------------------------------------------------------------
/vendor/styles/rainbow.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Style with support for rainbow parens
4 |
5 | */
6 |
7 | pre ::-moz-selection{ background: #FF5E99; color:#fff; text-shadow: none; }
8 | pre ::selection { background:#FF5E99; color:#fff; text-shadow: none; }
9 |
10 | pre code {
11 | display: block; padding: 0.5em;
12 | background: #474949; color: #D1D9E1;
13 | }
14 |
15 |
16 | pre .body,
17 | pre .collection {
18 | color: #D1D9E1;
19 | }
20 |
21 | pre .comment,
22 | pre .template_comment,
23 | pre .diff .header,
24 | pre .doctype,
25 | pre .lisp .string,
26 | pre .javadoc {
27 | color: #969896;
28 | font-style: italic;
29 | }
30 |
31 | pre .keyword,
32 | pre .clojure .attribute,
33 | pre .winutils,
34 | pre .javascript .title,
35 | pre .addition,
36 | pre .css .tag {
37 | color: #cc99cc;
38 | }
39 |
40 | pre .number { color: #f99157; }
41 |
42 | pre .command,
43 | pre .string,
44 | pre .tag .value,
45 | pre .phpdoc,
46 | pre .tex .formula,
47 | pre .regexp,
48 | pre .hexcolor {
49 | color: #8abeb7;
50 | }
51 |
52 | pre .title,
53 | pre .localvars,
54 | pre .function .title,
55 | pre .chunk,
56 | pre .decorator,
57 | pre .built_in,
58 | pre .lisp .title,
59 | pre .identifier
60 | {
61 | color: #b5bd68;
62 | }
63 |
64 | pre .class .keyword
65 | {
66 | color: #f2777a;
67 | }
68 |
69 | pre .variable,
70 | pre .lisp .body,
71 | pre .smalltalk .number,
72 | pre .constant,
73 | pre .class .title,
74 | pre .parent,
75 | pre .haskell .label,
76 | pre .id,
77 | pre .lisp .title,
78 | pre .clojure .title .built_in {
79 | color: #ffcc66;
80 | }
81 |
82 | pre .tag .title,
83 | pre .rules .property,
84 | pre .django .tag .keyword,
85 | pre .clojure .title .built_in {
86 | font-weight: bold;
87 | }
88 |
89 | pre .attribute,
90 | pre .clojure .title {
91 | color: #81a2be;
92 | }
93 |
94 | pre .preprocessor,
95 | pre .pragma,
96 | pre .pi,
97 | pre .shebang,
98 | pre .symbol,
99 | pre .symbol .string,
100 | pre .diff .change,
101 | pre .special,
102 | pre .attr_selector,
103 | pre .important,
104 | pre .subst,
105 | pre .cdata {
106 | color: #f99157;
107 | }
108 |
109 | pre .deletion {
110 | color: #dc322f;
111 | }
112 |
113 | pre .tex .formula {
114 | background: #eee8d5;
115 | }
116 |
--------------------------------------------------------------------------------
/vendor/styles/school_book.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | School Book style from goldblog.com.ua (c) Zaripov Yura
4 |
5 | */
6 |
7 | pre code {
8 | display: block; padding: 15px 0.5em 0.5em 30px;
9 | font-size: 11px !important;
10 | line-height:16px !important;
11 | }
12 |
13 | pre{
14 | background:#f6f6ae url(./school_book.png);
15 | border-top: solid 2px #d2e8b9;
16 | border-bottom: solid 1px #d2e8b9;
17 | }
18 |
19 | pre .keyword,
20 | pre .literal,
21 | pre .change,
22 | pre .winutils,
23 | pre .flow,
24 | pre .lisp .title,
25 | pre .clojure .built_in,
26 | pre .nginx .title,
27 | pre .tex .special {
28 | color:#005599;
29 | font-weight:bold;
30 | }
31 |
32 | pre code,
33 | pre .subst,
34 | pre .tag .keyword {
35 | color: #3E5915;
36 | }
37 |
38 | pre .string,
39 | pre .title,
40 | pre .haskell .type,
41 | pre .tag .value,
42 | pre .css .rules .value,
43 | pre .preprocessor,
44 | pre .pragma,
45 | pre .ruby .symbol,
46 | pre .ruby .symbol .string,
47 | pre .ruby .class .parent,
48 | pre .built_in,
49 | pre .sql .aggregate,
50 | pre .django .template_tag,
51 | pre .django .variable,
52 | pre .smalltalk .class,
53 | pre .javadoc,
54 | pre .ruby .string,
55 | pre .django .filter .argument,
56 | pre .smalltalk .localvars,
57 | pre .smalltalk .array,
58 | pre .attr_selector,
59 | pre .pseudo,
60 | pre .addition,
61 | pre .stream,
62 | pre .envvar,
63 | pre .apache .tag,
64 | pre .apache .cbracket,
65 | pre .nginx .built_in,
66 | pre .tex .command,
67 | pre .coffeescript .attribute {
68 | color: #2C009F;
69 | }
70 |
71 | pre .comment,
72 | pre .java .annotation,
73 | pre .python .decorator,
74 | pre .template_comment,
75 | pre .pi,
76 | pre .doctype,
77 | pre .deletion,
78 | pre .shebang,
79 | pre .apache .sqbracket {
80 | color: #E60415;
81 | }
82 |
83 | pre .keyword,
84 | pre .literal,
85 | pre .css .id,
86 | pre .phpdoc,
87 | pre .title,
88 | pre .haskell .type,
89 | pre .vbscript .built_in,
90 | pre .sql .aggregate,
91 | pre .rsl .built_in,
92 | pre .smalltalk .class,
93 | pre .xml .tag .title,
94 | pre .diff .header,
95 | pre .chunk,
96 | pre .winutils,
97 | pre .bash .variable,
98 | pre .apache .tag,
99 | pre .tex .command,
100 | pre .request,
101 | pre .status {
102 | font-weight: bold;
103 | }
104 |
105 | pre .coffeescript .javascript,
106 | pre .javascript .xml,
107 | pre .tex .formula,
108 | pre .xml .javascript,
109 | pre .xml .vbscript,
110 | pre .xml .css,
111 | pre .xml .cdata {
112 | opacity: 0.5;
113 | }
114 |
--------------------------------------------------------------------------------
/vendor/styles/school_book.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lazerwalker/clojurescript-koans/c4713e3ccafad2229c5eae038d8bbf433d0d026e/vendor/styles/school_book.png
--------------------------------------------------------------------------------
/vendor/styles/solarized_dark.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull
4 |
5 | */
6 |
7 | pre code {
8 | display: block; padding: 0.5em;
9 | background: #002b36; color: #839496;
10 | }
11 |
12 | pre .comment,
13 | pre .template_comment,
14 | pre .diff .header,
15 | pre .doctype,
16 | pre .pi,
17 | pre .lisp .string,
18 | pre .javadoc {
19 | color: #586e75;
20 | font-style: italic;
21 | }
22 |
23 | pre .keyword,
24 | pre .winutils,
25 | pre .method,
26 | pre .addition,
27 | pre .css .tag,
28 | pre .request,
29 | pre .status,
30 | pre .nginx .title {
31 | color: #859900;
32 | }
33 |
34 | pre .number,
35 | pre .command,
36 | pre .string,
37 | pre .tag .value,
38 | pre .rules .value,
39 | pre .phpdoc,
40 | pre .tex .formula,
41 | pre .regexp,
42 | pre .hexcolor {
43 | color: #2aa198;
44 | }
45 |
46 | pre .title,
47 | pre .localvars,
48 | pre .chunk,
49 | pre .decorator,
50 | pre .built_in,
51 | pre .identifier,
52 | pre .vhdl .literal,
53 | pre .id,
54 | pre .css .function {
55 | color: #268bd2;
56 | }
57 |
58 | pre .attribute,
59 | pre .variable,
60 | pre .lisp .body,
61 | pre .smalltalk .number,
62 | pre .constant,
63 | pre .class .title,
64 | pre .parent,
65 | pre .haskell .type {
66 | color: #b58900;
67 | }
68 |
69 | pre .preprocessor,
70 | pre .preprocessor .keyword,
71 | pre .pragma,
72 | pre .shebang,
73 | pre .symbol,
74 | pre .symbol .string,
75 | pre .diff .change,
76 | pre .special,
77 | pre .attr_selector,
78 | pre .important,
79 | pre .subst,
80 | pre .cdata,
81 | pre .clojure .title,
82 | pre .css .pseudo {
83 | color: #cb4b16;
84 | }
85 |
86 | pre .deletion {
87 | color: #dc322f;
88 | }
89 |
90 | pre .tex .formula {
91 | background: #073642;
92 | }
93 |
--------------------------------------------------------------------------------
/vendor/styles/solarized_light.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull
4 |
5 | */
6 |
7 | code {
8 | display: block; padding: 0.5em;
9 | background: #fdf6e3; color: #657b83;
10 | }
11 |
12 | .comment,
13 | .template_comment,
14 | .diff .header,
15 | .doctype,
16 | .pi,
17 | .lisp .string,
18 | .javadoc {
19 | color: #93a1a1;
20 | font-style: italic;
21 | }
22 |
23 | .keyword,
24 | .winutils,
25 | .method,
26 | .addition,
27 | .css .tag,
28 | .request,
29 | .status,
30 | .nginx .title {
31 | color: #859900;
32 | }
33 |
34 | .number,
35 | .command,
36 | .string,
37 | .tag .value,
38 | .rules .value,
39 | .phpdoc,
40 | .tex .formula,
41 | .regexp,
42 | .hexcolor {
43 | color: #2aa198;
44 | }
45 |
46 | .title,
47 | .localvars,
48 | .chunk,
49 | .decorator,
50 | .built_in,
51 | .identifier,
52 | .vhdl .literal,
53 | .id,
54 | .css .function {
55 | color: #268bd2;
56 | }
57 |
58 | .attribute,
59 | .variable,
60 | .lisp .body,
61 | .smalltalk .number,
62 | .constant,
63 | .class .title,
64 | .parent,
65 | .haskell .type {
66 | color: #b58900;
67 | }
68 |
69 | .preprocessor,
70 | .preprocessor .keyword,
71 | .pragma,
72 | .shebang,
73 | .symbol,
74 | .symbol .string,
75 | .diff .change,
76 | .special,
77 | .attr_selector,
78 | .important,
79 | .subst,
80 | .cdata,
81 | .clojure .title,
82 | .css .pseudo {
83 | color: #cb4b16;
84 | }
85 |
86 | .deletion {
87 | color: #dc322f;
88 | }
89 |
90 | .tex .formula {
91 | background: #eee8d5;
92 | }
93 |
--------------------------------------------------------------------------------
/vendor/styles/sunburst.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Sunburst-like style (c) Vasily Polovnyov
4 |
5 | */
6 |
7 | pre code {
8 | display: block; padding: 0.5em;
9 | background: #000; color: #f8f8f8;
10 | }
11 |
12 | pre .comment,
13 | pre .template_comment,
14 | pre .javadoc {
15 | color: #aeaeae;
16 | font-style: italic;
17 | }
18 |
19 | pre .keyword,
20 | pre .ruby .function .keyword,
21 | pre .request,
22 | pre .status,
23 | pre .nginx .title {
24 | color: #E28964;
25 | }
26 |
27 | pre .function .keyword,
28 | pre .sub .keyword,
29 | pre .method,
30 | pre .list .title {
31 | color: #99CF50;
32 | }
33 |
34 | pre .string,
35 | pre .tag .value,
36 | pre .cdata,
37 | pre .filter .argument,
38 | pre .attr_selector,
39 | pre .apache .cbracket,
40 | pre .date,
41 | pre .tex .command,
42 | pre .coffeescript .attribute {
43 | color: #65B042;
44 | }
45 |
46 | pre .subst {
47 | color: #DAEFA3;
48 | }
49 |
50 | pre .regexp {
51 | color: #E9C062;
52 | }
53 |
54 | pre .title,
55 | pre .sub .identifier,
56 | pre .pi,
57 | pre .tag,
58 | pre .tag .keyword,
59 | pre .decorator,
60 | pre .shebang,
61 | pre .prompt {
62 | color: #89BDFF;
63 | }
64 |
65 | pre .class .title,
66 | pre .haskell .type,
67 | pre .smalltalk .class,
68 | pre .javadoctag,
69 | pre .yardoctag,
70 | pre .phpdoc {
71 | text-decoration: underline;
72 | }
73 |
74 | pre .symbol,
75 | pre .ruby .symbol .string,
76 | pre .number {
77 | color: #3387CC;
78 | }
79 |
80 | pre .params,
81 | pre .variable,
82 | pre .clojure .attribute {
83 | color: #3E87E3;
84 | }
85 |
86 | pre .css .tag,
87 | pre .rules .property,
88 | pre .pseudo,
89 | pre .tex .special {
90 | color: #CDA869;
91 | }
92 |
93 | pre .css .class {
94 | color: #9B703F;
95 | }
96 |
97 | pre .rules .keyword {
98 | color: #C5AF75;
99 | }
100 |
101 | pre .rules .value {
102 | color: #CF6A4C;
103 | }
104 |
105 | pre .css .id {
106 | color: #8B98AB;
107 | }
108 |
109 | pre .annotation,
110 | pre .apache .sqbracket,
111 | pre .nginx .built_in {
112 | color: #9B859D;
113 | }
114 |
115 | pre .preprocessor,
116 | pre .pragma {
117 | color: #8996A8;
118 | }
119 |
120 | pre .hexcolor,
121 | pre .css .value .number {
122 | color: #DD7B3B;
123 | }
124 |
125 | pre .css .function {
126 | color: #DAD085;
127 | }
128 |
129 | pre .diff .header,
130 | pre .chunk,
131 | pre .tex .formula {
132 | background-color: #0E2231;
133 | color: #F8F8F8;
134 | font-style: italic;
135 | }
136 |
137 | pre .diff .change {
138 | background-color: #4A410D;
139 | color: #F8F8F8;
140 | }
141 |
142 | pre .addition {
143 | background-color: #253B22;
144 | color: #F8F8F8;
145 | }
146 |
147 | pre .deletion {
148 | background-color: #420E09;
149 | color: #F8F8F8;
150 | }
151 |
152 | pre .coffeescript .javascript,
153 | pre .javascript .xml,
154 | pre .tex .formula,
155 | pre .xml .javascript,
156 | pre .xml .vbscript,
157 | pre .xml .css,
158 | pre .xml .cdata {
159 | opacity: 0.5;
160 | }
161 |
--------------------------------------------------------------------------------
/vendor/styles/tomorrow-night-blue.css:
--------------------------------------------------------------------------------
1 | /* Tomorrow Night Blue Theme */
2 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
3 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */
4 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
5 | .tomorrow-comment, pre .comment, pre .title {
6 | color: #7285b7;
7 | }
8 |
9 | .tomorrow-red, pre .variable, pre .attribute, pre .tag, pre .regexp, pre .ruby .constant, pre .xml .tag .title, pre .xml .pi, pre .xml .doctype, pre .html .doctype, pre .css .id, pre .css .class, pre .css .pseudo {
10 | color: #ff9da4;
11 | }
12 |
13 | .tomorrow-orange, pre .number, pre .preprocessor, pre .pragma, pre .built_in, pre .literal, pre .params, pre .constant {
14 | color: #ffc58f;
15 | }
16 |
17 | .tomorrow-yellow, pre .ruby .class .title, pre .css .rules .attribute {
18 | color: #ffeead;
19 | }
20 |
21 | .tomorrow-green, pre .string, pre .value, pre .inheritance, pre .header, pre .ruby .symbol, pre .xml .cdata {
22 | color: #d1f1a9;
23 | }
24 |
25 | .tomorrow-aqua, pre .css .hexcolor {
26 | color: #99ffff;
27 | }
28 |
29 | .tomorrow-blue, pre .function, pre .python .decorator, pre .python .title, pre .ruby .function .title, pre .ruby .title .keyword, pre .perl .sub, pre .javascript .title, pre .coffeescript .title {
30 | color: #bbdaff;
31 | }
32 |
33 | .tomorrow-purple, pre .keyword, pre .javascript .function {
34 | color: #ebbbff;
35 | }
36 |
37 | pre code {
38 | display: block;
39 | background: #002451;
40 | color: white;
41 | padding: 0.5em;
42 | }
43 |
44 | pre .coffeescript .javascript,
45 | pre .javascript .xml,
46 | pre .tex .formula,
47 | pre .xml .javascript,
48 | pre .xml .vbscript,
49 | pre .xml .css,
50 | pre .xml .cdata {
51 | opacity: 0.5;
52 | }
53 |
--------------------------------------------------------------------------------
/vendor/styles/tomorrow-night-bright.css:
--------------------------------------------------------------------------------
1 | /* Tomorrow Night Bright Theme */
2 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */
3 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
4 | .tomorrow-comment, pre .comment, pre .title {
5 | color: #969896;
6 | }
7 |
8 | .tomorrow-red, pre .variable, pre .attribute, pre .tag, pre .regexp, pre .ruby .constant, pre .xml .tag .title, pre .xml .pi, pre .xml .doctype, pre .html .doctype, pre .css .id, pre .css .class, pre .css .pseudo {
9 | color: #d54e53;
10 | }
11 |
12 | .tomorrow-orange, pre .number, pre .preprocessor, pre .pragma, pre .built_in, pre .literal, pre .params, pre .constant {
13 | color: #e78c45;
14 | }
15 |
16 | .tomorrow-yellow, pre .ruby .class .title, pre .css .rules .attribute {
17 | color: #e7c547;
18 | }
19 |
20 | .tomorrow-green, pre .string, pre .value, pre .inheritance, pre .header, pre .ruby .symbol, pre .xml .cdata {
21 | color: #b9ca4a;
22 | }
23 |
24 | .tomorrow-aqua, pre .css .hexcolor {
25 | color: #70c0b1;
26 | }
27 |
28 | .tomorrow-blue, pre .function, pre .python .decorator, pre .python .title, pre .ruby .function .title, pre .ruby .title .keyword, pre .perl .sub, pre .javascript .title, pre .coffeescript .title {
29 | color: #7aa6da;
30 | }
31 |
32 | .tomorrow-purple, pre .keyword, pre .javascript .function {
33 | color: #c397d8;
34 | }
35 |
36 | pre code {
37 | display: block;
38 | background: black;
39 | color: #eaeaea;
40 | padding: 0.5em;
41 | }
42 |
43 | pre .coffeescript .javascript,
44 | pre .javascript .xml,
45 | pre .tex .formula,
46 | pre .xml .javascript,
47 | pre .xml .vbscript,
48 | pre .xml .css,
49 | pre .xml .cdata {
50 | opacity: 0.5;
51 | }
52 |
--------------------------------------------------------------------------------
/vendor/styles/tomorrow-night-eighties.css:
--------------------------------------------------------------------------------
1 | /* Tomorrow Night Eighties Theme */
2 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */
3 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
4 | .tomorrow-comment, pre .comment, pre .title {
5 | color: #999999;
6 | }
7 |
8 | .tomorrow-red, pre .variable, pre .attribute, pre .tag, pre .regexp, pre .ruby .constant, pre .xml .tag .title, pre .xml .pi, pre .xml .doctype, pre .html .doctype, pre .css .id, pre .css .class, pre .css .pseudo {
9 | color: #f2777a;
10 | }
11 |
12 | .tomorrow-orange, pre .number, pre .preprocessor, pre .pragma, pre .built_in, pre .literal, pre .params, pre .constant {
13 | color: #f99157;
14 | }
15 |
16 | .tomorrow-yellow, pre .ruby .class .title, pre .css .rules .attribute {
17 | color: #ffcc66;
18 | }
19 |
20 | .tomorrow-green, pre .string, pre .value, pre .inheritance, pre .header, pre .ruby .symbol, pre .xml .cdata {
21 | color: #99cc99;
22 | }
23 |
24 | .tomorrow-aqua, pre .css .hexcolor {
25 | color: #66cccc;
26 | }
27 |
28 | .tomorrow-blue, pre .function, pre .python .decorator, pre .python .title, pre .ruby .function .title, pre .ruby .title .keyword, pre .perl .sub, pre .javascript .title, pre .coffeescript .title {
29 | color: #6699cc;
30 | }
31 |
32 | .tomorrow-purple, pre .keyword, pre .javascript .function {
33 | color: #cc99cc;
34 | }
35 |
36 | pre code {
37 | display: block;
38 | background: #2d2d2d;
39 | color: #cccccc;
40 | padding: 0.5em;
41 | }
42 |
43 | pre .coffeescript .javascript,
44 | pre .javascript .xml,
45 | pre .tex .formula,
46 | pre .xml .javascript,
47 | pre .xml .vbscript,
48 | pre .xml .css,
49 | pre .xml .cdata {
50 | opacity: 0.5;
51 | }
52 |
--------------------------------------------------------------------------------
/vendor/styles/tomorrow-night.css:
--------------------------------------------------------------------------------
1 | /* Tomorrow Night Theme */
2 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
3 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */
4 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
5 | .tomorrow-comment, pre .comment, pre .title {
6 | color: #969896;
7 | }
8 |
9 | .tomorrow-red, pre .variable, pre .attribute, pre .tag, pre .regexp, pre .ruby .constant, pre .xml .tag .title, pre .xml .pi, pre .xml .doctype, pre .html .doctype, pre .css .id, pre .css .class, pre .css .pseudo {
10 | color: #cc6666;
11 | }
12 |
13 | .tomorrow-orange, pre .number, pre .preprocessor, pre .pragma, pre .built_in, pre .literal, pre .params, pre .constant {
14 | color: #de935f;
15 | }
16 |
17 | .tomorrow-yellow, pre .ruby .class .title, pre .css .rules .attribute {
18 | color: #f0c674;
19 | }
20 |
21 | .tomorrow-green, pre .string, pre .value, pre .inheritance, pre .header, pre .ruby .symbol, pre .xml .cdata {
22 | color: #b5bd68;
23 | }
24 |
25 | .tomorrow-aqua, pre .css .hexcolor {
26 | color: #8abeb7;
27 | }
28 |
29 | .tomorrow-blue, pre .function, pre .python .decorator, pre .python .title, pre .ruby .function .title, pre .ruby .title .keyword, pre .perl .sub, pre .javascript .title, pre .coffeescript .title {
30 | color: #81a2be;
31 | }
32 |
33 | .tomorrow-purple, pre .keyword, pre .javascript .function {
34 | color: #b294bb;
35 | }
36 |
37 | pre code {
38 | display: block;
39 | background: #1d1f21;
40 | color: #c5c8c6;
41 | padding: 0.5em;
42 | }
43 |
44 | pre .coffeescript .javascript,
45 | pre .javascript .xml,
46 | pre .tex .formula,
47 | pre .xml .javascript,
48 | pre .xml .vbscript,
49 | pre .xml .css,
50 | pre .xml .cdata {
51 | opacity: 0.5;
52 | }
53 |
--------------------------------------------------------------------------------
/vendor/styles/tomorrow.css:
--------------------------------------------------------------------------------
1 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
2 | .tomorrow-comment, pre .comment, pre .title {
3 | color: #8e908c;
4 | }
5 |
6 | .tomorrow-red, pre .variable, pre .attribute, pre .tag, pre .regexp, pre .ruby .constant, pre .xml .tag .title, pre .xml .pi, pre .xml .doctype, pre .html .doctype, pre .css .id, pre .css .class, pre .css .pseudo {
7 | color: #c82829;
8 | }
9 |
10 | .tomorrow-orange, pre .number, pre .preprocessor, pre .pragma, pre .built_in, pre .literal, pre .params, pre .constant {
11 | color: #f5871f;
12 | }
13 |
14 | .tomorrow-yellow, pre .ruby .class .title, pre .css .rules .attribute {
15 | color: #eab700;
16 | }
17 |
18 | .tomorrow-green, pre .string, pre .value, pre .inheritance, pre .header, pre .ruby .symbol, pre .xml .cdata {
19 | color: #718c00;
20 | }
21 |
22 | .tomorrow-aqua, pre .css .hexcolor {
23 | color: #3e999f;
24 | }
25 |
26 | .tomorrow-blue, pre .function, pre .python .decorator, pre .python .title, pre .ruby .function .title, pre .ruby .title .keyword, pre .perl .sub, pre .javascript .title, pre .coffeescript .title {
27 | color: #4271ae;
28 | }
29 |
30 | .tomorrow-purple, pre .keyword, pre .javascript .function {
31 | color: #8959a8;
32 | }
33 |
34 | pre code {
35 | display: block;
36 | background: white;
37 | color: #4d4d4c;
38 | padding: 0.5em;
39 | }
40 |
41 | pre .coffeescript .javascript,
42 | pre .javascript .xml,
43 | pre .tex .formula,
44 | pre .xml .javascript,
45 | pre .xml .vbscript,
46 | pre .xml .css,
47 | pre .xml .cdata {
48 | opacity: 0.5;
49 | }
50 |
--------------------------------------------------------------------------------
/vendor/styles/vs.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Visual Studio-like style based on original C# coloring by Jason Diamond
4 |
5 | */
6 | pre code {
7 | display: block; padding: 0.5em;
8 | background: white; color: black;
9 | }
10 |
11 | pre .comment,
12 | pre .annotation,
13 | pre .template_comment,
14 | pre .diff .header,
15 | pre .chunk,
16 | pre .apache .cbracket {
17 | color: rgb(0, 128, 0);
18 | }
19 |
20 | pre .keyword,
21 | pre .id,
22 | pre .built_in,
23 | pre .smalltalk .class,
24 | pre .winutils,
25 | pre .bash .variable,
26 | pre .tex .command,
27 | pre .request,
28 | pre .status,
29 | pre .nginx .title,
30 | pre .xml .tag,
31 | pre .xml .tag .value {
32 | color: rgb(0, 0, 255);
33 | }
34 |
35 | pre .string,
36 | pre .title,
37 | pre .parent,
38 | pre .tag .value,
39 | pre .rules .value,
40 | pre .rules .value .number,
41 | pre .ruby .symbol,
42 | pre .ruby .symbol .string,
43 | pre .aggregate,
44 | pre .template_tag,
45 | pre .django .variable,
46 | pre .addition,
47 | pre .flow,
48 | pre .stream,
49 | pre .apache .tag,
50 | pre .date,
51 | pre .tex .formula,
52 | pre .coffeescript .attribute {
53 | color: rgb(163, 21, 21);
54 | }
55 |
56 | pre .ruby .string,
57 | pre .decorator,
58 | pre .filter .argument,
59 | pre .localvars,
60 | pre .array,
61 | pre .attr_selector,
62 | pre .pseudo,
63 | pre .pi,
64 | pre .doctype,
65 | pre .deletion,
66 | pre .envvar,
67 | pre .shebang,
68 | pre .preprocessor,
69 | pre .pragma,
70 | pre .userType,
71 | pre .apache .sqbracket,
72 | pre .nginx .built_in,
73 | pre .tex .special,
74 | pre .prompt {
75 | color: rgb(43, 145, 175);
76 | }
77 |
78 | pre .phpdoc,
79 | pre .javadoc,
80 | pre .xmlDocTag {
81 | color: rgb(128, 128, 128);
82 | }
83 |
84 | pre .vhdl .typename { font-weight: bold; }
85 | pre .vhdl .string { color: #666666; }
86 | pre .vhdl .literal { color: rgb(163, 21, 21); }
87 | pre .vhdl .attribute { color: #00B0E8; }
88 |
89 | pre .xml .attribute { color: rgb(255, 0, 0); }
90 |
--------------------------------------------------------------------------------
/vendor/styles/xcode.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | XCode style (c) Angel Garcia
4 |
5 | */
6 |
7 | pre code {
8 | display: block; padding: 0.5em;
9 | background: #fff; color: black;
10 | }
11 |
12 | pre .comment,
13 | pre .template_comment,
14 | pre .javadoc,
15 | pre .comment * {
16 | color: rgb(0,106,0);
17 | }
18 |
19 | pre .keyword,
20 | pre .literal,
21 | pre .nginx .title {
22 | color: rgb(170,13,145);
23 | }
24 | pre .method,
25 | pre .list .title,
26 | pre .tag .title,
27 | pre .setting .value,
28 | pre .winutils,
29 | pre .tex .command,
30 | pre .http .title,
31 | pre .request,
32 | pre .status {
33 | color: #008;
34 | }
35 |
36 | pre .envvar,
37 | pre .tex .special {
38 | color: #660;
39 | }
40 |
41 | pre .string {
42 | color: rgb(196,26,22);
43 | }
44 | pre .tag .value,
45 | pre .cdata,
46 | pre .filter .argument,
47 | pre .attr_selector,
48 | pre .apache .cbracket,
49 | pre .date,
50 | pre .regexp {
51 | color: #080;
52 | }
53 |
54 | pre .sub .identifier,
55 | pre .pi,
56 | pre .tag,
57 | pre .tag .keyword,
58 | pre .decorator,
59 | pre .ini .title,
60 | pre .shebang,
61 | pre .prompt,
62 | pre .hexcolor,
63 | pre .rules .value,
64 | pre .css .value .number,
65 | pre .symbol,
66 | pre .symbol .string,
67 | pre .number,
68 | pre .css .function,
69 | pre .clojure .title,
70 | pre .clojure .built_in,
71 | pre .function .title,
72 | pre .coffeescript .attribute {
73 | color: rgb(28,0,207);
74 | }
75 |
76 | pre .class .title,
77 | pre .haskell .type,
78 | pre .smalltalk .class,
79 | pre .javadoctag,
80 | pre .yardoctag,
81 | pre .phpdoc,
82 | pre .typename,
83 | pre .tag .attribute,
84 | pre .doctype,
85 | pre .class .id,
86 | pre .built_in,
87 | pre .setting,
88 | pre .params,
89 | pre .clojure .attribute {
90 | color: rgb(92,38,153);
91 | }
92 |
93 | pre .variable {
94 | color: rgb(63,110,116);
95 | }
96 | pre .css .tag,
97 | pre .rules .property,
98 | pre .pseudo,
99 | pre .subst {
100 | color: #000;
101 | }
102 |
103 | pre .css .class, pre .css .id {
104 | color: #9B703F;
105 | }
106 |
107 | pre .value .important {
108 | color: #ff7700;
109 | font-weight: bold;
110 | }
111 |
112 | pre .rules .keyword {
113 | color: #C5AF75;
114 | }
115 |
116 | pre .annotation,
117 | pre .apache .sqbracket,
118 | pre .nginx .built_in {
119 | color: #9B859D;
120 | }
121 |
122 | pre .preprocessor,
123 | pre .preprocessor *,
124 | pre .pragma {
125 | color: rgb(100,56,32);
126 | }
127 |
128 | pre .tex .formula {
129 | background-color: #EEE;
130 | font-style: italic;
131 | }
132 |
133 | pre .diff .header,
134 | pre .chunk {
135 | color: #808080;
136 | font-weight: bold;
137 | }
138 |
139 | pre .diff .change {
140 | background-color: #BCCFF9;
141 | }
142 |
143 | pre .addition {
144 | background-color: #BAEEBA;
145 | }
146 |
147 | pre .deletion {
148 | background-color: #FFC8BD;
149 | }
150 |
151 | pre .comment .yardoctag {
152 | font-weight: bold;
153 | }
154 |
155 | pre .method .id {
156 | color: #000;
157 | }
158 |
--------------------------------------------------------------------------------
/vendor/styles/zenburn.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Zenburn style from voldmar.ru (c) Vladimir Epifanov
4 | based on dark.css by Ivan Sagalaev
5 |
6 | */
7 |
8 | pre code {
9 | display: block; padding: 0.5em;
10 | background: #3F3F3F;
11 | color: #DCDCDC;
12 | }
13 |
14 | pre .keyword,
15 | pre .tag,
16 | pre .css .class,
17 | pre .css .id,
18 | pre .lisp .title,
19 | pre .nginx .title,
20 | pre .request,
21 | pre .status,
22 | pre .clojure .attribute {
23 | color: #E3CEAB;
24 | }
25 |
26 | pre .django .template_tag,
27 | pre .django .variable,
28 | pre .django .filter .argument {
29 | color: #DCDCDC;
30 | }
31 |
32 | pre .number,
33 | pre .date {
34 | color: #8CD0D3;
35 | }
36 |
37 | pre .dos .envvar,
38 | pre .dos .stream,
39 | pre .variable,
40 | pre .apache .sqbracket {
41 | color: #EFDCBC;
42 | }
43 |
44 | pre .dos .flow,
45 | pre .diff .change,
46 | pre .python .exception,
47 | pre .python .built_in,
48 | pre .literal,
49 | pre .tex .special {
50 | color: #EFEFAF;
51 | }
52 |
53 | pre .diff .chunk,
54 | pre .subst {
55 | color: #8F8F8F;
56 | }
57 |
58 | pre .dos .keyword,
59 | pre .python .decorator,
60 | pre .title,
61 | pre .haskell .type,
62 | pre .diff .header,
63 | pre .ruby .class .parent,
64 | pre .apache .tag,
65 | pre .nginx .built_in,
66 | pre .tex .command,
67 | pre .prompt {
68 | color: #efef8f;
69 | }
70 |
71 | pre .dos .winutils,
72 | pre .ruby .symbol,
73 | pre .ruby .symbol .string,
74 | pre .ruby .string {
75 | color: #DCA3A3;
76 | }
77 |
78 | pre .diff .deletion,
79 | pre .string,
80 | pre .tag .value,
81 | pre .preprocessor,
82 | pre .pragma,
83 | pre .built_in,
84 | pre .sql .aggregate,
85 | pre .javadoc,
86 | pre .smalltalk .class,
87 | pre .smalltalk .localvars,
88 | pre .smalltalk .array,
89 | pre .css .rules .value,
90 | pre .attr_selector,
91 | pre .pseudo,
92 | pre .apache .cbracket,
93 | pre .tex .formula,
94 | pre .coffeescript .attribute {
95 | color: #CC9393;
96 | }
97 |
98 | pre .shebang,
99 | pre .diff .addition,
100 | pre .comment,
101 | pre .java .annotation,
102 | pre .template_comment,
103 | pre .pi,
104 | pre .doctype {
105 | color: #7F9F7F;
106 | }
107 |
108 | pre .coffeescript .javascript,
109 | pre .javascript .xml,
110 | pre .tex .formula,
111 | pre .xml .javascript,
112 | pre .xml .vbscript,
113 | pre .xml .css,
114 | pre .xml .cdata {
115 | opacity: 0.5;
116 | }
117 |
118 |
--------------------------------------------------------------------------------