Sha256: 149dd0193c4312732cb2b5d63c492bcc1d7d4f85b5d6219c490cf67ca520f3f2

Contents?: true

Size: 1.48 KB

Versions: 3

Compression:

Stored size: 1.48 KB

Contents

require 'open3'
require 'optparse'
require 'nokogiri'

require_relative 'tree_tagger/version'
require_relative 'tree_tagger/cli'
require_relative 'tree_tagger/error_layer'

module Opener
  class TreeTagger
    attr_reader :options, :args

    ##
    # Hash containing the default options to use.
    #
    # @return [Hash]
    #
    DEFAULT_OPTIONS = {
      :args => []
    }.freeze

    ##
    # @param [Hash] options
    #
    # @option options [Array] :args Collection of arbitrary arguments to pass
    #  to the underlying kernel.
    #
    def initialize(options = {})
      @args    = options.delete(:args) || []
      @options = DEFAULT_OPTIONS.merge(options)
    end

    def run(input)
      begin
        stdout, stderr, process = capture(input)
        raise stderr unless process.success?
        return stdout
      rescue Exception => error
        return ErrorLayer.new(input, error.message, self.class).add
      end        
    end

    def capture(input)
      Open3.capture3(*command.split(" "), :stdin_data=>input)
    end

    def command
      return "#{adjust_python_path} python -E -OO #{kernel} #{args.join(' ')}"
    end

    protected

    ##
    # @return [String]
    #
    def adjust_python_path
      site_packages =  File.join(core_dir, 'site-packages')
      "env PYTHONPATH=#{site_packages}:$PYTHONPATH"
    end

    def core_dir
      File.expand_path("../../core", File.dirname(__FILE__))
    end

    def kernel
      File.join(core_dir,'/tt_from_kaf_to_kaf.py')
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
opener-tree-tagger-3.2.4 lib/opener/tree_tagger.rb
opener-tree-tagger-3.0.3 lib/opener/tree_tagger.rb
opener-tree-tagger-3.0.2 lib/opener/tree_tagger.rb