Sha256: 2472deb83e4307d09c4bbd21e2fb4e6ba5b8ec49ae1abfd8e152dd131388ed52

Contents?: true

Size: 1.07 KB

Versions: 7

Compression:

Stored size: 1.07 KB

Contents

require 'tmpdir'
require 'fileutils'

class TraceTree
  class << self
    def tmp
      Dir.tmpdir
    end
  end

  class TmpFile

    DefaultName = 'trace_tree.html'

    def initialize path, transcode: false
      path = recognize_dir path
      @tmp = custom path
      @transcode = transcode
    end

    def puts *content
      content = content.map{ |c| c.to_s.encode('UTF-8', invalid: :replace, undef: :replace, replace: '?') } if @transcode

      File.open @tmp, 'a' do |f|
        f.puts(*content)
      end
    end

    def path
      @tmp
    end

    private

    def recognize_dir path
      case path
      when true
        DefaultName
      when String
        path.split '/'
      else
        path
      end
    end

    def custom path
      path = Array(path).map(&:to_s)
      path[-1] = time + path[-1]
      path = [Dir.tmpdir] + path
      ensure_parent path
      File.join(*path)
    end

    def time
      Time.now.strftime '%Y%m%d_%H%M%S_%L_'
    end

    def ensure_parent path_arr
      dir = path_arr[0..-2]
      FileUtils.mkdir_p File.join(*dir)
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
trace_tree-0.3.6 lib/trace_tree/tmp_file.rb
trace_tree-0.3.5 lib/trace_tree/tmp_file.rb
trace_tree-0.3.4 lib/trace_tree/tmp_file.rb
trace_tree-0.3.3 lib/trace_tree/tmp_file.rb
trace_tree-0.3.2 lib/trace_tree/tmp_file.rb
trace_tree-0.3.1 lib/trace_tree/tmp_file.rb
trace_tree-0.3.0 lib/trace_tree/tmp_file.rb