class Embulk::TextGuessPlugin

def guess(config, sample)

def guess(config, sample)
  if config.fetch('parser', {}).fetch('charset', nil).nil?
    require 'embulk/guess/charset'
    charset_guess = Guess::CharsetGuessPlugin.new
    return charset_guess.guess(config, sample)
  end
  # TODO pure-ruby LineDecoder implementation?
  begin
    parser_task = config.param("parser", :hash, default: {}).load_config(Java::LineDecoder::DecoderTask)
  rescue
    # TODO log?
    p $!
    p $!.backtrace
    return DataSource.new
  end
  decoder = Java::LineDecoder.new(Java::ListFileInput.new([[sample.to_java]]), parser_task)
  sample_text = ''
  while decoder.nextFile
    first = true
    while line = decoder.poll
      if first
        first = false
      else
        sample_text << parser_task.getNewline().getString()
      end
      sample_text << line
    end
  end
  return guess_text(config, sample_text);
end

def guess_text(config, sample_text)

def guess_text(config, sample_text)
  raise NotImplementedError, "TextGuessPlugin#guess_text(config, sample_text) must be implemented"
end