tripdecorator 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: []