Sha256: 02b63d2f8bc10ddcd80bdecf2cbdcfc4fb2d872a299cfde345118adcd2d5a19f

Contents?: true

Size: 1.36 KB

Versions: 2

Compression:

Stored size: 1.36 KB

Contents

# namespace
module TeeLogger
  # util
  module Utils
    module_function

    def extract_options(options)
      options.each_with_object(ParsedOption.new(nil, 0)) do |val, obj|
        case val
        when Symbol then obj.logdev_name = name_reverse(val)
        when Fixnum then obj.indent_level = val
        else incorrect_option_error(val)
        end
      end
    end

    def indentation(progname, block, indent_level)
      if block.nil?
        progname = "#{' ' * indent_level}#{formatting(progname)}"
      else
        result = block.call
        block  = proc { "#{' ' * indent_level}#{formatting(result)}" }
      end
      [progname, block]
    end

    def formatting(val)
      case val
      when Symbol then ":#{val}"
      when nil    then 'nil'
      else val
      end
    end

    def name_reverse(val)
      correct_name?(val)
      LOGDEV_REVERSE[val]
    end

    def correct_name?(name)
      LOGDEV_NAMES.include?(name) ? true : incorrect_name_error(name)
    end

    def incorrect_name_error(name)
      fail IncorrectNameError,
           "logdev_name is :console or :logfile. logdev_name=[:#{name}]"
    end

    def incorrect_option_error(val)
      fail IncorrectOptionError,
           "option params is Symbol or Fixnum. class=[#{val.class}]"
    end

    def logdev_instance(logdev_name)
      instance_variable_get("@#{logdev_name}")
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
tee_logger-3.0.3 lib/tee_logger/utils.rb
tee_logger-3.0.2 lib/tee_logger/utils.rb