gallerize 0.1 → 0.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.
@@ -12,4 +12,4 @@ end
12
12
 
13
13
  Trollop::die :output, "is required" if options[:output].nil?
14
14
 
15
- Gallerizer.new(options[:name], options[:output], options[:theme]).generate
15
+ Gallerizer.new(options[:name], options[:output], options[:theme]).gallerize
@@ -3,6 +3,7 @@ require 'fileutils'
3
3
  require 'rubygems'
4
4
  require 'rmagick'
5
5
  require 'natural_sort_kernel'
6
+ require File.join(File.dirname(__FILE__), 'image')
6
7
 
7
8
  class Gallerizer
8
9
  include FileUtils
@@ -12,34 +13,8 @@ class Gallerizer
12
13
  @output_path = output_path
13
14
  @theme_path = File.join(File.dirname(__FILE__), "..", "themes", theme)
14
15
  end
15
-
16
- def resize(image, size, square = false)
17
- thumb_file_path = File.join(@output_path, "thumbs", File.basename(image, ".jpg") << "_#{size}.jpg")
18
16
 
19
- unless File.exists?(thumb_file_path)
20
- file = Magick::Image::read(image).first
21
-
22
- if square
23
- file.resize_to_fill!(size, size)
24
- else
25
- file.resize_to_fit!(size, size)
26
- end
27
-
28
- file.write(thumb_file_path){ self.quality = (size <= 250 ? 70 : 95) }
29
- end
30
-
31
- File.basename(thumb_file_path)
32
- end
33
-
34
- def next_image(i)
35
- @images.size - 1 != i ? @images[i + 1] : nil
36
- end
37
-
38
- def previous_image(i)
39
- i != 0 ? @images[i - 1] : nil
40
- end
41
-
42
- def generate
17
+ def gallerize
43
18
  # Create necessary output paths
44
19
  mkdir_p([@output_path, File.join(@output_path, "thumbs"), File.join(@output_path, "show"), File.join(@output_path, "resources")])
45
20
 
@@ -47,8 +22,9 @@ class Gallerizer
47
22
  cp_r(File.join(@theme_path, "resources/."), File.join(@output_path, "resources"))
48
23
 
49
24
  # Gather images
50
- @images = Dir["*.jpg"].natural_sort
51
-
25
+ image_paths = Dir["*.jpg"].natural_sort
26
+ @images = image_paths.collect { |image_path| Image.new(image_paths.index(image_path), File.expand_path(image_path), @output_path) }
27
+
52
28
  # Load templates
53
29
  index_template = ERB.new(File.open(File.join(@theme_path, "index.html.erb")) { |f| f.read })
54
30
  show_template = ERB.new(File.open(File.join(@theme_path, "show.html.erb")) { |f| f.read })
@@ -57,8 +33,11 @@ class Gallerizer
57
33
  File.open(File.join(@output_path, "index.html"), "w") { |f| f.write(index_template.result(binding)) }
58
34
 
59
35
  # Create show pages
60
- @images.each_with_index do |image, i|
61
- File.open(File.join(@output_path, "show", "#{i}.html"), "w") { |f| f.write(show_template.result(binding)) }
36
+ @images.each do |image|
37
+ previous_image = (image.id != 0 ? @images[image.id - 1] : nil)
38
+ next_image = (@images.size - 1 != image.id ? @images[image.id + 1] : nil)
39
+
40
+ File.open(File.join(@output_path, "show", "#{image.id}.html"), "w") { |f| f.write(show_template.result(binding)) }
62
41
  end
63
42
  end
64
43
  end
@@ -0,0 +1,38 @@
1
+ class Image
2
+ attr_reader :id, :path
3
+
4
+ def initialize(id, path, output_path)
5
+ @id = id
6
+ @path = path
7
+ @output_path = output_path
8
+ end
9
+
10
+ def basename
11
+ File.basename(@path)
12
+ end
13
+
14
+ def resize(size, square = false)
15
+ thumb_file_path = File.join(@output_path, "thumbs", File.basename(@path, ".jpg") << "_#{size}.jpg")
16
+
17
+ unless File.exists?(thumb_file_path)
18
+ file = Magick::Image::read(@path).first
19
+
20
+ if square
21
+ file.resize_to_fill!(size, size)
22
+ else
23
+ file.resize_to_fit!(size, size)
24
+ end
25
+
26
+ file.write(thumb_file_path){ self.quality = (size <= 200 ? 75 : 95) }
27
+
28
+ # Free memory
29
+ file.destroy!
30
+ end
31
+
32
+ File.join("thumbs", File.basename(thumb_file_path))
33
+ end
34
+
35
+ def to_s
36
+ basename
37
+ end
38
+ end
@@ -15,8 +15,8 @@
15
15
  <h1><%= @name %></h1>
16
16
  </header>
17
17
  <section class="yui-cssbase">
18
- <% @images.each_with_index do |image, i| %>
19
- <div class="item"><a href="show/<%= i %>.html"><img src="thumbs/<%= resize(image, 150, true) %>" height="150" width="150" /></a></div>
18
+ <% @images.each do |image| %>
19
+ <div class="item"><a href="show/<%= image.id %>.html"><img src="<%= image.resize(150, true) %>" height="150" width="150" /></a></div>
20
20
  <% end %>
21
21
  </section>
22
22
  </div>
@@ -13,6 +13,11 @@ body {
13
13
  padding: 2em;
14
14
  }
15
15
 
16
+ #container {
17
+ margin: 0 auto;
18
+ width: 675px;
19
+ }
20
+
16
21
  h1 {
17
22
  color: #777;
18
23
  font-size: 400%;
@@ -22,7 +27,7 @@ h1 {
22
27
 
23
28
  .item {
24
29
  float: left;
25
- margin: 0 1.5em 1.5em 0;
30
+ margin: 0 15px 15px 0;
26
31
  }
27
32
 
28
33
  .item img {
@@ -15,9 +15,9 @@
15
15
  <h1><%= @name %></h1>
16
16
  </header>
17
17
  <section class="yui-cssbase">
18
- <img src="../thumbs/<%= resize(image, 800) %>" />
19
- <% if previous_image(i) %><a href="<%= i - 1 %>.html"><img src="../thumbs/<%= resize(previous_image(i), 75, true)%>" /></a><% end %>
20
- <% if next_image(i) %><a href="<%= i + 1 %>.html"><img src="../thumbs/<%= resize(next_image(i), 75, true)%>" /></a><% end %>
18
+ <img src="../<%= image.resize(675) %>" />
19
+ <% if previous_image %><a href="<%= previous_image.id %>.html"><img src="../<%= previous_image.resize(75, true)%>" /></a><% end %>
20
+ <% if next_image %><a href="<%= next_image.id %>.html"><img src="../<%= next_image.resize(75, true)%>" /></a><% end %>
21
21
  </section>
22
22
  </div>
23
23
  </body>
metadata CHANGED
@@ -4,8 +4,8 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 1
8
- version: "0.1"
7
+ - 2
8
+ version: "0.2"
9
9
  platform: ruby
10
10
  authors:
11
11
  - Nick Chapman
@@ -67,8 +67,9 @@ extensions: []
67
67
  extra_rdoc_files: []
68
68
 
69
69
  files:
70
- - lib/gallerizer.rb
71
70
  - bin/gallerize
71
+ - lib/gallerizer.rb
72
+ - lib/image.rb
72
73
  - themes/default/index.html.erb
73
74
  - themes/default/resources/screen.css
74
75
  - themes/default/show.html.erb