
Untitled
By: a guest on
May 11th, 2012 | syntax:
None | size: 1.14 KB | hits: 18 | expires: Never
require 'rubygems'
require 'tilt'
require 'tilt/template'
require 'java'
require 'soy-20100708.jar'
java_import "com.google.template.soy.SoyFileSet"
java_import "com.google.template.soy.data.SoyMapData"
java_import "com.google.template.soy.tofu.SoyTofu"
# http://code.google.com/closure/templates/docs/helloworld_java.html
module Tilt
class SoyTemplate < Template
self.default_mime_type = 'application/javascript'
def self.engine_initialized?; true; end
def initialize_engine; end
def prepare; end
def evaluate(scope, locals, &block)
sfs = SoyFileSet::Builder.new.add(java.io.File.new(file)).build
tofu = sfs.compileToJavaObj
@output = tofu.render("examples.simple.hello", locals, nil)
end
end
end
Tilt.register Tilt::SoyTemplate, 'soy'
puts Tilt.new('simple.soy').render
puts Tilt.new('hello_name.soy').render(nil, {'name' => 'Ilya', 'greetingWord' => 'Hola'})
puts Tilt.new('hello_names.soy').render(nil, {'additionalNames' => ['John', 'Bob'], 'name' => 'Ilya', 'greetingWord' => 'Hey'})
# igrigorik { ~/Desktop/soy } > ruby jsoy_template.rb
# Hello world!
# Hola Ilya!
# Hey Ilya!<br>Hello John!<br>Hello Bob!