Project

sandoz

0.0
No commit activity in last 3 years
No release in over 3 years
Ruby p5.js wrapper for trippy visuals.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.11

Runtime

~> 0.9
~> 0.19.1
 Project Readme

A Gem Named Sandoz

Rationale

But when we use Opal, all Ruby functions are defined within the Opal namespace, prepended with a $. So we're really defining Opal.$setup, Opal.$draw, etc. p5.js expects that setup and draw are in the global namespace, and it also defines all of its methods in the global namespace. As such, there are two problems:

  • p5.js needs to call a global setup and draw but, via Opal, we can't cleanly define a global setup and draw
  • Ruby code needs to call the global p5.js functions (e.g. createCanvas), which requires wrapping all the p5.js functions in equivalent Ruby functions

Sandoz wraps the p5.js library, and bridges the Ruby methods to JavaScript, enabling us to call p5.js functions from Ruby.

Installation

Make sure you have bundler installed

gem install bundler

Add this line to your application's Gemfile:

gem 'sandoz'

Then install dependencies:

bundle install

Run:

bundle exec rackup

How to Require:

require 'opal'
require 'sandoz'

#Have to do this to get functions in global namespace
include Sandoz
#Option 2:
Sandoz::defsketch do
  Sandoz::setup do
    Sandoz::size 600, 600
    Sandoz::rect 100, 100, 100, 100
  end
end
defsketch("content") do

  setup do
    size 600, 600
  end

  draw do
    fill 255, 0, 0
    rect 100, 100, 100, 100
  end

end

Example Application

https://github.com/hswick/sandoz_demo

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/hswick/sandoz. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.

License

The gem is available as open source under the terms of the MIT License.