Sha256: 7ad666fe21fe43f26bf5702f12f69d4253a312e062504042fd73c02190881b90

Contents?: true

Size: 1.07 KB

Versions: 9

Compression:

Stored size: 1.07 KB

Contents

require "swa/polyfill"

module Swa

  module DataPresentation

    protected

    def quoted(value)
      %("#{value}") if value && !value.empty?
    end

    def pad(s, width)
      s = (s || "").to_s
      s.ljust(width)
    end

    def rpad(s, width)
      s = (s || "").to_s
      s.rjust(width)
    end

    WIDTH_BY_TYPE = {
      :availability_zone => 15,
      :cidr_block => 18,
      :group_id => 11,
      :image_id => 12,
      :instance_id => 19,
      :instance_type => 10,
      :private_ip_address => 14,
      :public_ip_address => 14,
      :snapshot_id => 22,
      :subnet_id => 15,
      :volume_id => 21,
      :volume_type => 9,
      :vpc_id => 12
    }

    def field(resource, field_name, type = field_name)
      width = WIDTH_BY_TYPE.fetch(type.to_sym)
      value = resource.public_send(field_name)
      pad(value, width)
    end


    def stringify_keys(data)
      case data
      when Hash
        data.map { |k,v| [k.to_s, stringify_keys(v)] }.to_h
      when Array
        data.map { |v| stringify_keys(v) }
      else
        data
      end
    end

  end

end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
swa-0.8.3 lib/swa/data_presentation.rb
swa-0.8.2 lib/swa/data_presentation.rb
swa-0.8.1 lib/swa/data_presentation.rb
swa-0.8.0 lib/swa/data_presentation.rb
swa-0.7.7 lib/swa/data_presentation.rb
swa-0.7.6 lib/swa/data_presentation.rb
swa-0.7.5 lib/swa/data_presentation.rb
swa-0.7.4 lib/swa/data_presentation.rb
swa-0.7.3 lib/swa/data_presentation.rb