class Shog::Ninja::Emitter
Public Class Methods
new(file)
click to toggle source
# File lib/ninja.rb, line 23 def initialize(file) @out = File.open(file, "w") end
Public Instance Methods
default(target)
click to toggle source
# File lib/ninja.rb, line 31 def default(target) unless target.empty? @out.puts "default #{target.join(" ")}" @out.puts end end
emit(target)
click to toggle source
# File lib/ninja.rb, line 47 def emit(target) rule = target[:rule] input = target[:input].join(" ") implicit_input = if target[:implicit_input] and not target[:implicit_input].empty? " | " + target[:implicit_input].join(" ") else "" end output = target[:output].join(" ") variables = target[:variables] @out.puts "build #{output}: #{rule} #{input}#{implicit_input}" for k, v in variables @out.puts " #{k}=#{v}" end if variables @out.puts end
finish()
click to toggle source
# File lib/ninja.rb, line 27 def finish @out.close end
rule(r)
click to toggle source
# File lib/ninja.rb, line 38 def rule(r) vars = r.rule @out.puts "rule #{r.id.to_s}" for k, v in vars @out.puts " #{k}=#{v}" end @out.puts end