mustachio 0.1.1 → 0.2.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/Gemfile.lock +20 -21
- data/VERSION +1 -1
- data/config/staches.yml +14 -0
- data/config.ru +2 -2
- data/lib/mustachio/app.rb +42 -0
- data/lib/mustachio.rb +64 -52
- data/mustachio.gemspec +14 -8
- data/public/images/staches/colonel_mustard.png +0 -0
- data/public/images/{mustache_03.png → staches/mustache_03.png} +0 -0
- data/public/images/staches/mustache_07.png +0 -0
- data/spec/spec_helper.rb +2 -2
- data/views/gallery.haml +10 -0
- data/views/index.haml +2 -2
- data/views/test.haml +6 -0
- metadata +55 -111
data/Gemfile.lock
CHANGED
@@ -2,19 +2,18 @@ GEM
|
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
4
|
activesupport (3.0.7)
|
5
|
-
addressable (2.2.
|
5
|
+
addressable (2.2.6)
|
6
6
|
archive-tar-minitar (0.5.2)
|
7
7
|
columnize (0.3.2)
|
8
8
|
crack (0.1.8)
|
9
9
|
diff-lcs (1.1.2)
|
10
|
-
dragonfly (0.9.
|
11
|
-
rack
|
10
|
+
dragonfly (0.9.2)
|
12
11
|
rack
|
13
12
|
face (0.0.4)
|
14
13
|
json (>= 1.4.6)
|
15
14
|
rest-client (>= 1.6.1)
|
16
15
|
git (1.2.5)
|
17
|
-
haml (3.
|
16
|
+
haml (3.1.1)
|
18
17
|
httparty (0.7.7)
|
19
18
|
crack (= 0.1.8)
|
20
19
|
imagesize (0.1.1)
|
@@ -26,29 +25,29 @@ GEM
|
|
26
25
|
linecache (0.43)
|
27
26
|
linecache19 (0.5.12)
|
28
27
|
ruby_core_source (>= 0.1.4)
|
29
|
-
magickly (1.1.
|
28
|
+
magickly (1.1.3)
|
30
29
|
activesupport (>= 2.0.0)
|
31
30
|
addressable (~> 2.2)
|
32
|
-
dragonfly (~> 0.
|
33
|
-
haml (~> 3.0
|
31
|
+
dragonfly (~> 0.9.1)
|
32
|
+
haml (~> 3.0)
|
34
33
|
httparty (~> 0.7.3)
|
35
34
|
sinatra (~> 1.2.1)
|
36
35
|
mime-types (1.16)
|
37
|
-
newrelic_rpm (
|
38
|
-
rack (1.
|
36
|
+
newrelic_rpm (3.0.1)
|
37
|
+
rack (1.3.0)
|
39
38
|
rack-test (0.6.0)
|
40
39
|
rack (>= 1.0)
|
41
|
-
rake (0.
|
40
|
+
rake (0.9.0)
|
42
41
|
rest-client (1.6.1)
|
43
42
|
mime-types (>= 1.16)
|
44
|
-
rspec (2.
|
45
|
-
rspec-core (~> 2.
|
46
|
-
rspec-expectations (~> 2.
|
47
|
-
rspec-mocks (~> 2.
|
48
|
-
rspec-core (2.
|
49
|
-
rspec-expectations (2.
|
43
|
+
rspec (2.6.0)
|
44
|
+
rspec-core (~> 2.6.0)
|
45
|
+
rspec-expectations (~> 2.6.0)
|
46
|
+
rspec-mocks (~> 2.6.0)
|
47
|
+
rspec-core (2.6.3)
|
48
|
+
rspec-expectations (2.6.0)
|
50
49
|
diff-lcs (~> 1.1.2)
|
51
|
-
rspec-mocks (2.
|
50
|
+
rspec-mocks (2.6.0)
|
52
51
|
ruby-debug (0.10.4)
|
53
52
|
columnize (>= 0.1)
|
54
53
|
ruby-debug-base (~> 0.10.4.0)
|
@@ -67,10 +66,10 @@ GEM
|
|
67
66
|
sinatra (1.2.6)
|
68
67
|
rack (~> 1.1)
|
69
68
|
tilt (< 2.0, >= 1.2.2)
|
70
|
-
tilt (1.3)
|
71
|
-
vcr (1.
|
72
|
-
webmock (1.6.
|
73
|
-
addressable (
|
69
|
+
tilt (1.3.1)
|
70
|
+
vcr (1.10.0)
|
71
|
+
webmock (1.6.4)
|
72
|
+
addressable (> 2.2.5, ~> 2.2)
|
74
73
|
crack (>= 0.1.7)
|
75
74
|
|
76
75
|
PLATFORMS
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/config/staches.yml
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
# files are expected to be under config/staches/
|
2
|
+
# thanks to http://therantsandraves.com/?p=602 for the 'staches
|
3
|
+
|
4
|
+
-
|
5
|
+
filename: mustache_03.png
|
6
|
+
vert_offset: 15
|
7
|
+
-
|
8
|
+
filename: colonel_mustard.png
|
9
|
+
vert_offset: 40
|
10
|
+
mouth_overlap: 100
|
11
|
+
-
|
12
|
+
filename: mustache_07.png
|
13
|
+
vert_offset: 30
|
14
|
+
mouth_overlap: 50
|
data/config.ru
CHANGED
@@ -2,10 +2,10 @@ require 'rubygems'
|
|
2
2
|
require 'bundler'
|
3
3
|
Bundler.require
|
4
4
|
|
5
|
-
require File.join(File.dirname(__FILE__), 'lib', 'mustachio')
|
5
|
+
require File.join(File.dirname(__FILE__), 'lib', 'mustachio', 'app')
|
6
6
|
|
7
7
|
map '/' do
|
8
|
-
run Mustachio
|
8
|
+
run Mustachio::App
|
9
9
|
end
|
10
10
|
|
11
11
|
map '/magickly' do
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '..', 'mustachio')
|
2
|
+
require 'sinatra/base'
|
3
|
+
|
4
|
+
module Mustachio
|
5
|
+
class App < Sinatra::Base
|
6
|
+
DEMO_IMAGE = 'http://www.librarising.com/astrology/celebs/images2/QR/queenelizabethii.jpg'
|
7
|
+
|
8
|
+
set :static, true
|
9
|
+
set :public, 'public'
|
10
|
+
|
11
|
+
configure :production do
|
12
|
+
require 'newrelic_rpm' if ENV['NEW_RELIC_ID']
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
get %r{^/(\d+|rand)?$} do |stache_num|
|
17
|
+
src = params[:src]
|
18
|
+
if src
|
19
|
+
# use the specified stache, otherwise fall back to random
|
20
|
+
image = Magickly.process_src params[:src], :mustachify => (stache_num || true)
|
21
|
+
image.to_response(env)
|
22
|
+
else
|
23
|
+
@stache_num = stache_num
|
24
|
+
@site = Addressable::URI.parse(request.url).site
|
25
|
+
haml :index
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
get '/gallery' do
|
30
|
+
haml :gallery
|
31
|
+
end
|
32
|
+
|
33
|
+
get '/test' do
|
34
|
+
haml :test
|
35
|
+
end
|
36
|
+
|
37
|
+
get '/face_api_dev_challenge' do
|
38
|
+
haml :face_api_dev_challenge
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
end
|
data/lib/mustachio.rb
CHANGED
@@ -1,21 +1,10 @@
|
|
1
|
-
require 'sinatra/base'
|
2
1
|
require 'magickly'
|
3
2
|
require 'image_size'
|
4
3
|
require 'face'
|
5
4
|
|
6
|
-
# thanks to http://therantsandraves.com/?p=602 for the 'staches
|
7
|
-
MUSTACHE = {
|
8
|
-
:filename => File.expand_path(File.join(File.join(File.dirname(__FILE__), '..', 'public', 'images', 'mustache_03.png'))),
|
9
|
-
:width => nil,
|
10
|
-
:height => nil,
|
11
|
-
:top_offset => -5.0,
|
12
|
-
:bottom_offset => -15.0
|
13
|
-
}
|
14
|
-
MUSTACHE[:width], MUSTACHE[:height] = ImageSize.new(File.new(MUSTACHE[:filename])).get_size
|
15
|
-
|
16
|
-
FACE_POS_ATTRS = ['center', 'eye_left', 'eye_right', 'mouth_left', 'mouth_center', 'mouth_right', 'nose']
|
17
|
-
|
18
5
|
Magickly.dragonfly.configure do |c|
|
6
|
+
c.log_commands = true
|
7
|
+
|
19
8
|
c.analyser.add :face_data do |temp_object|
|
20
9
|
Mustachio.face_client.faces_detect(:file => temp_object.file, :attributes => 'none')['photos'].first
|
21
10
|
end
|
@@ -24,7 +13,7 @@ Magickly.dragonfly.configure do |c|
|
|
24
13
|
data = Mustachio.face_client.faces_detect(:file => temp_object.file, :attributes => 'none')['photos'].first # TODO use #face_data
|
25
14
|
|
26
15
|
data['tags'].map! do |face|
|
27
|
-
FACE_POS_ATTRS.each do |pos_attr|
|
16
|
+
Mustachio::FACE_POS_ATTRS.each do |pos_attr|
|
28
17
|
if face[pos_attr].nil?
|
29
18
|
puts "WARN: missing position attribute '#{pos_attr}'"
|
30
19
|
else
|
@@ -39,25 +28,48 @@ Magickly.dragonfly.configure do |c|
|
|
39
28
|
data
|
40
29
|
end
|
41
30
|
|
42
|
-
c.job :mustachify do
|
31
|
+
c.job :mustachify do |stache_num_param|
|
43
32
|
photo_data = @job.face_data_as_px
|
44
33
|
width = photo_data['width']
|
45
34
|
|
46
|
-
commands = []
|
35
|
+
commands = ['-virtual-pixel transparent']
|
47
36
|
photo_data['tags'].each do |face|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
37
|
+
stache_num = case stache_num_param
|
38
|
+
when true
|
39
|
+
0
|
40
|
+
when 'true'
|
41
|
+
0
|
42
|
+
when 'rand'
|
43
|
+
rand(Mustachio.mustaches.size)
|
44
|
+
else
|
45
|
+
stache_num_param.to_i
|
46
|
+
end
|
47
|
+
|
48
|
+
mustache = Mustachio.mustaches[stache_num]
|
49
|
+
|
50
|
+
# perform transform such that the mustache is the height
|
51
|
+
# of the upper lip, and the bottom-center of the stache
|
52
|
+
# is mapped to the center of the mouth
|
53
|
+
rotation = Math.atan(
|
54
|
+
( face['mouth_right']['y'] - face['mouth_left']['y'] ).to_f /
|
55
|
+
( face['mouth_right']['x'] - face['mouth_left']['x'] ).to_f
|
56
|
+
) / Math::PI * 180.0
|
57
|
+
desired_height = Math.sqrt(
|
58
|
+
( face['nose']['x'] - face['mouth_center']['x'] ).to_f**2 +
|
59
|
+
( face['nose']['y'] - face['mouth_center']['y'] ).to_f**2
|
60
|
+
)
|
61
|
+
mouth_intersect = mustache['height'] - mustache['mouth_overlap']
|
62
|
+
scale = desired_height / mouth_intersect
|
63
|
+
|
64
|
+
srt_params = [
|
65
|
+
[ mustache['width'] / 2.0, mouth_intersect - mustache['vert_offset'] ].map{|e| e.to_i }.join(','), # bottom-center of stache
|
66
|
+
scale, # scale
|
67
|
+
rotation, # rotate
|
68
|
+
[ face['mouth_center']['x'], face['mouth_center']['y'] ].map{|e| e.to_i }.join(',') # middle of mouth
|
57
69
|
]
|
58
|
-
|
70
|
+
srt_params_str = srt_params.join(' ')
|
59
71
|
|
60
|
-
commands << "\\( #{
|
72
|
+
commands << "\\( #{mustache['file_path']} +distort SRT '#{srt_params_str}' \\)"
|
61
73
|
end
|
62
74
|
commands << "-flatten"
|
63
75
|
|
@@ -66,37 +78,37 @@ Magickly.dragonfly.configure do |c|
|
|
66
78
|
end
|
67
79
|
end
|
68
80
|
|
69
|
-
|
70
|
-
|
71
|
-
:api_key => (ENV['MUSTACHIO_FACE_API_KEY'] || raise("Please set MUSTACHIO_FACE_API_KEY.")),
|
72
|
-
:api_secret => (ENV['MUSTACHIO_FACE_API_SECRET'] || raise("Please set MUSTACHIO_FACE_API_SECRET."))
|
73
|
-
)
|
74
|
-
|
75
|
-
set :static, true
|
76
|
-
set :public, 'public'
|
77
|
-
|
78
|
-
configure :production do
|
79
|
-
require 'newrelic_rpm' if ENV['NEW_RELIC_ID']
|
80
|
-
end
|
81
|
+
module Mustachio
|
82
|
+
FACE_POS_ATTRS = ['center', 'eye_left', 'eye_right', 'mouth_left', 'mouth_center', 'mouth_right', 'nose']
|
81
83
|
|
82
84
|
class << self
|
83
85
|
def face_client
|
84
86
|
@@face_client
|
85
87
|
end
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
88
|
+
|
89
|
+
def mustaches
|
90
|
+
@@mustaches
|
91
|
+
end
|
92
|
+
|
93
|
+
def setup
|
94
|
+
@@face_client = Face.get_client(
|
95
|
+
:api_key => (ENV['MUSTACHIO_FACE_API_KEY'] || raise("Please set MUSTACHIO_FACE_API_KEY.")),
|
96
|
+
:api_secret => (ENV['MUSTACHIO_FACE_API_SECRET'] || raise("Please set MUSTACHIO_FACE_API_SECRET."))
|
97
|
+
)
|
98
|
+
|
99
|
+
staches = YAML.load(File.read(File.join(File.dirname(__FILE__), '..', 'config', 'staches.yml')))
|
100
|
+
staches.map! do |stache|
|
101
|
+
stache['vert_offset'] ||= 0
|
102
|
+
stache['mouth_overlap'] ||= 0
|
103
|
+
|
104
|
+
stache['file_path'] = File.expand_path(File.join(File.dirname(__FILE__), '..', 'public', 'images', 'staches', stache['filename']))
|
105
|
+
stache['width'], stache['height'] = ImageSize.new(File.new(stache['file_path'])).get_size
|
106
|
+
stache
|
107
|
+
end
|
108
|
+
@@mustaches = staches
|
96
109
|
end
|
97
110
|
end
|
98
111
|
|
99
|
-
|
100
|
-
|
101
|
-
end
|
112
|
+
|
113
|
+
self.setup
|
102
114
|
end
|
data/mustachio.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{mustachio}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = [
|
12
|
-
s.date = %q{2011-05-
|
11
|
+
s.authors = ["Aidan Feldman"]
|
12
|
+
s.date = %q{2011-05-26}
|
13
13
|
s.description = %q{Adds a 'mustachify' shortcut to magickly.}
|
14
14
|
s.email = %q{aidan.feldman@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -27,12 +27,16 @@ Gem::Specification.new do |s|
|
|
27
27
|
"VERSION",
|
28
28
|
"bookmarklet.js",
|
29
29
|
"config.ru",
|
30
|
+
"config/staches.yml",
|
30
31
|
"lib/mustachio.rb",
|
32
|
+
"lib/mustachio/app.rb",
|
31
33
|
"mustachio.gemspec",
|
32
34
|
"public/favicon.ico",
|
33
35
|
"public/images/dubya.jpeg",
|
34
36
|
"public/images/guy_hecker.jpeg",
|
35
|
-
"public/images/
|
37
|
+
"public/images/staches/colonel_mustard.png",
|
38
|
+
"public/images/staches/mustache_03.png",
|
39
|
+
"public/images/staches/mustache_07.png",
|
36
40
|
"spec/fixtures/vcr_cassettes/big_obama.yml",
|
37
41
|
"spec/fixtures/vcr_cassettes/dubya.yml",
|
38
42
|
"spec/fixtures/vcr_cassettes/small_obama.yml",
|
@@ -43,12 +47,14 @@ Gem::Specification.new do |s|
|
|
43
47
|
"spec/unit/analyser_spec.rb",
|
44
48
|
"views/face_api_dev_challenge.haml",
|
45
49
|
"views/ga.haml",
|
46
|
-
"views/
|
50
|
+
"views/gallery.haml",
|
51
|
+
"views/index.haml",
|
52
|
+
"views/test.haml"
|
47
53
|
]
|
48
54
|
s.homepage = %q{http://github.com/afeld/mustachio}
|
49
|
-
s.licenses = [
|
50
|
-
s.require_paths = [
|
51
|
-
s.rubygems_version = %q{1.
|
55
|
+
s.licenses = ["MIT"]
|
56
|
+
s.require_paths = ["lib"]
|
57
|
+
s.rubygems_version = %q{1.6.2}
|
52
58
|
s.summary = %q{automatic mustachifying of any image}
|
53
59
|
|
54
60
|
if s.respond_to? :specification_version then
|
Binary file
|
File without changes
|
Binary file
|
data/spec/spec_helper.rb
CHANGED
@@ -5,11 +5,11 @@ require 'bundler'
|
|
5
5
|
Bundler.require
|
6
6
|
|
7
7
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
8
|
-
require 'mustachio'
|
8
|
+
require 'mustachio/app'
|
9
9
|
require 'webmock/rspec'
|
10
10
|
require 'vcr'
|
11
11
|
|
12
|
-
Mustachio.set :environment, :test
|
12
|
+
Mustachio::App.set :environment, :test
|
13
13
|
|
14
14
|
# Requires supporting ruby files with custom matchers and macros, etc,
|
15
15
|
# in spec/support/ and its subdirectories.
|
data/views/gallery.haml
ADDED
data/views/index.haml
CHANGED
@@ -6,5 +6,5 @@
|
|
6
6
|
%body
|
7
7
|
%a{:href => "http://github.com/afeld/mustachio"}
|
8
8
|
%img{:style => "position: absolute; top: 0; right: 0; border: 0;", :src => "https://d3nwyuy0nl342s.cloudfront.net/img/7afbc8b248c68eb468279e8c17986ad46549fb71/687474703a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f6461726b626c75655f3132313632312e706e67", :alt => "Fork me on GitHub"}
|
9
|
-
%img{:src => "
|
10
|
-
%h1 #{@site}
|
9
|
+
%img{:src => "/#{@stache_num}?src=#{DEMO_IMAGE}"}
|
10
|
+
%h1 #{@site}/#{@stache_num}?src=<em>YOUR_IMAGE_URL</em>
|
data/views/test.haml
ADDED
@@ -0,0 +1,6 @@
|
|
1
|
+
!!!
|
2
|
+
%html
|
3
|
+
%head
|
4
|
+
%body
|
5
|
+
- ['http://www.bbcnewsdaily.com/wp-content/uploads/2011/05/barack-obama-sad-pic.jpg', 'http://www.gala.fr/var/gal/storage/images/media/images/actu/photos_on_ne_parle_que_de_ca/remarions-les/george_bush/473331-1-fre-FR/george_bush_reference.jpg', 'http://blogs.southcoasttoday.com/new-bedford-politics/files/2011/05/Obama-Situation-Room-Osama-bin-Laden.jpg', 'http://2.bp.blogspot.com/_dcFI3kFsDvw/RYCugYRqJ5I/AAAAAAAAATI/HT0rdFL9WfY/s400/backstreet_boys8.jpg'].each do |src|
|
6
|
+
%img{ :src => "/?src=#{src}" }
|
metadata
CHANGED
@@ -1,13 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mustachio
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 25
|
5
4
|
prerelease:
|
6
|
-
|
7
|
-
- 0
|
8
|
-
- 1
|
9
|
-
- 1
|
10
|
-
version: 0.1.1
|
5
|
+
version: 0.2.0
|
11
6
|
platform: ruby
|
12
7
|
authors:
|
13
8
|
- Aidan Feldman
|
@@ -15,218 +10,163 @@ autorequire:
|
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
12
|
|
18
|
-
date: 2011-05-
|
13
|
+
date: 2011-05-26 00:00:00 -04:00
|
14
|
+
default_executable:
|
19
15
|
dependencies:
|
20
16
|
- !ruby/object:Gem::Dependency
|
21
|
-
|
17
|
+
name: sinatra
|
18
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
22
19
|
none: false
|
23
20
|
requirements:
|
24
21
|
- - ~>
|
25
22
|
- !ruby/object:Gem::Version
|
26
|
-
hash: 25
|
27
|
-
segments:
|
28
|
-
- 1
|
29
|
-
- 2
|
30
|
-
- 3
|
31
23
|
version: 1.2.3
|
32
24
|
type: :runtime
|
33
|
-
requirement: *id001
|
34
25
|
prerelease: false
|
35
|
-
|
26
|
+
version_requirements: *id001
|
36
27
|
- !ruby/object:Gem::Dependency
|
37
|
-
|
28
|
+
name: dragonfly
|
29
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
30
|
none: false
|
39
31
|
requirements:
|
40
32
|
- - ~>
|
41
33
|
- !ruby/object:Gem::Version
|
42
|
-
hash: 59
|
43
|
-
segments:
|
44
|
-
- 0
|
45
|
-
- 9
|
46
|
-
- 0
|
47
34
|
version: 0.9.0
|
48
35
|
type: :runtime
|
49
|
-
requirement: *id002
|
50
36
|
prerelease: false
|
51
|
-
|
37
|
+
version_requirements: *id002
|
52
38
|
- !ruby/object:Gem::Dependency
|
53
|
-
|
39
|
+
name: magickly
|
40
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
54
41
|
none: false
|
55
42
|
requirements:
|
56
43
|
- - ~>
|
57
44
|
- !ruby/object:Gem::Version
|
58
|
-
hash: 13
|
59
|
-
segments:
|
60
|
-
- 1
|
61
|
-
- 1
|
62
45
|
version: "1.1"
|
63
46
|
type: :runtime
|
64
|
-
requirement: *id003
|
65
47
|
prerelease: false
|
66
|
-
|
48
|
+
version_requirements: *id003
|
67
49
|
- !ruby/object:Gem::Dependency
|
68
|
-
|
50
|
+
name: addressable
|
51
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
69
52
|
none: false
|
70
53
|
requirements:
|
71
54
|
- - ~>
|
72
55
|
- !ruby/object:Gem::Version
|
73
|
-
hash: 15
|
74
|
-
segments:
|
75
|
-
- 2
|
76
|
-
- 2
|
77
|
-
- 4
|
78
56
|
version: 2.2.4
|
79
57
|
type: :runtime
|
80
|
-
requirement: *id004
|
81
58
|
prerelease: false
|
82
|
-
|
59
|
+
version_requirements: *id004
|
83
60
|
- !ruby/object:Gem::Dependency
|
84
|
-
|
61
|
+
name: haml
|
62
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
85
63
|
none: false
|
86
64
|
requirements:
|
87
65
|
- - ">="
|
88
66
|
- !ruby/object:Gem::Version
|
89
|
-
hash: 3
|
90
|
-
segments:
|
91
|
-
- 0
|
92
67
|
version: "0"
|
93
68
|
type: :runtime
|
94
|
-
requirement: *id005
|
95
69
|
prerelease: false
|
96
|
-
|
70
|
+
version_requirements: *id005
|
97
71
|
- !ruby/object:Gem::Dependency
|
98
|
-
|
72
|
+
name: face
|
73
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
99
74
|
none: false
|
100
75
|
requirements:
|
101
76
|
- - "="
|
102
77
|
- !ruby/object:Gem::Version
|
103
|
-
hash: 23
|
104
|
-
segments:
|
105
|
-
- 0
|
106
|
-
- 0
|
107
|
-
- 4
|
108
78
|
version: 0.0.4
|
109
79
|
type: :runtime
|
110
|
-
requirement: *id006
|
111
80
|
prerelease: false
|
112
|
-
|
81
|
+
version_requirements: *id006
|
113
82
|
- !ruby/object:Gem::Dependency
|
114
|
-
|
83
|
+
name: imagesize
|
84
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
115
85
|
none: false
|
116
86
|
requirements:
|
117
87
|
- - ~>
|
118
88
|
- !ruby/object:Gem::Version
|
119
|
-
hash: 9
|
120
|
-
segments:
|
121
|
-
- 0
|
122
|
-
- 1
|
123
89
|
version: "0.1"
|
124
90
|
type: :runtime
|
125
|
-
requirement: *id007
|
126
91
|
prerelease: false
|
127
|
-
|
92
|
+
version_requirements: *id007
|
128
93
|
- !ruby/object:Gem::Dependency
|
129
|
-
|
94
|
+
name: jeweler
|
95
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
130
96
|
none: false
|
131
97
|
requirements:
|
132
98
|
- - ~>
|
133
99
|
- !ruby/object:Gem::Version
|
134
|
-
hash: 3
|
135
|
-
segments:
|
136
|
-
- 1
|
137
|
-
- 6
|
138
100
|
version: "1.6"
|
139
101
|
type: :development
|
140
|
-
requirement: *id008
|
141
102
|
prerelease: false
|
142
|
-
|
103
|
+
version_requirements: *id008
|
143
104
|
- !ruby/object:Gem::Dependency
|
144
|
-
|
105
|
+
name: rack-test
|
106
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
145
107
|
none: false
|
146
108
|
requirements:
|
147
109
|
- - ">="
|
148
110
|
- !ruby/object:Gem::Version
|
149
|
-
hash: 3
|
150
|
-
segments:
|
151
|
-
- 0
|
152
111
|
version: "0"
|
153
112
|
type: :development
|
154
|
-
requirement: *id009
|
155
113
|
prerelease: false
|
156
|
-
|
114
|
+
version_requirements: *id009
|
157
115
|
- !ruby/object:Gem::Dependency
|
158
|
-
|
116
|
+
name: rspec
|
117
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
159
118
|
none: false
|
160
119
|
requirements:
|
161
120
|
- - ~>
|
162
121
|
- !ruby/object:Gem::Version
|
163
|
-
hash: 9
|
164
|
-
segments:
|
165
|
-
- 2
|
166
|
-
- 5
|
167
122
|
version: "2.5"
|
168
123
|
type: :development
|
169
|
-
requirement: *id010
|
170
124
|
prerelease: false
|
171
|
-
|
125
|
+
version_requirements: *id010
|
172
126
|
- !ruby/object:Gem::Dependency
|
173
|
-
|
127
|
+
name: webmock
|
128
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
174
129
|
none: false
|
175
130
|
requirements:
|
176
131
|
- - ~>
|
177
132
|
- !ruby/object:Gem::Version
|
178
|
-
hash: 3
|
179
|
-
segments:
|
180
|
-
- 1
|
181
|
-
- 6
|
182
133
|
version: "1.6"
|
183
134
|
type: :development
|
184
|
-
requirement: *id011
|
185
135
|
prerelease: false
|
186
|
-
|
136
|
+
version_requirements: *id011
|
187
137
|
- !ruby/object:Gem::Dependency
|
188
|
-
|
138
|
+
name: vcr
|
139
|
+
requirement: &id012 !ruby/object:Gem::Requirement
|
189
140
|
none: false
|
190
141
|
requirements:
|
191
142
|
- - ~>
|
192
143
|
- !ruby/object:Gem::Version
|
193
|
-
hash: 29
|
194
|
-
segments:
|
195
|
-
- 1
|
196
|
-
- 9
|
197
144
|
version: "1.9"
|
198
145
|
type: :development
|
199
|
-
requirement: *id012
|
200
146
|
prerelease: false
|
201
|
-
|
147
|
+
version_requirements: *id012
|
202
148
|
- !ruby/object:Gem::Dependency
|
203
|
-
|
149
|
+
name: ruby-debug19
|
150
|
+
requirement: &id013 !ruby/object:Gem::Requirement
|
204
151
|
none: false
|
205
152
|
requirements:
|
206
153
|
- - ">="
|
207
154
|
- !ruby/object:Gem::Version
|
208
|
-
hash: 3
|
209
|
-
segments:
|
210
|
-
- 0
|
211
155
|
version: "0"
|
212
156
|
type: :development
|
213
|
-
requirement: *id013
|
214
157
|
prerelease: false
|
215
|
-
|
158
|
+
version_requirements: *id013
|
216
159
|
- !ruby/object:Gem::Dependency
|
217
|
-
|
160
|
+
name: ruby-debug
|
161
|
+
requirement: &id014 !ruby/object:Gem::Requirement
|
218
162
|
none: false
|
219
163
|
requirements:
|
220
164
|
- - ">="
|
221
165
|
- !ruby/object:Gem::Version
|
222
|
-
hash: 3
|
223
|
-
segments:
|
224
|
-
- 0
|
225
166
|
version: "0"
|
226
167
|
type: :development
|
227
|
-
requirement: *id014
|
228
168
|
prerelease: false
|
229
|
-
|
169
|
+
version_requirements: *id014
|
230
170
|
description: Adds a 'mustachify' shortcut to magickly.
|
231
171
|
email: aidan.feldman@gmail.com
|
232
172
|
executables: []
|
@@ -247,12 +187,16 @@ files:
|
|
247
187
|
- VERSION
|
248
188
|
- bookmarklet.js
|
249
189
|
- config.ru
|
190
|
+
- config/staches.yml
|
250
191
|
- lib/mustachio.rb
|
192
|
+
- lib/mustachio/app.rb
|
251
193
|
- mustachio.gemspec
|
252
194
|
- public/favicon.ico
|
253
195
|
- public/images/dubya.jpeg
|
254
196
|
- public/images/guy_hecker.jpeg
|
255
|
-
- public/images/
|
197
|
+
- public/images/staches/colonel_mustard.png
|
198
|
+
- public/images/staches/mustache_03.png
|
199
|
+
- public/images/staches/mustache_07.png
|
256
200
|
- spec/fixtures/vcr_cassettes/big_obama.yml
|
257
201
|
- spec/fixtures/vcr_cassettes/dubya.yml
|
258
202
|
- spec/fixtures/vcr_cassettes/small_obama.yml
|
@@ -263,7 +207,10 @@ files:
|
|
263
207
|
- spec/unit/analyser_spec.rb
|
264
208
|
- views/face_api_dev_challenge.haml
|
265
209
|
- views/ga.haml
|
210
|
+
- views/gallery.haml
|
266
211
|
- views/index.haml
|
212
|
+
- views/test.haml
|
213
|
+
has_rdoc: true
|
267
214
|
homepage: http://github.com/afeld/mustachio
|
268
215
|
licenses:
|
269
216
|
- MIT
|
@@ -277,7 +224,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
277
224
|
requirements:
|
278
225
|
- - ">="
|
279
226
|
- !ruby/object:Gem::Version
|
280
|
-
hash:
|
227
|
+
hash: 4287363607952724271
|
281
228
|
segments:
|
282
229
|
- 0
|
283
230
|
version: "0"
|
@@ -286,14 +233,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
286
233
|
requirements:
|
287
234
|
- - ">="
|
288
235
|
- !ruby/object:Gem::Version
|
289
|
-
hash: 3
|
290
|
-
segments:
|
291
|
-
- 0
|
292
236
|
version: "0"
|
293
237
|
requirements: []
|
294
238
|
|
295
239
|
rubyforge_project:
|
296
|
-
rubygems_version: 1.
|
240
|
+
rubygems_version: 1.6.2
|
297
241
|
signing_key:
|
298
242
|
specification_version: 3
|
299
243
|
summary: automatic mustachifying of any image
|