pollandroll/daru_lite

View on GitHub
lib/daru_lite.rb

Summary

Maintainability
A
0 mins
Test Coverage
B
83%
# :nocov:
def jruby?
  RUBY_ENGINE == 'jruby'
end
# :nocov:

module DaruLite
  DAYS_OF_WEEK = {
    'SUN' => 0,
    'MON' => 1,
    'TUE' => 2,
    'WED' => 3,
    'THU' => 4,
    'FRI' => 5,
    'SAT' => 6
  }.freeze

  MONTH_DAYS = {
    1 => 31,
    2 => 28,
    3 => 31,
    4 => 30,
    5 => 31,
    6 => 30,
    7 => 31,
    8 => 31,
    9 => 30,
    10 => 31,
    11 => 30,
    12 => 31
  }.freeze

  MISSING_VALUES = [nil, Float::NAN].freeze

  @lazy_update = false

  SPLIT_TOKEN = ','.freeze

  @error_stream = $stderr

  class << self
    # A variable which will set whether Vector metadata is updated immediately or lazily.
    # Call the #update method every time a values are set or removed in order to update
    # metadata like positions of missing values.
    attr_accessor :lazy_update, :error_stream

    def create_has_library(library)
      lib_underscore = library.to_s.tr('-', '_')
      define_singleton_method(:"has_#{lib_underscore}?") do
        cv = "@@#{lib_underscore}"
        unless class_variable_defined? cv
          begin
            require library.to_s
            class_variable_set(cv, true)
          rescue LoadError
            # :nocov:
            class_variable_set(cv, false)
            # :nocov:
          end
        end
        class_variable_get(cv)
      end
    end

    def error(msg)
      error_stream&.puts msg
    end
  end
end

autoload :CSV, 'csv'
require 'matrix'
require 'forwardable'
require 'erb'
require 'date'

require 'daru_lite/version'

require 'open-uri'

require 'daru_lite/index/index'
require 'daru_lite/index/multi_index'
require 'daru_lite/index/categorical_index'

require 'daru_lite/helpers/array'
require 'daru_lite/configuration'
require 'daru_lite/vector'
require 'daru_lite/dataframe'
require 'daru_lite/monkeys'
require 'daru_lite/formatters/table'
require 'daru_lite/iruby/helpers'
require 'daru_lite/exceptions'

require 'daru_lite/core/group_by'
require 'daru_lite/core/query'
require 'daru_lite/core/merge'

require 'daru_lite/date_time/offsets'
require 'daru_lite/date_time/index'