Sha256: 489a7cb42e2a285bb79da653c44ae2a6c324e2887437fdf4cc20714ccaececa9

Contents?: true

Size: 1.89 KB

Versions: 7

Compression:

Stored size: 1.89 KB

Contents

module Rails3::Assist::Artifact
  module View
    include Rails3::Assist::BaseHelper

    def has_view? name, *args, &block
      file_name = view_file_name(name, args)
      file_name.path.file?
    end
    
    # CREATE
    def create_view name, *args, &block
      file_name = view_file_name(name, args)      
      dir = File.dirname(file_name)
      FileUtils.mkdir_p dir if !File.directory?(dir)

      content = get_view_content(args) || yield if block
      
      # abort if no content given
      debug "Warning: Content must be passed in either as a :content hash or a block" if !content
      return nil if !content

      debug "Writing view file: #{file_name}"
      # write file content of view
      File.open(file_name, 'w') do |f|  
        f.puts content 
      end
    end  

    # READ
    def read_view(name, *args, &block)
      file_name = view_file_name(name, args)
      debug "reading from: #{file_name}"
      file = File.new(file_name)
      raise "The view file: #{file} could not be found" if !file
      begin
        content = file.read
        debug "read content: #{content}"
        yield content if block
        content
      rescue
        nil
      end
    end
    
    # UPDATE
    def insert_into_view(name, *args, &block)
      file_name = view_file_name(name, args)
      debug "file insertion (view): #{file_name}"
      options = last_option args
      raise ArgumentError, ":before or :after option must be specified for insertion" if !(options[:before] || options[:after])
      
      File.insert_into file_name, options, &block
    end

    # DELETE
    def remove_view name, action=nil, type=nil
      file = view_file_name(name, action, type)
      FileUtils.rm_f(file) if File.exist?(file)
    end

    def get_view_content args
      args = args.flatten
      case args.first
      when Hash
        args.first[:content]
      end
    end    

    multi_aliases_for :view 
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
rails3_artifactor-0.2.6 lib/rails3_artifactor/artifact/crud/view.rb
rails3_artifactor-0.2.5 lib/rails3_artifactor/artifact/crud/view.rb
rails3_artifactor-0.2.4 lib/rails3_artifactor/artifact/crud/view.rb
rails3_artifactor-0.2.3 lib/rails3_artifactor/artifact/crud/view.rb
rails3_artifactor-0.2.2 lib/rails3_artifactor/artifact/crud/view.rb
rails3_artifactor-0.2.1 lib/rails3_artifactor/artifact/crud/view.rb
rails3_artifactor-0.1.5 lib/rails3_artifactor/artifact/crud/view.rb