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