gallerize-cli 0.2.1 → 0.2.2
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/config/global.yml.example +2 -1
- data/lib/gallerize.rb +50 -38
- data/templates/layout.html.erb +18 -20
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c575c4f467f417894f8475e42c28bf890d089d8c
|
4
|
+
data.tar.gz: 6dc46814ef69a1af69100cf828539f3661ec0b89
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a4be71dd19582f8899e51fa7c16028602bdcd7d90392d62628e14eb892455e066693270b243633722bf7ad5f7b4fc87ebd8f2c82c40455cffa2d465067c9a19e
|
7
|
+
data.tar.gz: 16612b0a0913f925af688472921c98ff1a1c0de1b883370cf340262fb9705b1e50f8d52ee3222dd81ed47206ae0b3a73ae026f1d9ab2ec9d15d491b4cb5f5786
|
data/config/global.yml.example
CHANGED
data/lib/gallerize.rb
CHANGED
@@ -14,15 +14,15 @@ require 'gallerize/source_dir'
|
|
14
14
|
ROOT = File.expand_path( File.join(__FILE__, '../../') )
|
15
15
|
|
16
16
|
class Gallerize
|
17
|
-
|
17
|
+
|
18
18
|
attr_accessor :image_paths
|
19
|
-
|
20
|
-
VERSION='0.2.
|
21
|
-
|
19
|
+
|
20
|
+
VERSION='0.2.2'
|
21
|
+
|
22
22
|
def self.generate
|
23
23
|
new.perform
|
24
24
|
end
|
25
|
-
|
25
|
+
|
26
26
|
def perform
|
27
27
|
if image_paths.blank?
|
28
28
|
puts "no images found in #{source_dir.root} matching #{config.image_types}"
|
@@ -36,8 +36,8 @@ class Gallerize
|
|
36
36
|
ticker = ticker + 1
|
37
37
|
end
|
38
38
|
end
|
39
|
-
end
|
40
|
-
|
39
|
+
end
|
40
|
+
|
41
41
|
def prepare_output_directory
|
42
42
|
# remove html files
|
43
43
|
Dir.glob( output_dir.html_files ){|f| FileUtils.rm(f) }
|
@@ -48,7 +48,7 @@ class Gallerize
|
|
48
48
|
# copy css and js from gem to output
|
49
49
|
output_dir.copy_from_gem_source( 'assets/css', 'assets/js' )
|
50
50
|
end
|
51
|
-
|
51
|
+
|
52
52
|
def generate_images
|
53
53
|
generated = []
|
54
54
|
# generate images and skip any that fail
|
@@ -65,32 +65,33 @@ class Gallerize
|
|
65
65
|
end
|
66
66
|
generated
|
67
67
|
end
|
68
|
-
|
68
|
+
|
69
69
|
def images_to_html(some_images, ticker=0, name=nil)
|
70
70
|
some_images ||= []
|
71
71
|
navigation = (images.count / per_page.to_f).ceil.times.collect{|r| %Q{<a class="#{'active' if r == ticker}" href="images-#{r}.html">#{r}</a>} }.join("\n")
|
72
72
|
navigation = (images.count > some_images.count) ? %Q{<div class="navigation">#{navigation}</div>} : ""
|
73
|
-
|
73
|
+
|
74
74
|
template = ERB.new(File.read(File.join(ROOT, 'templates/layout.html.erb')))
|
75
75
|
html = template.result(binding)
|
76
|
-
|
76
|
+
|
77
77
|
name ||= output_dir.html_file("images-#{ticker}")
|
78
78
|
puts "generate #{name.gsub(output_dir.root, output_dir.relative_root)}"
|
79
79
|
File.write(name, html)
|
80
80
|
end
|
81
|
-
|
81
|
+
|
82
82
|
def images
|
83
83
|
ticker = 0
|
84
|
-
image_paths.collect do |f|
|
84
|
+
image_paths.collect do |f|
|
85
85
|
image_fullsize = generate_fullsize(f)
|
86
86
|
image_thumbnail = generate_thumbnail(f)
|
87
87
|
even = (ticker % 2 == 0) ? 'image-even' : 'image-odd'
|
88
88
|
third = (ticker % 3 == 0) ? 'image-third' : ''
|
89
89
|
fourth = (ticker % 4 == 0) ? 'image-fourth' : ''
|
90
|
+
fancybox_attributes = get_fancybox_attributes(ticker)
|
90
91
|
src = %Q{
|
91
92
|
<div class="image #{even} #{fourth} #{third} image-#{ticker}">
|
92
93
|
<div class="inner-image">
|
93
|
-
<a href="./#{image_fullsize}"
|
94
|
+
<a href="./#{image_fullsize}" #{fancybox_attributes}><img src="./#{image_thumbnail}" alt="" /></a>
|
94
95
|
</div>
|
95
96
|
</div>
|
96
97
|
}
|
@@ -98,12 +99,12 @@ class Gallerize
|
|
98
99
|
src
|
99
100
|
end
|
100
101
|
end
|
101
|
-
|
102
|
+
|
102
103
|
def image_paths
|
103
|
-
@image_paths ||= Dir.glob("*.{#{config.image_types}}").reject{|f|
|
104
|
+
@image_paths ||= Dir.glob("*.{#{config.image_types}}").reject{|f|
|
104
105
|
# reject thumbnails
|
105
106
|
f =~ /thumbnail/
|
106
|
-
}.reject{|f|
|
107
|
+
}.reject{|f|
|
107
108
|
begin
|
108
109
|
EXIFR::JPEG.new(f).date_time
|
109
110
|
false
|
@@ -115,25 +116,25 @@ class Gallerize
|
|
115
116
|
EXIFR::JPEG.new(f).date_time || Time.parse('3000-01-01')
|
116
117
|
}
|
117
118
|
end
|
118
|
-
|
119
|
+
|
119
120
|
def per_page
|
120
121
|
config.per_page
|
121
122
|
end
|
122
|
-
|
123
|
+
|
123
124
|
def generate_fullsize(source_path)
|
124
125
|
image = extract_image_extension(source_path)
|
125
126
|
output_path = File.join(output_dir.images, "#{image[:basename]}.#{image[:extension]}")
|
126
127
|
# generate the thumbnail
|
127
128
|
generate_image(source_path, output_path, config.image_width, config.image_height)
|
128
129
|
end
|
129
|
-
|
130
|
+
|
130
131
|
def generate_thumbnail(source_path)
|
131
132
|
image = extract_image_extension(source_path)
|
132
133
|
output_path = File.join(output_dir.images, "#{image[:basename]}-thumbnail.#{image[:extension]}")
|
133
134
|
# generate the thumbnail
|
134
135
|
generate_image(source_path, output_path, config.thumb_width, config.thumb_height)
|
135
136
|
end
|
136
|
-
|
137
|
+
|
137
138
|
def generate_image(source_path, output_path, width, height)
|
138
139
|
# ensure correct types
|
139
140
|
width, height = width.to_i, height.to_i
|
@@ -143,7 +144,7 @@ class Gallerize
|
|
143
144
|
image = MiniMagick::Image.open(source_path)
|
144
145
|
image.auto_orient
|
145
146
|
# landscape?
|
146
|
-
if image[
|
147
|
+
if image[:width] > image[:height]
|
147
148
|
image.resize "#{width}x#{height}"
|
148
149
|
else
|
149
150
|
image.resize "#{height}x#{width.to_i * 1.25}"
|
@@ -153,26 +154,26 @@ class Gallerize
|
|
153
154
|
# strip the output_dir.root from the path so that the returned path is relative
|
154
155
|
output_path.gsub( output_dir.root, '' )
|
155
156
|
end
|
156
|
-
|
157
|
+
|
157
158
|
def extract_image_extension(image_path)
|
158
159
|
basename = image_path.split(".")
|
159
160
|
extension = basename.pop.downcase
|
160
161
|
basename = basename.join('.')
|
161
162
|
return { basename: basename, extension: extension }
|
162
163
|
end
|
163
|
-
|
164
|
+
|
164
165
|
def title
|
165
|
-
|
166
|
+
File.basename(File.expand_path('.')).titleize
|
166
167
|
end
|
167
|
-
|
168
|
+
|
168
169
|
def output_dir
|
169
170
|
@output_dir ||= OutputDir.new( config.output_name )
|
170
171
|
end
|
171
|
-
|
172
|
+
|
172
173
|
def config
|
173
174
|
@config ||= load_config
|
174
175
|
end
|
175
|
-
|
176
|
+
|
176
177
|
def load_config
|
177
178
|
config = {}
|
178
179
|
# load config from output directory if present
|
@@ -181,18 +182,29 @@ class Gallerize
|
|
181
182
|
global_config = File.join(ROOT,'config/global.yml')
|
182
183
|
FileUtils.cp( "#{global_config}.example", global_config ) unless File.exists?( global_config )
|
183
184
|
# load global_config and merge with source config
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
File.write(source_dir.config, YAML.dump(result)) unless source_dir.config?
|
188
|
-
# onwards
|
189
|
-
OpenStruct.new(result)
|
190
|
-
end
|
191
|
-
|
185
|
+
OpenStruct.new(YAML.load(File.read(global_config)).merge(config))
|
186
|
+
end
|
187
|
+
|
192
188
|
def source_dir
|
193
189
|
@source_dir ||= SourceDir.new
|
194
190
|
end
|
195
|
-
|
191
|
+
|
192
|
+
def get_fancybox_attributes(ticker)
|
193
|
+
attributes = {
|
194
|
+
class: 'fancybox',
|
195
|
+
rel: 'group',
|
196
|
+
}
|
197
|
+
attributes["title"] = "IMG_#{ticker}" if config.titles
|
198
|
+
attributes.map{|k,v| "#{k}='#{v}'"}.join(' ')
|
199
|
+
end
|
200
|
+
|
201
|
+
def fancybox_options
|
202
|
+
options = {}
|
203
|
+
if config.titles
|
204
|
+
options["helpers"] = {title: {type: 'inside',position: 'bottom'}}
|
205
|
+
end
|
206
|
+
JSON.dump(options)
|
207
|
+
end
|
196
208
|
end
|
197
209
|
|
198
|
-
Gallerize.generate
|
210
|
+
Gallerize.generate
|
data/templates/layout.html.erb
CHANGED
@@ -4,58 +4,56 @@
|
|
4
4
|
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
|
5
5
|
<meta name="robots" content="noindex">
|
6
6
|
<meta name="googlebot" content="noindex">
|
7
|
-
|
7
|
+
|
8
8
|
<script type="text/javascript" src="assets/js/jquery-1.10.1.min.js"></script>
|
9
9
|
<script type="text/javascript" src="assets/js/jquery.fancybox.js"></script>
|
10
10
|
<script type="text/javascript" src="assets/js/imagesloaded.js"></script>
|
11
11
|
<script type="text/javascript" src="assets/js/jquery.masonry.js"></script>
|
12
|
-
|
12
|
+
|
13
13
|
<link rel="stylesheet" type="text/css" href="assets/css/styles.css" media="screen" />
|
14
14
|
<link rel="stylesheet" type="text/css" href="assets/css/jquery.fancybox.css" media="screen" />
|
15
15
|
<meta name="viewport" content="width=device-width, user-scalable=no">
|
16
|
-
|
16
|
+
|
17
17
|
<script type="text/javascript">
|
18
18
|
$(document).ready(function(){
|
19
19
|
$('#images-container').imagesLoaded( function() {
|
20
20
|
$('.images').show();
|
21
|
-
|
21
|
+
|
22
22
|
var container = document.querySelector('#images-container');
|
23
23
|
var msnry = new Masonry( container, {
|
24
24
|
|
25
25
|
itemSelector: '.image'
|
26
26
|
});
|
27
27
|
|
28
|
-
$('.fancybox').fancybox();
|
28
|
+
$('.fancybox').fancybox(<%= fancybox_options %>);
|
29
29
|
});
|
30
30
|
});
|
31
31
|
</script>
|
32
|
-
|
32
|
+
|
33
33
|
<% if config.tracking.present? %>
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
34
|
+
<script>
|
35
|
+
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
36
|
+
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
37
|
+
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
38
|
+
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
39
39
|
|
40
|
-
|
41
|
-
|
40
|
+
ga('create', '<%= config.tracking %>', 'auto');
|
41
|
+
ga('send', 'pageview');
|
42
42
|
|
43
|
-
|
43
|
+
</script>
|
44
44
|
<% end %>
|
45
|
-
|
45
|
+
|
46
46
|
<title><%= title %></title>
|
47
47
|
<link rel="stylesheet" href="css/styles.css" />
|
48
48
|
</head>
|
49
49
|
<body>
|
50
|
-
<% if title.present? %>
|
51
50
|
<h1 class="page-title"><%= title %></h1>
|
52
|
-
|
53
|
-
|
51
|
+
|
54
52
|
<%= navigation %>
|
55
53
|
<div id="images-container" class="images">
|
56
54
|
<%= some_images.join("\n") %>
|
57
55
|
</div>
|
58
56
|
<%= navigation %>
|
59
|
-
|
57
|
+
|
60
58
|
</body>
|
61
|
-
</html>
|
59
|
+
</html>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gallerize-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Blake Hilscher
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-09-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mini_magick
|