spree_compare_products 0.40.90

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ pkg/*
2
+ public/stylesheets/sass/.sass-cache/*
3
+ *.gem
4
+ .bundle
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ source 'http://rubygems.org'
4
+
5
+ # Specify your gem's dependencies in spree-compare_products.gemspec
6
+ gemspec
data/README.markdown ADDED
@@ -0,0 +1,34 @@
1
+ SPREE COMPARE PRODUCTS
2
+ ======================
3
+
4
+ DESCRIPTION:
5
+ ------------
6
+
7
+ Provides product comparison with other products within the same taxon.
8
+
9
+ This is a fork of [spree-compare-products](https://github.com/calas/spree-compare-products) by Jorge Calás.
10
+
11
+ REQUIREMENTS:
12
+ -------------
13
+
14
+ * {Spree}(https://github.com/railsdog/spree) (Version >= 0.50.99)
15
+
16
+ FEATURES:
17
+ ---------
18
+
19
+ * Allows the admin user to select which taxonomies are comparable.
20
+ * Provides a bookmark-able URL.
21
+ * Only allows products comparison in comparable taxonomies.
22
+ * Only compares products in the same exact taxon.
23
+ * Compares up to 4 products.
24
+ * Redirects to the product's taxon page if only one product is provided.
25
+ * If javascript is available:
26
+ * Disabling submit button when less than 2 products are selected.
27
+ * Submit to the correct URL (to avoid server-side redirection).
28
+
29
+ TODOS:
30
+ ------
31
+
32
+ * Add tests
33
+ * Bring back all features provided by the original extension
34
+ * Don't rely on javascript
data/Rakefile ADDED
@@ -0,0 +1,3 @@
1
+ require 'bundler'
2
+
3
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1,60 @@
1
+ class CompareProductsController < Spree::BaseController
2
+
3
+ before_filter :find_taxon
4
+ before_filter :verify_comparable_taxon
5
+ before_filter :find_products
6
+
7
+ helper :products, :taxons
8
+
9
+ def show
10
+ @properties = @products.map(&:properties).flatten.uniq # We return the list of properties here so we can use them latter.
11
+ end
12
+
13
+ private
14
+
15
+ # Find the taxon from the url.
16
+ def find_taxon
17
+ permalink = ''
18
+
19
+ if params[:taxon_path]
20
+ permalink = "#{params[:taxon_path]}/"
21
+ elsif params[:taxon]
22
+ permalink = "#{params[:taxon]}/"
23
+ end
24
+
25
+ @taxon = Taxon.find_by_permalink(permalink) unless permalink.blank?
26
+
27
+ if @taxon.nil?
28
+ flash[:error] = I18n.t('compare_products.invalid_taxon')
29
+
30
+ redirect_to products_path
31
+ end
32
+ end
33
+
34
+ # Verifies that the comparison can be made inside this taxon.
35
+ def verify_comparable_taxon
36
+ unless @taxon.is_comparable?
37
+ flash[:error] = I18n.t('compare_products.taxon_not_comparable')
38
+
39
+ redirect_to "/t/#{@taxon.permalink}"
40
+ end
41
+ end
42
+
43
+ # Find the products inside the taxon, manually adding product ids to
44
+ # the url will silently be ignored if they can't be compared inside
45
+ # the taxon or don't exists.
46
+ def find_products
47
+ product_ids = params[:product_ids].split('/')
48
+
49
+ if product_ids.length > 4
50
+ flash[:notice] = I18n.t('compare_products.limit_is_4')
51
+ product_ids = product_ids[0..3]
52
+ elsif product_ids.length < 2
53
+ flash[:error] = I18n.t('compare_products.insufficient_data')
54
+ redirect_to "/t/#{@taxon.permalink}"
55
+ end
56
+
57
+ @products = @taxon.products.find(:all, :conditions => { :id => product_ids}, :include => { :product_properties => :property }, :limit => 4)
58
+ end
59
+
60
+ end
@@ -0,0 +1,44 @@
1
+ module CompareProductsHelper
2
+ # Return the transposed matrix of the comparison table.
3
+ #
4
+ # Example:
5
+ # [
6
+ # ["Product", "product1 image", "product2 image"],
7
+ # ["Name", "product1 name", "product2 name"],
8
+ # ...
9
+ # ["Price", "product1 price", "product2 price"]
10
+ # ]
11
+ def comparison_rows_for(products, properties)
12
+ fields = [comparison_fields_for(products, properties)]
13
+ products.each do |product|
14
+ fields << (fields_for(product, properties))
15
+ end
16
+ fields.transpose
17
+ end
18
+
19
+ # Return an array with the values of the fields to be compared for
20
+ # the specified product.
21
+ #
22
+ # Example:
23
+ # ["product1 image", "product1 name", ..., "product1 price"]
24
+ def fields_for(product, properties)
25
+ [ link_to(small_image(product), product), link_to(product.name, product)].tap { |fields|
26
+ properties.each do |property|
27
+ fields << product.product_properties.find_by_property_id(property.id).try(:value)
28
+ end
29
+ }.tap { |fields| fields << number_to_currency(product.price) }
30
+ end
31
+
32
+ # Returns an array with the translated names of the fields to be
33
+ # compared.
34
+ #
35
+ # Example:
36
+ # ["Product", "Name", ..., "Price"]
37
+ def comparison_fields_for(products, properties)
38
+ [t('product'), t('name')].tap { |fields|
39
+ properties.each { |property| fields << property.presentation }
40
+ }.tap { |fields|
41
+ fields << t('price')
42
+ }
43
+ end
44
+ end
@@ -0,0 +1,15 @@
1
+ class BookmarkableComparison
2
+
3
+ def self.call(env)
4
+ req = Rack::Request.new(env)
5
+
6
+ if req.path_info =~ /^\/compare_products/
7
+ products = (req.params['product_id'] || []).join('/')
8
+ url = "/t/#{req.params['taxon']}/compare/#{products}"
9
+ return [303, {"Location" => url}, []]
10
+ end
11
+
12
+ [ 404, { 'Content-Type' => 'text/html' }, [ 'Not Found' ] ]
13
+ end
14
+
15
+ end
@@ -0,0 +1,4 @@
1
+ <% field_container :taxonomy, :comparable do %>
2
+ <%= check_box :taxonomy, :comparable %>
3
+ <%= label :taxonomy, :comparable, t('compare_products.comparable_container') %>
4
+ <% end %>
@@ -0,0 +1,17 @@
1
+ <table class="index">
2
+ <tr>
3
+ <th><%= t('name') %></th>
4
+ <th><%= t('compare_products.comparable_container') %></th>
5
+ <th></th>
6
+ </tr>
7
+
8
+ <% for taxonomy in @taxonomies %>
9
+ <tr id="<%= dom_id taxonomy %>">
10
+ <td><%= taxonomy.name %></td>
11
+ <td><%= icon('tick') if taxonomy.comparable? %></td>
12
+ <td class="actions">
13
+ <%= link_to_edit taxonomy.id %> &nbsp; <%= link_to_delete taxonomy %>
14
+ </td>
15
+ </tr>
16
+ <% end %>
17
+ </table>
@@ -0,0 +1,25 @@
1
+ <% content_for :head do %>
2
+ <%= stylesheet_link_tag 'compiled/compare_products' %>
3
+ <% end %>
4
+
5
+ <% content_for :sidebar do %>
6
+ <%= render :partial => 'shared/taxonomies' %>
7
+ <% end %>
8
+
9
+ <h1>
10
+ <%= t('compare_products.product_comparison') %>
11
+ </h1>
12
+
13
+ <table>
14
+ <% comparison_rows_for(@products, @properties).each do |row| %>
15
+ <tr>
16
+ <th><%= row.shift -%></th>
17
+
18
+ <% row.each do |field| %>
19
+ <td><%= field || raw('&mdash;') %></td>
20
+ <% end %>
21
+ </tr>
22
+ <% end %>
23
+ </table>
24
+
25
+ <%= link_to t('continue_shopping'), seo_url(@taxon), :class => 'continue button' %>
@@ -0,0 +1,5 @@
1
+ <% if @comparable %>
2
+ <span class="comparable">
3
+ <%= check_box_tag('product_id[]', product.id, false, :id => "compare_product_#{product.id}", :class => 'compare') %>
4
+ </span>
5
+ <% end %>
@@ -0,0 +1,12 @@
1
+ <% content_for :head do %>
2
+ <%= javascript_include_tag 'product_comparison' %>
3
+
4
+ <%= stylesheet_link_tag 'compiled/compare_products' %>
5
+ <% end %>
6
+
7
+ <% form_tag(compare_products_path, :method => :get) do %>
8
+ <%= hidden_field_tag('taxon_permalink', params[:id]) %>
9
+ <% @comparable = true %>
10
+ <%= render 'shared/products.html.erb', :products => @products, :taxon => @taxon %>
11
+ <%= submit_tag t('compare_products.compare'), :id => 'compare', :class => 'button' %>
12
+ <% end %>
@@ -0,0 +1,5 @@
1
+ <% if @taxon && @taxon.taxonomy.comparable? && @products.length > 1 %>
2
+ <%= render('taxons/comparable_taxon') %>
3
+ <% else %>
4
+ <%= render('shared/products.html.erb', :products => @products, :taxon => @taxon) %>
5
+ <% end %>
@@ -0,0 +1,10 @@
1
+ en:
2
+ compare_products:
3
+ comparable_container: Enable product comparison
4
+ compare: Compare
5
+ compare_selected: Compare selected products
6
+ insufficient_data: Insufficient data. You need to select at least 2 products.
7
+ invalid_taxon: Invalid taxon
8
+ limit_is_4: You can only compare up to 4 products.
9
+ product_comparison: Product comparison
10
+ taxon_not_comparable: "Products inside this taxon can't be compared"
@@ -0,0 +1,10 @@
1
+ es:
2
+ compare_products:
3
+ comparable_container: Habilitar comparación de productos
4
+ compare: Comparar
5
+ compare_selected: Comparar los productos seleccionados
6
+ limit_is_4: Solo puedes comparar hasta 4 productos.
7
+ insufficient_data: Datos insuficientes. Debe seleccionar al menos 2 products.
8
+ invalid_taxon: Taxón no válido
9
+ product_comparison: Comparación de productos
10
+ taxon_not_comparable: No se pueden comparar products dentro de este taxón.
@@ -0,0 +1,11 @@
1
+ ---
2
+ pl:
3
+ compare_products:
4
+ comparable_container: "Włącz porównywanie produktów"
5
+ compare: Porównaj
6
+ compare_selected: "Porównaj zaznaczone produkty"
7
+ insufficient_data: "Brak wystarczających danych. Zaznacz co najmniej 2 produkty."
8
+ invalid_taxon: "Niepoprawna kategoria"
9
+ limit_is_4: "Możesz porównać maksymalnie 4 produkty."
10
+ product_comparison: "Porównanie produktów."
11
+ taxon_not_comparable: "Produty w tej kategorii nie mogą zostać porównane"
@@ -0,0 +1,10 @@
1
+ ru:
2
+ compare_products:
3
+ comparable_container: "разрешить сравнение товаров"
4
+ compare: "Сравнить"
5
+ compare_selected: "Сравнить выбранные товары"
6
+ insufficient_data: "Недостаточно данных, нужно выбрать хотя бы 2 товара."
7
+ invalid_taxon: "Нельзя сравнивать товары из разных категорий"
8
+ limit_is_4: "Вы можете сравнить не более четырёх товаров одновременно."
9
+ product_comparison: "Сравнение товаров"
10
+ taxon_not_comparable: "Товары данной категории не могут быть сравнены."
data/config/routes.rb ADDED
@@ -0,0 +1,4 @@
1
+ Rails.application.routes.draw do
2
+ match '/t/compare_products' => 'compare_products#show', :as => 'compare_products'
3
+ match '/t/*taxon_path/compare/*product_ids' => 'compare_products#show'
4
+ end
@@ -0,0 +1,12 @@
1
+ module SpreeCompareProducts
2
+ module ComparableContainer
3
+ def self.included(base)
4
+ base.class_eval do
5
+ preference :enable_product_comparison, :boolean, :default => false
6
+ alias_method :comparable, :prefers_enable_product_comparison?
7
+ alias_method :comparable?, :prefers_enable_product_comparison?
8
+ alias_method :comparable=, :prefers_enable_product_comparison=
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,3 @@
1
+ module SpreeCompareProducts
2
+ VERSION = '0.40.90'
3
+ end
@@ -0,0 +1,30 @@
1
+ require 'spree_core'
2
+ require 'spree_compare_products_hooks'
3
+ require 'spree_compare_products/comparable_container'
4
+
5
+ module SpreeCompareProducts
6
+ class Engine < Rails::Engine
7
+
8
+ config.autoload_paths += %W(#{config.root}/lib)
9
+
10
+ def self.activate
11
+ Dir.glob(File.join(File.dirname(__FILE__), '../app/**/*_decorator*.rb')) do |c|
12
+ Rails.env.production? ? require(c) : load(c)
13
+ end
14
+
15
+ Taxonomy.class_eval do
16
+ include SpreeCompareProducts::ComparableContainer
17
+ end
18
+
19
+ Taxon.class_eval do
20
+ include SpreeCompareProducts::ComparableContainer
21
+
22
+ def is_comparable?
23
+ comparable? || taxonomy.comparable?
24
+ end
25
+ end
26
+ end
27
+
28
+ config.to_prepare &method(:activate).to_proc
29
+ end
30
+ end
@@ -0,0 +1,9 @@
1
+ class SpreeCompareProductsHooks < Spree::ThemeSupport::HookListener
2
+
3
+ insert_after :admin_inside_taxonomy_form, 'admin/taxonomies/comparable_field'
4
+
5
+ replace :taxon_products, 'taxons/taxon_products'
6
+
7
+ insert_after :products_list_item, 'shared/compare_product_field'
8
+
9
+ end
@@ -0,0 +1,25 @@
1
+ namespace :spree_compare_products do
2
+ desc 'Copies all migrations and assets (NOTE: This will be obsolete with Rails 3.1)'
3
+ task :install do
4
+ Rake::Task['spree_compare_products:install:migrations'].invoke
5
+ Rake::Task['spree_compare_products:install:assets'].invoke
6
+ end
7
+
8
+ namespace :install do
9
+ desc 'Copies all migrations (NOTE: This will be obsolete with Rails 3.1)'
10
+ task :migrations do
11
+ source = File.join(File.dirname(__FILE__), '..', '..', 'db')
12
+ destination = File.join(Rails.root, 'db')
13
+ Spree::FileUtilz.mirror_files(source, destination)
14
+ end
15
+
16
+ desc 'Copies all assets (NOTE: This will be obsolete with Rails 3.1)'
17
+ task :assets do
18
+ source = File.join(File.dirname(__FILE__), '..', '..', 'public')
19
+ destination = File.join(Rails.root, 'public')
20
+ puts "INFO: Mirroring assets from #{source} to #{destination}"
21
+ Spree::FileUtilz.mirror_files(source, destination)
22
+ end
23
+ end
24
+
25
+ end
@@ -0,0 +1 @@
1
+ # Add custom rake tasks here
@@ -0,0 +1,104 @@
1
+ // ######################
2
+ // # PRODUCT COMPARISON #
3
+ // ######################
4
+
5
+ // @param params <Object> : {
6
+ // target <String> : the target object
7
+ // }
8
+
9
+ var ProductComparison = function(params) {
10
+ // ################
11
+ // # DEPENDENCIES #
12
+ // ################
13
+
14
+ if (typeof jQuery == 'undefined') {
15
+ throw new Error('InquiryAsk requires \'jQuery\'.');
16
+ }
17
+
18
+ // #############
19
+ // # PARAMETER #
20
+ // #############
21
+
22
+ // if (params.target == undefined) {
23
+ // throw new Error('ProductComparison constructor requires a \'target\'.');
24
+ // }
25
+
26
+ // ######################
27
+ // # PRIVATE ATTRIBUTES #
28
+ // ######################
29
+
30
+ var self = this;
31
+
32
+ // ######################
33
+ // # PRIVILEGED METHODS #
34
+ // ######################
35
+
36
+ /*
37
+ * @privileged
38
+ *
39
+ * init
40
+ *
41
+ * Initialize product comparison
42
+ */
43
+ this.init = function() {
44
+ _init();
45
+ }
46
+
47
+ // ###################
48
+ // # PRIVATE METHODS #
49
+ // ###################
50
+
51
+ /*
52
+ * @private
53
+ *
54
+ * _init
55
+ *
56
+ * Initialize product comparison
57
+ */
58
+ function _init() {
59
+ _setForm();
60
+ $('input.compare:checkbox').click(_setForm);
61
+ $('form[action*="/t/compare_products"]').submit(_onFormSubmit);
62
+ }
63
+
64
+ /*
65
+ * @private
66
+ *
67
+ * _setForm
68
+ */
69
+ function _setForm() {
70
+ var checkedProducts = $('input.compare:checkbox:checked').length; // Get number of checked products
71
+
72
+ _disableIf('form[action*="/t/compare_products"] :submit', (checkedProducts < 2)); // Disable form if less than 2 products are checked
73
+ }
74
+
75
+ /*
76
+ * @private
77
+ *
78
+ * _onFormSubmit
79
+ */
80
+ function _onFormSubmit() {
81
+ var taxon_permalink = $('input#taxon_permalink:hidden').val();
82
+ var product_ids = $.map($('input.compare:checkbox:checked'), function(n) { return n.value; }).join('/');
83
+
84
+ window.location = '/t/' + taxon_permalink + '/compare/' + product_ids;
85
+
86
+ return false;
87
+ };
88
+
89
+ /*
90
+ * @private
91
+ *
92
+ * _disableIf
93
+ */
94
+ function _disableIf(query, value) {
95
+ $(query).attr('disabled', value);
96
+ }
97
+
98
+ _init(); // Initialize product comparison
99
+ }
100
+
101
+
102
+ $(document).ready(function() {
103
+ var productComparison = new ProductComparison();
104
+ });
@@ -0,0 +1,8 @@
1
+ table th {
2
+ background: #dddddd;
3
+ padding: 10px;
4
+ text-align: right;
5
+ border: 1px solid #dddddd; }
6
+ table td {
7
+ border: 1px solid #dddddd;
8
+ text-align: center; }
@@ -0,0 +1,9 @@
1
+ table
2
+ th
3
+ :background #DDD
4
+ :padding 10px
5
+ :text-align right
6
+ :border 1px solid #DDD
7
+ td
8
+ :border 1px solid #DDD
9
+ :text-align center
@@ -0,0 +1,32 @@
1
+ # This file is copied to ~/spec when you run 'ruby script/generate rspec'
2
+ # from the project root directory.
3
+ ENV['RAILS_ENV'] ||= 'test'
4
+
5
+ require File.expand_path('../../../config/environment', __FILE__)
6
+ require 'rspec/rails'
7
+
8
+ # Requires supporting files with custom matchers and macros, etc,
9
+ # in ./support/ and its subdirectories.
10
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
11
+
12
+ RSpec.configure do |config|
13
+ # == Mock Framework
14
+ #
15
+ # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
16
+ #
17
+ # config.mock_with :mocha
18
+ # config.mock_with :flexmock
19
+ # config.mock_with :rr
20
+ config.mock_with :rspec
21
+
22
+ config.fixture_path = "#{::Rails.root}/spec/fixtures"
23
+
24
+ # config.include Devise::TestHelpers, :type => :controller
25
+
26
+ # If you're not using ActiveRecord, or you'd prefer not to run each of your
27
+ # examples within a transaction, comment the following line or assign false
28
+ # instead of true.
29
+ config.use_transactional_fixtures = true
30
+ end
31
+
32
+ @configuration ||= AppConfiguration.find_or_create_by_name('Default configuration')
@@ -0,0 +1,26 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path('../lib', __FILE__)
3
+ require 'spree_compare_products/version'
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = 'spree_compare_products'
7
+ s.version = SpreeCompareProducts::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = [ 'Jorge Calás', 'Maik Kempe' ]
10
+ s.email = [ 'calas@qvitta.net', 'dev@breaking-limits.com' ]
11
+ s.homepage = 'https://github.com/mkempe/spree_compare_products'
12
+ s.summary = %q{Provides product comparison with other products within the same taxon.}
13
+ # s.description = %q{}
14
+
15
+ s.rubyforge_project = 'spree_compare_products'
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.require_paths = [ 'lib' ]
21
+ s.requirements << 'none'
22
+
23
+ s.required_ruby_version = '>= 1.8.7'
24
+
25
+ s.add_dependency('spree_core', '>= 0.40.99')
26
+ end
metadata ADDED
@@ -0,0 +1,108 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: spree_compare_products
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 40
8
+ - 90
9
+ version: 0.40.90
10
+ platform: ruby
11
+ authors:
12
+ - "Jorge Cal\xC3\xA1s"
13
+ - Maik Kempe
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-01-20 00:00:00 +03:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: spree_core
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
30
+ - 40
31
+ - 99
32
+ version: 0.40.99
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ description:
36
+ email:
37
+ - calas@qvitta.net
38
+ - dev@breaking-limits.com
39
+ executables: []
40
+
41
+ extensions: []
42
+
43
+ extra_rdoc_files: []
44
+
45
+ files:
46
+ - .gitignore
47
+ - Gemfile
48
+ - README.markdown
49
+ - Rakefile
50
+ - app/controllers/compare_products_controller.rb
51
+ - app/helpers/compare_products_helper.rb
52
+ - app/metal/bookmarkable_comparison.rb
53
+ - app/views/admin/taxonomies/_comparable_field.html.erb
54
+ - app/views/admin/taxonomies/_list.html.erb
55
+ - app/views/compare_products/show.html.erb
56
+ - app/views/shared/_compare_product_field.html.erb
57
+ - app/views/taxons/_comparable_taxon.html.erb
58
+ - app/views/taxons/_taxon_products.html.erb
59
+ - config/locales/en-US.yml
60
+ - config/locales/es.yml
61
+ - config/locales/pl.yml
62
+ - config/locales/ru.yml
63
+ - config/routes.rb
64
+ - lib/spree_compare_products.rb
65
+ - lib/spree_compare_products/comparable_container.rb
66
+ - lib/spree_compare_products/version.rb
67
+ - lib/spree_compare_products_hooks.rb
68
+ - lib/tasks/install.rake
69
+ - lib/tasks/spree_compare_products.rake
70
+ - public/javascripts/product_comparison.js
71
+ - public/stylesheets/compiled/compare_products.css
72
+ - public/stylesheets/sass/compare_products.sass
73
+ - spec/spec_helper.rb
74
+ - spree_compare_products.gemspec
75
+ has_rdoc: true
76
+ homepage: https://github.com/mkempe/spree_compare_products
77
+ licenses: []
78
+
79
+ post_install_message:
80
+ rdoc_options: []
81
+
82
+ require_paths:
83
+ - lib
84
+ required_ruby_version: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ segments:
89
+ - 1
90
+ - 8
91
+ - 7
92
+ version: 1.8.7
93
+ required_rubygems_version: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ segments:
98
+ - 0
99
+ version: "0"
100
+ requirements:
101
+ - none
102
+ rubyforge_project: spree_compare_products
103
+ rubygems_version: 1.3.6
104
+ signing_key:
105
+ specification_version: 3
106
+ summary: Provides product comparison with other products within the same taxon.
107
+ test_files: []
108
+