juicer 1.0.5 → 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ == 1.0.6 / 2010-06-29
2
+ * Fix bug where image embedding could not see the document root,
3
+ resulting in missing images (Jakub Pawlowicz)
4
+
1
5
  == 1.0.5 / 2010-06-06
2
6
  * No more Regexp warnings on Ruby 1.9.1
3
7
  * Cycle hosts for relative paths
data/Readme.rdoc CHANGED
@@ -9,6 +9,7 @@ Christian Johansen (http://www.cjohansen.no) and contributors:
9
9
  * Daniel Stockman (http://evocateur.org/)
10
10
  * Aaron Suggs (http://ktheory.com)
11
11
  * Olle Jonsson (http://ollehost.dk/blog/)
12
+ * Jakub Pawlowicz (http://blog.jakubpawlowicz.com)
12
13
 
13
14
  == DESCRIPTION:
14
15
 
@@ -295,6 +296,8 @@ Will tell you about other dependencies that might be missing on your system.
295
296
  * Elliott Wood (http://two-fish.com)
296
297
  Added "rails" cache buster type
297
298
  Fixed issues with asset host cycling
299
+ * Jakub Pawlowicz (http://blog.jakubpawlowicz.com)
300
+ Fixed issue with embedding images that weren't found
298
301
 
299
302
  == LICENSE:
300
303
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.5
1
+ 1.0.6
@@ -193,7 +193,7 @@ the compressor the path should be the path to where the jar file is found.
193
193
  #
194
194
  def image_embed(file)
195
195
  return nil if !file || file !~ /\.css$/ || @image_embed_type.nil?
196
- Juicer::ImageEmbed.new( :type => @image_embed_type )
196
+ Juicer::ImageEmbed.new(:document_root => @document_root, :type => @image_embed_type )
197
197
  end
198
198
 
199
199
  #
@@ -62,13 +62,13 @@ module Juicer
62
62
  begin
63
63
  next if used.include?(asset) || duplicates.include?(asset.path)
64
64
  used << asset
65
-
65
+
66
66
  # make sure we do not exceed SIZE_LIMIT
67
67
  new_path = embed_data_uri(asset.filename)
68
68
 
69
69
  if new_path.length < SIZE_LIMIT
70
70
  # replace the url in the css file with the data uri
71
- @contents.gsub!(asset.path, embed_data_uri(asset.path))
71
+ @contents.gsub!(asset.path, embed_data_uri(asset.filename)) if asset.filename.match( /\?embed=true$/ )
72
72
  else
73
73
  Juicer::LOGGER.warn("The final data uri for the image located at #{asset.path.gsub('?embed=true', '')} exceeds #{SIZE_LIMIT} and will not be embedded to maintain compatability.")
74
74
  end
@@ -86,25 +86,23 @@ module Juicer
86
86
  def embed_data_uri( path )
87
87
  new_path = path
88
88
 
89
- if path.match( /\?embed=true$/ )
90
- supported_file_matches = path.match( /(?:\.)(png|gif|jpg|jpeg)(?:\?embed=true)$/i )
91
- filetype = supported_file_matches[1] if supported_file_matches
89
+ supported_file_matches = path.match( /(?:\.)(png|gif|jpg|jpeg)(?:\?embed=true)$/i )
90
+ filetype = supported_file_matches[1] if supported_file_matches
91
+
92
+ if ( filetype )
93
+ filename = path.gsub('?embed=true','')
92
94
 
93
- if ( filetype )
94
- filename = path.gsub('?embed=true','')
95
-
96
- # check if file exists, throw an error if it doesn't exist
97
- if File.exist?( filename )
98
-
99
- # read contents of file into memory
100
- content = File.read( filename )
101
- content_type = "image/#{filetype}"
102
-
103
- # encode the url
104
- new_path = Datafy::make_data_uri( content, content_type )
105
- else
106
- puts "Unable to locate file #{filename} on local file system, skipping image embedding"
107
- end
95
+ # check if file exists, throw an error if it doesn't exist
96
+ if File.exist?( filename )
97
+
98
+ # read contents of file into memory
99
+ content = File.read( filename )
100
+ content_type = "image/#{filetype}"
101
+
102
+ # encode the url
103
+ new_path = Datafy::make_data_uri( content, content_type )
104
+ else
105
+ puts "Unable to locate file #{filename} on local file system, skipping image embedding"
108
106
  end
109
107
  end
110
108
  return new_path
data/lib/juicer.rb CHANGED
@@ -3,7 +3,7 @@ require "logger"
3
3
  module Juicer
4
4
 
5
5
  # :stopdoc:
6
- VERSION = '1.0.5'
6
+ VERSION = '1.0.6'
7
7
  LIBPATH = ::File.expand_path(::File.dirname(__FILE__)) + ::File::SEPARATOR
8
8
  PATH = ::File.dirname(LIBPATH) + ::File::SEPARATOR
9
9
  LOGGER = Logger.new(STDOUT)
@@ -73,6 +73,41 @@ class TestImageEmbed < Test::Unit::TestCase
73
73
  end
74
74
  end
75
75
 
76
+ context "non empty document root" do
77
+ setup do
78
+ @document_root = '/path/to/public/dir'
79
+ @another_embedder = Juicer::ImageEmbed.new(:type => :data_uri, :document_root => @document_root)
80
+ @files = [{ :path => "#{@document_root}/images/custom-file.png", :filename => '/images/custom-file.png', :content => "hello png!" }]
81
+ create_files(@files)
82
+ end
83
+
84
+ should "embed urls with embedder" do
85
+ stylesheets = [{ :path => "#{@document_root}/stylesheets/test_absolute_path.css", :content => "body: { background: url(#{@files.first[:filename]}?embed=true); }" }]
86
+ create_files(stylesheets)
87
+
88
+ @another_embedder.save stylesheets.first[:path]
89
+ css_contents = File.read(stylesheets.first[:path])
90
+
91
+ # encode the image
92
+ image_contents = File.read(@files.first[:path])
93
+ data_uri = Datafy::make_data_uri(image_contents, 'image/png')
94
+
95
+ # make sure the encoded data_uri is present in the stylesheet
96
+ assert css_contents.include?(data_uri)
97
+ end
98
+
99
+ should "not embed urls with embedder" do
100
+ stylesheets = [{ :path => "#{@document_root}/stylesheets/test_absolute_path.css", :content => "body: { background: url(#{@files.first[:filename]}?embed=false); }" }]
101
+ create_files(stylesheets)
102
+
103
+ @another_embedder.save stylesheets.first[:path]
104
+ css_contents = File.read(stylesheets.first[:path])
105
+
106
+ # encode the image
107
+ assert css_contents.include?(@files.first[:filename])
108
+ end
109
+ end
110
+
76
111
  context "with duplicated urls" do
77
112
  setup do
78
113
  @stylesheets = [{
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 1
7
7
  - 0
8
- - 5
9
- version: 1.0.5
8
+ - 6
9
+ version: 1.0.6
10
10
  platform: ruby
11
11
  authors:
12
12
  - Christian Johansen
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-06-06 00:00:00 +02:00
17
+ date: 2010-06-29 00:00:00 +02:00
18
18
  default_executable: juicer
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency