module Card::Subcards::Args
Handling shared subcard args processing
Public Instance Methods
extract_subcard_args!(args)
click to toggle source
# File lib/card/subcards/args.rb, line 5 def extract_subcard_args! args safe_subcard_args args do |subcards| extract_explicit_fields subcards, args extract_implicit_fields subcards, args end end
Private Instance Methods
extract_explicit_fields(subcards, args)
click to toggle source
# File lib/card/subcards/args.rb, line 21 def extract_explicit_fields subcards, args return unless (fields = args.delete :fields) fields.each_pair do |key, value| subcards[normalize_field_key(key)] = value end end
extract_implicit_fields(subcards, args)
click to toggle source
# File lib/card/subcards/args.rb, line 35 def extract_implicit_fields subcards, args args.each_key do |key| subcards[key.to_s] = args.delete(key) if key.to_s.match?(/^\+/) end end
normalize_field_key(key)
click to toggle source
ensure a leading ‘+’
# File lib/card/subcards/args.rb, line 30 def normalize_field_key key key = Card::Codename.name! key if key.is_a?(Symbol) key.to_name.prepend_joint end
safe_subcard_args(args) { |subcards| ... }
click to toggle source
FIXME: the following should be handled before it gets this far
# File lib/card/subcards/args.rb, line 15 def safe_subcard_args args subcards = args.delete(:subcards) || {} yield subcards subcards.try(:to_unsafe_h) || subcards end