Class: StationStatus

Inherits:
Object
  • Object
show all
Defined in:
lib/velibe/station_status.rb

Overview

§todo: new Station will go in module Todo: put in sub file?

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, available_bikes, available_bike_stands) ⇒ StationStatus

Returns a new instance of StationStatus.



9
10
11
12
13
14
15
# File 'lib/velibe/station_status.rb', line 9

def initialize (name, available_bikes, available_bike_stands)
  # Maybe: enhance with bike_stand, and last_update
  @name= name
  @available_bikes = available_bikes
  @available_bike_stands= available_bike_stands
  # TODO: creation Timestamp
end

Instance Attribute Details

#available_bike_standsObject (readonly)

Returns the value of attribute available_bike_stands.



7
8
9
# File 'lib/velibe/station_status.rb', line 7

def available_bike_stands
  @available_bike_stands
end

#available_bikesObject (readonly)

Returns the value of attribute available_bikes.



7
8
9
# File 'lib/velibe/station_status.rb', line 7

def available_bikes
  @available_bikes
end

#nameObject (readonly)

Returns the value of attribute name.



7
8
9
# File 'lib/velibe/station_status.rb', line 7

def name
  @name
end

Class Method Details

.from_hash(json) ⇒ Object



44
45
46
47
48
49
50
51
# File 'lib/velibe/station_status.rb', line 44

def self.from_hash(json)
  # TODO: sanity check of jzon
  name = json[:name].capitalize #RAISE EROR if neede
  available_bikes = json[:available_bikes]
  available_bike_stands = json[:available_bike_stands]
  # T
  self.new(name, available_bikes, available_bike_stands)
end

MAYBE Might belong in formater?



54
55
56
57
58
59
# File 'lib/velibe/station_status.rb', line 54

def self.print_from_json(json_string, prefix='')
  data = JSON.parse(json_string, symbolize_names: true)
  status = StationStatus.from_hash(data)
  puts "#{prefix}#{status}"
  status
end

.string_from_hash(json) ⇒ Object

TODO rename



40
41
42
# File 'lib/velibe/station_status.rb', line 40

def self.string_from_hash(json)
  StationStatus.from_hash(json).to_s
end

Instance Method Details

#can_go?Boolean

MAYBE REPLACE VALUE: 0 no, 1 un peu, 2 attention

Returns:

  • (Boolean)


31
32
33
# File 'lib/velibe/station_status.rb', line 31

def can_go?
  @available_bike_stands > 0 and not @available_bike_stands # test si nil quand pas de velo
end

#can_go_to?(station) ⇒ Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/velibe/station_status.rb', line 35

def can_go_to?(station)
  self.can_leave? and station.can_go?
end

#can_leave?Boolean

FIXME: replace comment with doc TODO: maybe extract in Trajet: + method: velo dispo, stand dispo

Returns:

  • (Boolean)


27
28
29
# File 'lib/velibe/station_status.rb', line 27

def can_leave?
  @available_bikes > 0 and not @available_bikes.nil? # test si nil quand pas de velo
end

#to_csv(sep = ';') ⇒ Object



21
22
23
# File 'lib/velibe/station_status.rb', line 21

def to_csv(sep = ';')
  [@name, @available_bikes, @available_bike_stands].join(sep)
end

#to_sObject



17
18
19
# File 'lib/velibe/station_status.rb', line 17

def to_s
  "Station #{@name}:  #{@available_bikes} Velo(s) libre(s) pour #{@available_bike_stands} places libres"
end