class JavaScript::Writer-0.0.1 {
has $!object;
has @!statements;
method call($function, @args) {
@!statements.push({
object => $!object,
call => $function,
args => @args
});
$!object = undef;
}
method object($o) {
$!object = $o;
return self
}
method append($code) {
@!statements.push({ code => $code })
}
method as_string {
my $ret = "";
for @!statements -> my %s {
if (%s{'call'}) {
if (%s{'object'}) {
$ret ~= %s{'object'} ~ ".";
}
# Should use JSON to build arglist.
my $args = %s{'args'}.join(",");
$ret ~= %s{'call'} ~ "(\"$args\");";
}
elsif (%s{'code'}) {
$ret ~= %s{'code'} ~ ";"
}
}
return $ret;
}
}