sinatra-param2 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +3 -0
  3. data/Gemfile.lock +77 -0
  4. data/LICENSE +19 -0
  5. data/README.md +190 -0
  6. data/Rakefile +18 -0
  7. data/build/reports/assets/0.10.1/application.css +799 -0
  8. data/build/reports/assets/0.10.1/application.js +1707 -0
  9. data/build/reports/assets/0.10.1/colorbox/border.png +0 -0
  10. data/build/reports/assets/0.10.1/colorbox/controls.png +0 -0
  11. data/build/reports/assets/0.10.1/colorbox/loading.gif +0 -0
  12. data/build/reports/assets/0.10.1/colorbox/loading_background.png +0 -0
  13. data/build/reports/assets/0.10.1/favicon_green.png +0 -0
  14. data/build/reports/assets/0.10.1/favicon_red.png +0 -0
  15. data/build/reports/assets/0.10.1/favicon_yellow.png +0 -0
  16. data/build/reports/assets/0.10.1/loading.gif +0 -0
  17. data/build/reports/assets/0.10.1/magnify.png +0 -0
  18. data/build/reports/assets/0.10.1/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  19. data/build/reports/assets/0.10.1/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  20. data/build/reports/assets/0.10.1/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  21. data/build/reports/assets/0.10.1/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  22. data/build/reports/assets/0.10.1/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  23. data/build/reports/assets/0.10.1/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  24. data/build/reports/assets/0.10.1/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  25. data/build/reports/assets/0.10.1/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  26. data/build/reports/assets/0.10.1/smoothness/images/ui-icons_222222_256x240.png +0 -0
  27. data/build/reports/assets/0.10.1/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  28. data/build/reports/assets/0.10.1/smoothness/images/ui-icons_454545_256x240.png +0 -0
  29. data/build/reports/assets/0.10.1/smoothness/images/ui-icons_888888_256x240.png +0 -0
  30. data/build/reports/assets/0.10.1/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  31. data/build/reports/coverage.xml +165 -0
  32. data/build/reports/index.html +1643 -0
  33. data/example/Gemfile +7 -0
  34. data/example/Gemfile.lock +33 -0
  35. data/example/Procfile +1 -0
  36. data/example/app.rb +52 -0
  37. data/example/config.ru +6 -0
  38. data/lib/sinatra/param.rb +245 -0
  39. data/lib/sinatra/param/version.rb +5 -0
  40. data/sinatra-param2.gemspec +27 -0
  41. data/spec/dummy/app.rb +346 -0
  42. data/spec/parameter_conjunctivity_spec.rb +34 -0
  43. data/spec/parameter_exclusivity_spec.rb +55 -0
  44. data/spec/parameter_inclusivity_spec.rb +30 -0
  45. data/spec/parameter_nested_validations_spec.rb +151 -0
  46. data/spec/parameter_raise_spec.rb +25 -0
  47. data/spec/parameter_spec.rb +19 -0
  48. data/spec/parameter_transformations_spec.rb +42 -0
  49. data/spec/parameter_type_coercion_spec.rb +211 -0
  50. data/spec/parameter_validations_spec.rb +247 -0
  51. data/spec/spec_helper.rb +29 -0
  52. metadata +190 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d00edce9e6fbe43ccdb03120ad6b313173e552f5
