module Cucumber::Messages::Message::Serialization
def prepare_value(value, camelize:, reject_nil_values:)
def prepare_value(value, camelize:, reject_nil_values:) return value.to_h(camelize: camelize, reject_nil_values: reject_nil_values) if value.is_a?(Cucumber::Messages::Message) return value.map { |v| prepare_value(v, camelize: camelize, reject_nil_values: reject_nil_values) } if value.is_a?(Array) value end
def to_h(camelize: false, reject_nil_values: false)
def to_h(camelize: false, reject_nil_values: false) resulting_hash = self.instance_variables.map do |variable_name| h_key = variable_name[1..-1] h_key = Cucumber::Messages::Message.camelize(h_key) if camelize h_value = prepare_value( self.instance_variable_get(variable_name), camelize: camelize, reject_nil_values: reject_nil_values ) [ h_key.to_sym, h_value ] end.to_h resulting_hash.reject! { |_, value| value.nil? } if reject_nil_values resulting_hash end
def to_json
def to_json to_h(camelize: true, reject_nil_values: true).to_json end