Sha256: b3f312f0f880402eced71dff39be0932cfcd701ce2472aabe6f4979e77c8265e

Contents?: true

Size: 966 Bytes

Versions: 5

Compression:

Stored size: 966 Bytes

Contents

module ShelbyArena
  module Response
    class Base
      attr_reader :data

      def self.format(data)
        new(data).format
      end

      def self.format_list(data)
        new(data).format_list
      end

      def initialize(data)
        @data = data
      end

      def format_list
        res = format

        return [] if res.nil?
        return [res] if res.is_a?(Hash)

        res
      end

      def format
        return nil if data.nil?

        if data.is_a?(Array)
          data.map { |item| format_single(item) }
        else
          format_single(data)
        end
      end

      def to_h(dict, data)
        return {} if data.nil?

        dict.each_with_object({}) do |(l, r), object|
          object[l] = data[r]
        end
      end

      def to_boolean(string)
        string&.downcase == 'true'
      end

      def date_parse(string)
        return DateTime.parse(string) if string

        nil
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
shelby_arena-0.0.8 lib/shelby_arena/response/base.rb
shelby_arena-0.0.7 lib/shelby_arena/response/base.rb
shelby_arena-0.0.6 lib/shelby_arena/response/base.rb
shelby_arena-0.0.5 lib/shelby_arena/response/base.rb
shelby_arena-0.0.4 lib/shelby_arena/response/base.rb