The following code shows the Pimp language output for some specific input, showing some of the benefits from using such a nice language.
an Account:owner, amount
is positive?
tw@hernan-cortes:~$ [master*] time rake jasmine:headless | |
.................................... | |
PASS: 36 tests, 0 failures, 0.175 secs. | |
real 0m4.303s | |
user 0m2.660s | |
sys 0m0.900s |
require 'rubygems' | |
require 'rspec' | |
module EventLogging | |
def self.included(base) | |
base.extend ClassMethods | |
end | |
module ClassMethods |
module GracefulDegradationHelper | |
# doctest: | |
# | |
# >> gracefully { tag(:hello) } | |
# => "<hello />" | |
# | |
# >> gracefully { raise "oops" } | |
# => "" | |
# |
namespace :foo do | |
task :a do | |
exec "echo A" | |
end | |
task :b => [:'foo:a'] do | |
exec "echo B" | |
end | |
*.js |
iik> java:util:ArrayList new | |
*** - java.lang.IllegalArgumentException: object is not an instance of declaring class (Condition Error JavaException) | |
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) | |
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) | |
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) | |
java.lang.reflect.Method.invoke(Method.java:585) | |
ioke.lang.JavaMethodJavaMethod.activate(JavaMethodJavaMethod.java:45) | |
ioke.lang.JavaMethodJavaMethod.activate(JavaMethodJavaMethod.java:38) | |
ioke.lang.IokeObject.activate(IokeObject.java:932) |
Refactoring = Origin mimic do( | |
ifToUnless = method("Returns a message with all the if statements converted to unless statements", message, | |
unless(message kind == "Message", return) | |
message each(i, | |
Refactoring ifToUnless(i next) | |
i arguments each(j, | |
Refactoring ifToUnless(j) | |
) | |
) |
use("ispec") | |
describe("Java", | |
it("should create new methods on an object", | |
Java compileMethod(Text, :disemvowel, #[{ | |
return runtime.newText(Text.getText(on).replaceAll("a|e|i|o|u|A|E|I|O|U", "")); | |
}]) | |
"hello, world!" disemvowel should == "hll, wrld!" |
; I'm assuming the Java namespace will have a bunch of interesting utilities for Java interop - naming might change. | |
Java method = dsyntax("", | |
[javaCode] | |
; use ASM some other bytecode writing API to create a child of JavaMethod or JavaMethod.WithNoArguments, load it and return it | |
) | |
Text lower = Java method("Returns a lower case version of this text", | |
public Object activate(IokeObject method, IokeObject context, IokeObject message, Object on) throws ControlFlow { | |
getArguments().getValidatedArgumentsAndReceiver(context, message, on, new ArrayList<Object>(), new HashMap<String, Object>()); |