utopia-gallery 2.0.1 → 2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6248d2e8dbea1cfe4447c80367877e69bf8c0f86
4
- data.tar.gz: 7e10b84589fcaab9f56126eebb482b872df2d671
3
+ metadata.gz: 5be9fa59f72e89a487b5f833b02ff4e9358ebd93
4
+ data.tar.gz: 38dcd9b0c8b778f03cc2ca1fc4dd86e0c738b6ad
5
5
  SHA512:
6
- metadata.gz: 29a23954c1afd838b86a27e7da02b64ae11988e1183de7a177c5c9074f8bf1a20db616d245f213dfc64e92d843b8c2ae55139666a9c779986f8605daa2c65884
7
- data.tar.gz: d210843e1a7dfefd108d2b2caa6b21c9b5417e5019855810cea54ef75f66acc90620cb1782754c08951aa6522dbbcb0a4e3b81b5adc53852df271465e72e94bc
6
+ metadata.gz: 4f58a9a8deeb5bcc0c7083d9e8451ec27601c67654d112122959fa826c8117ff1c876af74eee587cd366139f05af15773d9162b9cba9a32d59edcec215adc842
7
+ data.tar.gz: 195cd55dd865423a767673784768271a19941a5884aaff4d376b0dc033eda0c5eaa92285f1d0c8d490caf28cb42c09f0228a8e7a83e432c97c3dbb9ad1317695
@@ -0,0 +1,47 @@
1
+ language: ruby
2
+ sudo: false
3
+ dist: trusty
4
+
5
+ addons:
6
+ apt:
7
+ packages:
8
+ - libxml2-dev
9
+ - gettext
10
+ - python-dev
11
+ - liblcms1-dev
12
+ - libmagickwand-dev
13
+ - libopenexr-dev
14
+ - libcfitsio3-dev
15
+ - gobject-introspection
16
+ - libgirepository1.0-dev
17
+ - libgif-dev
18
+ - libgs-dev
19
+ - libgsf-1-dev
20
+ - libmatio-dev
21
+ - libopenslide-dev
22
+ - liborc-0.4-dev
23
+ - libpango1.0-dev
24
+ - libpoppler-glib-dev
25
+ - libwebp-dev
26
+ - libglib2.0-dev
27
+
28
+ cache:
29
+ bundler: true
30
+ directories:
31
+ - $HOME/vips
32
+
33
+ before_install:
34
+ - source install-vips.sh
35
+
36
+ rvm:
37
+ - 2.2.4
38
+ - 2.3.2
39
+ - 2.4.0
40
+ - jruby-head
41
+ - ruby-head
42
+ - rbx-3.65
43
+ matrix:
44
+ allow_failures:
45
+ - rvm: rbx-3.65
46
+ - rvm: ruby-head
47
+ - rvm: jruby-head
data/README.md CHANGED
@@ -51,7 +51,9 @@ Add `_photo.xnode` such as:
51
51
  <a href="#{attributes[:src].large}" title="#{attributes[:alt]}">
52
52
  <img src="#{attributes[:src].small}" alt="#{attributes[:alt]}"/>
53
53
  </a>
54
- <figcaption>#{attributes[:alt]}</figcaption>
54
+ <?r if caption = attributes[:alt].caption ?>
55
+ <figcaption>#{caption}</figcaption>
56
+ <?r end ?>
55
57
  </figure>
