Josh Adams (@isotope11) started IRuby as a weekend project, and Daniel Mendler (@minad) has taken it over in the last few weeks, adding buckets of awesome.
This notebook is adapted from https://github.com/minad/iruby
puts `showipconfig ruby`
puts ARGV
puts 'Hello, world!'
$stderr.puts 'Error!'
The last computed result is returned.
Math.sqrt(2)
This works even for images.
File.open('img/ruby.svg')
IRuby provides a method to display objects IRuby.display
and methods to create \(\LaTeX\) and HTML representations.
IRuby.display '<b style="color:green">Hello, world!</b>', mime: 'text/html'
IRuby.html '<b style="color:blue">I'm Blue</b>'
\(\LaTeX\) is rendered using MathJax.
IRuby.display IRuby.latex <<-'TEX'
\begin{eqnarray}
\nabla \times \vec{\mathbf{B}} &
- \frac{1}{c} \frac{\partial\vec{\mathbf{E}}}{\partial t}
& = & \frac{4 \pi}{c} \vec{\mathbf{j}} \\
\nabla \cdot \vec{\mathbf{E}} && = & 4 \pi \rho \\
\nabla \times \vec{\mathbf{E}} &
+ \frac{1}{c} \frac{\partial\vec{\mathbf{B}}}{\partial t}
& = & \vec{\mathbf{0}} \\
\nabla \cdot \vec{\mathbf{B}} && = & 0
\end{eqnarray}
TEX
IRuby.math('F(k) = \int_{-\infty}^{\infty} f(x) e^{2\pi i k} dx')
Arrays and Hashes can be printed as HTML tables.
IRuby.display IRuby.table([[1,2],[3,4,5]])
IRuby.display IRuby.table({a:[11,12,13,14],b:[21,22,23],c:[31,32,33,34]})
Pry is an enhanced Ruby REPL. It will be automatically used by IRuby if available. You can use the code browsing utilities for example.
ls File
Magick::Image
objects are automatically displayed inline as PNG.
require 'RMagick'
img = Magick::Image.new(240, 300)
gc = Magick::Draw.new
gc.fill('#FFAA00')
x = 120
y = 32.5
gc.polygon(x, y, x+29, y+86, x+109, y+86,
x+47, y+140, x+73, y+226, x, y+175,
x-73, y+226, x-47, y+140, x-109, y+86,
x-29, y+86)
gc.draw(img)
img
Rubyvis
objects are automatically displayed inline as SVG.
require 'rubyvis'
Rubyvis::Panel.new do
width 400
height 240
bar do
data [1, 1.2, 1.7, 1.5, 0.7, 0.3]
width 50
height {|d| d * 120}
bottom(0)
left {index * 55}
end
end
Gruff::Base
objects are automatically displayed inline as PNG.
require 'gruff'
g = Gruff::Line.new
g.title = 'Gruff Example'
g.data :Jimmy, [25, 36, 86, 39, 25, 31, 79, 88]
g.data :Charles, [80, 54, 67, 54, 68, 70, 90, 95]
g.data :Julie, [22, 29, 35, 38, 36, 40, 46, 57]
g.data :Jane, [95, 95, 95, 90, 85, 80, 88, 100]
g.data :Philip, [90, 34, 23, 12, 78, 89, 98, 88]
g.data :Arthur, [5, 10, 13, 11, 6, 16, 22, 32]
g
But wait, there's more!