class Pio::Message
Base message class
Public Class Methods
option(name, value: nil, default: nil)
click to toggle source
# File lib/pio/message.rb, line 13 def self.option(name, value: nil, default: nil) self.options ||= {} if value && !value.is_a?(Symbol) class_eval { class_attribute name } class_eval { __send__("#{name}=", value) } end self.options.merge! name => { value: value, default: default } end
Private Instance Methods
parse_options(user_options)
click to toggle source
rubocop:disable MethodLength rubocop:disable AbcSize rubocop:disable PerceivedComplexity rubocop:disable CyclomaticComplexity
# File lib/pio/message.rb, line 28 def parse_options(user_options) options = {} self.class.options.each_pair do |key, attrs| if !attrs[:value] && !attrs[:default] begin options[key] = user_options.fetch(key) rescue raise "#{key} option is a mandatory" end elsif attrs[:value] && attrs[:value].is_a?(Symbol) options[key] = user_options.fetch(attrs[:value]) elsif attrs[:value] options[key] = user_options[key] || attrs[:value] else options[key] = user_options[key] || attrs[:default] end end options end