56
58
  ```
57
59
 
data/Rakefile CHANGED
@@ -1 +1,6 @@
1
1
  require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:test)
5
+
6
+ task :default => :test
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env bash
2
+
3
+ export NOKOGIRI_USE_SYSTEM_LIBRARIES=true
4
+ export VIPS_SITE=http://www.vips.ecs.soton.ac.uk/supported
5
+ export VIPS_VERSION_MAJOR=8
6
+ export VIPS_VERSION_MINOR=4
7
+ export VIPS_VERSION_MICRO=5
8
+ export VIPS_VERSION=$VIPS_VERSION_MAJOR.$VIPS_VERSION_MINOR
9
+ export VIPS_VERSION_FULL=$VIPS_VERSION.$VIPS_VERSION_MICRO
10
+ export PATH=$HOME/vips/bin:$PATH
11
+ export LD_LIBRARY_PATH=$HOME/vips/lib:$LD_LIBRARY_PATH
12
+ export PKG_CONFIG_PATH=$HOME/vips/lib/pkgconfig:$PKG_CONFIG_PATH
13
+ export PYTHONPATH=$HOME/vips/lib/python2.7/site-packages:$PYTHONPATH
14
+ export GI_TYPELIB_PATH=$HOME/vips/lib/girepository-1.0:$GI_TYPELIB_PATH
15
+
16
+ set -e
17
+
18
+ # do we already have the correct vips built? early exit if yes
19
+ # we could check the configure params as well I guess
20
+ if [ -d "$HOME/vips/bin" ]; then
21
+ version=$($HOME/vips/bin/vips --version)
22
+ escaped_version="$VIPS_VERSION_MAJOR\.$VIPS_VERSION_MINOR\.$VIPS_VERSION_MICRO"
23
+ echo "Need vips-$VIPS_VERSION_FULL"
24
+ echo "Found $version"
25
+ if [[ "$version" =~ ^vips-$escaped_version ]]; then
26
+ echo "Using cached directory"
27
+ exit 0
28
+ fi
29
+ fi
30
+
31
+ rm -rf $HOME/vips
32
+ wget $VIPS_SITE/$VIPS_VERSION/vips-$VIPS_VERSION_FULL.tar.gz
33
+ tar xf vips-$VIPS_VERSION_FULL.tar.gz
34
+ cd vips-$VIPS_VERSION_FULL
35
+ CXXFLAGS=-D_GLIBCXX_USE_CXX11_ABI=0 ./configure --prefix=$HOME/vips $*
36
+ make && make install
@@ -41,6 +41,14 @@ module Utopia
41
41
  @media.path
42
42
  end
43
43
 
44
+ def input_path
45
+ File.join(@media_root, @media.path)
46
+ end
47
+
48
+ def output_paths
49
+ @processes.values.collect{|process| output_path_for(process)}
50
+ end
51
+
44
52
  def output_path_for(process)
45
53
  File.join(@cache_root, process.relative_path(@media))
46
54
  end
@@ -31,6 +31,10 @@ module Utopia
31
31
  @filter = filter
32
32
  end
33
33
 
34
+ attr :root
35
+ attr :path
36
+ attr :filter
37
+
34
38
  def each
35
39
  return to_enum unless block_given?
36
40
 
@@ -21,6 +21,8 @@
21
21
  require 'vips/thumbnail'
22
22
  require 'fileutils'
23
23
 
24
+ require 'utopia/path'
25
+
24
26
  module Utopia
25
27
  module Gallery
26
28
  class Process
@@ -36,8 +38,25 @@ module Utopia
36
38
  File.join(File.dirname(source_path), @name.to_s, File.basename(source_path))
37
39
  end
38
40
 
39
- def fresh?(input_path, output_path)
40
- return File.exist?(output_path) && File.mtime(input_path) <= File.mtime(output_path)
41
+ def self.mtime(path)
42
+ File.lstat(path).mtime
43
+ end
44
+
45
+ def self.fresh?(input_path, output_path)
46
+ # We are not fresh if the output path doesn't exist:
47
+ return false unless File.exist?(output_path)
48
+
49
+ # We are not fresh if the input is newere than the output:
50
+ return false if mtime(input_path) > mtime(output_path)
51
+
52
+ # Otherwise, we are so fresh:
53
+ return true
54
+ end
55
+
56
+ def self.link(input_path, output_path)
57
+ # Compute a path to input_path, relative to output_path
58
+ shortest_path = Utopia::Path.shortest_path(input_path, output_path)
59
+ FileUtils.ln_s(shortest_path, output_path, force: true)
41
60
  end
42
61
  end
43
62
 
@@ -55,7 +74,7 @@ module Utopia
55
74
  media = cache.media
56
75
  media_path = File.join(cache.media_root, media.path)
57
76
 
58
- return if fresh?(media_path, output_path)
77
+ return if Process.fresh?(media_path, output_path)
59
78
 
60
79
  resizer = locals[:resizer] ||= Vips::Thumbnail::Resizer.new(media_path)
61
80
 
@@ -64,7 +83,7 @@ module Utopia
64
83
  if output_image = resizer.send(@method, @size)
65
84
  output_image.write_to_file output_path, **@options
66
85
  else
67
- FileUtils.ln(media_path, output_path)
86
+ Process.link(media_path, output_path)
68
87
  end
69
88
  end
70
89
  end
@@ -1,5 +1,5 @@
1
1
  module Utopia
2
2
  module Gallery
3
- VERSION = "2.0.1"
3
+ VERSION = "2.0.2"
4
4
  end
5
5
  end
@@ -1,5 +1,5 @@
1
1
 
2
- if ENV['COVERAGE']
2
+ if ENV['COVERAGE'] || ENV['TRAVIS']
3
3
  begin
4
4
  require 'simplecov'
5
5
 
@@ -18,13 +18,49 @@ RSpec.describe Utopia::Gallery::Cache do
18
18
  let(:container) {Utopia::Gallery::Container.new(pages_root, 'sample_images')}
19
19
 
20
20
  subject{container.collect{|media| described_class.new(pages_root, cache_root, '/_gallery', media, processes)}}
21
+ let(:output_paths) {subject.collect{|cache| cache.output_paths}.flatten}
21
22
 
22
23
  it "should generate thumbnails" do
24
+ expect(subject.count).to be == 4
25
+ expect(output_paths.count).to be == 8
26
+
23
27
  subject.each(&:update)
28
+
29
+ output_paths.each do |output_path|
30
+ expect(File).to be_exist(output_path)
31
+ end
24
32
  end
25
33
 
26
34
  it "it should be reentrant" do
27
35
  subject.each(&:update)
36
+
37
+ expect{subject.each(&:update)}.to_not raise_error
38
+ end
39
+
40
+ it "can regeneate out of date media" do
28
41
  subject.each(&:update)
42
+
43
+ sleep(1)
44
+
45
+ subject.each do |cache|
46
+ # Input path becomes newer than output path:
47
+ # Exception: If output_path is a hard link to input_path.
48
+ FileUtils.touch(cache.input_path)
49
+
50
+ # It should no longer be fresh:
51
+ cache.output_paths.each do |output_path|
52
+ expect(Utopia::Gallery::Process).to_not be_fresh(cache.input_path, output_path)
53
+ end
54
+ end
55
+
56
+ # Regenerate outputs:
57
+ expect{subject.each(&:update)}.to_not raise_error
58
+
59
+ # Everything should be fresh:
60
+ subject.each do |cache|
61
+ cache.output_paths.each do |output_path|
62
+ expect(Utopia::Gallery::Process).to be_fresh(cache.input_path, output_path)
63
+ end
64
+ end
29
65
  end
30
66
  end
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.add_dependency "utopia", "~> 2.0"
20
20
  spec.add_dependency "vips-thumbnail"
21
21
 
22
- spec.add_development_dependency "bundler", "~> 1.14"
23
- spec.add_development_dependency "rake", "~> 10.0"
24
- spec.add_development_dependency "rspec", "~> 3.0"
22
+ spec.add_development_dependency "bundler", "~> 1.4"
23
+ spec.add_development_dependency "rake", "~> 10.5"
24
+ spec.add_development_dependency "rspec", "~> 3.5"
25
25
  end
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.1
4
+ version: 2.0.2
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-24 00:00:00.000000000 Z
11
+ date: 2017-03-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: utopia
@@ -44,42 +44,42 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.14'
47
+ version: '1.4'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '1.14'
54
+ version: '1.4'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '10.0'
61
+ version: '10.5'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '10.0'
68
+ version: '10.5'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '3.0'
75
+ version: '3.5'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '3.0'
82
+ version: '3.5'
83
83
  description:
84
84
  email:
85
85
  - samuel.williams@oriontransfer.co.nz
@@ -89,9 +89,11 @@ extra_rdoc_files: []
89
89
  files:
90
90
  - ".gitignore"
91
91
  - ".rspec"
92
+ - ".travis.yml"
92
93
  - Gemfile
93
94
  - README.md
94
95
  - Rakefile
96
+ - install-vips.sh
95
97
  - lib/utopia/gallery.rb
96
98
  - lib/utopia/gallery/cache.rb
97
99
  - lib/utopia/gallery/container.rb