4
+ data.tar.gz: 409216df9030df3f45d214974552b9375fd320ff
5
+ SHA512:
6
+ metadata.gz: 71548f603164d420ad0aa9727f98d6bb7dbabd40cd2433417b49c920b9c9e7a06dfb0174c4d8c4773b7f1d83eabff1fa7a88767f351527221672810076849bdf
7
+ data.tar.gz: 0ec46ede17986cffcad38506cba814a40efa64aae566ca67395cabb592cc89b0daff5e0a6026a953c2cf81585e85d963e58d5ae42ac2f6b2a86f64e4a7625fa6
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "https://rubygems.org"
2
+
3
+ gemspec
@@ -0,0 +1,77 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ sinatra-param2 (1.0.0)
5
+ sinatra (~> 2.0)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ ast (2.3.0)
11
+ diff-lcs (1.3)
12
+ docile (1.1.5)
13
+ json (1.8.3)
14
+ mustermann (1.0.0)
15
+ parallel (1.11.2)
16
+ parser (2.4.0.0)
17
+ ast (~> 2.2)
18
+ powerpack (0.1.1)
19
+ rack (2.0.3)
20
+ rack-protection (2.0.0)
21
+ rack
22
+ rack-test (0.6.3)
23
+ rack (>= 1.0)
24
+ rainbow (2.2.2)
25
+ rake
26
+ rake (12.0.0)
27
+ rspec (3.6.0)
28
+ rspec-core (~> 3.6.0)
29
+ rspec-expectations (~> 3.6.0)
30
+ rspec-mocks (~> 3.6.0)
31
+ rspec-core (3.6.0)
32
+ rspec-support (~> 3.6.0)
33
+ rspec-expectations (3.6.0)
34
+ diff-lcs (>= 1.2.0, < 2.0)
35
+ rspec-support (~> 3.6.0)
36
+ rspec-mocks (3.6.0)
37
+ diff-lcs (>= 1.2.0, < 2.0)
38
+ rspec-support (~> 3.6.0)
39
+ rspec-support (3.6.0)
40
+ rubocop (0.49.1)
41
+ parallel (~> 1.10)
42
+ parser (>= 2.3.3.1, < 3.0)
43
+ powerpack (~> 0.1)
44
+ rainbow (>= 1.99.1, < 3.0)
45
+ ruby-progressbar (~> 1.7)
46
+ unicode-display_width (~> 1.0, >= 1.0.1)
47
+ ruby-progressbar (1.8.1)
48
+ simplecov (0.14.1)
49
+ docile (~> 1.1.0)
50
+ json (>= 1.8, < 3)
51
+ simplecov-html (~> 0.10.0)
52
+ simplecov-cobertura (1.2.0)
53
+ json (~> 1.8)
54
+ simplecov (~> 0.8)
55
+ simplecov-html (0.10.1)
56
+ sinatra (2.0.0)
57
+ mustermann (~> 1.0)
58
+ rack (~> 2.0)
59
+ rack-protection (= 2.0.0)
60
+ tilt (~> 2.0)
61
+ tilt (2.0.7)
62
+ unicode-display_width (1.2.1)
63
+
64
+ PLATFORMS
65
+ ruby
66
+
67
+ DEPENDENCIES
68
+ rack-test
69
+ rake
70
+ rspec
71
+ rubocop
72
+ simplecov
73
+ simplecov-cobertura
74
+ sinatra-param2!
75
+
76
+ BUNDLED WITH
77
+ 1.15.0
data/LICENSE ADDED
@@ -0,0 +1,19 @@
1
+ Copyright (c) 2012–2015 Mattt Thompson (http://mattt.me/)
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ THE SOFTWARE.
@@ -0,0 +1,190 @@
1
+ # sinatra-param2
2
+ [![Build Status](https://travis-ci.org/adrianbn/sinatra-param2.svg?branch=master)](https://travis-ci.org/adrianbn/sinatra-param2)
3
+
4
+ _Parameter Validation & Type Coercion for Sinatra_
5
+
6
+ **`sinatra-param2` is a fork of [`sinatra-param`](https://github.com/mattt/sinatra-param) that works with Sinatra 2 and has many nice additions.**
7
+
8
+ REST conventions take the guesswork out of designing and consuming web APIs. Simply `GET`, `POST`, `PATCH`, or `DELETE` resource endpoints, and you get what you'd expect.
9
+
10
+ However, when it comes to figuring out what parameters are expected... well, all bets are off.
11
+
12
+ This Sinatra extension takes a first step to solving this problem on the developer side
13
+
14
+ **`sinatra-param2` allows you to declare, validate, and transform endpoint parameters as you would in frameworks like [ActiveModel](http://rubydoc.info/gems/activemodel/3.2.3/frames) or [DataMapper](http://datamapper.org/).**
15
+
16
+ > Use `sinatra-param2` in combination with [`Rack::PostBodyContentTypeParser` and `Rack::NestedParams`](https://github.com/rack/rack-contrib) to automatically parameterize JSON `POST` bodies and nested parameters.
17
+
18
+ ## Install
19
+
20
+ You can install `sinatra-param2` from the command line with the following:
21
+
22
+ ```bash
23
+ $ gem install sinatra-param2
24
+ ```
25
+
26
+ Alternatively, you can specify `sinatra-param2` as a dependency in your `Gemfile` and run `$ bundle install`:
27
+
28
+ ```ruby
29
+ gem "sinatra-param2", require: "sinatra/param"
30
+ ```
31
+
32
+ ## Example
33
+
34
+ ``` ruby
35
+ require 'sinatra/base'
36
+ require 'sinatra/param'
37
+ require 'json'
38
+ require 'uri' # only needed for URI.regexp example below
39
+
40
+ class App < Sinatra::Base
41
+ helpers Sinatra::Param
42
+
43
+ before do
44
+ content_type :json
45
+ end
46
+
47
+ # GET /search?q=example
48
+ # GET /search?q=example&categories=news
49
+ # GET /search?q=example&sort=created_at&order=ASC
50
+ get '/search' do
51
+ param :q, String, required: true
52
+ param :categories, Array
53
+ param :sort, String, default: "title"
54
+ param :order, String, in: ["ASC", "DESC"], transform: :upcase, default: "ASC"
55
+ param :price, String, format: /[<\=>]\s*\$\d+/
56
+ param :referrer String, format: URI.regexp
57
+
58
+ one_of :q, :categories
59
+
60
+ {...}.to_json
61
+ end
62
+ end
63
+ ```
64
+
65
+ ### Parameter Types
66
+
67
+ By declaring parameter types, incoming parameters will automatically be transformed into an object of that type. For instance, if a param is `Boolean`, values of `'1'`, `'true'`, `'t'`, `'yes'`, and `'y'` will be automatically transformed into `true`.
68
+
69
+ - `String`
70
+ - `Integer`
71
+ - `Float`
72
+ - `Boolean` _("1/0", "true/false", "t/f", "yes/no", "y/n")_
73
+ - `Array` _("1,2,3,4,5")_
74
+ - `Hash` _(key1:value1,key2:value2)_
75
+ - `Date`, `Time`, & `DateTime`
76
+
77
+ ### Validations
78
+
79
+ Encapsulate business logic in a consistent way with validations. If a parameter does not satisfy a particular condition, a `400` error is returned with a message explaining the failure.
80
+
81
+ - `required`
82
+ - `blank`
83
+ - `is`
84
+ - `in`, `within`, `range`
85
+ - `min` / `max`
86
+ - `min_length` / `max_length`
87
+ - `format`
88
+
89
+ ### Defaults and Transformations
90
+
91
+ Passing a `default` option will provide a default value for a parameter if none is passed. A `default` can defined as either a default or as a `Proc`:
92
+
93
+ ```ruby
94
+ param :attribution, String, default: "©"
95
+ param :year, Integer, default: lambda { Time.now.year }
96
+ ```
97
+
98
+ Use the `transform` option to take even more of the business logic of parameter I/O out of your code. Anything that responds to `to_proc` (including `Proc` and symbols) will do.
99
+
100
+ ```ruby
101
+ param :order, String, in: ["ASC", "DESC"], transform: :upcase, default: "ASC"
102
+ param :offset, Integer, min: 0, transform: lambda {|n| n - (n % 10)}
103
+ ```
104
+
105
+ ## One Of
106
+
107
+ Using `one_of`, routes can specify two or more parameters to be mutually exclusive, and fail if _more than one_ of those parameters is provided:
108
+
109
+ ```ruby
110
+ param :a, String
111
+ param :b, String
112
+ param :c, String
113
+
114
+ one_of :a, :b, :c
115
+ ```
116
+
117
+ ## Any Of
118
+
119
+ Using `any_of`, a route can specify that _at least one of_ two or more parameters are required, and fail if _none of them_ are provided:
120
+
121
+ ```ruby
122
+ param :x, String
123
+ param :y, String
124
+
125
+ any_of :x, :y
126
+ ```
127
+
128
+ ## Nested Hash Validation
129
+
130
+ Using block syntax, a route can validate the fields nested in a parameter of Hash type. These hashes can be nested to an arbitrary depth.
131
+ This block will only be run if the top level validation passes and the key is present.
132
+
133
+ ```ruby
134
+ param :a, Hash do
135
+ param :b, String
136
+ param :c, Hash do
137
+ param :d, Integer
138
+ end
139
+ end
140
+ ```
141
+
142
+ ## All Or None Of
143
+
144
+ Using `all_or_none_of`, a router can specify that _all_ or _none_ of a set of parameters are required, and fail if _some_ are provided:
145
+
146
+ ```ruby
147
+ param :x, String
148
+ param :y, String
149
+
150
+ all_or_none_of :x,:y
151
+ ```
152
+
153
+ ### Exceptions
154
+
155
+ By default, when a parameter precondition fails, `Sinatra::Param` will `halt 400` with an error message:
156
+
157
+ ```json
158
+ {
159
+ "message": "Parameter must be within [\"ASC\", \"DESC\"]",
160
+ "errors": {
161
+ "order": "Parameter must be within [\"ASC\", \"DESC\"]"
162
+ }
163
+ }
164
+ ```
165
+
166
+ To change this, you can set `:raise_sinatra_param_exceptions` to `true`, and intercept `Sinatra::Param::InvalidParameterError` with a Sinatra `error do...end` block. (To make this work in development, set `:show_exceptions` to `false` and `:raise_errors` to `true`):
167
+
168
+ ```ruby
169
+ set :raise_sinatra_param_exceptions, true
170
+
171
+ error Sinatra::Param::InvalidParameterError do
172
+ {error: "#{env['sinatra.error'].param} is invalid"}.to_json
173
+ end
174
+ ```
175
+
176
+ Custom exception handling can also be enabled on an individual parameter basis, by passing the `raise` option:
177
+
178
+ ```ruby
179
+ param :order, String, in: ["ASC", "DESC"], raise: true
180
+
181
+ one_of :q, :categories, raise: true
182
+ ```
183
+
184
+ ## Contact
185
+
186
+ Adrian Bravo ([@adrianbravon](http://twitter.com/adrianbravon))
187
+
188
+ ## License
189
+
190
+ sinatra-param2 is released under an MIT license. See LICENSE for more information.
@@ -0,0 +1,18 @@
1
+ require "bundler"
2
+ Bundler.setup
3
+
4
+ gemspec = eval(File.read("sinatra-param2.gemspec"))
5
+
6
+ task :build => "#{gemspec.full_name}.gem"
7
+
8
+ file "#{gemspec.full_name}.gem" => gemspec.files + ["sinatra-param2.gemspec"] do
9
+ system "gem build sinatra-param2.gemspec"
10
+ end
11
+
12
+ begin
13
+ require 'rspec/core/rake_task'
14
+ RSpec::Core::RakeTask.new(:spec)
15
+
16
+ task :default => :spec
17
+ rescue LoadError
18
+ end
@@ -0,0 +1,799 @@
1
+ /* -----------------------------------------------------------------------
2
+
3
+
4
+ Blueprint CSS Framework 0.9
5
+ http://blueprintcss.org
6
+
7
+ * Copyright (c) 2007-Present. See LICENSE for more info.
8
+ * See README for instructions on how to use Blueprint.
9
+ * For credits and origins, see AUTHORS.
10
+ * This is a compressed file. See the sources in the 'src' directory.
11
+
12
+ ----------------------------------------------------------------------- */
13
+
14
+ /* reset.css */
15
+
16
+ html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, code, del, dfn, em, img, q, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, dialog, figure, footer, header, hgroup, nav, section {margin:0;padding:0;border:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;}
17
+ article, aside, dialog, figure, footer, header, hgroup, nav, section {display:block;}
18
+ body {line-height:1.5;}
19
+ table {border-collapse:separate;border-spacing:0;}
20
+ caption, th, td {text-align:left;font-weight:normal;}
21
+ table, td, th {vertical-align:middle;}
22
+ blockquote:before, blockquote:after, q:before, q:after {content:"";}
23
+ blockquote, q {quotes:"" "";}
24
+ a img {border:none;}
25
+
26
+ /* typography.css */
27
+ html {font-size:100.01%;}
28
+ body {font-size:82%;color:#222;background:#fff;font-family:"Helvetica Neue", Arial, Helvetica, sans-serif;}
29
+ h1, h2, h3, h4, h5, h6 {font-weight:normal;color:#111;}
30
+ h1 {font-size:3em;line-height:1;margin-bottom:0.5em;}
31
+ h2 {font-size:2em;margin-bottom:0.75em;}
32
+ h3 {font-size:1.5em;line-height:1;margin-bottom:1em;}
33
+ h4 {font-size:1.2em;line-height:1.25;margin-bottom:1.25em;}
34
+ h5 {font-size:1em;font-weight:bold;margin-bottom:1.5em;}
35
+ h6 {font-size:1em;font-weight:bold;}
36
+ h1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin:0;}
37
+ p {margin:0 0 1.5em;}
38
+ p img.left {float:left;margin:1.5em 1.5em 1.5em 0;padding:0;}
39
+ p img.right {float:right;margin:1.5em 0 1.5em 1.5em;}
40
+ a:focus, a:hover {color:#000;}
41
+ a {color:#009;text-decoration:underline;}
42
+ blockquote {margin:1.5em;color:#666;font-style:italic;}
43
+ strong {font-weight:bold;}
44
+ em, dfn {font-style:italic;}
45
+ dfn {font-weight:bold;}
46
+ sup, sub {line-height:0;}
47
+ abbr, acronym {border-bottom:1px dotted #666;}
48
+ address {margin:0 0 1.5em;font-style:italic;}
49
+ del {color:#666;}
50
+ pre {margin:1.5em 0;white-space:pre;}
51
+ pre, code, tt {font:1em 'andale mono', 'lucida console', monospace;line-height:1.5;}
52
+ li ul, li ol {margin:0;}
53
+ ul, ol {margin:0 1.5em 1.5em 0;padding-left:3.333em;}
54
+ ul {list-style-type:disc;}
55
+ ol {list-style-type:decimal;}
56
+ dl {margin:0 0 1.5em 0;}
57
+ dl dt {font-weight:bold;}
58
+ dd {margin-left:1.5em;}
59
+ table {margin-bottom:1.4em;width:100%;}
60
+ th {font-weight:bold;}
61
+ thead th {background:#c3d9ff;}
62
+ th, td, caption {padding:4px 10px 4px 5px;}
63
+ tr.even td {background:#efefef;}
64
+ tfoot {font-style:italic;}
65
+ caption {background:#eee;}
66
+ .small {font-size:.8em;margin-bottom:1.875em;line-height:1.875em;}
67
+ .large {font-size:1.2em;line-height:2.5em;margin-bottom:1.25em;}
68
+ .hide {display:none;}
69
+ .quiet {color:#666;}
70
+ .loud {color:#000;}
71
+ .highlight {background:#ff0;}
72
+ .added {background:#060;color:#fff;}
73
+ .removed {background:#900;color:#fff;}
74
+ .first {margin-left:0;padding-left:0;}
75
+ .last {margin-right:0;padding-right:0;}
76
+ .top {margin-top:0;padding-top:0;}
77
+ .bottom {margin-bottom:0;padding-bottom:0;}
78
+
79
+ /* forms.css */
80
+ label {font-weight:bold;}
81
+ fieldset {padding:1.4em;margin:0 0 1.5em 0;border:1px solid #ccc;}
82
+ legend {font-weight:bold;font-size:1.2em;}
83
+ input[type=text], input[type=password], input.text, input.title, textarea, select {background-color:#fff;border:1px solid #bbb;}
84
+ input[type=text]:focus, input[type=password]:focus, input.text:focus, input.title:focus, textarea:focus, select:focus {border-color:#666;}
85
+ input[type=text], input[type=password], input.text, input.title, textarea, select {margin:0.5em 0;}
86
+ input.text, input.title {width:300px;padding:5px;}
87
+ input.title {font-size:1.5em;}
88
+ textarea {width:390px;height:250px;padding:5px;}
89
+ input[type=checkbox], input[type=radio], input.checkbox, input.radio {position:relative;top:.25em;}
90
+ form.inline {line-height:3;}
91
+ form.inline p {margin-bottom:0;}
92
+ .error, .notice, .success {padding:.8em;margin-bottom:1em;border:2px solid #ddd;}
93
+ .error {background:#FBE3E4;color:#8a1f11;border-color:#FBC2C4;}
94
+ .notice {background:#FFF6BF;color:#514721;border-color:#FFD324;}
95
+ .success {background:#E6EFC2;color:#264409;border-color:#C6D880;}
96
+ .error a {color:#8a1f11;}
97
+ .notice a {color:#514721;}
98
+ .success a {color:#264409;}
99
+ .box {padding:1.5em;margin-bottom:1.5em;background:#E5ECF9;}
100
+ hr {background:#ddd;color:#ddd;clear:both;float:none;width:100%;height:.1em;margin:0 0 1.45em;border:none;}
101
+ hr.space {background:#fff;color:#fff;visibility:hidden;}
102
+ .clearfix:after, .container:after {content:"\0020";display:block;height:0;clear:both;visibility:hidden;overflow:hidden;}
103
+ .clearfix, .container {display:block;}
104
+ .clear {clear:both;}
105
+ /*
106
+ github.com style (c) Vasily Polovnyov <vast@whiteants.net>
107
+ */
108
+
109
+
110
+ pre code {
111
+ }
112
+
113
+ pre .comment,
114
+ pre .template_comment,
115
+ pre .diff .header,
116
+ pre .javadoc {
117
+ color: #998;
118
+ font-style: italic
119
+ }
120
+
121
+ pre .keyword,
122
+ pre .css .rule .keyword,
123
+ pre .winutils,
124
+ pre .javascript .title,
125
+ pre .lisp .title {
126
+ color: #000;
127
+ font-weight: bold
128
+ }
129
+
130
+ pre .number,
131
+ pre .hexcolor {
132
+ color: #458
133
+ }
134
+
135
+
136
+ pre .string,
137
+ pre .tag .value,
138
+ pre .phpdoc,
139
+ pre .tex .formula {
140
+ color: #d14
141
+ }
142
+
143
+ pre .subst {
144
+ color: #712;
145
+ }
146
+
147
+ pre .constant,
148
+ pre .title,
149
+ pre .id {
150
+ color: #900;
151
+ font-weight: bold
152
+ }
153
+
154
+ pre .javascript .title,
155
+ pre .lisp .title,
156
+ pre .subst {
157
+ font-weight: normal
158
+ }
159
+
160
+ pre .class .title,
161
+ pre .haskell .label,
162
+ pre .tex .command {
163
+ color: #458;
164
+ font-weight: bold
165
+ }
166
+
167
+ pre .tag,
168
+ pre .tag .title,
169
+ pre .rules .property,
170
+ pre .django .tag .keyword {
171
+ color: #000080;
172
+ font-weight: normal
173
+ }
174
+
175
+ pre .attribute,
176
+ pre .variable,
177
+ pre .instancevar,
178
+ pre .lisp .body {
179
+ color: #008080
180
+ }
181
+
182
+ pre .regexp {
183
+ color: #009926
184
+ }
185
+
186
+ pre .class {
187
+ color: #458;
188
+ font-weight: bold
189
+ }
190
+
191
+ pre .symbol,
192
+ pre .ruby .symbol .string,
193
+ pre .ruby .symbol .keyword,
194
+ pre .ruby .symbol .keymethods,
195
+ pre .lisp .keyword,
196
+ pre .tex .special,
197
+ pre .input_number {
198
+ color: #990073
199
+ }
200
+
201
+ pre .builtin,
202
+ pre .built_in,
203
+ pre .lisp .title {
204
+ color: #0086b3
205
+ }
206
+
207
+ pre .preprocessor,
208
+ pre .pi,
209
+ pre .doctype,
210
+ pre .shebang,
211
+ pre .cdata {
212
+ color: #999;
213
+ font-weight: bold
214
+ }
215
+
216
+ pre .deletion {
217
+ background: #fdd
218
+ }
219
+
220
+ pre .addition {
221
+ background: #dfd
222
+ }
223
+
224
+ pre .diff .change {
225
+ background: #0086b3
226
+ }
227
+
228
+ pre .chunk {
229
+ color: #aaa
230
+ }
231
+
232
+ pre .tex .formula {
233
+ opacity: 0.5;
234
+ }
235
+ /*
236
+ * jQuery UI CSS Framework @VERSION
237
+ *
238
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
239
+ * Dual licensed under the MIT or GPL Version 2 licenses.
240
+ * http://jquery.org/license
241
+ *
242
+ * http://docs.jquery.com/UI/Theming/API
243
+ */
244
+
245
+ /* Layout helpers
246
+ ----------------------------------*/
247
+
248
+ .ui-helper-hidden { display: none; }
249
+ .ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
250
+ .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
251
+ .ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
252
+ .ui-helper-clearfix { display: inline-block; }
253
+ /* required comment for clearfix to work in Opera \*/
254
+ * html .ui-helper-clearfix { height:1%; }
255
+ .ui-helper-clearfix { display:block; }
256
+ /* end clearfix */
257
+ .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
258
+
259
+
260
+ /* Interaction Cues
261
+ ----------------------------------*/
262
+ .ui-state-disabled { cursor: default !important; }
263
+
264
+
265
+ /* Icons
266
+ ----------------------------------*/
267
+
268
+ /* states and images */
269
+ .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
270
+
271
+
272
+ /* Misc visuals
273
+ ----------------------------------*/
274
+
275
+ /* Overlays */
276
+ .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
277
+
278
+
279
+ /*
280
+ * jQuery UI CSS Framework @VERSION
281
+ *
282
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
283
+ * Dual licensed under the MIT or GPL Version 2 licenses.
284
+ * http://jquery.org/license
285
+ *
286
+ * http://docs.jquery.com/UI/Theming/API
287
+ *
288
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
289
+ */
290
+
291
+
292
+ /* Component containers
293
+ ----------------------------------*/
294
+ .ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }
295
+ .ui-widget .ui-widget { font-size: 1em; }
296
+ .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; }
297
+ .ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; }
298
+ .ui-widget-content a { color: #222222; }
299
+ .ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
300
+ .ui-widget-header a { color: #222222; }
301
+
302
+ /* Interaction states
303
+ ----------------------------------*/
304
+ .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; }
305
+ .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; }
306
+ .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
307
+ .ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; }
308
+ .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
309
+ .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; }
310
+ .ui-widget :active { outline: none; }
311
+
312
+ /* Interaction Cues
313
+ ----------------------------------*/
314
+ .ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; }
315
+ .ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
316
+ .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
317
+ .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
318
+ .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
319
+ .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
320
+ .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
321
+ .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
322
+
323
+ /* Icons
324
+ ----------------------------------*/
325
+
326
+ /* states and images */
327
+ .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
328
+ .ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
329
+ .ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
330
+ .ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); }
331
+ .ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
332
+ .ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
333
+ .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
334
+ .ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
335
+
336
+ /* positioning */
337
+ .ui-icon-carat-1-n { background-position: 0 0; }
338
+ .ui-icon-carat-1-ne { background-position: -16px 0; }
339
+ .ui-icon-carat-1-e { background-position: -32px 0; }
340
+ .ui-icon-carat-1-se { background-position: -48px 0; }
341
+ .ui-icon-carat-1-s { background-position: -64px 0; }
342
+ .ui-icon-carat-1-sw { background-position: -80px 0; }
343
+ .ui-icon-carat-1-w { background-position: -96px 0; }
344
+ .ui-icon-carat-1-nw { background-position: -112px 0; }
345
+ .ui-icon-carat-2-n-s { background-position: -128px 0; }
346
+ .ui-icon-carat-2-e-w { background-position: -144px 0; }
347
+ .ui-icon-triangle-1-n { background-position: 0 -16px; }
348
+ .ui-icon-triangle-1-ne { background-position: -16px -16px; }
349
+ .ui-icon-triangle-1-e { background-position: -32px -16px; }
350
+ .ui-icon-triangle-1-se { background-position: -48px -16px; }
351
+ .ui-icon-triangle-1-s { background-position: -64px -16px; }
352
+ .ui-icon-triangle-1-sw { background-position: -80px -16px; }
353
+ .ui-icon-triangle-1-w { background-position: -96px -16px; }
354
+ .ui-icon-triangle-1-nw { background-position: -112px -16px; }
355
+ .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
356
+ .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
357
+ .ui-icon-arrow-1-n { background-position: 0 -32px; }
358
+ .ui-icon-arrow-1-ne { background-position: -16px -32px; }
359
+ .ui-icon-arrow-1-e { background-position: -32px -32px; }
360
+ .ui-icon-arrow-1-se { background-position: -48px -32px; }
361
+ .ui-icon-arrow-1-s { background-position: -64px -32px; }
362
+ .ui-icon-arrow-1-sw { background-position: -80px -32px; }
363
+ .ui-icon-arrow-1-w { background-position: -96px -32px; }
364
+ .ui-icon-arrow-1-nw { background-position: -112px -32px; }
365
+ .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
366
+ .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
367
+ .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
368
+ .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
369
+ .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
370
+ .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
371
+ .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
372
+ .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
373
+ .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
374
+ .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
375
+ .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
376
+ .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
377
+ .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
378
+ .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
379
+ .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
380
+ .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
381
+ .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
382
+ .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
383
+ .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
384
+ .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
385
+ .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
386
+ .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
387
+ .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
388
+ .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
389
+ .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
390
+ .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
391
+ .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
392
+ .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
393
+ .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
394
+ .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
395
+ .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
396
+ .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
397
+ .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
398
+ .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
399
+ .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
400
+ .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
401
+ .ui-icon-arrow-4 { background-position: 0 -80px; }
402
+ .ui-icon-arrow-4-diag { background-position: -16px -80px; }
403
+ .ui-icon-extlink { background-position: -32px -80px; }
404
+ .ui-icon-newwin { background-position: -48px -80px; }
405
+ .ui-icon-refresh { background-position: -64px -80px; }
406
+ .ui-icon-shuffle { background-position: -80px -80px; }
407
+ .ui-icon-transfer-e-w { background-position: -96px -80px; }
408
+ .ui-icon-transferthick-e-w { background-position: -112px -80px; }
409
+ .ui-icon-folder-collapsed { background-position: 0 -96px; }
410
+ .ui-icon-folder-open { background-position: -16px -96px; }
411
+ .ui-icon-document { background-position: -32px -96px; }
412
+ .ui-icon-document-b { background-position: -48px -96px; }
413
+ .ui-icon-note { background-position: -64px -96px; }
414
+ .ui-icon-mail-closed { background-position: -80px -96px; }
415
+ .ui-icon-mail-open { background-position: -96px -96px; }
416
+ .ui-icon-suitcase { background-position: -112px -96px; }
417
+ .ui-icon-comment { background-position: -128px -96px; }
418
+ .ui-icon-person { background-position: -144px -96px; }
419
+ .ui-icon-print { background-position: -160px -96px; }
420
+ .ui-icon-trash { background-position: -176px -96px; }
421
+ .ui-icon-locked { background-position: -192px -96px; }
422
+ .ui-icon-unlocked { background-position: -208px -96px; }
423
+ .ui-icon-bookmark { background-position: -224px -96px; }
424
+ .ui-icon-tag { background-position: -240px -96px; }
425
+ .ui-icon-home { background-position: 0 -112px; }
426
+ .ui-icon-flag { background-position: -16px -112px; }
427
+ .ui-icon-calendar { background-position: -32px -112px; }
428
+ .ui-icon-cart { background-position: -48px -112px; }
429
+ .ui-icon-pencil { background-position: -64px -112px; }
430
+ .ui-icon-clock { background-position: -80px -112px; }
431
+ .ui-icon-disk { background-position: -96px -112px; }
432
+ .ui-icon-calculator { background-position: -112px -112px; }
433
+ .ui-icon-zoomin { background-position: -128px -112px; }
434
+ .ui-icon-zoomout { background-position: -144px -112px; }
435
+ .ui-icon-search { background-position: -160px -112px; }
436
+ .ui-icon-wrench { background-position: -176px -112px; }
437
+ .ui-icon-gear { background-position: -192px -112px; }
438
+ .ui-icon-heart { background-position: -208px -112px; }
439
+ .ui-icon-star { background-position: -224px -112px; }
440
+ .ui-icon-link { background-position: -240px -112px; }
441
+ .ui-icon-cancel { background-position: 0 -128px; }
442
+ .ui-icon-plus { background-position: -16px -128px; }
443
+ .ui-icon-plusthick { background-position: -32px -128px; }
444
+ .ui-icon-minus { background-position: -48px -128px; }
445
+ .ui-icon-minusthick { background-position: -64px -128px; }
446
+ .ui-icon-close { background-position: -80px -128px; }
447
+ .ui-icon-closethick { background-position: -96px -128px; }
448
+ .ui-icon-key { background-position: -112px -128px; }
449
+ .ui-icon-lightbulb { background-position: -128px -128px; }
450
+ .ui-icon-scissors { background-position: -144px -128px; }
451
+ .ui-icon-clipboard { background-position: -160px -128px; }
452
+ .ui-icon-copy { background-position: -176px -128px; }
453
+ .ui-icon-contact { background-position: -192px -128px; }
454
+ .ui-icon-image { background-position: -208px -128px; }
455
+ .ui-icon-video { background-position: -224px -128px; }
456
+ .ui-icon-script { background-position: -240px -128px; }
457
+ .ui-icon-alert { background-position: 0 -144px; }
458
+ .ui-icon-info { background-position: -16px -144px; }
459
+ .ui-icon-notice { background-position: -32px -144px; }
460
+ .ui-icon-help { background-position: -48px -144px; }
461
+ .ui-icon-check { background-position: -64px -144px; }
462
+ .ui-icon-bullet { background-position: -80px -144px; }
463
+ .ui-icon-radio-off { background-position: -96px -144px; }
464
+ .ui-icon-radio-on { background-position: -112px -144px; }
465
+ .ui-icon-pin-w { background-position: -128px -144px; }
466
+ .ui-icon-pin-s { background-position: -144px -144px; }
467
+ .ui-icon-play { background-position: 0 -160px; }
468
+ .ui-icon-pause { background-position: -16px -160px; }
469
+ .ui-icon-seek-next { background-position: -32px -160px; }
470
+ .ui-icon-seek-prev { background-position: -48px -160px; }
471
+ .ui-icon-seek-end { background-position: -64px -160px; }
472
+ .ui-icon-seek-start { background-position: -80px -160px; }
473
+ /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
474
+ .ui-icon-seek-first { background-position: -80px -160px; }
475
+ .ui-icon-stop { background-position: -96px -160px; }
476
+ .ui-icon-eject { background-position: -112px -160px; }
477
+ .ui-icon-volume-off { background-position: -128px -160px; }
478
+ .ui-icon-volume-on { background-position: -144px -160px; }
479
+ .ui-icon-power { background-position: 0 -176px; }
480
+ .ui-icon-signal-diag { background-position: -16px -176px; }
481
+ .ui-icon-signal { background-position: -32px -176px; }
482
+ .ui-icon-battery-0 { background-position: -48px -176px; }
483
+ .ui-icon-battery-1 { background-position: -64px -176px; }
484
+ .ui-icon-battery-2 { background-position: -80px -176px; }
485
+ .ui-icon-battery-3 { background-position: -96px -176px; }
486
+ .ui-icon-circle-plus { background-position: 0 -192px; }
487
+ .ui-icon-circle-minus { background-position: -16px -192px; }
488
+ .ui-icon-circle-close { background-position: -32px -192px; }
489
+ .ui-icon-circle-triangle-e { background-position: -48px -192px; }
490
+ .ui-icon-circle-triangle-s { background-position: -64px -192px; }
491
+ .ui-icon-circle-triangle-w { background-position: -80px -192px; }
492
+ .ui-icon-circle-triangle-n { background-position: -96px -192px; }
493
+ .ui-icon-circle-arrow-e { background-position: -112px -192px; }
494
+ .ui-icon-circle-arrow-s { background-position: -128px -192px; }
495
+ .ui-icon-circle-arrow-w { background-position: -144px -192px; }
496
+ .ui-icon-circle-arrow-n { background-position: -160px -192px; }
497
+ .ui-icon-circle-zoomin { background-position: -176px -192px; }
498
+ .ui-icon-circle-zoomout { background-position: -192px -192px; }
499
+ .ui-icon-circle-check { background-position: -208px -192px; }
500
+ .ui-icon-circlesmall-plus { background-position: 0 -208px; }
501
+ .ui-icon-circlesmall-minus { background-position: -16px -208px; }
502
+ .ui-icon-circlesmall-close { background-position: -32px -208px; }
503
+ .ui-icon-squaresmall-plus { background-position: -48px -208px; }
504
+ .ui-icon-squaresmall-minus { background-position: -64px -208px; }
505
+ .ui-icon-squaresmall-close { background-position: -80px -208px; }
506
+ .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
507
+ .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
508
+ .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
509
+ .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
510
+ .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
511
+ .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
512
+
513
+
514
+ /* Misc visuals
515
+ ----------------------------------*/
516
+
517
+ /* Corner radius */
518
+ .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; }
519
+ .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
520
+ .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
521
+ .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
522
+ .ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
523
+ .ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
524
+ .ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
525
+ .ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
526
+ .ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; }
527
+
528
+ /* Overlays */
529
+ .ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
530
+ .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }
531
+ /*
532
+ ColorBox Core Style:
533
+ The following CSS is consistent between example themes and should not be altered.
534
+ */
535
+ #colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
536
+ #cboxOverlay{position:fixed; width:100%; height:100%;}
537
+ #cboxMiddleLeft, #cboxBottomLeft{clear:left;}
538
+ #cboxContent{position:relative;}
539
+ #cboxLoadedContent{overflow:auto;}
540
+ #cboxTitle{margin:0;}
541
+ #cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;}
542
+ #cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
543
+ .cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none;}
544
+ .cboxIframe{width:100%; height:100%; display:block; border:0;}
545
+ #colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box;}
546
+
547
+ /*
548
+ User Style:
549
+ Change the following styles to modify the appearance of ColorBox. They are
550
+ ordered & tabbed in a way that represents the nesting of the generated HTML.
551
+ */
552
+ #cboxOverlay{background:#000;}
553
+ #colorbox{}
554
+ #cboxTopLeft{width:14px; height:14px; background:url(colorbox/controls.png) no-repeat 0 0;}
555
+ #cboxTopCenter{height:14px; background:url(colorbox/border.png) repeat-x top left;}
556
+ #cboxTopRight{width:14px; height:14px; background:url(colorbox/controls.png) no-repeat -36px 0;}
557
+ #cboxBottomLeft{width:14px; height:43px; background:url(colorbox/controls.png) no-repeat 0 -32px;}
558
+ #cboxBottomCenter{height:43px; background:url(colorbox/border.png) repeat-x bottom left;}
559
+ #cboxBottomRight{width:14px; height:43px; background:url(colorbox/controls.png) no-repeat -36px -32px;}
560
+ #cboxMiddleLeft{width:14px; background:url(colorbox/controls.png) repeat-y -175px 0;}
561
+ #cboxMiddleRight{width:14px; background:url(colorbox/controls.png) repeat-y -211px 0;}
562
+ #cboxContent{background:#fff; overflow:visible;}
563
+ .cboxIframe{background:#fff;}
564
+ #cboxError{padding:50px; border:1px solid #ccc;}
565
+ #cboxLoadedContent{margin-bottom:5px;}
566
+ #cboxLoadingOverlay{background:url(colorbox/loading_background.png) no-repeat center center;}
567
+ #cboxLoadingGraphic{background:url(colorbox/loading.gif) no-repeat center center;}
568
+ #cboxTitle{position:absolute; bottom:-25px; left:0; text-align:center; width:100%; font-weight:bold; color:#7C7C7C;}
569
+ #cboxCurrent{position:absolute; bottom:-25px; left:58px; font-weight:bold; color:#7C7C7C;}
570
+
571
+ #cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{position:absolute; bottom:-29px; background:url(colorbox/controls.png) no-repeat 0px 0px; width:23px; height:23px; text-indent:-9999px;}
572
+ #cboxPrevious{left:0px; background-position: -51px -25px;}
573
+ #cboxPrevious:hover{background-position:-51px 0px;}
574
+ #cboxNext{left:27px; background-position:-75px -25px;}
575
+ #cboxNext:hover{background-position:-75px 0px;}
576
+ #cboxClose{right:0; background-position:-100px -25px;}
577
+ #cboxClose:hover{background-position:-100px 0px;}
578
+
579
+ .cboxSlideshow_on #cboxSlideshow{background-position:-125px 0px; right:27px;}
580
+ .cboxSlideshow_on #cboxSlideshow:hover{background-position:-150px 0px;}
581
+ .cboxSlideshow_off #cboxSlideshow{background-position:-150px -25px; right:27px;}
582
+ .cboxSlideshow_off #cboxSlideshow:hover{background-position:-125px 0px;}
583
+ #loading {
584
+ position: fixed;
585
+ left: 40%;
586
+ top: 50%; }
587
+
588
+ a {
589
+ color: #333333;
590
+ text-decoration: none; }
591
+ a:hover {
592
+ color: black;
593
+ text-decoration: underline; }
594
+
595
+ body {
596
+ font-family: "Lucida Grande", Helvetica, "Helvetica Neue", Arial, sans-serif;
597
+ padding: 12px;
598
+ background-color: #333333; }
599
+
600
+ h1, h2, h3, h4 {
601
+ color: #1c2324;
602
+ margin: 0;
603
+ padding: 0;
604
+ margin-bottom: 12px; }
605
+
606
+ table {
607
+ width: 100%; }
608
+
609
+ #content {
610
+ clear: left;
611
+ background-color: white;
612
+ border: 2px solid #dddddd;
613
+ border-top: 8px solid #dddddd;
614
+ padding: 18px;
615
+ -webkit-border-bottom-left-radius: 5px;
616
+ -webkit-border-bottom-right-radius: 5px;
617
+ -webkit-border-top-right-radius: 5px;
618
+ -moz-border-radius-bottomleft: 5px;
619
+ -moz-border-radius-bottomright: 5px;
620
+ -moz-border-radius-topright: 5px;
621
+ border-bottom-left-radius: 5px;
622
+ border-bottom-right-radius: 5px;
623
+ border-top-right-radius: 5px; }
624
+
625
+ .dataTables_filter, .dataTables_info {
626
+ padding: 2px 6px; }
627
+
628
+ abbr.timeago {
629
+ text-decoration: none;
630
+ border: none;
631
+ font-weight: bold; }
632
+
633
+ .timestamp {
634
+ float: right;
635
+ color: #dddddd; }
636
+
637
+ .group_tabs {
638
+ list-style: none;
639
+ float: left;
640
+ margin: 0;
641
+ padding: 0; }
642
+ .group_tabs li {
643
+ display: inline;
644
+ float: left; }
645
+ .group_tabs li a {
646
+ font-family: Helvetica, Arial, sans-serif;
647
+ display: block;
648
+ float: left;
649
+ text-decoration: none;
650
+ padding: 4px 8px;
651
+ background-color: #aaaaaa;
652
+ background: -webkit-gradient(linear, 0 0, 0 bottom, from(#dddddd), to(#aaaaaa));
653
+ background: -moz-linear-gradient(#dddddd, #aaaaaa);
654
+ background: linear-gradient(#dddddd, #aaaaaa);
655
+ text-shadow: #e5e5e5 1px 1px 0px;
656
+ border-bottom: none;
657
+ color: #333333;
658
+ font-weight: bold;
659
+ margin-right: 8px;
660
+ border-top: 1px solid #efefef;
661
+ -webkit-border-top-left-radius: 2px;
662
+ -webkit-border-top-right-radius: 2px;
663
+ -moz-border-radius-topleft: 2px;
664
+ -moz-border-radius-topright: 2px;
665
+ border-top-left-radius: 2px;
666
+ border-top-right-radius: 2px; }
667
+ .group_tabs li a:hover {
668
+ background-color: #cccccc;
669
+ background: -webkit-gradient(linear, 0 0, 0 bottom, from(#eeeeee), to(#aaaaaa));
670
+ background: -moz-linear-gradient(#eeeeee, #aaaaaa);
671
+ background: linear-gradient(#eeeeee, #aaaaaa); }
672
+ .group_tabs li a:active {
673
+ padding-top: 5px;
674
+ padding-bottom: 3px; }
675
+ .group_tabs li.active a {
676
+ color: black;
677
+ text-shadow: white 1px 1px 0px;
678
+ background-color: #dddddd;
679
+ background: -webkit-gradient(linear, 0 0, 0 bottom, from(white), to(#dddddd));
680
+ background: -moz-linear-gradient(white, #dddddd);
681
+ background: linear-gradient(white, #dddddd); }
682
+
683
+ .file_list {
684
+ margin-bottom: 18px; }
685
+
686
+ a.src_link {
687
+ background: url("./magnify.png") no-repeat left 50%;
688
+ padding-left: 18px; }
689
+
690
+ tr, td {
691
+ margin: 0;
692
+ padding: 0; }
693
+
694
+ th {
695
+ white-space: nowrap; }
696
+ th.ui-state-default {
697
+ cursor: pointer; }
698
+ th span.ui-icon {
699
+ float: left; }
700
+
701
+ td {
702
+ padding: 4px 8px; }
703
+ td.strong {
704
+ font-weight: bold; }
705
+
706
+ .source_table h3, .source_table h4 {
707
+ padding: 0;
708
+ margin: 0;
709
+ margin-bottom: 4px; }
710
+ .source_table .header {
711
+ padding: 10px; }
712
+ .source_table pre {
713
+ margin: 0;
714
+ padding: 0;
715
+ white-space: normal;
716
+ color: black;
717
+ font-family: "Monaco", "Inconsolata", "Consolas", monospace; }
718
+ .source_table code {
719
+ color: black;
720
+ font-family: "Monaco", "Inconsolata", "Consolas", monospace; }
721
+ .source_table pre {
722
+ background-color: #333333; }
723
+ .source_table pre ol {
724
+ margin: 0px;
725
+ padding: 0px;
726
+ margin-left: 45px;
727
+ font-size: 12px;
728
+ color: white; }
729
+ .source_table pre li {
730
+ margin: 0px;
731
+ padding: 2px 6px;
732
+ border-left: 5px solid white; }
733
+ .source_table pre li code {
734
+ white-space: pre;
735
+ white-space: pre-wrap; }
736
+ .source_table pre .hits {
737
+ float: right;
738
+ margin-left: 10px;
739
+ padding: 2px 4px;
740
+ background-color: #444444;
741
+ background: -webkit-gradient(linear, 0 0, 0 bottom, from(#222222), to(#666666));
742
+ background: -moz-linear-gradient(#222222, #666666);
743
+ background: linear-gradient(#222222, #666666);
744
+ color: white;
745
+ font-family: Helvetica, "Helvetica Neue", Arial, sans-serif;
746
+ font-size: 10px;
747
+ font-weight: bold;
748
+ text-align: center;
749
+ border-radius: 6px; }
750
+
751
+ #footer {
752
+ color: #dddddd;
753
+ font-size: 12px;
754
+ font-weight: bold;
755
+ margin-top: 12px;
756
+ text-align: right; }
757
+ #footer a {
758
+ color: #eeeeee;
759
+ text-decoration: underline; }
760
+ #footer a:hover {
761
+ color: white;
762
+ text-decoration: none; }
763
+
764
+ .green {
765
+ color: #009900; }
766
+
767
+ .red {
768
+ color: #990000; }
769
+
770
+ .yellow {
771
+ color: #ddaa00; }
772
+
773
+ .source_table .covered {
774
+ border-color: #009900; }
775
+ .source_table .missed {
776
+ border-color: #990000; }
777
+ .source_table .never {
778
+ border-color: black; }
779
+ .source_table .skipped {
780
+ border-color: #ffcc00; }
781
+ .source_table .covered:nth-child(odd) {
782
+ background-color: #cdf2cd; }
783
+ .source_table .covered:nth-child(even) {
784
+ background-color: #dbf2db; }
785
+ .source_table .missed:nth-child(odd) {
786
+ background-color: #f7c0c0; }
787
+ .source_table .missed:nth-child(even) {
788
+ background-color: #f7cfcf; }
789
+ .source_table .never:nth-child(odd) {
790
+ background-color: #efefef; }
791
+ .source_table .never:nth-child(even) {
792
+ background-color: #f4f4f4; }
793
+ .source_table .skipped:nth-child(odd) {
794
+ background-color: #fbf0c0; }
795
+ .source_table .skipped:nth-child(even) {
796
+ background-color: #fbffcf; }
797
+
798
+
799
+