Class: Meta::Utils::KeywordArgs::Argument
- Inherits:
-
Object
- Object
- Meta::Utils::KeywordArgs::Argument
- Defined in:
- lib/meta/utils/kwargs/builder.rb
Constant Summary collapse
- DEFAULT_TRANSFORMER =
->(value) { value }
Instance Method Summary collapse
- #consume(final_args, args) ⇒ Object
- #consume_name(final_args, args, consumer_name) ⇒ Object
-
#initialize(name:, normalizer: DEFAULT_TRANSFORMER, validator: nil, default: nil, alias_names: []) ⇒ Argument
constructor
A new instance of Argument.
Constructor Details
#initialize(name:, normalizer: DEFAULT_TRANSFORMER, validator: nil, default: nil, alias_names: []) ⇒ Argument
Returns a new instance of Argument.
58 59 60 61 62 63 64 |
# File 'lib/meta/utils/kwargs/builder.rb', line 58 def initialize(name:, normalizer: DEFAULT_TRANSFORMER, validator: nil, default: nil, alias_names: []) @key_name = name @consumer_names = [name] + alias_names # TODO: 当且仅当 value 是 nil 时,才使用 default @normalizer = default ? ->(value) { normalizer.call(value || default) } : normalizer @validator = validator end |
Instance Method Details
#consume(final_args, args) ⇒ Object
66 67 68 69 70 71 |
# File 'lib/meta/utils/kwargs/builder.rb', line 66 def consume(final_args, args) @consumer_names.each do |name| return true if consume_name(final_args, args, name) end return false end |
#consume_name(final_args, args, consumer_name) ⇒ Object
73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/meta/utils/kwargs/builder.rb', line 73 def consume_name(final_args, args, consumer_name) # TODO: default 未起作用 if args.key?(consumer_name) value = @normalizer.call(args.delete(consumer_name)) @validator.call(value) if @validator final_args[@key_name] = value true else false end end |