reviewed_braai 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -44,5 +44,26 @@ module ReviewedBraai
44
44
  super(error)
45
45
  end
46
46
  end
47
+
48
+ class ManufacturerSpecNotFound < TagRenderError
49
+ def initialize(error={})
50
+ error = { error_message: "Manufacturer Spec Not Found" }.merge!(error)
51
+ super(error)
52
+ end
53
+ end
54
+
55
+ class RawScoreNotFound < TagRenderError
56
+ def initialize(error={})
57
+ error = { error_message: "Raw Score Not Found" }.merge!(error)
58
+ super(error)
59
+ end
60
+ end
61
+
62
+ class BrandNotFound < TagRenderError
63
+ def initialize(error={})
64
+ error = { error_message: "Brand Not Found" }.merge!(error)
65
+ super(error)
66
+ end
67
+ end
47
68
  end
48
69
  end
@@ -33,7 +33,7 @@ module ReviewedBraai
33
33
  begin
34
34
  perform
35
35
  rescue => e
36
- rescue_from_error(e)
36
+ rescue_from_error(key)
37
37
  end
38
38
  end
39
39
 
@@ -6,6 +6,20 @@ module ReviewedBraai
6
6
  end
7
7
  end
8
8
 
9
+ class ProductVanity < ReviewedBraai::Handlers::Base
10
+ def perform
11
+ attachment = match_attachment_by_tag(primary_product.attachments, "vanity")
12
+ ::ReviewedBraai::Attachment.new(attachment).render
13
+ end
14
+ end
15
+
16
+ class ProductBrandMethod < ReviewedBraai::Handlers::Base
17
+ def perform
18
+ brand = match_brand
19
+ brand.send(matches[1])
20
+ end
21
+ end
22
+
9
23
  class ProductAttachmentById < ReviewedBraai::Handlers::Base
10
24
  def perform
11
25
  attachment = match_attachment(primary_product.attachments, :id, matches[1])
@@ -20,6 +34,18 @@ module ReviewedBraai
20
34
  end
21
35
  end
22
36
 
37
+ class ProductManufacturerSpec < ReviewedBraai::Handlers::Base
38
+ def perform
39
+ match_manufacturer_spec(matches[1])
40
+ end
41
+ end
42
+
43
+ class ProductRawScore < ReviewedBraai::Handlers::Base
44
+ def perform
45
+ match_raw_score(matches[1])
46
+ end
47
+ end
48
+
23
49
  class ProductsMethod < ReviewedBraai::Handlers::Base
24
50
  def perform
25
51
  product = match_product(:id, matches[1])
@@ -27,6 +53,22 @@ module ReviewedBraai
27
53
  end
28
54
  end
29
55
 
56
+ class ProductsVanity < ReviewedBraai::Handlers::Base
57
+ def perform
58
+ product = match_product(:id, matches[1])
59
+ attachment = match_attachment_by_tag(product.attachments, "vanity")
60
+ ::ReviewedBraai::Attachment.new(attachment).render
61
+ end
62
+ end
63
+
64
+ class ProductsBrandMethod < ReviewedBraai::Handlers::Base
65
+ def perform
66
+ product = match_product(:id, matches[1])
67
+ brand = match_brand(product)
68
+ brand.send(matches[2])
69
+ end
70
+ end
71
+
30
72
  class ProductsAttachmentById < ReviewedBraai::Handlers::Base
31
73
  def perform
32
74
  product = match_product(:id, matches[1])
@@ -42,5 +84,19 @@ module ReviewedBraai
42
84
  ::ReviewedBraai::Attachment.new(attachment).render
43
85
  end
44
86
  end
87
+
88
+ class ProductsManufacturerSpec < ReviewedBraai::Handlers::Base
89
+ def perform
90
+ product = match_product(:id, matches[1])
91
+ match_manufacturer_spec(product, matches[2])
92
+ end
93
+ end
94
+
95
+ class ProductsRawScore < ReviewedBraai::Handlers::Base
96
+ def perform
97
+ product = match_product(:id, matches[1])
98
+ match_raw_score(product, matches[2])
99
+ end
100
+ end
45
101
  end
46
102
  end
@@ -2,10 +2,19 @@ module ReviewedBraai
2
2
  module Helpers
3
3
 
4
4
  def primary_product
5
- unless product = source.primary_product
5
+ if product = source.primary_product
6
+ product
7
+ else
6
8
  raise ::ReviewedBraai::TagRenderError::ProductNotFound.new(default_args)
7
9
  end
