Method: App2Engine::Rake::Tasks#append_in_class

Defined in:
lib/app2engine/rake/tasks.rb

#append_in_class(file, what) ⇒ Object



111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# File 'lib/app2engine/rake/tasks.rb', line 111

def append_in_class(file, what)
  file = resolve_name(file)
  what = resolve_contents(what)
  if File.read(file).include?(what)
    already_done file
  else
    lines = File.readlines(file)
    class_indent = lines.find { |line| line =~ /^\s*class .+$/ }.split(//).index('c')
    class_end = lines.rindex { |line| line =~ /^\s{#{class_indent}}end\s*$/ }
    what = what.split("\n").map { |line| line.chomp + "\n" }
    lines = lines[0...class_end] + ["\n"] + what + lines[class_end..-1]
    File.open(file, 'w') { |fh| fh.write(lines.join) }
    status "Append #{file}".green
  end
end