tripdecorator 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/tripdecorator.rb +111 -0
  3. metadata +56 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 4ee871f072b4e3c212a8168c36f1370ed6ba5c337e377968d0ed57be2ab14b60
4
+ data.tar.gz: '02185c3c9266ab0f8cae6c254b7d085e65175e77c1ac5983358fd2da30ac9984'
5
+ SHA512:
6
+ metadata.gz: 9dd934693e13b9bfb63f7adf64240c34f1111f1b352287a7a7a613ec49d6bf0a102b30fe287a655c64f643a4c2f43ca5b0792a6822861528f1a8a21bec930311
7
+ data.tar.gz: dd31103b27be7e687edd761325386eed5851bd9ec034b0a044fe1f6a291d8ba4cb537e10a70d62696ffe909a057582c7e047e80ef973c502fb00aad9b03b2911
@@ -0,0 +1,111 @@
1
+ require 'singleton'
2
+
3
+ class Trip
4
+
5
+ include Singleton
6
+
7
+ attr_accessor :fromdate, :todate, :noofpersons, :price, :elements
8
+
9
+ def price
10
+ return @price
11
+ end
12
+ def noofpersons
13
+ return @noofpersons
14
+ end
15
+ def fromdate
16
+ return @fromdate
17
+ end
18
+ def todate
19
+ return @todate
20
+ end
21
+ def elements
22
+ return @elements
23
+ end
24
+ end
25
+
26
+
27
+
28
+ class Tripdecorator
29
+
30
+ def initialize(trip)
31
+ @trip = trip
32
+ @extra_price = 0
33
+ @added_element= ""
34
+ end
35
+ def price
36
+ return @extra_price + @trip.price
37
+ end
38
+ def noofpersons
39
+ return @trip.noofpersons
40
+ end
41
+ def fromdate
42
+ return @trip.fromdate
43
+ end
44
+ def todate
45
+ return @trip.todate
46
+ end
47
+
48
+ def elements
49
+ if(!@trip.elements.include?(@added_element))
50
+ @trip.elements << @added_element
51
+ end
52
+ return @trip.elements
53
+ end
54
+
55
+ end
56
+
57
+
58
+
59
+ class Triphotel < Tripdecorator
60
+
61
+ def initialize(trip, hotel)
62
+ super(trip)
63
+ @added_element = hotel
64
+ @extra_price = hotel["price"].to_f
65
+ end
66
+
67
+
68
+
69
+ end
70
+
71
+
72
+
73
+ class Triptransport < Tripdecorator
74
+
75
+ def initialize(trip, travel)
76
+ super(trip)
77
+ @added_element = travel
78
+ @extra_price = travel["price"].to_f
79
+ end
80
+
81
+
82
+
83
+ end
84
+
85
+
86
+ class Triprestaurant < Tripdecorator
87
+
88
+ def initialize(trip, restaurant)
89
+ super(trip)
90
+ @added_element = restaurant
91
+ @extra_price = 0
92
+ calculateprice(restaurant)
93
+ end
94
+
95
+ def calculateprice(restaurant)
96
+ range = {"cheap"=>10, "average"=>20, "expensive"=>30}
97
+
98
+ price= range[restaurant["economy"]]
99
+
100
+ f_date = @trip.fromdate
101
+ t_date = @trip.todate
102
+ days = (t_date - f_date).to_i + 1
103
+
104
+ @extra_price = @trip.noofpersons.to_f * price.to_f * 3 * days.to_f
105
+ puts "--------------------------------------------extra_price----------------------------------------------------"
106
+ puts @extra_price.inspect
107
+
108
+ end
109
+
110
+
111
+ end
metadata ADDED
@@ -0,0 +1,56 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tripdecorator
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Niranjan Karunanithi
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-12-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: singleton
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: It decorate trip with hotel, transport, restaurant
28
+ email: niranjankarunanidhi@gmail.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - lib/tripdecorator.rb
34
+ homepage: http://rubygems.org/gems/tripdecorator
35
+ licenses: []
36
+ metadata: {}
37
+ post_install_message:
38
+ rdoc_options: []
39
+ require_paths:
40
+ - lib
41
+ required_ruby_version: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ required_rubygems_version: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: '0'
51
+ requirements: []
52
+ rubygems_version: 3.0.3
53
+ signing_key:
54
+ specification_version: 4
55
+ summary: Decorator design pattern
56
+ test_files: []