Sha256: 7f0f32d4b5cc792fd51b8c75b12375b9dca4a13863424351078e605ea4eaeeda

Contents?: true

Size: 550 Bytes

Versions: 7

Compression:

Stored size: 550 Bytes

Contents

require "active_support/core_ext/hash"

module HubLink
  class Slicer
    def initialize(record, columns: [])
      @record = record
      @columns = columns
    end

    def to_h
      normalized_attributes
    end

    private

      attr_reader :record, :columns

      def normalized_attributes
        raw_attributes.transform_keys { |key| key.to_s.chomp("?").to_sym }
      end

      def raw_attributes
        columns.inject({}) do |result, column|
          result.merge(column => record.public_send(column))
        end
      end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
hub_link-0.11.0 lib/hub_link/slicer.rb
hub_link-0.10.0 lib/hub_link/slicer.rb
hub_link-0.9.1 lib/hub_link/slicer.rb
hub_link-0.9.0 lib/hub_link/slicer.rb
hub_link-0.8.0 lib/hub_link/slicer.rb
hub_link-0.7.0 lib/hub_link/slicer.rb
hub_link-0.6.0 lib/hub_link/slicer.rb