8
- return product
10
+ end
11
+
12
+ def match_brand(product = source.primary_product)
13
+ if brand = product.brand
14
+ brand
15
+ else
16
+ raise ::ReviewedBraai::TagRenderError::BrandNotFound.new(default_args)
17
+ end
9
18
  end
10
19
 
11
20
  def match_attachment(attachments = source.attachments, attr, match)
@@ -16,6 +25,30 @@ module ReviewedBraai
16
25
  end
17
26
  end
18
27
 
28
+ def match_attachment_by_tag(attachments = source.attachments, tag)
29
+ if attachment = attachments.find { |a| a.tags.include?(tag) }
30
+ attachment
31
+ else
32
+ raise ::ReviewedBraai::TagRenderError::AttachmentNotFound.new(default_args)
33
+ end
34
+ end
35
+
36
+ def match_manufacturer_spec(product = source.primary_product, name)
37
+ if spec = product.manufacturer_specs[name]
38
+ spec
39
+ else
40
+ raise ::ReviewedBraai::TagRenderError::ManufacturerSpecNotFound.new(default_args)
41
+ end
42
+ end
43
+
44
+ def match_raw_score(product = source.primary_product, name)
45
+ if score = product.raw_scores[name] && product.raw_scores[name]["value"]
46
+ return score
47
+ else
48
+ raise ::ReviewedBraai::TagRenderError::RawScoreNotFound.new(default_args)
49
+ end
50
+ end
51
+
19
52
  def match_product(products = source.products, attr, match)
20
53
  if product = products.find { |a| a.send(attr) == match }
21
54
  product
@@ -1,12 +1,20 @@
1
1
  module ReviewedBraai
2
2
  module Matchers
3
3
  module Product
4
+ Braai::Template.map(/({{\s*product\.vanity\s*}})/i, ReviewedBraai::Handlers::ProductVanity)
4
5
  Braai::Template.map(/({{\s*product\.(\w+)\s*}})/i, ReviewedBraai::Handlers::ProductMethod)
6
+ Braai::Template.map(/({{\s*product\.brand\.(\w+)\s*}})/i, ReviewedBraai::Handlers::ProductBrandMethod)
5
7
  Braai::Template.map(/({{\s*product.attachments\((\w+)\)\s*}})/i, ReviewedBraai::Handlers::ProductAttachmentById)
6
8
  Braai::Template.map(/({{\s*product.attachments\[['|"]([^\]\}]+)['|"]\]\s*}})/i, ReviewedBraai::Handlers::ProductAttachmentByName)
9
+ Braai::Template.map(/({{\s*product.manufacturer_specs\[['|"]([^\]\}]+)['|"]\]\s*}})/i, ReviewedBraai::Handlers::ProductManufacturerSpec)
10
+ Braai::Template.map(/({{\s*product.raw_scores\[['|"]([^\]\}]+)['|"]\]\s*}})/i, ReviewedBraai::Handlers::ProductRawScore)
11
+ Braai::Template.map(/({{\s*products\((\w+)\)\.vanity\s*}})/i, ReviewedBraai::Handlers::ProductsVanity)
7
12
  Braai::Template.map(/({{\s*products\((\w+)\)\.(\w+)\s*}})/i, ReviewedBraai::Handlers::ProductsMethod)
13
+ Braai::Template.map(/({{\s*products\((\w+)\)\.brand\.(\w+)\s*}})/i, ReviewedBraai::Handlers::ProductsBrandMethod)
8
14
  Braai::Template.map(/({{\s*products\((\w+)\)\.attachments\((\w+)\)\s*}})/i, ReviewedBraai::Handlers::ProductsAttachmentById)
9
15
  Braai::Template.map(/({{\s*products\((\w+)\)\.attachments\[['|"]([^\]\}]+)['|"]\]\s*}})/i, ReviewedBraai::Handlers::ProductsAttachmentByName)
16
+ Braai::Template.map(/({{\s*products\((\w+)\)\.manufacturer_specs\[['|"]([^\]\}]+)['|"]\]\s*}})/i, ReviewedBraai::Handlers::ProductsManufacturerSpec)
17
+ Braai::Template.map(/({{\s*products\((\w+)\)\.raw_scores\[['|"]([^\]\}]+)['|"]\]\s*}})/i, ReviewedBraai::Handlers::ProductsRawScore)
10
18
  end
11
19
  end
12
20
  end
@@ -1,3 +1,3 @@
1
1
  module ReviewedBraai
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: reviewed_braai
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: