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.
- 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
|
+
}
|