embed-assets-rails 0.9.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.
- data/.gitignore +4 -0
- data/Gemfile +12 -0
- data/LICENCE +23 -0
- data/README.md +38 -0
- data/Rakefile +12 -0
- data/embed-assets-rails.gemspec +25 -0
- data/lib/embed-assets-rails.rb +9 -0
- data/lib/embed-assets-rails/processor.rb +92 -0
- data/lib/embed-assets-rails/railtie.rb +8 -0
- data/lib/embed-assets-rails/version.rb +5 -0
- data/test/fixtures/public/images/embed/testembed.gif +0 -0
- data/test/fixtures/public/images/test.gif +0 -0
- data/test/fixtures/test.css +8 -0
- data/test/fixtures/test_embedded.css +8 -0
- data/test/test_helper.rb +19 -0
- data/test/unit/embed_assets_rails_test.rb +28 -0
- metadata +98 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
source "http://rubygems.org"
|
|
2
|
+
|
|
3
|
+
# Specify your gem's dependencies in sass-rails.gemspec
|
|
4
|
+
gemspec
|
|
5
|
+
|
|
6
|
+
gem "rails", :git => "git://github.com/rails/rails.git"
|
|
7
|
+
gem "sprockets", :git => "git://github.com/sstephenson/sprockets.git"
|
|
8
|
+
|
|
9
|
+
# To use debugger (ruby-debug for Ruby 1.8.7+, ruby-debug19 for Ruby 1.9.2+)
|
|
10
|
+
# gem 'ruby-debug'
|
|
11
|
+
gem 'ruby-debug19'
|
|
12
|
+
|
data/LICENCE
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
Copyright (c) 2009 Jeremy Ashkenas, DocumentCloud
|
|
2
|
+
Copyright (c) 2011 Dieter Komendera, abloom OG
|
|
3
|
+
|
|
4
|
+
Permission is hereby granted, free of charge, to any person
|
|
5
|
+
obtaining a copy of this software and associated documentation
|
|
6
|
+
files (the "Software"), to deal in the Software without
|
|
7
|
+
restriction, including without limitation the rights to use,
|
|
8
|
+
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the
|
|
10
|
+
Software is furnished to do so, subject to the following
|
|
11
|
+
conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be
|
|
14
|
+
included in all copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
18
|
+
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
20
|
+
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
21
|
+
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
22
|
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
23
|
+
OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Embedding Assets
|
|
2
|
+
|
|
3
|
+
This gem provides integration of embedding images and fonts into CSS files within the Rails asset pipeline.
|
|
4
|
+
More about embedding assets and how it works, see the [jammit documentation][1]. This gem actually reuses code from that project.
|
|
5
|
+
|
|
6
|
+
[1]: http://documentcloud.github.com/jammit/#embedding
|
|
7
|
+
|
|
8
|
+
## Installing
|
|
9
|
+
|
|
10
|
+
Add the following to your Gemfile:
|
|
11
|
+
|
|
12
|
+
gem 'embed-assets-rails'
|
|
13
|
+
|
|
14
|
+
## Configuration
|
|
15
|
+
|
|
16
|
+
To enable embedding the assets set `config.assets.embed_assets` to `true`.
|
|
17
|
+
|
|
18
|
+
### Example
|
|
19
|
+
|
|
20
|
+
MyProject::Application.configure do
|
|
21
|
+
config.assets.embed_assets = true
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
## Notes
|
|
25
|
+
|
|
26
|
+
* Rails 3.1 and up only
|
|
27
|
+
* Only supports images and font in public/ directory (yet)
|
|
28
|
+
|
|
29
|
+
## Thanks
|
|
30
|
+
|
|
31
|
+
Thanks to documentcloud for creating [jammit][2].
|
|
32
|
+
|
|
33
|
+
[2]: http://documentcloud.github.com/jammit/
|
|
34
|
+
|
|
35
|
+
## Running Tests
|
|
36
|
+
|
|
37
|
+
$ bundle install
|
|
38
|
+
$ bundle exec rake test
|
data/Rakefile
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
|
3
|
+
require "embed-assets-rails/version"
|
|
4
|
+
|
|
5
|
+
Gem::Specification.new do |s|
|
|
6
|
+
s.name = "embed-assets-rails"
|
|
7
|
+
s.version = Saulabs::EmbedAssets::VERSION
|
|
8
|
+
s.platform = Gem::Platform::RUBY
|
|
9
|
+
s.authors = ["kommen"]
|
|
10
|
+
s.email = ["dieter@komendera.com"]
|
|
11
|
+
s.homepage = "http://www.saulabs.net/"
|
|
12
|
+
s.summary = %q{Embed images and fonts in CSS files with the Rails asset pipeline }
|
|
13
|
+
s.description = %q{This gem provides integration of embedding images and fonts as base64 into CSS files within the Rails asset pipeline.
|
|
14
|
+
More about embedding assets and how it works, see the [jammit documentation][1]. This gem actually reuses code from that project.}
|
|
15
|
+
|
|
16
|
+
s.rubyforge_project = "embed-assets-rails"
|
|
17
|
+
|
|
18
|
+
s.add_runtime_dependency 'railties', '~> 3.1.0.rc1'
|
|
19
|
+
s.add_runtime_dependency 'actionpack', '~> 3.1.0.rc1'
|
|
20
|
+
|
|
21
|
+
s.files = `git ls-files`.split("\n")
|
|
22
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
|
23
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
|
24
|
+
s.require_paths = ["lib"]
|
|
25
|
+
end
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
require 'tilt'
|
|
2
|
+
|
|
3
|
+
module Saulabs::EmbedAssets
|
|
4
|
+
|
|
5
|
+
class Processor < Tilt::Template
|
|
6
|
+
def prepare
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def evaluate(context, locals, &block)
|
|
10
|
+
@asset_contents = {}
|
|
11
|
+
embed_assets_enabled? ? with_data_uris(data) : data
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def embed_assets_enabled?
|
|
15
|
+
Rails.application.config.assets.embed_assets
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
protected
|
|
19
|
+
|
|
20
|
+
# Mapping from extension to mime-type of all embeddable assets.
|
|
21
|
+
EMBED_MIME_TYPES = {
|
|
22
|
+
'.png' => 'image/png',
|
|
23
|
+
'.jpg' => 'image/jpeg',
|
|
24
|
+
'.jpeg' => 'image/jpeg',
|
|
25
|
+
'.gif' => 'image/gif',
|
|
26
|
+
'.tif' => 'image/tiff',
|
|
27
|
+
'.tiff' => 'image/tiff',
|
|
28
|
+
'.ttf' => 'font/truetype',
|
|
29
|
+
'.otf' => 'font/opentype',
|
|
30
|
+
'.woff' => 'font/woff'
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
# Font extensions for which we allow embedding:
|
|
34
|
+
EMBED_EXTS = EMBED_MIME_TYPES.keys
|
|
35
|
+
EMBED_FONTS = ['.ttf', '.otf', '.woff']
|
|
36
|
+
|
|
37
|
+
# (32k - padding) maximum length for data-uri assets (an IE8 limitation).
|
|
38
|
+
MAX_IMAGE_SIZE = 32700
|
|
39
|
+
|
|
40
|
+
# CSS asset-embedding regexes for URL rewriting.
|
|
41
|
+
EMBED_DETECTOR = /url\(['"]?([^\s)]+\.[a-z]+)(\?\d+)?['"]?\)/
|
|
42
|
+
EMBEDDABLE = /[\A\/]embed\//
|
|
43
|
+
|
|
44
|
+
def with_data_uris(css)
|
|
45
|
+
css.gsub(EMBED_DETECTOR) do |url|
|
|
46
|
+
asset_path = Pathname.new($1)
|
|
47
|
+
public_path = absolute_path(asset_path)
|
|
48
|
+
if URI.parse($1).absolute? || !embeddable?(public_path)
|
|
49
|
+
"url(#{$1})"
|
|
50
|
+
else
|
|
51
|
+
"url(\"data:#{mime_type($1)};charset=utf-8;base64,#{encoded_contents(public_path.to_s)}\")"
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# An asset is valid for embedding if it exists, is less than 32K, and is
|
|
57
|
+
# stored somewhere inside of a folder named "embed". IE does not support
|
|
58
|
+
# Data-URIs larger than 32K, and you probably shouldn't be embedding assets
|
|
59
|
+
# that large in any case. Because we need to check the base64 length here,
|
|
60
|
+
# save it so that we don't have to compute it again later.
|
|
61
|
+
def embeddable?(asset_path)
|
|
62
|
+
font = EMBED_FONTS.include?(asset_path.extname)
|
|
63
|
+
return false unless asset_path.to_s.match(EMBEDDABLE) && asset_path.exist?
|
|
64
|
+
return false unless EMBED_EXTS.include?(asset_path.extname)
|
|
65
|
+
return false unless font || encoded_contents(asset_path).length < MAX_IMAGE_SIZE
|
|
66
|
+
return true
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Return the Base64-encoded contents of an asset on a single line.
|
|
70
|
+
def encoded_contents(asset_path)
|
|
71
|
+
return @asset_contents[asset_path] if @asset_contents[asset_path]
|
|
72
|
+
data = read_binary_file(asset_path)
|
|
73
|
+
@asset_contents[asset_path] = Base64.encode64(data).gsub(/\n/, '')
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def absolute_path(asset_pathname)
|
|
77
|
+
Pathname.new(File.join(Rails.public_path, asset_pathname))
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# Grab the mime-type of an asset, by filename.
|
|
81
|
+
def mime_type(asset_path)
|
|
82
|
+
EMBED_MIME_TYPES[File.extname(asset_path)]
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
# `File.read`, but in "binary" mode.
|
|
86
|
+
def read_binary_file(path)
|
|
87
|
+
File.open(path, 'rb') {|f| f.read }
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
module Saulabs::EmbedAssets
|
|
2
|
+
class Railtie < ::Rails::Railtie
|
|
3
|
+
config.after_initialize do |app|
|
|
4
|
+
app.config.assets.embed_assets = false if app.config.assets.embed_assets.nil?
|
|
5
|
+
app.assets.register_bundle_processor 'text/css', Saulabs::EmbedAssets::Processor
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
end
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
div {
|
|
2
|
+
background: url("data:image/gif;charset=utf-8;base64,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");
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
div {
|
|
6
|
+
background: url(/images/test.jpg);
|
|
7
|
+
}
|
|
8
|
+
|
data/test/test_helper.rb
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
$:.push File.expand_path("../lib", __FILE__)
|
|
2
|
+
|
|
3
|
+
require 'test/unit'
|
|
4
|
+
require 'pathname'
|
|
5
|
+
require 'uri'
|
|
6
|
+
require 'base64'
|
|
7
|
+
|
|
8
|
+
FIXTURE_PATH = "#{File.dirname(__FILE__)}/fixtures"
|
|
9
|
+
|
|
10
|
+
module Saulabs
|
|
11
|
+
module EmbedAssets
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
class Rails
|
|
16
|
+
def self.public_path
|
|
17
|
+
"#{FIXTURE_PATH}/public"
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
require 'embed-assets-rails/processor'
|
|
3
|
+
|
|
4
|
+
module Saulabs::EmbedAssets
|
|
5
|
+
class Processor
|
|
6
|
+
def embed_assets_enabled?
|
|
7
|
+
true
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
class EmbedAssetsProcessorTest < Test::Unit::TestCase
|
|
13
|
+
|
|
14
|
+
include Saulabs::EmbedAssets
|
|
15
|
+
|
|
16
|
+
def test_classes_are_loaded
|
|
17
|
+
assert_kind_of Module, Saulabs::EmbedAssets
|
|
18
|
+
assert_kind_of Class, Saulabs::EmbedAssets::Processor
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def test_embedding_assets
|
|
22
|
+
expected_css = File.open("#{FIXTURE_PATH}/test_embedded.css", 'r') {|f| f.read }
|
|
23
|
+
result_css = Processor.new("#{FIXTURE_PATH}/test.css").render
|
|
24
|
+
|
|
25
|
+
assert_equal expected_css, result_css
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: embed-assets-rails
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
prerelease:
|
|
5
|
+
version: 0.9.0
|
|
6
|
+
platform: ruby
|
|
7
|
+
authors:
|
|
8
|
+
- kommen
|
|
9
|
+
autorequire:
|
|
10
|
+
bindir: bin
|
|
11
|
+
cert_chain: []
|
|
12
|
+
|
|
13
|
+
date: 2011-06-17 00:00:00 Z
|
|
14
|
+
dependencies:
|
|
15
|
+
- !ruby/object:Gem::Dependency
|
|
16
|
+
name: railties
|
|
17
|
+
prerelease: false
|
|
18
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
|
19
|
+
none: false
|
|
20
|
+
requirements:
|
|
21
|
+
- - ~>
|
|
22
|
+
- !ruby/object:Gem::Version
|
|
23
|
+
version: 3.1.0.rc1
|
|
24
|
+
type: :runtime
|
|
25
|
+
version_requirements: *id001
|
|
26
|
+
- !ruby/object:Gem::Dependency
|
|
27
|
+
name: actionpack
|
|
28
|
+
prerelease: false
|
|
29
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
|
30
|
+
none: false
|
|
31
|
+
requirements:
|
|
32
|
+
- - ~>
|
|
33
|
+
- !ruby/object:Gem::Version
|
|
34
|
+
version: 3.1.0.rc1
|
|
35
|
+
type: :runtime
|
|
36
|
+
version_requirements: *id002
|
|
37
|
+
description: |-
|
|
38
|
+
This gem provides integration of embedding images and fonts as base64 into CSS files within the Rails asset pipeline.
|
|
39
|
+
More about embedding assets and how it works, see the [jammit documentation][1]. This gem actually reuses code from that project.
|
|
40
|
+
email:
|
|
41
|
+
- dieter@komendera.com
|
|
42
|
+
executables: []
|
|
43
|
+
|
|
44
|
+
extensions: []
|
|
45
|
+
|
|
46
|
+
extra_rdoc_files: []
|
|
47
|
+
|
|
48
|
+
files:
|
|
49
|
+
- .gitignore
|
|
50
|
+
- Gemfile
|
|
51
|
+
- LICENCE
|
|
52
|
+
- README.md
|
|
53
|
+
- Rakefile
|
|
54
|
+
- embed-assets-rails.gemspec
|
|
55
|
+
- lib/embed-assets-rails.rb
|
|
56
|
+
- lib/embed-assets-rails/processor.rb
|
|
57
|
+
- lib/embed-assets-rails/railtie.rb
|
|
58
|
+
- lib/embed-assets-rails/version.rb
|
|
59
|
+
- test/fixtures/public/images/embed/testembed.gif
|
|
60
|
+
- test/fixtures/public/images/test.gif
|
|
61
|
+
- test/fixtures/test.css
|
|
62
|
+
- test/fixtures/test_embedded.css
|
|
63
|
+
- test/test_helper.rb
|
|
64
|
+
- test/unit/embed_assets_rails_test.rb
|
|
65
|
+
homepage: http://www.saulabs.net/
|
|
66
|
+
licenses: []
|
|
67
|
+
|
|
68
|
+
post_install_message:
|
|
69
|
+
rdoc_options: []
|
|
70
|
+
|
|
71
|
+
require_paths:
|
|
72
|
+
- lib
|
|
73
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
74
|
+
none: false
|
|
75
|
+
requirements:
|
|
76
|
+
- - ">="
|
|
77
|
+
- !ruby/object:Gem::Version
|
|
78
|
+
version: "0"
|
|
79
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
80
|
+
none: false
|
|
81
|
+
requirements:
|
|
82
|
+
- - ">="
|
|
83
|
+
- !ruby/object:Gem::Version
|
|
84
|
+
version: "0"
|
|
85
|
+
requirements: []
|
|
86
|
+
|
|
87
|
+
rubyforge_project: embed-assets-rails
|
|
88
|
+
rubygems_version: 1.8.5
|
|
89
|
+
signing_key:
|
|
90
|
+
specification_version: 3
|
|
91
|
+
summary: Embed images and fonts in CSS files with the Rails asset pipeline
|
|
92
|
+
test_files:
|
|
93
|
+
- test/fixtures/public/images/embed/testembed.gif
|
|
94
|
+
- test/fixtures/public/images/test.gif
|
|
95
|
+
- test/fixtures/test.css
|
|
96
|
+
- test/fixtures/test_embedded.css
|
|
97
|
+
- test/test_helper.rb
|
|
98
|
+
- test/unit/embed_assets_rails_test.rb
|