class Magicfile

Public Class Methods

new(lines=[], current_line_index=-1, current_line_space_num=-2) click to toggle source
# File lib/magicfile.rb, line 16
def initialize(lines=[], current_line_index=-1, current_line_space_num=-2)
  @lines = lines
  @current_line_index = current_line_index
  @current_line_space_num = current_line_space_num
end

Public Instance Methods

append_after_current(line, enable_move_down=true, spaces=2) click to toggle source
# File lib/magicfile.rb, line 55
def append_after_current(line, enable_move_down=true, spaces=2)


  line.space_num = @current_line_space_num + spaces
  @lines.insert(@current_line_index + 1, line)


  if enable_move_down
    @current_line_space_num = line.space_num
    @current_line_index += 1
  end

end
append_class(name, parent_class_name=nil) click to toggle source
# File lib/magicfile.rb, line 22
def append_class(name, parent_class_name=nil)

  if parent_class_name
    class_start_line = MagicLine.new("class #{name.camelize} < #{parent_class_name}")
  else
    class_start_line = MagicLine.new("class #{name.camelize}")
  end

  append_after_current(class_start_line, true, 2)
  append_after_current(MagicLine.new("end"), false, 0)
end
append_module(name) click to toggle source
# File lib/magicfile.rb, line 34
def append_module(name)
  module_start_line = MagicLine.new("module #{name.camelize}")
  module_end_line = MagicLine.new("end")

  append_after_current(module_start_line, true, 2)
  append_after_current(module_end_line, false, 0)
end
append_modules(names) click to toggle source
# File lib/magicfile.rb, line 42
def append_modules(names)
  names.each do |name|
    append_module(name)
  end
end
append_string_lines(line_contents) click to toggle source
# File lib/magicfile.rb, line 48
def append_string_lines(line_contents)
  space_num = @current_line_space_num + 2
  content = line_contents.join("\n" + " " * space_num)
  line = MagicLine.new(content, space_num)
  @lines.insert(@current_line_index + 1, line)
end
to_file(name) click to toggle source
# File lib/magicfile.rb, line 69
def to_file(name)
  infos = @lines.map { |line| " " * line.instance_variable_get("@space_num") + line.instance_variable_get("@content") }
  File.open(name, 'w') { |file| file.write(infos.join("\n")) }
end