Class: Closure::Templates
- Inherits:
-
Object
- Object
- Closure::Templates
- Defined in:
- lib/closure/templates.rb
Defined Under Namespace
Classes: Error
Class Method Summary (collapse)
-
+ compile(args, base = nil)
Compiles soy to javascript with SoyToJsSrcCompiler.jar.
Class Method Details
+ compile(args, base = nil)
Compiles soy to javascript with SoyToJsSrcCompiler.jar. Supports globbing on source filename arguments.
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/closure/templates.rb', line 37 def self.compile(args, base = nil) mtimes = mtimes(args, base) new_mtimes = {} args = args.collect {|a| a.to_s } # for bools and numerics files = [] # expand filename globs mode = :start args_index = 0 while args_index < args.length if mode == :start if args[args_index] == '--outputPathFormat' mode = :expand args_index += 1 end args_index += 1 else arg = args[args_index] arg = File.(arg, base) if base if arg =~ /\*/ args[args_index,1] = Dir.glob arg else args[args_index,1] = arg args_index += 1 end end end # extract filenames mode = :start args.each do |argument| mode = :out and next if argument == '--outputPathFormat' files << argument if mode == :collect mode = :collect if mode == :out end # detect source changes compiled = true files.each do |file| filename = File. file mtime = File.mtime filename rescue Errno::ENOENT last_mtime = mtimes[filename] if !mtime or !last_mtime or last_mtime != mtime compiled = false end new_mtimes[filename] = mtime end mtimes.clear # compile as needed if !compiled _, err = Closure.run_java Closure.config.soy_js_jar, 'com.google.template.soy.SoyToJsSrcCompiler', args unless err.empty? raise Error, err end end # success, keep the mtimes for next time mtimes.merge! new_mtimes end |