Skip to content

unxgeek/kidsruby

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

KidsRuby (http://kidsruby.com) is a Ruby programming environment meant for kids. It is heavily influenced by Hackety Hack (http://hackety-hack.com).

In fact you can run many of the same code samples from Hackety Hack in KidsRuby. For example:

color = ask("what is your favorite color")
if color == "blue"
  alert("you picked blue")
end

OR

Turtle.start do
  background yellow
  pencolor brown
  pensize 2
  goto 30, 200
  setheading 180
  1000.times do
    forward 20
    turnleft rand(10)
    backward 10
  end
end

Here are a few design goals for KidsRuby:
- Simple single file editor
- You can run the current contents of the editor
- The output appears next to the editor
- It runs a normal Ruby 1.9.2 on the code

Implementation choices:
- QtRuby app - lets us communicate with the OS to create a full Ruby interactive environment
- Minitest/Minispec for testing. Yes, code must be tested
- Tutorial content is easy to create just drop HTML files on disk locally to the KidsRuby editor.
- Using JS library Turtlewax for the Turtle implementation https://github.com/davebalmer/turtlewax

Running it:
ruby main.rb

Getting setup on Ubuntu:
Coming soon...

Getting setup on a Mac using Homebrew:
I used the qtbindings gem: https://github.com/ryanmelt/qtbindings
Since I also run homebrew, I discovered that the homebrew install for Qt4 needed a little symlinking before I could run the gem install for qtbindings as described here: https://github.com/ryanmelt/qtbindings/issues#issue/14

To summarize:
brew install dbus
brew install qt --with-qtdbus
for DIR in /usr/local/Cellar/qt/4.7.1/lib/*.framework; do ln -s $DIR/Headers ${DIR%%/lib/*}/include/$(basename $DIR .framework); done
gem install qtbindings

DONE:
- create hackety-hack compatible class with UI dialogs for ask/alert
- get syntax highlighting correct for Ruby code
- create hackety-hack compatible class for Turtle graphics
- tabbed divs for output/turtle/help

TODOS:
- editor save/open/clear
- editor copy and paste
- clear button for output, or should it clear everything each time it is read?
- layout for local html pages with tutorials
- copy relevant parts from Hackety Hack
- make it easy to run pie (see what I did there?)
- create Shoes compatible classes (slippers?) to run Shoes example code too

About

KidsRuby is a Ruby programming environment meant for kids to learn and have fun!

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published