Class: Spree::ColorNames
- Inherits:
-
Object
- Object
- Spree::ColorNames
- Includes:
- Singleton
- Defined in:
- app/models/spree/color_names.rb
Class Method Summary collapse
- .colors ⇒ Object
- .colors_cache ⇒ Object
- .find_by_name(name) ⇒ Object
- .split_by_color_name(name) ⇒ Object
Class Method Details
.colors ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 |
# File 'app/models/spree/color_names.rb', line 6 def colors @colors ||= Rails.cache.fetch('color_names', expires_in: 1.day) do file_path = File.join(Spree::Storefront::Engine.root, 'vendor', 'colornames.json') if File.exist?(file_path) JSON.parse(File.read(file_path)) else [] end end end |
.colors_cache ⇒ Object
18 19 20 21 22 23 |
# File 'app/models/spree/color_names.rb', line 18 def colors_cache @colors_cache ||= colors.inject({}) do |hash, color| hash[color['name'].downcase] = color hash end end |
.find_by_name(name) ⇒ Object
25 26 27 |
# File 'app/models/spree/color_names.rb', line 25 def find_by_name(name) colors_cache[name.downcase] end |
.split_by_color_name(name) ⇒ Object
29 30 31 32 |
# File 'app/models/spree/color_names.rb', line 29 def split_by_color_name(name) multi_color_regex = /(\s+and\s+|\s*-\s*|\s*&\s*|\s*\+\s*|\s*\/\s*)/ name.gsub(multi_color_regex, ',').split(',').map(&:strip) end |