Class: MenuMarkup::ParsedPrice
- Inherits:
-
Object
- Object
- MenuMarkup::ParsedPrice
- Defined in:
- lib/menu_markup/parsed_price.rb
Constant Summary collapse
- EOP =
/(?=\s|$)/ui- BOP =
/(?<=\s|^)/ui- DASH =
TODO: Support different dashes?, see: csswizardry.com/2010/01/the-three-types-of-dash/
/\-{1,2}|—{1,2}/ui- CURRENCY =
tl = Turkish lira
/\$|€|euro?|usd|dollar|gbp|tl|£|₤/ui- INTEGER =
/1[0-7]\d\d|\d{1,3}/ui- COMMA_DECIMAL =
/\d+,\d/ui- DOT_DECIMAL =
/\d+\.\d/ui- DASH_COMMA_DECIMAL =
/\d+,#{DASH}/ui- DASH_DOT_DECIMAL =
/\d+\.#{DASH}/ui- FULL_COMMA_DECIMAL =
/\d+,\d\d/ui- FULL_DOT_DECIMAL =
/\d+\.\d\d/ui- PRE_CURRENCY_INTEGER =
/#{CURRENCY}\s*#{INTEGER}/ui- POST_CURRENCY_INTEGER =
/#{INTEGER}\s*#{CURRENCY}/ui- PRE_CURRENCY_COMMA =
/#{CURRENCY}\s*#{COMMA_DECIMAL}/ui- POST_CURRENCY_COMMA =
/#{COMMA_DECIMAL}\s*#{CURRENCY}/ui- PRE_CURRENCY_DOT =
/#{CURRENCY}\s*#{DOT_DECIMAL}/ui- POST_CURRENCY_DOT =
/#{DOT_DECIMAL}\s*#{CURRENCY}/ui- PRE_CURRENCY_DASH_COMMA =
/#{CURRENCY}\s*#{DASH_COMMA_DECIMAL}/ui- POST_CURRENCY_DASH_COMMA =
/#{DASH_COMMA_DECIMAL}\s*#{CURRENCY}/ui- PRE_CURRENCY_DASH_DOT =
/#{CURRENCY}\s*#{DASH_DOT_DECIMAL}/ui- POST_CURRENCY_DASH_DOT =
/#{DASH_DOT_DECIMAL}\s*#{CURRENCY}/ui- PRE_CURRENCY_FULL_COMMA =
/#{CURRENCY}\s*#{FULL_COMMA_DECIMAL}/ui- POST_CURRENCY_FULL_COMMA =
/#{FULL_COMMA_DECIMAL}\s*#{CURRENCY}/ui- PRE_CURRENCY_FULL_DOT =
/#{CURRENCY}\s*#{FULL_DOT_DECIMAL}/ui- POST_CURRENCY_FULL_DOT =
/#{FULL_DOT_DECIMAL}\s*#{CURRENCY}/ui- LITERAL =
/dagprijs/ui- PRICES =
[ PRE_CURRENCY_FULL_COMMA, PRE_CURRENCY_FULL_DOT, PRE_CURRENCY_DASH_COMMA, PRE_CURRENCY_DASH_DOT, PRE_CURRENCY_COMMA, PRE_CURRENCY_DOT, PRE_CURRENCY_INTEGER, POST_CURRENCY_FULL_COMMA, POST_CURRENCY_FULL_DOT, POST_CURRENCY_DASH_COMMA, POST_CURRENCY_DASH_DOT, POST_CURRENCY_COMMA, POST_CURRENCY_DOT, POST_CURRENCY_INTEGER, FULL_COMMA_DECIMAL, FULL_DOT_DECIMAL, DASH_COMMA_DECIMAL, DASH_DOT_DECIMAL, COMMA_DECIMAL, DOT_DECIMAL, INTEGER, LITERAL ]
Instance Attribute Summary collapse
-
#money ⇒ Object
Returns the value of attribute money.
-
#title ⇒ Object
Returns the value of attribute title.
-
#unit ⇒ Object
Returns the value of attribute unit.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(money, title = nil, unit = nil) ⇒ ParsedPrice
constructor
A new instance of ParsedPrice.
Constructor Details
#initialize(money, title = nil, unit = nil) ⇒ ParsedPrice
Returns a new instance of ParsedPrice.
63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/menu_markup/parsed_price.rb', line 63 def initialize(money, title = nil, unit = nil) # In case this is literal price, we want to set it as title of price and not money if money =~ LITERAL title = "#{title}#{money}#{unit}" money = nil end @money, @title, @unit = money.presence, title.presence, unit.presence # Replace .- with .00 @money.gsub!(/([\.,])#{DASH}/, "\\100") if @money end |
Instance Attribute Details
#money ⇒ Object
Returns the value of attribute money.
44 45 46 |
# File 'lib/menu_markup/parsed_price.rb', line 44 def money @money end |
#title ⇒ Object
Returns the value of attribute title.
44 45 46 |
# File 'lib/menu_markup/parsed_price.rb', line 44 def title @title end |
#unit ⇒ Object
Returns the value of attribute unit.
44 45 46 |
# File 'lib/menu_markup/parsed_price.rb', line 44 def unit @unit end |
Class Method Details
.find_match(text, options = {}) ⇒ Object
46 47 48 49 50 51 52 |
# File 'lib/menu_markup/parsed_price.rb', line 46 def self.find_match(text, = {}) .reverse_merge!(eop: EOP, bop: BOP) PRICES.each do |regex| return $~ if text.scan(/#{[:bop]}#{regex}#{[:eop]}/ui).present? end nil end |
.parse_line(line) ⇒ Object
54 55 56 57 58 59 60 61 |
# File 'lib/menu_markup/parsed_price.rb', line 54 def self.parse_line(line) match = find_match(line) if match new(match.to_s, match.pre_match, match.post_match) else new(nil, line) end end |