opal-irb 0.7.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 (54) hide show
  1. data/.gitignore +3 -0
  2. data/.ruby-gemset +1 -0
  3. data/.ruby-version +1 -0
  4. data/Gemfile +14 -0
  5. data/Gemfile.lock +113 -0
  6. data/Guardfile +5 -0
  7. data/LICENSE +21 -0
  8. data/README.md +175 -0
  9. data/Rakefile +65 -0
  10. data/Roadmap.org +17 -0
  11. data/app/assets/stylesheets/opal-irb/jqconsole.css +263 -0
  12. data/compiled/app-embeddable.js +39765 -0
  13. data/compiled/app-jqconsole.js +39767 -0
  14. data/compiled/application.js +27399 -0
  15. data/css/ansi.css +172 -0
  16. data/css/opal_irb_jqconsole.css +79 -0
  17. data/css/show-hint.css +38 -0
  18. data/doc/presentations/opal_irb_overview.html +678 -0
  19. data/doc/presentations/opal_irb_overview.org +448 -0
  20. data/examples/app-embeddable.rb +8 -0
  21. data/examples/app-jqconsole.rb +10 -0
  22. data/examples/application.rb +8 -0
  23. data/index-embeddable.html +29 -0
  24. data/index-homebrew.html +115 -0
  25. data/index-jq.html +80 -0
  26. data/js/anyword-hint.js +44 -0
  27. data/js/jqconsole.js +1583 -0
  28. data/js/nodeutil.js +546 -0
  29. data/js/ruby.js +285 -0
  30. data/js/show-hint.js +383 -0
  31. data/lib/opal-irb/rails_engine.rb +3 -0
  32. data/lib/opal-irb/version.rb +3 -0
  33. data/lib/opal-irb-rails.rb +2 -0
  34. data/lib/opal-irb.rb +44 -0
  35. data/opal/object_extensions.rb +20 -0
  36. data/opal/opal_irb/completion_engine.rb +202 -0
  37. data/opal/opal_irb/completion_formatter.rb +49 -0
  38. data/opal/opal_irb/completion_results.rb +88 -0
  39. data/opal/opal_irb.rb +88 -0
  40. data/opal/opal_irb_homebrew_console.rb +398 -0
  41. data/opal/opal_irb_jqconsole.rb +517 -0
  42. data/opal/opal_irb_jqconsole_css.rb +259 -0
  43. data/opal/opal_irb_log_redirector.rb +32 -0
  44. data/opal/opal_phantomjs.rb +49 -0
  45. data/opal-irb.gemspec +20 -0
  46. data/spec/code_link_handler_spec.rb +30 -0
  47. data/spec/jquery.js +5 -0
  48. data/spec/object_extensions_spec.rb +32 -0
  49. data/spec/opal_irb/completion_engine_spec.rb +204 -0
  50. data/spec/opal_irb/completion_results_spec.rb +32 -0
  51. data/spec/opal_irb_log_director_spec.rb +19 -0
  52. data/spec/opal_irb_spec.rb +19 -0
  53. data/spec/spec_helper.rb +1 -0
  54. metadata +151 -0
data/.gitignore ADDED
@@ -0,0 +1,3 @@
1
+ build
2
+ .idea
3
+ *~
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ opal_irb
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 1.9.3-p545
data/Gemfile ADDED
@@ -0,0 +1,14 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
3
+
4
+ gem 'opal', :git => "git://github.com/opal/opal.git"
5
+ gem 'opal-jquery', :git => "git://github.com/opal/opal-jquery.git"
6
+ gem 'opal-browser', :git => "git://github.com/opal/opal-browser.git"
7
+ gem 'opal-rspec', :git => "git://github.com/opal/opal-rspec.git"
8
+
9
+ gem 'guard'
10
+ gem 'guard-process'
11
+ gem 'rake'
12
+ gem 'rb-fsevent'
13
+
14
+ gem 'terminal-notifier'
data/Gemfile.lock ADDED
@@ -0,0 +1,113 @@
1
+ GIT
2
+ remote: git://github.com/opal/opal-browser.git
3
+ revision: dff179fd08b44d19b6558aa7c429e1cee4770487
4
+ specs:
5
+ opal-browser (0.2.0.beta1)
6
+ opal
7
+ paggio
8
+
9
+ GIT
10
+ remote: git://github.com/opal/opal-jquery.git
11
+ revision: 6d864fb0dfa0a5cd399f1a46bfa2e24fcb257768
12
+ specs:
13
+ opal-jquery (0.3.0)
14
+ opal (~> 0.7.0)
15
+
16
+ GIT
17
+ remote: git://github.com/opal/opal-rspec.git
18
+ revision: ef2a7b0b969c06617ebbf3f17fc73d7af2363f94
19
+ specs:
20
+ opal-rspec (0.4.1)
21
+ opal (~> 0.7.0)
22
+
23
+ GIT
24
+ remote: git://github.com/opal/opal.git
25
+ revision: 8acef558986dbb4471c6060857c1693302d6293b
26
+ specs:
27
+ opal (0.7.1)
28
+ hike (~> 1.2)
29
+ sourcemap (~> 0.1.0)
30
+ sprockets (>= 2.2.3, < 4.0.0)
31
+ tilt (~> 1.4)
32
+
33
+ PATH
34
+ remote: .
35
+ specs:
36
+ opal-irb (0.7.0)
37
+ opal (~> 0.7.0)
38
+ opal-jquery
39
+
40
+ GEM
41
+ remote: https://rubygems.org/
42
+ specs:
43
+ celluloid (0.16.0)
44
+ timers (~> 4.0.0)
45
+ coderay (1.1.0)
46
+ ffi (1.9.8)
47
+ formatador (0.2.5)
48
+ guard (2.12.5)
49
+ formatador (>= 0.2.4)
50
+ listen (~> 2.7)
51
+ lumberjack (~> 1.0)
52
+ nenv (~> 0.1)
53
+ notiffany (~> 0.0)
54
+ pry (>= 0.9.12)
55
+ shellany (~> 0.0)
56
+ thor (>= 0.18.1)
57
+ guard-compat (1.2.1)
58
+ guard-process (1.2.1)
59
+ guard-compat (~> 1.2, >= 1.2.1)
60
+ spoon (~> 0.0.1)
61
+ hike (1.2.3)
62
+ hitimes (1.2.2)
63
+ listen (2.9.0)
64
+ celluloid (>= 0.15.2)
65
+ rb-fsevent (>= 0.9.3)
66
+ rb-inotify (>= 0.9)
67
+ lumberjack (1.0.9)
68
+ method_source (0.8.2)
69
+ multi_json (1.11.0)
70
+ nenv (0.2.0)
71
+ notiffany (0.0.6)
72
+ nenv (~> 0.1)
73
+ shellany (~> 0.0)
74
+ paggio (0.2.4)
75
+ pry (0.10.1)
76
+ coderay (~> 1.1.0)
77
+ method_source (~> 0.8.1)
78
+ slop (~> 3.4)
79
+ rack (1.6.0)
80
+ rake (10.4.2)
81
+ rb-fsevent (0.9.4)
82
+ rb-inotify (0.9.5)
83
+ ffi (>= 0.5.0)
84
+ shellany (0.0.1)
85
+ slop (3.6.0)
86
+ sourcemap (0.1.1)
87
+ spoon (0.0.4)
88
+ ffi
89
+ sprockets (2.12.3)
90
+ hike (~> 1.2)
91
+ multi_json (~> 1.0)
92
+ rack (~> 1.0)
93
+ tilt (~> 1.1, != 1.3.0)
94
+ terminal-notifier (1.6.2)
95
+ thor (0.19.1)
96
+ tilt (1.4.1)
97
+ timers (4.0.1)
98
+ hitimes
99
+
100
+ PLATFORMS
101
+ ruby
102
+
103
+ DEPENDENCIES
104
+ guard
105
+ guard-process
106
+ opal!
107
+ opal-browser!
108
+ opal-irb!
109
+ opal-jquery!
110
+ opal-rspec!
111
+ rake
112
+ rb-fsevent
113
+ terminal-notifier
data/Guardfile ADDED
@@ -0,0 +1,5 @@
1
+ require 'guard/guard'
2
+
3
+ guard "process", :name => "Opal", :command => "rake" do
4
+ watch /(opal|spec)\/.+\.rb/
5
+ end
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2013 Forrest K. Chang
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,175 @@
1
+ opal-irb
2
+ =========
3
+
4
+ irb (interactive ruby) for Opal (Ruby running on javascript). This is
5
+ interactive console (REPL) on a webpage. Good for testing Opal/ruby
6
+ interactively without having to install anything. Intended to be part
7
+ of a browser based interactive development tool for Opal
8
+
9
+ Try it here: http://fkchang.github.io/opal-irb/index-jq.html
10
+
11
+ Embedded example http://fkchang.github.io/opal-irb/index-embeddable.html
12
+
13
+ Original https://github.com/larryng/coffeescript-repl based port http://fkchang.github.io/opal-irb/index-homebrew.html
14
+
15
+
16
+ Instructional Media
17
+ -------------------
18
+
19
+ Videos:
20
+ * Overview, no sound http://www.youtube.com/watch?v=6hUwN5BdSHo
21
+ * Demo of 1st cut of tab completion https://youtu.be/mQTulgBm5Nk
22
+
23
+ Blogposts:
24
+ * Thorough overview of features including embedded iframe examples of such http://funkworks.blogspot.com/2015/08/an-overview-of-opal-irbs-features.html
25
+
26
+ Presentations:
27
+ * Overview of features based on above blogpost (reveal.js exported by org-mode doc in doc/presentations directory)
28
+ http://fkchang.github.io/opal-irb/doc/presentations/opal_irb_overview.html
29
+
30
+ Features
31
+ --------
32
+
33
+ * Opal irb in your browser
34
+ * Command history - up/down arrows, ctrl-n/ctrl-p
35
+ * Multiline support - ctrl-m to enter editor, ctrl-Enter to submit code
36
+ * Colorized output
37
+ * Access last returned value via $_
38
+ * Shareable code links like [this](http://fkchang.github.io/opal-irb/index-jq.html#code:class%20Welcome%0A%20%20def%20announce%0A%20%20%20%20alert%20%22Welcome%20to%20opal-irb%22%0A%20%20end%0Aend%0Aw%20%3D%20Welcome.new%0Aw.announce)
39
+ * create links by hitting ctrl-L and the lines/multilines will be made into a shareable link
40
+ * also can create links using the history number, i.e. irb\_link\_for 2
41
+ * Emacs keystrokes like all GNU readline apps (original irb included)
42
+ * 100% HTML and JavaScript
43
+
44
+ HOW TOS
45
+ -------
46
+
47
+ ## Embedding into opal apps
48
+
49
+ ### Lissio
50
+
51
+ Embedding into lissio app, as made by lissio new
52
+
53
+ * add to Gemfile opal-irb
54
+ ```ruby
55
+ gem 'opal-irb', github: 'fkchang/opal-irb'
56
+ ```
57
+ * invoke app to require opal-jquery and opal-irb
58
+ ```bash
59
+ lissio start --require opal-irb
60
+ ```
61
+ * add a helper which includes the jquery and codemirror requirements
62
+
63
+ ```html
64
+ <%= OpalIrbUtils.include_opal_irb_jqconsole_requirements %>
65
+ ```
66
+
67
+ * change the require in app/app.rb -- order matters, at the moment to have opal-jquery and opal-browser coexist you need to load opal-jquery before loading lissio
68
+ ```ruby
69
+ require 'opal'
70
+ require 'jqconsole' # add these 3 jqconsole support
71
+ require 'opal_irb_jqconsole_css' # css for opal_irb_jqconsole_css
72
+ require 'opal_irb_jqconsole' # the console code
73
+ require 'lissio'
74
+
75
+ ```
76
+ * override Application#start() to create a button and hook up opal-irb
77
+ ```ruby
78
+ def start
79
+ super
80
+ element << DOM do
81
+ button.show_irb! "Show Irb"
82
+ end
83
+
84
+ OpalIrbJqconsole.create_bottom_panel
85
+ OpalIrbJqconsole.add_open_panel_behavior("show_irb")
86
+ end
87
+
88
+ ```
89
+
90
+ * profit!
91
+
92
+ ### Rails
93
+ * setup Rails app for opal use via https://github.com/opal/opal-rails
94
+ * add to Gemfile opal-irb, jquery-ui-rails (for multi editor)
95
+ ```ruby
96
+ gem 'opal-irb', github: 'fkchang/opal-irb', require: 'opal-irb-rails'
97
+ gem 'jquery-ui-rails'
98
+ ```
99
+ * include stylesheets in application.css.scss
100
+ ```scss
101
+ /*= require_self
102
+ *= require jquery-ui/dialog
103
+ *= require opal-irb/jqconsole
104
+ */
105
+ ```
106
+ * include jquery UI dialog in application.js
107
+ ```js
108
+ //= require jquery-ui/dialog
109
+ ```
110
+
111
+ * include codemirror js/css, you can pull from CDN w/the below in your template (haml example below)
112
+ ```haml
113
+ = OpalIrbUtils.include_code_mirror.html_safe
114
+ ```
115
+
116
+ * Set it up in opal code
117
+
118
+ * Example that creates a bottom panel, a button to bring it up
119
+ ```ruby
120
+ require 'opal_irb_jqconsole'
121
+
122
+ # opal-browser code to add a button
123
+ $document["#workarea"] << DOM do
124
+ button.show_irb! "Show Irb"
125
+ end
126
+ # opal-jquery code to add a button
127
+ Element.find(".main").append "<button class='btn' id='show_irb'>Show Irb</button>"
128
+
129
+ # creates a panel at the bottom
130
+ OpalIrbJqconsole.create_bottom_panel(hidden=true)
131
+ # adds open panel behavior to element w/id show_irb
132
+ OpalIrbJqconsole.add_open_panel_behavior("show_irb")
133
+ ```
134
+
135
+ * Example that creates a bottom panel, makes a hot key "shift-command-c" to toggle the panel
136
+
137
+ ```ruby
138
+ OpalIrbJqconsole.create_bottom_panel(hidden=true)
139
+ OpalIrbJqconsole.add_hot_key_panel_behavior(modifiers: %w(meta shift), key: "c")
140
+
141
+ ```
142
+
143
+ * profit!
144
+
145
+ Dependencies
146
+ ------------
147
+
148
+ * opal - of course
149
+ * opal-jquery (would like to do away with this, don't need it)
150
+ * jquery (cuz of the above)
151
+ * jquery-ui dialog - for the code dial
152
+ * code mirror - for code editing
153
+ * opal-browser (so you can use it from opal-irb) OPTIONAL, it's used in the examples but it can be deployed without opal-browser, esp. since Rails defaults to using jquery and opal-browser and opal-jquery have a lot of overlap, and some small conflicts
154
+
155
+ Version Scheme
156
+ --------------
157
+ While in my mind there are a lot of things that keep opal-irb at not yet suitable to be a gem/ 0.1.0 version number, I frequently have to change code to support the latest minor release for Opal, so I think I need to adopt a scheme that tracks such. So the 1st gem release will be 0.7.0, to indicate compatibility with 0.7.* versions of opal, followed fairly quickly with a 0.8.0 release to match 0.8.0 the current version (at time of writing) of opal.
158
+
159
+ Roadmap
160
+ -------
161
+ * Figure out how to keep variables -- DONE 6/10/2013, thx @adambeynon
162
+ * have it automatically know when a complete ruby expression is there instead of multi line mode like irb -- CLOSE ENOUGH 6/21/2013 via jqconsole
163
+ * Make a gem - DONE 6/23/2013 1st for use in opal-inspector
164
+ * Hook into smalltalk style object browser for opal that I plan to write - STARTED
165
+ * Some demos to show how convenient it can be - DONE 7/19/2013 - you tube video overview
166
+ * Add more irb/pry functionality
167
+ * tab completion
168
+ * cd ls
169
+ * show source via source maps and opal-inspector
170
+ * Make embeddable in any app STARTED 7/30/2013, made embeddable into lisso 2/4/2014
171
+ * print out inspect in ruby format
172
+ * Rails plugin - WORK done on 8/27/14, works w/opal rails and assets, need to document
173
+ * navigate stacktrace code via source maps
174
+ * remove jquery dependancy -- need to convert jqconsole, and remove the the jquery-ui dialog
175
+ * split up dependancy and hierarchy, jquery and jquery free versions, rails vs no rails, etc.
data/Rakefile ADDED
@@ -0,0 +1,65 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'bundler'
3
+ Bundler.require
4
+
5
+ require 'opal'
6
+ require 'opal-rspec'
7
+ require 'opal/sprockets/environment'
8
+
9
+ require 'opal/rspec/rake_task'
10
+ Opal::RSpec::RakeTask.new(:default)
11
+
12
+ desc "build irb with homebrew console"
13
+ task :build_homebrew_console do
14
+ File.open("compiled/application.js", "w+") do |out|
15
+ Opal::Processor.source_map_enabled = false
16
+ env = Opal::Environment.new
17
+ env.append_path "examples"
18
+ env.append_path "opal"
19
+ out << env["application"].to_s
20
+ end
21
+ system "open -a 'Google Chrome' index-homebrew.html"
22
+ end
23
+
24
+ desc "build jqconsole based irb"
25
+ task :build_jqconsole do
26
+
27
+ File.open("compiled/app-jqconsole.js", "w+") do |out|
28
+ env = Opal::Environment.new
29
+ env.append_path "examples"
30
+ env.append_path "opal"
31
+ out << env["app-jqconsole"].to_s
32
+ end
33
+ # system "terminal-notifier -title 'opal-irb build' -message 'js file built'"
34
+ system "open -a 'Google Chrome' index-jq.html"
35
+ end
36
+
37
+ desc "build embeddable irb"
38
+ task :build_embeddable do
39
+
40
+ File.open("compiled/app-embeddable.js", "w+") do |out|
41
+ env = Opal::Environment.new
42
+ env.append_path "examples"
43
+ env.append_path "opal"
44
+ out << env["app-embeddable"].to_s
45
+ end
46
+ # system "terminal-notifier -title 'opal-irb build' -message 'js file built'"
47
+ system "open -a 'Google Chrome' index-embeddable.html"
48
+ end
49
+
50
+ desc "build PhantomJS based repl"
51
+
52
+ task :build_phantomjs do
53
+ File.open("compiled/opal-phantom.js", "w+") do |out|
54
+ env = Opal::Environment.new
55
+ env.append_path "opal"
56
+ out << env["opal_phantomjs"].to_s
57
+ end
58
+ end
59
+
60
+
61
+ desc "build all the example apps and view them"
62
+ task :build_all => [:build_homebrew_console, :build_jqconsole, :build_embeddable]
63
+ desc "shortcut for build embeddable, cuz I'm lazy"
64
+ task :build_e => :build_embeddable
65
+ #task :default => :build_jqconsole
data/Roadmap.org ADDED
@@ -0,0 +1,17 @@
1
+ * Remove jquery dependency
2
+ - [ ] Remove jquery-ui dialog
3
+ - [ ] rewrite jq-console
4
+ * Smalltalk inspired
5
+ - [ ] create/proceed from nomethod error
6
+ - [ ] create/proceed from undefined constant
7
+ - [ ] method search (take in params and get result)
8
+
9
+ * Lisp Machine inspired
10
+ - [ ] right click edit of text
11
+ - [ ] edit objects from command line
12
+
13
+ * Other
14
+ - [ ] . tab completion
15
+ - [X] irb var tab completion
16
+ - [X] constant tab completion
17
+ - [X] free standing method completion
@@ -0,0 +1,263 @@
1
+ #opal-irb-console-bottom-panel {
2
+ width: 100%;
3
+ position: fixed;
4
+ bottom: 0px;
5
+ }
6
+ #opal-irb-console-topbar {
7
+ height:24px;
8
+ }
9
+ #opal-irb-console {
10
+ height: 400px;
11
+ position:relative;
12
+ background-color: #9b111e;
13
+ border: 2px solid #CCC;
14
+ margin: 0 auto;
15
+ }
16
+ .jqconsole-ansi-bold {
17
+ font-weight: bold!important;
18
+ }
19
+
20
+ .jqconsole-ansi-lighter {
21
+ font-weight: lighter!important;
22
+ }
23
+
24
+ .jqconsole-ansi-italic {
25
+ font-style: italic!important;
26
+ }
27
+
28
+ .jqconsole-ansi-underline {
29
+ text-decoration: underline!important;
30
+ }
31
+
32
+ @-webkit-keyframes blinker {
33
+ from { opacity: 1.0; }
34
+ to { opacity: 0.0; }
35
+ }
36
+
37
+ @-moz-keyframes blinker {
38
+ from { opacity: 1.0; }
39
+ to { opacity: 0.0; }
40
+ }
41
+
42
+ @-ms-keyframes blinker {
43
+ from { opacity: 1.0; }
44
+ to { opacity: 0.0; }
45
+ }
46
+
47
+ @-o-keyframes blinker {
48
+ from { opacity: 1.0; }
49
+ to { opacity: 0.0; }
50
+ }
51
+
52
+ .jqconsole-ansi-blink {
53
+ -webkit-animation-name: blinker;
54
+ -moz-animation-name: blinker;
55
+ -ms-animation-name: blinker;
56
+ -o-animation-name: blinker;
57
+ -webkit-animation-iteration-count: infinite;
58
+ -moz-animation-iteration-count: infinite;
59
+ -ms-animation-iteration-count: infinite;
60
+ -o-animation-iteration-count: infinite;
61
+ -webkit-animation-timing-function: cubic-bezier(1.0,0,0,1.0);
62
+ -ms-animation-timing-function: cubic-bezier(1.0,0,0,1.0);
63
+ -o-animation-timing-function: cubic-bezier(1.0,0,0,1.0);
64
+ -moz-animation-timing-function: cubic-bezier(1.0,0,0,1.0);
65
+ -webkit-animation-duration: 1s;
66
+ -moz-animation-duration: 1s;
67
+ -o-animation-duration: 1s;
68
+ -ms-animation-duration: 1s;
69
+ }
70
+
71
+ .jqconsole-ansi-blink-rapid {
72
+ -webkit-animation-name: blinker;
73
+ -moz-animation-name: blinker;
74
+ -ms-animation-name: blinker;
75
+ -o-animation-name: blinker;
76
+ -webkit-animation-iteration-count: infinite;
77
+ -moz-animation-iteration-count: infinite;
78
+ -ms-animation-iteration-count: infinite;
79
+ -o-animation-iteration-count: infinite;
80
+ -webkit-animation-timing-function: cubic-bezier(1.0,0,0,1.0);
81
+ -ms-animation-timing-function: cubic-bezier(1.0,0,0,1.0);
82
+ -o-animation-timing-function: cubic-bezier(1.0,0,0,1.0);
83
+ -moz-animation-timing-function: cubic-bezier(1.0,0,0,1.0);
84
+ -webkit-animation-duration: 0.5s;
85
+ -moz-animation-duration: 0.5s;
86
+ -o-animation-duration: 0.5s;
87
+ -ms-animation-duration: 0.5s;
88
+ }
89
+
90
+
91
+ .jqconsole-ansi-hidden {
92
+ visibility:hidden!important;
93
+ }
94
+
95
+ .jqconsole-ansi-line-through {
96
+ text-decoration: line-through;
97
+ }
98
+
99
+ .jqconsole-ansi-fonts-1 {
100
+
101
+ }
102
+ .jqconsole-ansi-fonts-2 {
103
+
104
+ }
105
+ .jqconsole-ansi-fonts-3 {
106
+
107
+ }
108
+ .jqconsole-ansi-fonts-4 {
109
+
110
+ }
111
+ .jqconsole-ansi-fonts-5 {
112
+
113
+ }
114
+ .jqconsole-ansi-fonts-6 {
115
+
116
+ }
117
+ .jqconsole-ansi-fonts-7 {
118
+
119
+ }
120
+ .jqconsole-ansi-fonts-8 {
121
+
122
+ }
123
+ .jqconsole-ansi-fonts-9 {
124
+
125
+ }
126
+
127
+ .jqconsole-ansi-fraktur {
128
+
129
+ }
130
+
131
+ .jqconsole-ansi-color-black {
132
+ color: black!important;
133
+ }
134
+ .jqconsole-ansi-color-red {
135
+ color: red!important;
136
+ }
137
+ .jqconsole-ansi-color-green {
138
+ color: green!important;
139
+ }
140
+ .jqconsole-ansi-color-yellow {
141
+ color: yellow!important;
142
+ }
143
+ .jqconsole-ansi-color-blue {
144
+ color: blue!important;
145
+ }
146
+ .jqconsole-ansi-color-magenta {
147
+ color: magenta!important;
148
+ }
149
+ .jqconsole-ansi-color-cyan {
150
+ color: cyan!important;
151
+ }
152
+ .jqconsole-ansi-color-white {
153
+ color: white!important;
154
+ }
155
+
156
+ .jqconsole-ansi-background-color-black {
157
+ background-color: black!important;
158
+ }
159
+ .jqconsole-ansi-background-color-red {
160
+ background-color: red!important;
161
+ }
162
+ .jqconsole-ansi-background-color-green {
163
+ background-color: green!important;
164
+ }
165
+ .jqconsole-ansi-background-color-yellow {
166
+ background-color: yellow!important;
167
+ }
168
+ .jqconsole-ansi-background-color-blue {
169
+ background-color: blue!important;
170
+ }
171
+ .jqconsole-ansi-background-color-magenta {
172
+ background-color: magenta!important;
173
+ }
174
+ .jqconsole-ansi-background-color-cyan {
175
+ background-color: cyan!important;
176
+ }
177
+ .jqconsole-ansi-background-color-white {
178
+ background-color: white!important;
179
+ }
180
+
181
+ .jqconsole-ansi-framed {
182
+ border: 1px solid!important;
183
+ }
184
+ .jqconsole-ansi-overline {
185
+ text-decoration: overline!important;
186
+ }
187
+
188
+
189
+ #opal-irb-console-bottom-panel {
190
+ margin: 0;
191
+ padding: 0;
192
+ background-color: #333;
193
+ color: white;
194
+ font-family: monospace;
195
+ width: 98%;
196
+ position: fixed;
197
+ bottom: 0px;
198
+ }
199
+ #opal-irb-console-topbar {
200
+ height:24px;
201
+ }
202
+ #opal-irb-console {
203
+ height: 400px;
204
+ position:relative;
205
+ background-color: #9b111e;
206
+ border: 2px solid #CCC;
207
+ margin: 0 auto;
208
+ }
209
+ .jqconsole {
210
+ padding: 10px;
211
+ padding-bottom: 10px;
212
+ }
213
+ .jqconsole-cursor {
214
+ background-color: #999;
215
+ }
216
+ .jqconsole-blurred .jqconsole-cursor {
217
+ background-color: #666;
218
+ }
219
+ .jqconsole-prompt {
220
+ color: #0d0;
221
+ }
222
+ .jqconsole-old-prompt {
223
+ color: #0b0;
224
+ font-weight: normal;
225
+ }
226
+ .jqconsole-input {
227
+ color: #dd0;
228
+ }
229
+ .jqconsole-old-input {
230
+ color: #bb0;
231
+ font-weight: normal;
232
+ }
233
+ .brace {
234
+ color: #00FFFF;
235
+ }
236
+ .paran {
237
+ color: #FF00FF;
238
+ }
239
+ .bracket {
240
+ color: #FFFF00;
241
+ }
242
+ .jqconsole-composition {
243
+ background-color: red;
244
+ }
245
+
246
+ span.boxclose, a.boxclose{
247
+ float:right;
248
+ cursor:pointer;
249
+ color: #fff;
250
+ border: 1px solid #AEAEAE;
251
+ border-radius: 30px;
252
+ background: red;
253
+ font-family: helvetica;
254
+ font-size: 20px;
255
+ font-weight: bold;
256
+ display: inline-block;
257
+ line-height: 0px;
258
+ padding: 11px 3px;
259
+ }
260
+
261
+ .boxclose:before {
262
+ content: "x";
263
+ }