Created
April 19, 2018 12:36
-
-
Save siegy22/66693c44840447cfbaea8ac892e75883 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
### Example | |
# okra = Okra.enter | |
# okra.order('poulet', nan: true, pakora: false) | |
# | |
# chainable: | |
# Okra.enter.order('poulet').order('fish', pakora: true) | |
### | |
class Okra | |
# Raj's sick today Damayanti's here for the rescue | |
class Damayanti | |
def self.say(str) | |
system("say -v Damayanti '#{str}'") | |
end | |
end | |
class Menu | |
def self.choose(name, options = {}) | |
menu_class = Okra.const_get("#{name.capitalize}Menu", false) | |
menu_class.new(options) | |
end | |
def initialize(nan: false, pakora: false) | |
@nan = nan | |
@pakora = pakora | |
end | |
def price | |
price = base_price | |
price += 3 if @nan | |
price += 3 if @pakora | |
price | |
end | |
def to_s | |
str = name | |
str << 'mit nan' if @nan | |
str << ' und ' if @nan && @pakora | |
str << 'mit pakora' if @pakora | |
str | |
end | |
protected | |
def name | |
'' | |
end | |
def base_price | |
0 | |
end | |
end | |
class DaalMenu < Menu | |
def base_price; 10 end | |
def name | |
'Daal Menu' | |
end | |
end | |
class VegiMenu < Menu | |
def base_price; 11 end | |
def name | |
'Vegi Menu' | |
end | |
end | |
class FishMenu < Menu | |
def base_price; 12 end | |
def name | |
'Fish Menu' | |
end | |
end | |
class PouletMenu < Menu | |
def base_price; 13 end | |
def name | |
'Poulet Menu' | |
end | |
end | |
def self.enter; new end | |
def initialize | |
@menus = [] | |
end | |
def order(menu, options = {}) | |
menu = Menu.choose(menu, options) | |
@menus << menu | |
Damayanti.say(menu) | |
Damayanti.say("Das macht #{menu.price} Franken bitte.") | |
rescue NameError | |
Damayanti.say("#{menu} haben wir nicht.") | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment