Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 11th, 2012  |  syntax: None  |  size: 1.14 KB  |  hits: 18  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. require 'rubygems'
  2.  
  3. require 'tilt'
  4. require 'tilt/template'
  5.  
  6. require 'java'
  7. require 'soy-20100708.jar'
  8.  
  9. java_import "com.google.template.soy.SoyFileSet"
  10. java_import "com.google.template.soy.data.SoyMapData"
  11. java_import "com.google.template.soy.tofu.SoyTofu"
  12.  
  13. # http://code.google.com/closure/templates/docs/helloworld_java.html
  14.  
  15. module Tilt
  16.   class SoyTemplate < Template
  17.     self.default_mime_type = 'application/javascript'
  18.  
  19.     def self.engine_initialized?; true; end
  20.     def initialize_engine; end
  21.     def prepare; end
  22.  
  23.     def evaluate(scope, locals, &block)
  24.       sfs = SoyFileSet::Builder.new.add(java.io.File.new(file)).build
  25.       tofu = sfs.compileToJavaObj
  26.  
  27.       @output = tofu.render("examples.simple.hello", locals, nil)
  28.     end
  29.   end
  30. end
  31.  
  32. Tilt.register Tilt::SoyTemplate, 'soy'
  33.  
  34.  
  35. puts Tilt.new('simple.soy').render
  36. puts Tilt.new('hello_name.soy').render(nil, {'name' => 'Ilya', 'greetingWord' => 'Hola'})
  37. puts Tilt.new('hello_names.soy').render(nil, {'additionalNames' => ['John', 'Bob'], 'name' => 'Ilya', 'greetingWord' => 'Hey'})
  38.  
  39. # igrigorik { ~/Desktop/soy } > ruby jsoy_template.rb
  40. # Hello world!
  41. # Hola Ilya!
  42. # Hey Ilya!<br>Hello John!<br>Hello Bob!