Module: QuickShoulda::FileWriter

Included in:
QuickShoulda
Defined in:
lib/quick_shoulda/file_writer.rb

Constant Summary collapse

DescribeRegex =
/^describe\s.+\sdo$/i

Instance Method Summary collapse

Instance Method Details

#clear_all_blocksObject



14
15
16
17
18
# File 'lib/quick_shoulda/file_writer.rb', line 14

def clear_all_blocks
	[:validation, :association].each do |block_name| 
		clear_block block_describe_header(block_name)
	end
end

#clear_block(block) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/quick_shoulda/file_writer.rb', line 36

def clear_block(block)
	file_content = ""
	File.open(spec_file_path, 'r') do | file |
		
		delete_mode = false				

		while( line = file.gets )
			filtered_line = line.gsub(/[\n\t]/,'')

			if filtered_line == block || delete_mode
				delete_mode = true if filtered_line == block
				delete_mode = false if filtered_line == 'end'
				next
			end

			file_content << line
		end
	end

	File.open(spec_file_path, 'w') { |file | file.write( file_content ) }
end

#create_file_and_write_init_contentObject



7
8
9
10
11
12
# File 'lib/quick_shoulda/file_writer.rb', line 7

def create_file_and_write_init_content
	FileUtils.mkdir_p(File.dirname(spec_file_path))
	File.open(spec_file_path, 'w') do |file|
		file.write(spec_init_content)
	end
end

#write_block(shoulda_content) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/quick_shoulda/file_writer.rb', line 20

def write_block(shoulda_content)	
	file_content = ''
	File.open(spec_file_path, 'a+') do |file|				
		inserted = false
		while( line = file.gets )
			file_content << line										
			if !inserted && line.strip.gsub(/[\t\n]/,'') =~ DescribeRegex						
			file_content << shoulda_content
				inserted = true
			end
		end				
	end

	File.open(spec_file_path, 'w') { |file | file.write( file_content ) }
end