Sha256: 0c50803e5176514031aba119211f7d212c02ce6edabd47eca29f4fe704ee566c

Contents?: true

Size: 1.07 KB

Versions: 2

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

2 entries across 2 versions & 1 rubygems

Version Path
trace_tree-0.2.23 lib/trace_tree/tmp_file.rb
trace_tree-0.2.22 lib/trace_tree/tmp_file.rb