utopia-gallery 2.0.3 → 2.1.0
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/lib/utopia/gallery/cache.rb +12 -5
- data/lib/utopia/gallery/process.rb +45 -2
- data/lib/utopia/gallery/tags.rb +1 -1
- data/lib/utopia/gallery/version.rb +1 -1
- data/spec/utopia/gallery/site/pages/sample_images/{IMG_3344.jpg → IMG 3344.jpg} +0 -0
- data/spec/utopia/gallery/site/pages/sample_images/gallery.yaml +8 -0
- data/spec/utopia/gallery/site_spec.rb +4 -4
- data/utopia-gallery.gemspec +2 -1
- metadata +24 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2d3002edbbeffeaf8c5f2e98f47ec631d8f9fe7d
|
4
|
+
data.tar.gz: fb90b5bdfa8ee4d95223cf418f534179641f8198
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 663e13e7e9359179e0efe47227ee747b7dffa569fa5fad0b01fdaafdd151bc194717c2711ee09d597cb4987d3636082838e6a1f01525b0405f59b610e2c4c744
|
7
|
+
data.tar.gz: 619821213836725b794e66b847ace542a1eb11cdf9846d4cb28837f4c372a6afdec5da6b06941a05e8997f629bdd700d716384cdfb97520e6362ca382bf253f3
|
data/lib/utopia/gallery/cache.rb
CHANGED
@@ -18,6 +18,8 @@
|
|
18
18
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
19
|
# THE SOFTWARE.
|
20
20
|
|
21
|
+
require 'trenni/uri'
|
22
|
+
|
21
23
|
module Utopia
|
22
24
|
module Gallery
|
23
25
|
class Cache
|
@@ -37,10 +39,6 @@ module Utopia
|
|
37
39
|
attr :processes
|
38
40
|
attr :media
|
39
41
|
|
40
|
-
def to_s
|
41
|
-
@media.path
|
42
|
-
end
|
43
|
-
|
44
42
|
def input_path
|
45
43
|
File.join(@media_root, @media.path)
|
46
44
|
end
|
@@ -76,10 +74,19 @@ module Utopia
|
|
76
74
|
return self
|
77
75
|
end
|
78
76
|
|
77
|
+
# Original path.
|
78
|
+
def to_s
|
79
|
+
original.to_s
|
80
|
+
end
|
81
|
+
|
82
|
+
def original
|
83
|
+
Trenni::URI(@media.path)
|
84
|
+
end
|
85
|
+
|
79
86
|
# This allows dynamic path lookup based on process name, e.g. `cache.small`.
|
80
87
|
def method_missing(name, *args)
|
81
88
|
if process = @processes[name]
|
82
|
-
return source_path_for(process)
|
89
|
+
return Trenni::URI(source_path_for(process))
|
83
90
|
else
|
84
91
|
super
|
85
92
|
end
|
@@ -32,6 +32,7 @@ module Utopia
|
|
32
32
|
|
33
33
|
attr :name
|
34
34
|
|
35
|
+
# The relative path for the output generated by this process, given a specific input media:
|
35
36
|
def relative_path(media)
|
36
37
|
source_path = media.path
|
37
38
|
|
@@ -73,6 +74,28 @@ module Utopia
|
|
73
74
|
attr :method
|
74
75
|
attr :options
|
75
76
|
|
77
|
+
def relative_path(media)
|
78
|
+
path = super
|
79
|
+
|
80
|
+
if path.end_with?(".pdf")
|
81
|
+
path += ".png"
|
82
|
+
end
|
83
|
+
|
84
|
+
return path
|
85
|
+
end
|
86
|
+
|
87
|
+
def generate_output(resizer, output_path)
|
88
|
+
if output_image = resizer.send(@method, @size)
|
89
|
+
output_image.write_to_file output_path, **@options
|
90
|
+
else
|
91
|
+
Process.link(resizer.input_path, output_path)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def resizer_for(media_path)
|
96
|
+
Vips::Thumbnail::Resizer.new(media_path)
|
97
|
+
end
|
98
|
+
|
76
99
|
def call(cache, locals)
|
77
100
|
output_path = cache.output_path_for(self)
|
78
101
|
media = cache.media
|
@@ -80,16 +103,36 @@ module Utopia
|
|
80
103
|
|
81
104
|
return if Process.fresh?(media_path, output_path)
|
82
105
|
|
83
|
-
resizer = locals[:resizer] ||=
|
106
|
+
resizer = locals[:resizer] ||= resizer_for(media_path)
|
84
107
|
|
85
108
|
FileUtils.mkdir_p(File.dirname(output_path))
|
86
109
|
|
110
|
+
generate_output(resizer, output_path)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
class ResizeVector < ResizeImage
|
115
|
+
def initialize(*args, extension: ".png", scale: 1, **options)
|
116
|
+
super(*args, **options)
|
117
|
+
@extension = extension
|
118
|
+
@scale = scale
|
119
|
+
end
|
120
|
+
|
121
|
+
def relative_path(media)
|
122
|
+
super + @extension
|
123
|
+
end
|
124
|
+
|
125
|
+
def generate_output(resizer, output_path)
|
87
126
|
if output_image = resizer.send(@method, @size)
|
88
127
|
output_image.write_to_file output_path, **@options
|
89
128
|
else
|
90
|
-
|
129
|
+
resizer.input_image.write_to_file output_path, **@options
|
91
130
|
end
|
92
131
|
end
|
132
|
+
|
133
|
+
def resizer_for(media_path)
|
134
|
+
Vips::Thumbnail::Resizer.new(media_path, scale: @scale)
|
135
|
+
end
|
93
136
|
end
|
94
137
|
end
|
95
138
|
end
|
data/lib/utopia/gallery/tags.rb
CHANGED
@@ -68,7 +68,7 @@ module Utopia
|
|
68
68
|
media_tag_name = state[:tag] || 'img'
|
69
69
|
|
70
70
|
document.tag('div', class: 'gallery') do
|
71
|
-
container.each do |media|
|
71
|
+
container.sort.each do |media|
|
72
72
|
cache = Cache.new(@media_root, @cache_root, @cache_path, media, @processes).update
|
73
73
|
document.tag(media_tag_name, src: cache, alt: media)
|
74
74
|
end
|
File without changes
|
@@ -35,7 +35,7 @@ describe Utopia::Gallery do
|
|
35
35
|
it "should generate gallery of sample images" do
|
36
36
|
get "/index"
|
37
37
|
|
38
|
-
expect(last_response.body).to be == '<div class="gallery"><img src="/sample_images/IMG_3340.jpg" alt="IMG_3340"/><img src="/sample_images/IMG_3341.jpg" alt="IMG_3341"/><img src="/sample_images/
|
38
|
+
expect(last_response.body).to be == '<div class="gallery"><img src="/sample_images/IMG_3340.jpg" alt="IMG_3340"/><img src="/sample_images/IMG_3341.jpg" alt="IMG_3341"/><img src="/sample_images/IMG+3344.jpg" alt="IMG 3344"/><img src="/sample_images/IMG_3351.jpg" alt="IMG_3351"/></div>'
|
39
39
|
end
|
40
40
|
|
41
41
|
it "should generate a gallery using the specified tag" do
|
@@ -54,10 +54,10 @@ describe Utopia::Gallery do
|
|
54
54
|
<div class="caption">IMG_3341</div>
|
55
55
|
</span>
|
56
56
|
<span class="photo">
|
57
|
-
<a rel="photos" class="thumbnail" href="/_gallery/sample_images/large/
|
58
|
-
<img src="/_gallery/sample_images/small/
|
57
|
+
<a rel="photos" class="thumbnail" href="/_gallery/sample_images/large/IMG+3344.jpg" title="IMG 3344">
|
58
|
+
<img src="/_gallery/sample_images/small/IMG+3344.jpg" alt="IMG 3344"/>
|
59
59
|
</a>
|
60
|
-
<div class="caption">
|
60
|
+
<div class="caption">IMG 3344</div>
|
61
61
|
</span>
|
62
62
|
<span class="photo">
|
63
63
|
<a rel="photos" class="thumbnail" href="/_gallery/sample_images/large/IMG_3351.jpg" title="IMG_3351">
|
data/utopia-gallery.gemspec
CHANGED
@@ -17,7 +17,8 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.require_paths = ["lib"]
|
18
18
|
|
19
19
|
spec.add_dependency "utopia", "~> 2.0"
|
20
|
-
spec.add_dependency "
|
20
|
+
spec.add_dependency "trenni", "~> 3.1"
|
21
|
+
spec.add_dependency "vips-thumbnail", "~> 1.1"
|
21
22
|
|
22
23
|
spec.add_development_dependency "bundler", "~> 1.4"
|
23
24
|
spec.add_development_dependency "rake", "~> 10.5"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: utopia-gallery
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Williams
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-03-
|
11
|
+
date: 2017-03-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: utopia
|
@@ -24,20 +24,34 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: trenni
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.1'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.1'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: vips-thumbnail
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
30
44
|
requirements:
|
31
|
-
- - "
|
45
|
+
- - "~>"
|
32
46
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
47
|
+
version: '1.1'
|
34
48
|
type: :runtime
|
35
49
|
prerelease: false
|
36
50
|
version_requirements: !ruby/object:Gem::Requirement
|
37
51
|
requirements:
|
38
|
-
- - "
|
52
|
+
- - "~>"
|
39
53
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
54
|
+
version: '1.1'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: bundler
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -107,10 +121,11 @@ files:
|
|
107
121
|
- spec/utopia/gallery/site/pages/_photo.xnode
|
108
122
|
- spec/utopia/gallery/site/pages/gallery.xnode
|
109
123
|
- spec/utopia/gallery/site/pages/index.xnode
|
124
|
+
- spec/utopia/gallery/site/pages/sample_images/IMG 3344.jpg
|
110
125
|
- spec/utopia/gallery/site/pages/sample_images/IMG_3340.jpg
|
111
126
|
- spec/utopia/gallery/site/pages/sample_images/IMG_3341.jpg
|
112
|
-
- spec/utopia/gallery/site/pages/sample_images/IMG_3344.jpg
|
113
127
|
- spec/utopia/gallery/site/pages/sample_images/IMG_3351.jpg
|
128
|
+
- spec/utopia/gallery/site/pages/sample_images/gallery.yaml
|
114
129
|
- spec/utopia/gallery/site_spec.rb
|
115
130
|
- spec/utopia/gallery/site_spec.ru
|
116
131
|
- utopia-gallery.gemspec
|
@@ -145,9 +160,10 @@ test_files:
|
|
145
160
|
- spec/utopia/gallery/site/pages/_photo.xnode
|
146
161
|
- spec/utopia/gallery/site/pages/gallery.xnode
|
147
162
|
- spec/utopia/gallery/site/pages/index.xnode
|
163
|
+
- spec/utopia/gallery/site/pages/sample_images/IMG 3344.jpg
|
148
164
|
- spec/utopia/gallery/site/pages/sample_images/IMG_3340.jpg
|
149
165
|
- spec/utopia/gallery/site/pages/sample_images/IMG_3341.jpg
|
150
|
-
- spec/utopia/gallery/site/pages/sample_images/IMG_3344.jpg
|
151
166
|
- spec/utopia/gallery/site/pages/sample_images/IMG_3351.jpg
|
167
|
+
- spec/utopia/gallery/site/pages/sample_images/gallery.yaml
|
152
168
|
- spec/utopia/gallery/site_spec.rb
|
153
169
|
- spec/utopia/gallery/site_spec.ru
|