gatchaman 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/ChangeLog +11 -0
- data/README.md +1 -1
- data/Rakefile +9 -0
- data/bin/gatchan +2 -2
- data/gatchaman.gemspec +1 -0
- data/lib/gatchaman.rb +27 -77
- data/lib/gatchaman/data_scheme.rb +28 -0
- data/lib/gatchaman/embedder.rb +12 -0
- data/lib/gatchaman/embedder/css.rb +31 -0
- data/lib/gatchaman/embedder/generic.rb +22 -0
- data/lib/gatchaman/embedder/js.rb +21 -0
- data/lib/gatchaman/embedder/media.rb +15 -0
- data/lib/gatchaman/path.rb +33 -0
- data/lib/gatchaman/version.rb +1 -1
- data/spec/gatchaman_spec.rb +30 -15
- data/spec/resouces/test_2.css +12 -0
- data/spec/{resouces → resources}/test.css +0 -0
- data/spec/{resouces → resources}/test.js +0 -0
- data/spec/{resouces → resources}/test.png +0 -0
- data/spec/resources/test_2.css +5 -0
- metadata +36 -21
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 83669db5ec638c57ccfd8f56068d4db631a061d4
|
4
|
+
data.tar.gz: 4f143d83b8e109c79b6d463dac40806433e991ad
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e3c44f552269b19291486c5aec3d00e4035f4f66bcee93e42f516fe8b55a96219fe395ec709d707175c8de9c76aed7dd8b92961b1d91bfb525870a32421058e0
|
7
|
+
data.tar.gz: f4471f7a121ae95344d9f155e6fdb9c1752ce8a8853b575442657bdfd7119333aaf93043219c4aeb12a1d2b91b5394d4b252ff5460891b748b87ee9619a05fcb
|
data/ChangeLog
CHANGED
@@ -10,3 +10,14 @@
|
|
10
10
|
|
11
11
|
* RADME.md add usage of Gatchaman class
|
12
12
|
* relaese version 0.1.1
|
13
|
+
|
14
|
+
2013-02-20 maruyama shinepi <shinpeim@gmail.com>
|
15
|
+
|
16
|
+
* release version 0.2.0
|
17
|
+
* now gatchan expand js and css(thanks to wneko)
|
18
|
+
|
19
|
+
2013-03-18 maruyama shinpei <shinpeim@gmail.com>
|
20
|
+
|
21
|
+
* release version 0.2.1
|
22
|
+
* some bug fixes
|
23
|
+
* refactor (thanks to wneko)
|
data/README.md
CHANGED
data/Rakefile
CHANGED
data/bin/gatchan
CHANGED
@@ -24,8 +24,8 @@ options = parse_options
|
|
24
24
|
input_file = ARGV.shift or help
|
25
25
|
|
26
26
|
begin
|
27
|
-
|
28
|
-
|
27
|
+
options[:current_directory] ||= File.dirname(input_file)
|
28
|
+
print Gatchaman.new(options).data_uri_schemize(IO.read(input_file))
|
29
29
|
rescue => e
|
30
30
|
warn e.message
|
31
31
|
exit 2
|
data/gatchaman.gemspec
CHANGED
data/lib/gatchaman.rb
CHANGED
@@ -1,91 +1,41 @@
|
|
1
1
|
require "gatchaman/version"
|
2
|
-
require "
|
3
|
-
|
4
|
-
require "open-uri"
|
5
|
-
require "base64"
|
2
|
+
require "gatchaman/embedder"
|
3
|
+
|
6
4
|
class Gatchaman
|
7
|
-
|
8
|
-
:
|
9
|
-
:
|
10
|
-
:video
|
5
|
+
EMBED_OPTION_KEYS = [
|
6
|
+
:document_root,
|
7
|
+
:current_dir,
|
11
8
|
].freeze
|
12
|
-
|
9
|
+
|
13
10
|
def initialize(options = {})
|
14
|
-
@
|
15
|
-
@
|
11
|
+
@options = options
|
12
|
+
@embed_options = {}
|
13
|
+
EMBED_OPTION_KEYS.each do |key|
|
14
|
+
@embed_options[key] = @options[key] if @options[key]
|
15
|
+
end
|
16
|
+
end
|
16
17
|
|
17
|
-
|
18
|
-
@
|
18
|
+
def embedders
|
19
|
+
if @embedders.nil?
|
20
|
+
@embedders = []
|
21
|
+
@embedders << Gatchaman::Embedder::Media.new(@embed_options)
|
22
|
+
@embedders << Gatchaman::Embedder::JS.new(@embed_options) if @options[:expand_js]
|
23
|
+
@embedders << Gatchaman::Embedder::CSS.new(@embed_options) if @options[:expand_css]
|
24
|
+
end
|
25
|
+
@embedders
|
19
26
|
end
|
20
27
|
|
21
28
|
def data_uri_schemize(html_string)
|
22
|
-
doc = Nokogiri
|
29
|
+
doc = if Nokogiri.XML(html_string).root.name == "html"
|
30
|
+
Nokogiri::HTML::Document.parse(html_string)
|
31
|
+
else
|
32
|
+
Nokogiri::HTML::DocumentFragment.parse(html_string)
|
33
|
+
end
|
23
34
|
|
24
|
-
|
25
|
-
|
35
|
+
embedders.each do |embedder|
|
36
|
+
embedder.embed(doc)
|
26
37
|
end
|
27
38
|
|
28
|
-
expand_js(doc) if @expand_js
|
29
|
-
expand_css(doc) if @expand_css
|
30
|
-
|
31
39
|
doc.to_s
|
32
40
|
end
|
33
|
-
|
34
|
-
private
|
35
|
-
def chomp_last_slash(str)
|
36
|
-
str.gsub(/\/$/,"")
|
37
|
-
end
|
38
|
-
def extract_path(path)
|
39
|
-
if path =~ /^http/
|
40
|
-
return path
|
41
|
-
elsif path =~ /^\//
|
42
|
-
return @document_root + path
|
43
|
-
else
|
44
|
-
return @current_dir + "/" + path
|
45
|
-
end
|
46
|
-
end
|
47
|
-
def to_data_scheme(path)
|
48
|
-
mime = MIME::Types.type_for(path).first
|
49
|
-
image_binary = open(path, "r:ASCII-8BIT"){|f|
|
50
|
-
f.read(nil)
|
51
|
-
}
|
52
|
-
base64 = Base64.encode64(image_binary).gsub(/\s/,'')
|
53
|
-
"data:#{mime.to_s};base64,#{base64}"
|
54
|
-
end
|
55
|
-
def inner_html_from_file(filename)
|
56
|
-
["", open(extract_path(filename)).read.chomp, ""].join("\n")
|
57
|
-
end
|
58
|
-
def expand_js(doc)
|
59
|
-
doc.css('script').each do |element|
|
60
|
-
expand_js_element(element)
|
61
|
-
end
|
62
|
-
doc
|
63
|
-
end
|
64
|
-
def expand_css(doc)
|
65
|
-
doc.css('link[rel=stylesheet]').each do |element|
|
66
|
-
expand_css_element(element)
|
67
|
-
end
|
68
|
-
doc
|
69
|
-
end
|
70
|
-
def expand_js_element(element)
|
71
|
-
return if element[:src].nil? or element[:src].size == 0
|
72
|
-
element.inner_html += inner_html_from_file(element[:src])
|
73
|
-
[:src, :charset].each {|attr| element.delete(attr.to_s)}
|
74
|
-
end
|
75
|
-
def expand_css_element(element)
|
76
|
-
element.name = "style"
|
77
|
-
content = inner_html_from_file(element[:href])
|
78
|
-
content = expand_css_url(content)
|
79
|
-
element.inner_html = content
|
80
|
-
element.attributes.keys.each do |attr_name|
|
81
|
-
next if [:media, :type].include? attr_name.to_sym
|
82
|
-
element.delete(attr_name)
|
83
|
-
end
|
84
|
-
end
|
85
|
-
def expand_css_url(css_content)
|
86
|
-
css_content.gsub(/\burl\b\(([^)]+)\)/) do
|
87
|
-
data_scheme = to_data_scheme(extract_path($1))
|
88
|
-
"url(#{data_scheme})"
|
89
|
-
end
|
90
|
-
end
|
91
41
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require "mime/types"
|
2
|
+
require "open-uri"
|
3
|
+
require "base64"
|
4
|
+
|
5
|
+
class Gatchaman
|
6
|
+
class DataScheme < String
|
7
|
+
def initialize(path)
|
8
|
+
@path = path
|
9
|
+
super(to_s)
|
10
|
+
end
|
11
|
+
|
12
|
+
def mime_type
|
13
|
+
@mime_type ||= MIME::Types.type_for(@path).first.to_s
|
14
|
+
end
|
15
|
+
|
16
|
+
def binary
|
17
|
+
@binary ||= open(@path, "r:ASCII-8BIT") {|f| f.read(nil) }
|
18
|
+
end
|
19
|
+
|
20
|
+
def base64
|
21
|
+
@base64 ||= Base64.encode64(binary).gsub(/\s/, '')
|
22
|
+
end
|
23
|
+
|
24
|
+
def to_s
|
25
|
+
"data:#{mime_type};base64,#{base64}"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'open-uri'
|
2
|
+
require "nokogiri"
|
3
|
+
require "gatchaman/data_scheme"
|
4
|
+
require "gatchaman/path"
|
5
|
+
require "gatchaman/embedder/media"
|
6
|
+
require "gatchaman/embedder/css"
|
7
|
+
require "gatchaman/embedder/js"
|
8
|
+
|
9
|
+
class Gatchaman
|
10
|
+
module Embedder
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'gatchaman/embedder/generic'
|
2
|
+
|
3
|
+
class Gatchaman::Embedder::CSS < Gatchaman::Embedder::Generic
|
4
|
+
def embed(doc)
|
5
|
+
doc.css('link[rel=stylesheet]').each do |element|
|
6
|
+
embed_element(element)
|
7
|
+
end
|
8
|
+
doc.css('style').each do |element|
|
9
|
+
element.content = embed_all_url_in_css(element.content)
|
10
|
+
end
|
11
|
+
doc
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
def embed_element(element)
|
16
|
+
element.name = "style"
|
17
|
+
content = inner_html_from_file(element[:href])
|
18
|
+
element.inner_html = content
|
19
|
+
element.attributes.keys.each do |attr_name|
|
20
|
+
next if [:media, :type].include? attr_name.to_sym
|
21
|
+
element.delete(attr_name)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def embed_all_url_in_css(css_content)
|
26
|
+
css_content.gsub(/\burl\b\(([^)]+)\)/) do
|
27
|
+
data_scheme = Gatchaman::DataScheme.new(path($1))
|
28
|
+
"url(#{data_scheme})"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
class Gatchaman
|
2
|
+
module Embedder
|
3
|
+
class Generic
|
4
|
+
def initialize(options)
|
5
|
+
@options = options
|
6
|
+
end
|
7
|
+
|
8
|
+
def expand(doc)
|
9
|
+
doc
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
def path(path)
|
14
|
+
Path.new(path, @options)
|
15
|
+
end
|
16
|
+
|
17
|
+
def inner_html_from_file(filename)
|
18
|
+
["", open(path(filename)).read.chomp, ""].join("\n")
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'gatchaman/embedder/generic'
|
2
|
+
|
3
|
+
class Gatchaman::Embedder::JS < Gatchaman::Embedder::Generic
|
4
|
+
def embed(doc)
|
5
|
+
doc.css('script').each do |element|
|
6
|
+
embed_element(element)
|
7
|
+
end
|
8
|
+
doc
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
def embed_element(element)
|
13
|
+
return if element[:src].nil? or element[:src].size == 0
|
14
|
+
element.inner_html += html_comment_out(inner_html_from_file(element[:src]))
|
15
|
+
[:src, :charset].each {|attr| element.delete(attr.to_s)}
|
16
|
+
end
|
17
|
+
|
18
|
+
def html_comment_out(content)
|
19
|
+
["<!--", content, "-->"].join("\n")
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'gatchaman/embedder/generic'
|
2
|
+
|
3
|
+
class Gatchaman::Embedder::Media < Gatchaman::Embedder::Generic
|
4
|
+
TARGET_ELEMENTS = [
|
5
|
+
:img,
|
6
|
+
:audio,
|
7
|
+
:video
|
8
|
+
].freeze
|
9
|
+
|
10
|
+
def embed(doc)
|
11
|
+
doc.css(TARGET_ELEMENTS.join(',')).each do |element|
|
12
|
+
element[:src] = Gatchaman::DataScheme.new(path(element[:src]))
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'uri'
|
2
|
+
require 'pathname'
|
3
|
+
|
4
|
+
class Gatchaman
|
5
|
+
class Path < String
|
6
|
+
HTTP_REGEX = /^(?:shttp|http|https):/
|
7
|
+
|
8
|
+
def initialize(path, options = {})
|
9
|
+
@path = path
|
10
|
+
@document_root = options[:document_root]
|
11
|
+
@current_dir = options[:current_dir]
|
12
|
+
super(normalized)
|
13
|
+
end
|
14
|
+
|
15
|
+
def normalized
|
16
|
+
if @path =~ HTTP_REGEX
|
17
|
+
@path
|
18
|
+
else
|
19
|
+
path = Pathname.new(@path)
|
20
|
+
if path.relative?
|
21
|
+
Pathname.new(@current_dir).join(@path).to_s
|
22
|
+
else
|
23
|
+
Pathname.new(@document_root).join(path.relative_path_from(root)).to_s
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
def root
|
30
|
+
Pathname.new("/")
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lib/gatchaman/version.rb
CHANGED
data/spec/gatchaman_spec.rb
CHANGED
@@ -7,7 +7,7 @@ describe Gatchaman do
|
|
7
7
|
let(:document_root) {File.dirname(File.dirname(__FILE__))}
|
8
8
|
let(:current_dir) {File.dirname(__FILE__)}
|
9
9
|
let(:gatchaman){Gatchaman.new(document_root: document_root, current_dir: current_dir, expand_js: true, expand_css: true)}
|
10
|
-
let(:
|
10
|
+
let(:base64_encoded_resource){
|
11
11
|
"iVBORw0KGgoAAAANSUhEUgAAAAQAAAAGCAIAAABrW6giAAAACXBIWXMAA
|
12
12
|
BYlAAAWJQFJUiTwAAABy2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPH
|
13
13
|
g6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0
|
@@ -23,39 +23,54 @@ describe Gatchaman do
|
|
23
23
|
bXBtZXRhPgrjpclbAAAAFUlEQVQIHWOUlJRkgAEmGANEk8MBABhmAFcTc
|
24
24
|
YlpAAAAAElFTkSuQmCC".gsub(/[\s\n]/,'')
|
25
25
|
}
|
26
|
-
let(:test_css_content) { open("#{current_dir}/
|
27
|
-
let(:test_js_content) { open("#{current_dir}/
|
26
|
+
let(:test_css_content) { open("#{current_dir}/resources/test.css").read.chomp }
|
27
|
+
let(:test_js_content) { open("#{current_dir}/resources/test.js").read.chomp }
|
28
28
|
|
29
29
|
it "絶対urlのsrcをdata schemeで置き換えてくれること" do
|
30
|
-
|
31
|
-
and_return(Base64.decode64(
|
30
|
+
Gatchaman::DataScheme.any_instance.should_receive(:open).with("http://example.com/img/test.png", "r:ASCII-8BIT").
|
31
|
+
and_return(Base64.decode64(base64_encoded_resource))
|
32
32
|
gatchaman.data_uri_schemize("<img src='http://example.com/img/test.png'>").
|
33
|
-
should == "<img src=\"data:image/png;base64,#{
|
33
|
+
should == "<img src=\"data:image/png;base64,#{base64_encoded_resource}\">"
|
34
34
|
end
|
35
35
|
|
36
36
|
it "相対urlの相対パスsrcをdata schemeで置き換えてくれること" do
|
37
|
-
gatchaman.data_uri_schemize('<img src="
|
38
|
-
should == "<img src=\"data:image/png;base64,#{
|
37
|
+
gatchaman.data_uri_schemize('<img src="resources/test.png">').
|
38
|
+
should == "<img src=\"data:image/png;base64,#{base64_encoded_resource}\">"
|
39
39
|
end
|
40
40
|
|
41
41
|
it "相対urlの絶対パスsrcをdata schemeで置き換えてくれること" do
|
42
|
-
gatchaman.data_uri_schemize('<img src="/spec/
|
43
|
-
should == "<img src=\"data:image/png;base64,#{
|
42
|
+
gatchaman.data_uri_schemize('<img src="/spec/resources/test.png">').
|
43
|
+
should == "<img src=\"data:image/png;base64,#{base64_encoded_resource}\">"
|
44
|
+
end
|
45
|
+
|
46
|
+
it "ルートにhtmlタグを含む場合、htmlページとして出力すること" do
|
47
|
+
gatchaman.data_uri_schemize('<html><body><h1>nyan!</h1></body></html>').
|
48
|
+
should match /^<html>/
|
49
|
+
end
|
50
|
+
|
51
|
+
it "ルートにhtmlタグを含まない場合、htmlの断片として出力すること" do
|
52
|
+
gatchaman.data_uri_schemize('<body><h1>nyan!</h1></body>').
|
53
|
+
should_not match /^<html>/
|
44
54
|
end
|
45
55
|
|
46
56
|
it "cssを展開してくれること" do
|
47
|
-
gatchaman.data_uri_schemize('<link rel="stylesheet" type="text/css" media="screen" href="
|
57
|
+
gatchaman.data_uri_schemize('<link rel="stylesheet" type="text/css" media="screen" href="resources/test.css">').
|
48
58
|
should == %[<style type="text/css" media="screen">\n#{test_css_content}\n</style>]
|
49
59
|
end
|
50
60
|
|
51
61
|
it "css内部のurl参照を展開してくれること" do
|
52
|
-
gatchaman.data_uri_schemize('<link rel="stylesheet" type="text/css" media="screen" href="
|
53
|
-
include?(
|
62
|
+
gatchaman.data_uri_schemize('<link rel="stylesheet" type="text/css" media="screen" href="resources/test_2.css">').
|
63
|
+
include?(base64_encoded_resource).should be_true
|
64
|
+
end
|
65
|
+
|
66
|
+
it "styleタグ内部のURLを展開してくれること" do
|
67
|
+
gatchaman.data_uri_schemize('<style> * { background: url(/spec/resources/test.png); } </style>').
|
68
|
+
include?(base64_encoded_resource).should be_true
|
54
69
|
end
|
55
70
|
|
56
71
|
it "jsを展開してくれること" do
|
57
|
-
gatchaman.data_uri_schemize('<script src="
|
58
|
-
should == %[<script type="text/javascript"
|
72
|
+
gatchaman.data_uri_schemize('<script src="resources/test.js" type="text/javascript" charset="utf-8"></script>').
|
73
|
+
should == %[<script type="text/javascript"><!--\n\n#{test_js_content}\n\n--></script>]
|
59
74
|
end
|
60
75
|
end
|
61
76
|
end
|
data/spec/resouces/test_2.css
CHANGED
File without changes
|
File without changes
|
File without changes
|
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gatchaman
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
5
|
-
prerelease:
|
4
|
+
version: 0.2.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Shinpei Maruyama
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-03-18 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: nokogiri
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,7 +27,6 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: mime-types
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - ~>
|
36
32
|
- !ruby/object:Gem::Version
|
@@ -38,7 +34,6 @@ dependencies:
|
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - ~>
|
44
39
|
- !ruby/object:Gem::Version
|
@@ -46,7 +41,6 @@ dependencies:
|
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rspec
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
45
|
- - ~>
|
52
46
|
- !ruby/object:Gem::Version
|
@@ -54,11 +48,24 @@ dependencies:
|
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
52
|
- - ~>
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: 2.12.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 10.0.3
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 10.0.3
|
62
69
|
description: Gatchaman is a gem to replace src values in HTML documents with data
|
63
70
|
URI scheme
|
64
71
|
email:
|
@@ -77,42 +84,50 @@ files:
|
|
77
84
|
- bin/gatchan
|
78
85
|
- gatchaman.gemspec
|
79
86
|
- lib/gatchaman.rb
|
87
|
+
- lib/gatchaman/data_scheme.rb
|
88
|
+
- lib/gatchaman/embedder.rb
|
89
|
+
- lib/gatchaman/embedder/css.rb
|
90
|
+
- lib/gatchaman/embedder/generic.rb
|
91
|
+
- lib/gatchaman/embedder/js.rb
|
92
|
+
- lib/gatchaman/embedder/media.rb
|
93
|
+
- lib/gatchaman/path.rb
|
80
94
|
- lib/gatchaman/version.rb
|
81
95
|
- spec/gatchaman_spec.rb
|
82
|
-
- spec/resouces/test.css
|
83
|
-
- spec/resouces/test.js
|
84
|
-
- spec/resouces/test.png
|
85
96
|
- spec/resouces/test_2.css
|
97
|
+
- spec/resources/test.css
|
98
|
+
- spec/resources/test.js
|
99
|
+
- spec/resources/test.png
|
100
|
+
- spec/resources/test_2.css
|
86
101
|
- spec/spec_helper.rb
|
87
102
|
homepage: https://github.com/Shinpeim/Gatchaman
|
88
103
|
licenses: []
|
104
|
+
metadata: {}
|
89
105
|
post_install_message:
|
90
106
|
rdoc_options: []
|
91
107
|
require_paths:
|
92
108
|
- lib
|
93
109
|
required_ruby_version: !ruby/object:Gem::Requirement
|
94
|
-
none: false
|
95
110
|
requirements:
|
96
|
-
- -
|
111
|
+
- - '>='
|
97
112
|
- !ruby/object:Gem::Version
|
98
113
|
version: '0'
|
99
114
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
100
|
-
none: false
|
101
115
|
requirements:
|
102
|
-
- -
|
116
|
+
- - '>='
|
103
117
|
- !ruby/object:Gem::Version
|
104
118
|
version: '0'
|
105
119
|
requirements: []
|
106
120
|
rubyforge_project:
|
107
|
-
rubygems_version:
|
121
|
+
rubygems_version: 2.0.0
|
108
122
|
signing_key:
|
109
|
-
specification_version:
|
123
|
+
specification_version: 4
|
110
124
|
summary: Gatchaman is a gem to replace src values in HTML documents with data URI
|
111
125
|
scheme
|
112
126
|
test_files:
|
113
127
|
- spec/gatchaman_spec.rb
|
114
|
-
- spec/resouces/test.css
|
115
|
-
- spec/resouces/test.js
|
116
|
-
- spec/resouces/test.png
|
117
128
|
- spec/resouces/test_2.css
|
129
|
+
- spec/resources/test.css
|
130
|
+
- spec/resources/test.js
|
131
|
+
- spec/resources/test.png
|
132
|
+
- spec/resources/test_2.css
|
118
133
|
- spec/spec_helper.rb
|