Sha256: c6616638fde6f2235fa149708158be79783afad33e5e46192e9ef5131b8011bc

Contents?: true

Size: 1.2 KB

Versions: 2

Compression:

Stored size: 1.2 KB

Contents

module Weka
  module Concerns
    module Optionizable
      def self.included(base)
        base.extend ClassMethods
        base.include InstanceMethods
      end

      module ClassMethods
        def default_options
          new.get_options.to_a.join(' ')
        end
      end

      module InstanceMethods
        java_import 'weka.core.Utils'

        def use_options(*single_options, **hash_options)
          joined_options = join_options(single_options, hash_options)
          options        = Java::WekaCore::Utils.split_options(joined_options)

          set_options(options)
          @options = joined_options
        end

        def options
          @options || self.class.default_options
        end

        private

        def join_options(single_options, hash_options)
          [
            join_single_options(single_options),
            join_hash_options(hash_options)
          ].reject(&:empty?).join(' ')
        end

        def join_single_options(options)
          options.map { |option| "-#{option.to_s.sub(/^-/, '')}" }.join(' ')
        end

        def join_hash_options(options)
          options.map { |key, value| "-#{key} #{value}" }.join(' ')
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
weka-0.8.0-java lib/weka/concerns/optionizable.rb
weka-0.7.4-java lib/weka/concerns/optionizable.rb