<%- def comma_args(args) args.map{|arg| arg[:name]}.join(",") end def comma_args_with_type(args) args.map{|arg| "#{arg[:name]}:#{arg[:type]}"}.join(",") end -%> import peto.*; package peto { class <%= class_name %> { <%- each_procedures do |name, args| -%> // <%=name%> methods public static function <%= name %>(<%= comma_args_with_type(args) %>):Object { return { procedure : "<%=name%>", args : { <%- args.each do |arg| -%> <%=arg[:name]%> : hashize(<%=arg[:name]%>), <%- end -%> } } } public static function <%= name %>_hash_to_args(hash_args:Object):Array { var args:Array = new Array(); <%- args.each do |arg| -%> args.push(<%=arg[:type]%>.create(hash_args.<%=arg[:name]%>)); <%- end -%> return args; } <%- end -%> public static function hashize(var:Object):Object { if ( isPrimitiveType(typeof(var)) ) return var; else return var.toHash(); } public static function isPrimitiveType(type):Boolean { [<%=as_primitive_types.join(",")%>].indexOf?(type) != -1; } } }