Sha256: ba6d927bd80b5f420a7dd4e50949a4688d4fc8fb4d2786efdb0d1862994a39ef

Contents?: true

Size: 1.17 KB

Versions: 6

Compression:

Stored size: 1.17 KB

Contents

# frozen_string_literal: true

module Meta
  module Utils
    class KeywordArgs
      module Checker
        class << self
          # 将 options 内的值修正为固定值,该方法会原地修改 options 选项。
          # 如果 options 中的缺失相应的值,则使用 fixed_values 中的值补充;如果 options 中的值不等于 fixed_values 中对应的值,则抛出异常。
          # 示例:
          # (1)fix!({}, { a: 1, b: 2 }) # => { a: 1, b: 2 }
          # (2)fix!({ a: 1 }, { a: 2 }) # raise error
          def fix!(options, fixed_values)
            fixed_values.each do |key, value|
              if options.include?(key)
                if options[key] != value
                  raise ArgumentError, "关键字参数 #{key} 的值不正确,必须为 #{value}"
                end
              else
                options[key] = value
              end
            end
            options
          end

          def merge_defaults!(options, defaults)
            defaults.each do |key, value|
              options[key] = value unless options[key]
            end
            options
          end
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
meta-api-0.1.2 lib//meta/utils/kwargs/checker.rb
meta-api-0.1.1 lib//meta/utils/kwargs/checker.rb
meta-api-0.1.0 lib//meta/utils/kwargs/checker.rb
meta-api-0.0.9 lib//meta/utils/kwargs/checker.rb
meta-api-0.0.8 lib/meta/utils/kwargs/checker.rb
meta-api-0.0.7 lib/meta/utils/kwargs/checker.rb