Sha256: 82e23196aea80de374ce89e751aabf238eb9311c305eda83c91a1fc2c529a029

Contents?: true

Size: 687 Bytes

Versions: 4

Compression:

Stored size: 687 Bytes

Contents

# frozen_string_literal: true

require "csv"

class MedPipe::PipelineTask::TsvGenerater
  TSV_OPTION = { col_sep: "\t" }.freeze

  # @param lines [Enumerable<Array<Object>>] to_s可能なオブジェクトの配列のEnumerable
  # @yieldparam [File] 生成したtsvファイル
  def call(_context, lines)
    Tempfile.create do |file|
      lines.each do |line|
        # nil に置き換えることで""という文字列が出力されてしまうのを回避
        normalized_line = line.map { |v| v == "" ? nil : v }
        tsv_line = CSV.generate_line(normalized_line, **TSV_OPTION)
        file.puts(tsv_line)
      end
      file.rewind

      yield(file)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
med_pipe-0.2.0 lib/med_pipe/pipeline_task/tsv_generator.rb
med_pipe-0.1.1 lib/med_pipe/pipeline_task/tsv_generator.rb
med_pipe-0.1.0.5 lib/med_pipe/pipeline_task/tsv_generator.rb
med_pipe-0.1.0.4 lib/med_pipe/pipeline_task/tsv_generator.rb