# File lib/sugar-high/file.rb, line 33 def self.append path, content=nil, &block File.open(path, 'w+') do |f| f.puts content ||= yield end end
# File lib/sugar-high/file.rb, line 17 def self.blank? file_name raise ArgumentError, "Filename argument must not be blank" if file_name.blank? raise ArgumentError, "There is no file at: #{file_name}" if !File.file?(file_name) File.zero?(file_name) end
# File lib/sugar-high/file.rb, line 7 def self.delete! name return nil if !File.exist?(name) File.delete name end
# File lib/sugar-high/file.rb, line 12 def self.delete_file! name return nil if !File.file?(name) File.delete name end
insert_into 'my_file.txt', :after => 'Blip', :content => 'Hello insert_into 'my_file.txt', 'Hello', :after => 'Blip' insert_into 'my_file.txt', :after => 'Blip' do
'Hello'
end
# File lib/sugar-high/file.rb, line 118 def self.insert_into file_name, *args, &block options = last_option args content = Insert.content options, *args, &block file = File.new(file_name) return nil if !File.exist?(file) # already inserted? return nil if content.blank? || (file.read =~ /#{content}/) place, marker = if options[:before] [ :before, options[:before] ] else [ :after, options[:after] ] end marker = Insert.get_marker marker return nil if !(File.new(file.path).read =~ /#{marker}/) Mutate.mutate_file file.path, marker, place do content end end
# File lib/sugar-high/file.rb, line 27 def self.overwrite path, content=nil, &block File.open(path, 'w') do |f| f.puts content ||= yield end end
# File lib/sugar-high/file.rb, line 79 def self.read_from file_name, options = {}, &block raise ArgumentError, "File to read from not found or not a file: #{file_name}" if !File.file? file_name content = File.read file_name if options[:before] begin regexp = options[:before].to_regexp index = content.match(regexp).offset_before content = content[0..index] rescue raise ArgumentError, ":before option must be a string or regular expression, was : #{options[:before]}" end end if options[:after] begin regexp = options[:after].to_regexp index = content.match(regexp).offset_after content = content[index..-1] rescue raise ArgumentError, ":after option must be a string or regular expression, was : #{options[:after]}" end end yield content if block content end
# File lib/sugar-high/file.rb, line 106 def self.remove_content_from file_name, options = {}, &block replace_content_from file_name, options.merge(:with => ''), &block end
# File lib/sugar-high/file.rb, line 39 def self.remove_from file_name, content=nil, &block content ||= yield replace_content_from file_name, :content => content, :with => '', &block end
replaces content found at replacement_expr with content resulting from yielding block File.replace_content_from 'myfile.txt', where => /HelloWorld/, with => 'GoodBye'
# File lib/sugar-high/file.rb, line 46 def self.replace_content_from file_name, options = {}, &block replacement_expr = options[:where] || options[:content] new_content = options[:with] replacement_expr = case replacement_expr when Regexp replacement_expr when String /#{Regexp.escape(replacement_expr)}/ else raise ArgumentError, "Content to be replaced must be specified as either a String or Regexp in a :where or :content option" end # get existing file content content = File.read file_name # return nil if no mathing replacement found return nil if !(content =~ replacement_expr) new_content ||= yield if block raise ArgumentError, "Content to be replaced with must be specified as a :with option or as a block" if !new_content # remove content that matches expr, by replacing with empty mutated_content = content.gsub replacement_expr, new_content # write mutated content as new file File.overwrite file_name, mutated_content true # signal success! end
Generated with the Darkfish Rdoc Generator 2.