Class: PublicStorage::Features

Inherits:
Object
  • Object
show all
Defined in:
lib/publicstorage/features.rb

Overview

The features (e.g. climate-controlled, inside-drive-up-access, outside-drive-up-access, etc) of a price.

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(climate_controlled:, drive_up_access:, first_floor_access:) ⇒ Features

Returns a new instance of Features.

Parameters:

  • climate_controlled (Boolean)
  • drive_up_access (Boolean)
  • first_floor_access (Boolean)


21
22
23
24
25
# File 'lib/publicstorage/features.rb', line 21

def initialize(climate_controlled:, drive_up_access:, first_floor_access:)
  @climate_controlled = climate_controlled
  @drive_up_access = drive_up_access
  @first_floor_access = first_floor_access
end

Class Method Details

.parse(data:) ⇒ Features

Parameters:

  • data (Hash)

Returns:



9
10
11
12
13
14
15
16
# File 'lib/publicstorage/features.rb', line 9

def self.parse(data:)
  features = data['features']
  new(
    climate_controlled: features&.include?('climate controlled'),
    drive_up_access: features&.include?('drive-up access'),
    first_floor_access: features&.include?('1st floor')
  )
end

Instance Method Details

#amenitiesArray<String>

Returns:

  • (Array<String>)


44
45
46
47
48
49
50
# File 'lib/publicstorage/features.rb', line 44

def amenities
  [].tap do |amenities|
    amenities << 'Climate Controlled' if climate_controlled?
    amenities << 'Drive-Up Access' if drive_up_access?
    amenities << 'First Floor Access' if first_floor_access?
  end
end

#climate_controlled?Boolean

Returns:

  • (Boolean)


53
54
55
# File 'lib/publicstorage/features.rb', line 53

def climate_controlled?
  @climate_controlled
end

#drive_up_access?Boolean

Returns:

  • (Boolean)


58
59
60
# File 'lib/publicstorage/features.rb', line 58

def drive_up_access?
  @drive_up_access
end

#first_floor_access?Boolean

Returns:

  • (Boolean)


63
64
65
# File 'lib/publicstorage/features.rb', line 63

def first_floor_access?
  @first_floor_access
end

#inspectString

Returns:

  • (String)


28
29
30
31
32
33
34
35
36
# File 'lib/publicstorage/features.rb', line 28

def inspect
  props = [
    "climate_controlled=#{@climate_controlled}",
    "drive_up_access=#{@drive_up_access}",
    "first_floor_access=#{@first_floor_access}"
  ]

  "#<#{self.class.name} #{props.join(' ')}>"
end

#textString

Returns e.g. “Climate Controlled + First Floor Access”.

Returns:

  • (String)

    e.g. “Climate Controlled + First Floor Access”



39
40
41
# File 'lib/publicstorage/features.rb', line 39

def text
  amenities.join(' + ')
end