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