redis_snippets 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/app/helpers/redis_snippets/snippets_helper.rb +3 -1
- data/app/presenters/snippet_presenter.rb +7 -27
- data/app/services/snippet_finder_service.rb +22 -0
- data/lib/redis_snippets/version.rb +1 -1
- data/spec/dummy/.ruby-version +1 -1
- data/spec/dummy/config/environments/test.rb +1 -4
- data/spec/{app/presenters → presenters}/snippet_presenter_spec.rb +3 -16
- data/spec/{app/presenters → presenters}/snippet_presenter_transform_spec.rb +4 -4
- data/spec/services/snippet_finder_service_spec.rb +35 -0
- metadata +17 -14
- /data/spec/{app/helpers → helpers}/redis_snippets/snippets_helper_spec.rb +0 -0
- /data/spec/{app/services → services}/snippet_store_service_spec.rb +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 38d19f802623e08cc2333422077396ff73fdec011ec9bdfdb1b302abd3e7c096
|
|
4
|
+
data.tar.gz: e0d7c8e3665e5b631fa5c3a0544cf1933ea318ee0e9633e5e78d93885fa5d6c8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 243b2a8c9756060110b4b912d85560a5b8120b2839c6833ee19f0a0721af80272ab1f8338286cac0c81dff0283c0bb063bc33d51d9bf40a818cb52e7c3fd0737
|
|
7
|
+
data.tar.gz: 0e6e2aa4a13adb008dca059bc5c0397d3ae6cfadd2879953637822bbda938c73af0cf2a9e0f8326c68d7953c97be53b6c2b0cd3a3ab571ef27a5d65f8689faeb
|
data/Gemfile
CHANGED
|
@@ -8,7 +8,9 @@ module RedisSnippets
|
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
def snippet(key, classes = nil)
|
|
11
|
-
|
|
11
|
+
snippet = SnippetFinderService.new(key: key).call
|
|
12
|
+
return unless snippet
|
|
13
|
+
SnippetPresenter.new(view: self, key: key, snippet: snippet, classes: classes).call
|
|
12
14
|
end
|
|
13
15
|
end
|
|
14
16
|
end
|
|
@@ -1,14 +1,10 @@
|
|
|
1
|
-
|
|
2
1
|
class SnippetPresenter
|
|
3
2
|
include RedisSnippets::Util
|
|
4
3
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
delegate :random_snippet, to: "self.class"
|
|
8
|
-
|
|
9
|
-
def initialize(view:, key:, classes: nil)
|
|
4
|
+
def initialize(view:, key:, snippet:, classes: nil)
|
|
10
5
|
@view = view
|
|
11
6
|
@key = key
|
|
7
|
+
@snippet = snippet
|
|
12
8
|
@classes = classes
|
|
13
9
|
end
|
|
14
10
|
|
|
@@ -20,16 +16,9 @@ class SnippetPresenter
|
|
|
20
16
|
protected
|
|
21
17
|
|
|
22
18
|
def prepare_snippet
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
return unless content = SnippetStoreService.send(snippet_key(@key))
|
|
19
|
+
return unless transform_class&.transforms?(key: @key)
|
|
26
20
|
|
|
27
|
-
|
|
28
|
-
@snippet = random_snippet(content)
|
|
29
|
-
|
|
30
|
-
if transform_class && transform_class.transforms?(key: @key)
|
|
31
|
-
@snippet = transform_class.new(content: @snippet, key: @key).transform
|
|
32
|
-
end
|
|
21
|
+
@snippet = transform_class.new(content: @snippet, key: @key).transform
|
|
33
22
|
end
|
|
34
23
|
|
|
35
24
|
def snippet_class_list
|
|
@@ -42,11 +31,9 @@ class SnippetPresenter
|
|
|
42
31
|
|
|
43
32
|
def render
|
|
44
33
|
# If snippet is empty we avoid wrapping it in the div.
|
|
45
|
-
if @snippet.blank?
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
@view.content_tag(:div, @snippet.html_safe, class: snippet_class_list)
|
|
49
|
-
end
|
|
34
|
+
return "" if @snippet.blank?
|
|
35
|
+
|
|
36
|
+
@view.content_tag(:div, @snippet.html_safe, class: snippet_class_list)
|
|
50
37
|
end
|
|
51
38
|
|
|
52
39
|
def transform_class
|
|
@@ -57,11 +44,4 @@ class SnippetPresenter
|
|
|
57
44
|
RedisSnippets::Engine.config.redis_snippets[:transform] and RedisSnippets::Engine.config.redis_snippets[:transform].constantize
|
|
58
45
|
end
|
|
59
46
|
end
|
|
60
|
-
|
|
61
|
-
class << self
|
|
62
|
-
def random_snippet(content)
|
|
63
|
-
snippets = content.split("#{SECTION_DELIMITER}").map { |section| section.gsub(/^\n/, "") }
|
|
64
|
-
snippets[rand(snippets.length)]
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
47
|
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
class SnippetFinderService
|
|
2
|
+
include RedisSnippets::Util
|
|
3
|
+
|
|
4
|
+
SECTION_DELIMITER = "[section]"
|
|
5
|
+
|
|
6
|
+
def initialize(key:)
|
|
7
|
+
@key = key
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def call
|
|
11
|
+
SnippetStoreService.send(snippet_key(@key))
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
protected
|
|
15
|
+
|
|
16
|
+
class << self
|
|
17
|
+
def random_snippet(content)
|
|
18
|
+
snippets = content.split("#{SECTION_DELIMITER}").map { |section| section.gsub(/^\n/, "") }
|
|
19
|
+
snippets[rand(snippets.length)]
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
data/spec/dummy/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
3.1.2
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
# test suite. You never need to work with it otherwise. Remember that
|
|
3
|
-
# your test database is "scratch space" for the test suite and is wiped
|
|
4
|
-
# and recreated between test runs. Don't rely on the data there!
|
|
1
|
+
require "active_support/core_ext/integer/time"
|
|
5
2
|
|
|
6
3
|
Rails.application.configure do
|
|
7
4
|
# Settings specified here will take precedence over those in config/application.rb.
|
|
@@ -10,9 +10,9 @@ HEREDOC
|
|
|
10
10
|
}
|
|
11
11
|
let(:view) { ActionController::Base.new.view_context }
|
|
12
12
|
|
|
13
|
-
subject(:presenter) { described_class.new(view: view, key: :advert_header) }
|
|
14
|
-
subject(:presenter_with_string_class) { described_class.new(view: view, key: :advert_header, classes: "advert-responsive") }
|
|
15
|
-
subject(:presenter_with_array_classes) { described_class.new(view: view, key: :advert_header, classes: ["advert-responsive", "p-4"]) }
|
|
13
|
+
subject(:presenter) { described_class.new(view: view, key: :advert_header, snippet: code) }
|
|
14
|
+
subject(:presenter_with_string_class) { described_class.new(view: view, key: :advert_header, snippet: code, classes: "advert-responsive") }
|
|
15
|
+
subject(:presenter_with_array_classes) { described_class.new(view: view, key: :advert_header, snippet: code, classes: ["advert-responsive", "p-4"]) }
|
|
16
16
|
|
|
17
17
|
describe "#call" do
|
|
18
18
|
before do
|
|
@@ -37,17 +37,4 @@ HEREDOC
|
|
|
37
37
|
end
|
|
38
38
|
end
|
|
39
39
|
end
|
|
40
|
-
|
|
41
|
-
describe ".random_snippet" do
|
|
42
|
-
before do
|
|
43
|
-
SnippetStoreService.update(snippet_key(:advert_header), multiple_adverts)
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
it "returns one of the sections" do
|
|
47
|
-
allow(SnippetPresenter).to receive(:rand).and_return(0)
|
|
48
|
-
expect(described_class.random_snippet(multiple_adverts)).to eq("<p>Buy this from Amazon.</p>\n")
|
|
49
|
-
allow(SnippetPresenter).to receive(:rand).and_return(1)
|
|
50
|
-
expect(described_class.random_snippet(multiple_adverts)).to eq("<p>Buy this from Apple.</p>\n")
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
40
|
end
|
|
@@ -23,8 +23,8 @@ describe SnippetPresenter do
|
|
|
23
23
|
let(:code) { "<p>Buy this from Amazon.</p>" }
|
|
24
24
|
let(:view) { ActionController::Base.new.view_context }
|
|
25
25
|
|
|
26
|
-
subject(:
|
|
27
|
-
subject(:
|
|
26
|
+
subject(:header_finder) { described_class.new(view: view, key: :advert_header, snippet: code) }
|
|
27
|
+
subject(:footer_finder) { described_class.new(view: view, key: :advert_footer, snippet: code) }
|
|
28
28
|
|
|
29
29
|
describe "#call" do
|
|
30
30
|
before do
|
|
@@ -34,11 +34,11 @@ describe SnippetPresenter do
|
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
it "transforms the content" do
|
|
37
|
-
expect(
|
|
37
|
+
expect(header_finder.call).to eq("<div class=\"snippet advert_header\"><p>Buy this from Etsy.</p></div>")
|
|
38
38
|
end
|
|
39
39
|
|
|
40
40
|
it "does not transform the content if key is not allowed" do
|
|
41
|
-
expect(
|
|
41
|
+
expect(footer_finder.call).to eq("<div class=\"snippet advert_footer\"><p>Buy this from Amazon.</p></div>")
|
|
42
42
|
end
|
|
43
43
|
end
|
|
44
44
|
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
require 'rails_helper'
|
|
2
|
+
|
|
3
|
+
describe SnippetFinderService do
|
|
4
|
+
let(:code) { "<p>Buy this from Amazon.</p>" }
|
|
5
|
+
let(:multiple_adverts) { <<-HEREDOC
|
|
6
|
+
<p>Buy this from Amazon.</p>
|
|
7
|
+
[section]
|
|
8
|
+
<p>Buy this from Apple.</p>
|
|
9
|
+
HEREDOC
|
|
10
|
+
}
|
|
11
|
+
let(:view) { ActionController::Base.new.view_context }
|
|
12
|
+
|
|
13
|
+
subject { described_class.new(key: :advert_header).call }
|
|
14
|
+
|
|
15
|
+
describe "#call" do
|
|
16
|
+
before do
|
|
17
|
+
SnippetStoreService.update(snippet_key(:advert_header), code)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "finds the content" do
|
|
21
|
+
expect(subject).to eq(code)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
describe ".random_snippet" do
|
|
26
|
+
before do
|
|
27
|
+
SnippetStoreService.update(snippet_key(:advert_header), multiple_adverts)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it "returns one of the sections" do
|
|
31
|
+
expect(described_class).to receive(:rand).and_return(0)
|
|
32
|
+
expect(described_class.random_snippet(multiple_adverts)).to eq("<p>Buy this from Amazon.</p>\n")
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: redis_snippets
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.
|
|
4
|
+
version: 1.0.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Martin Moen Wulffeld
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2023-03-07 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -97,6 +97,7 @@ files:
|
|
|
97
97
|
- app/controllers/redis_snippets/snippets_controller.rb
|
|
98
98
|
- app/helpers/redis_snippets/snippets_helper.rb
|
|
99
99
|
- app/presenters/snippet_presenter.rb
|
|
100
|
+
- app/services/snippet_finder_service.rb
|
|
100
101
|
- app/services/snippet_store_service.rb
|
|
101
102
|
- app/views/redis_snippets/snippets/show.html.erb
|
|
102
103
|
- config/routes.rb
|
|
@@ -106,10 +107,6 @@ files:
|
|
|
106
107
|
- lib/redis_snippets/util.rb
|
|
107
108
|
- lib/redis_snippets/version.rb
|
|
108
109
|
- redis_snippets.gemspec
|
|
109
|
-
- spec/app/helpers/redis_snippets/snippets_helper_spec.rb
|
|
110
|
-
- spec/app/presenters/snippet_presenter_spec.rb
|
|
111
|
-
- spec/app/presenters/snippet_presenter_transform_spec.rb
|
|
112
|
-
- spec/app/services/snippet_store_service_spec.rb
|
|
113
110
|
- spec/dummy/.ruby-version
|
|
114
111
|
- spec/dummy/Rakefile
|
|
115
112
|
- spec/dummy/app/assets/config/manifest.js
|
|
@@ -141,14 +138,19 @@ files:
|
|
|
141
138
|
- spec/dummy/log/.keep
|
|
142
139
|
- spec/dummy/tmp/.keep
|
|
143
140
|
- spec/dummy/tmp/development_secret.txt
|
|
141
|
+
- spec/helpers/redis_snippets/snippets_helper_spec.rb
|
|
142
|
+
- spec/presenters/snippet_presenter_spec.rb
|
|
143
|
+
- spec/presenters/snippet_presenter_transform_spec.rb
|
|
144
144
|
- spec/rails_helper.rb
|
|
145
|
+
- spec/services/snippet_finder_service_spec.rb
|
|
146
|
+
- spec/services/snippet_store_service_spec.rb
|
|
145
147
|
- spec/spec_helper.rb
|
|
146
148
|
- spec/support/simplecov_setup.rb
|
|
147
149
|
homepage: https://github.com/wulffeld/redis_snippets
|
|
148
150
|
licenses:
|
|
149
151
|
- MIT
|
|
150
152
|
metadata: {}
|
|
151
|
-
post_install_message:
|
|
153
|
+
post_install_message:
|
|
152
154
|
rdoc_options: []
|
|
153
155
|
require_paths:
|
|
154
156
|
- lib
|
|
@@ -163,15 +165,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
163
165
|
- !ruby/object:Gem::Version
|
|
164
166
|
version: '0'
|
|
165
167
|
requirements: []
|
|
166
|
-
rubygems_version: 3.
|
|
167
|
-
signing_key:
|
|
168
|
+
rubygems_version: 3.3.7
|
|
169
|
+
signing_key:
|
|
168
170
|
specification_version: 4
|
|
169
171
|
summary: Storing snippets of HTML, text, etc. in Redis for use in views.
|
|
170
172
|
test_files:
|
|
171
|
-
- spec/app/helpers/redis_snippets/snippets_helper_spec.rb
|
|
172
|
-
- spec/app/presenters/snippet_presenter_spec.rb
|
|
173
|
-
- spec/app/presenters/snippet_presenter_transform_spec.rb
|
|
174
|
-
- spec/app/services/snippet_store_service_spec.rb
|
|
175
173
|
- spec/dummy/.ruby-version
|
|
176
174
|
- spec/dummy/Rakefile
|
|
177
175
|
- spec/dummy/app/assets/config/manifest.js
|
|
@@ -203,6 +201,11 @@ test_files:
|
|
|
203
201
|
- spec/dummy/log/.keep
|
|
204
202
|
- spec/dummy/tmp/.keep
|
|
205
203
|
- spec/dummy/tmp/development_secret.txt
|
|
204
|
+
- spec/helpers/redis_snippets/snippets_helper_spec.rb
|
|
205
|
+
- spec/presenters/snippet_presenter_spec.rb
|
|
206
|
+
- spec/presenters/snippet_presenter_transform_spec.rb
|
|
206
207
|
- spec/rails_helper.rb
|
|
208
|
+
- spec/services/snippet_finder_service_spec.rb
|
|
209
|
+
- spec/services/snippet_store_service_spec.rb
|
|
207
210
|
- spec/spec_helper.rb
|
|
208
211
|
- spec/support/simplecov_setup.rb
|
|
File without changes
|
|
File without changes
|