opal-irb 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +3 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +14 -0
- data/Gemfile.lock +113 -0
- data/Guardfile +5 -0
- data/LICENSE +21 -0
- data/README.md +175 -0
- data/Rakefile +65 -0
- data/Roadmap.org +17 -0
- data/app/assets/stylesheets/opal-irb/jqconsole.css +263 -0
- data/compiled/app-embeddable.js +39765 -0
- data/compiled/app-jqconsole.js +39767 -0
- data/compiled/application.js +27399 -0
- data/css/ansi.css +172 -0
- data/css/opal_irb_jqconsole.css +79 -0
- data/css/show-hint.css +38 -0
- data/doc/presentations/opal_irb_overview.html +678 -0
- data/doc/presentations/opal_irb_overview.org +448 -0
- data/examples/app-embeddable.rb +8 -0
- data/examples/app-jqconsole.rb +10 -0
- data/examples/application.rb +8 -0
- data/index-embeddable.html +29 -0
- data/index-homebrew.html +115 -0
- data/index-jq.html +80 -0
- data/js/anyword-hint.js +44 -0
- data/js/jqconsole.js +1583 -0
- data/js/nodeutil.js +546 -0
- data/js/ruby.js +285 -0
- data/js/show-hint.js +383 -0
- data/lib/opal-irb/rails_engine.rb +3 -0
- data/lib/opal-irb/version.rb +3 -0
- data/lib/opal-irb-rails.rb +2 -0
- data/lib/opal-irb.rb +44 -0
- data/opal/object_extensions.rb +20 -0
- data/opal/opal_irb/completion_engine.rb +202 -0
- data/opal/opal_irb/completion_formatter.rb +49 -0
- data/opal/opal_irb/completion_results.rb +88 -0
- data/opal/opal_irb.rb +88 -0
- data/opal/opal_irb_homebrew_console.rb +398 -0
- data/opal/opal_irb_jqconsole.rb +517 -0
- data/opal/opal_irb_jqconsole_css.rb +259 -0
- data/opal/opal_irb_log_redirector.rb +32 -0
- data/opal/opal_phantomjs.rb +49 -0
- data/opal-irb.gemspec +20 -0
- data/spec/code_link_handler_spec.rb +30 -0
- data/spec/jquery.js +5 -0
- data/spec/object_extensions_spec.rb +32 -0
- data/spec/opal_irb/completion_engine_spec.rb +204 -0
- data/spec/opal_irb/completion_results_spec.rb +32 -0
- data/spec/opal_irb_log_director_spec.rb +19 -0
- data/spec/opal_irb_spec.rb +19 -0
- data/spec/spec_helper.rb +1 -0
- metadata +151 -0
data/.gitignore
ADDED
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
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
|
+
}
|