signature_generator 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/exe/sg +1 -0
- data/lib/signature_generator.rb +1 -0
- data/lib/signature_generator/inliner.rb +39 -0
- data/lib/signature_generator/processor.rb +3 -0
- data/lib/signature_generator/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 125f4dcd21ef78e46b2548ba7bb2da7c046503c9
|
4
|
+
data.tar.gz: d63a1abdfe22e5062e7dc14be1b97848cb8606df
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1cb710d4b9d8ad4c9f25bfd7a57888d6274e54a64e2e47509e4933e216db52cb8a93b043b2f714f0cb5006147fecf3c7824bb63c966c3638215188747705b400
|
7
|
+
data.tar.gz: 139ee24970e91eac4c0e332cc00b709e15d0d34b1726ccf34b66238e09e10177c30be0fee7abc685d2643ba1cd6b76c84ae5eb4d0932cccf25e9b1e70aa3f934
|
data/exe/sg
CHANGED
@@ -39,6 +39,7 @@ module SignatureGenerator
|
|
39
39
|
argument: true, as: Integer
|
40
40
|
slop.on :var=, 'Define variables in the form name=value', argument: true, as: Array
|
41
41
|
slop.on :n, :'no-minify', 'Will not minify the resulting html signature. By default will do', argument: false
|
42
|
+
slop.on :'inline-images', 'Encodes remote images as Base64', argument: false
|
42
43
|
end
|
43
44
|
end
|
44
45
|
|
data/lib/signature_generator.rb
CHANGED
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'base64'
|
2
|
+
require 'open-uri'
|
3
|
+
|
4
|
+
module SignatureGenerator
|
5
|
+
|
6
|
+
class Inliner
|
7
|
+
|
8
|
+
IMG_TAG = /<img[^>]+src\s*=\s*"(https?:\/\/[^"]+\.(?:png|jpg|jpeg))"/
|
9
|
+
|
10
|
+
attr_reader :original_content
|
11
|
+
|
12
|
+
def initialize(content)
|
13
|
+
@original_content = content
|
14
|
+
end
|
15
|
+
|
16
|
+
def inlined
|
17
|
+
result = original_content.dup
|
18
|
+
url_candidates = result.scan(IMG_TAG).flatten
|
19
|
+
url_candidates.each do |url|
|
20
|
+
content64 = load_file url
|
21
|
+
result.gsub! url, content64
|
22
|
+
end
|
23
|
+
result
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def load_file(url)
|
29
|
+
content = open(url) {|f| f.read }
|
30
|
+
ext = url.gsub /^.*\.([^\.]+)\s*$/, '\1'
|
31
|
+
content64 = Base64.strict_encode64 content
|
32
|
+
'data:image/%s;base64,%s' % [ext, content64]
|
33
|
+
rescue
|
34
|
+
EasyAppHelper.logger.warn SignatureGenerator::Error, "Cannot load file '#{file}'"
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -19,6 +19,9 @@ module SignatureGenerator
|
|
19
19
|
def transform(template, context = self.context)
|
20
20
|
counters = {}
|
21
21
|
begin
|
22
|
+
if config[:'inline-images']
|
23
|
+
template = SignatureGenerator::Inliner.new(template).inlined
|
24
|
+
end
|
22
25
|
@results = ERB.new(template, nil, '-').result(context_as_binding context)
|
23
26
|
rescue NameError => e
|
24
27
|
missing_var = e.name
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: signature_generator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Laurent B.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-01-
|
11
|
+
date: 2017-01-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -117,6 +117,7 @@ files:
|
|
117
117
|
- lib/signature_generator.rb
|
118
118
|
- lib/signature_generator/context.rb
|
119
119
|
- lib/signature_generator/error.rb
|
120
|
+
- lib/signature_generator/inliner.rb
|
120
121
|
- lib/signature_generator/processor.rb
|
121
122
|
- lib/signature_generator/version.rb
|
122
123
|
- signature_generator.gemspec
|