Sha256: 25206a62f13edf979fe17cf42c3be3704fffccef3dd98597b5224bbfb9b3634b

Contents?: true

Size: 1.86 KB

Versions: 2

Compression:

Stored size: 1.86 KB

Contents

require 'sugar-high/blank'
require 'sugar-high/arguments'
require 'sugar-high/path'
require 'sugar-high/regexp'
require 'sugar-high/string'
require 'sugar-high/file'
require 'sugar-high/array'
                         
require 'sugar-high/file_mutate/delete'
require 'sugar-high/file_mutate/overwrite_content'
require 'sugar-high/file_mutate/append_content'
require 'sugar-high/file_mutate/remove_content'
require 'sugar-high/file_mutate/replace_content'
require 'sugar-high/file_mutate/insert_content'
require 'sugar-high/file_mutate/extras'

require 'sugar-high/class_ext'
require 'active_support/inflector'

module SugarHigh
  module FileMutate
    autoload :Mutate,             'sugar-high/file_mutate/mutate'    
    autoload :Delete,             'sugar-high/file_mutate/delete'    
    autoload :AppendContent,      'sugar-high/file_mutate/append_content'
    autoload :InsertContent,      'sugar-high/file_mutate/insert_content'    
    autoload :OverwriteContent,   'sugar-high/file_mutate/overwrite_content'
    autoload :RemoveContent,      'sugar-high/file_mutate/remove_content'
    autoload :ReplaceContent,     'sugar-high/file_mutate/replace_content'    
  end
end
            

class File  
  def self.mutate_ext name
    if name == :all
      add_mutate_exts mutate_apis
      return
    end
    raise ArgumentError, "Unknown FileMutate API: #{name}, must be one of: #{mutate_apis}" if !mutate_apis.include? name
    add_mutate_exts [:mutate, name]
  end
  
  protected
  
  def self.mutate_apis  
    [:delete, :mutate, :append_content, :insert_content, :overwrite_content, :remove_content, :replace_content]
  end  
  
  def self.add_mutate_exts *names
    names.flat_uniq.each do |api| 
      ns = "SugarHigh::FileMutate::#{api.to_s.camelize}"
      begin
        self.send :include, ns.constantize
        self.extend "#{ns}::ClassMethods".constantize
      end
    end
  end
  
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
sugar-high-0.4.4 lib/sugar-high/file_mutate.rb
sugar-high-0.4.3 lib/sugar-high/file_mutate.rb