Stupid idea, but lets just look at the benefits/costs
We compile a ruby call currently as:
recv.$foo(1, 2, 3);
Product.find(1).then do |product| | |
puts "product: #{product}" | |
end.else do | |
puts "failed :(" | |
end |
class User < Vienna::Model | |
attributes :first_name, :last_name | |
end | |
user = User.new | |
first = Frappuccino::Stream.new(user).capture(:changed_first_name) | |
last = Frappuccino::Stream.new(user).capture(:changed_last_name) | |
# last name is any change to first or last name | |
last_name = first.merge(last).map { "#{user.first_name} #{user.last_name}" } |
module JqueryRspecHelpers | |
def stub_http(action, url, result) | |
expect(HTTP).to receive(action).with(url).and_yield(result) | |
end | |
end | |
describe User do | |
describe ".current" do | |
it "should make an http request for user details" do | |
stub_http(:get, '/current_user', { "name" => "Fred", "admin" => true }) |
describe "Timeouts" do | |
async "blah" do | |
default_timeout 100 | |
set_timeout(4000) do | |
run_async { :ok } | |
end | |
end | |
end |
Opal.register_metadata([ | |
{ | |
"method": "Array#size", | |
"file": "opal/array.rb", | |
"line": 12, | |
"source": "# This method.......\ndef size;....\nend" | |
}, | |
{ | |
"method": "Array#slice", |
# Class.new | |
Foo = Class.new(Bar) do | |
def woosh | |
:kapow | |
end | |
end | |
# Native.new | |
LocalStorage = Native.new(`localStorage`) do | |
def [](key) |
class Array::Wrapper | |
def self.inherited(subclass) | |
real_subclass = Class.new(Array::Wrapper) | |
%x{ | |
subclass._proto = real_subclass._proto; | |
subclass._alloc = real_subclass._alloc; | |
subclass.$new = real_subclass.$new; | |
subclass['$[]'] = real_subclass['$[]']; |
$iter(self, '$it', "should do something", ($TMP_1 = function() { | |
return (1).$should()['$=='](2); | |
}), self); | |
# We want vienna to render our Product#show view... | |
class ProductController < ApplicationController | |
def show | |
@product = Product.find(...) | |
render :vienna => @product | |
end | |
end | |
# The `vienna` renderer will look for a view (Vienna::View) subclass that |