avatar 0.0.4 → 0.0.5
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/History.txt +10 -0
- data/Manifest.txt +32 -6
- data/lib/avatar.rb +1 -1
- data/lib/avatar/source/gravatar_source.rb +7 -5
- data/lib/avatar/source/paperclip_source.rb +52 -0
- data/lib/avatar/source/wrapper.rb +6 -0
- data/lib/avatar/source/wrapper/abstract_source_wrapper.rb +33 -0
- data/lib/avatar/source/wrapper/rails_asset_source_wrapper.rb +36 -0
- data/lib/avatar/source/wrapper/string_substitution_source_wrapper.rb +55 -0
- data/lib/avatar/version.rb +1 -1
- data/test/lib/paperclip/README +32 -0
- data/test/lib/paperclip/Rakefile +41 -0
- data/test/lib/paperclip/generators/paperclip/USAGE +5 -0
- data/test/lib/paperclip/generators/paperclip/paperclip_generator.rb +27 -0
- data/test/lib/paperclip/generators/paperclip/templates/paperclip_migration.rb +17 -0
- data/test/lib/paperclip/init.rb +3 -0
- data/test/lib/paperclip/lib/paperclip.rb +197 -0
- data/test/lib/paperclip/lib/paperclip/attachment.rb +230 -0
- data/test/lib/paperclip/lib/paperclip/geometry.rb +109 -0
- data/test/lib/paperclip/lib/paperclip/iostream.rb +43 -0
- data/test/lib/paperclip/lib/paperclip/thumbnail.rb +80 -0
- data/test/lib/paperclip/lib/paperclip/upfile.rb +32 -0
- data/test/lib/paperclip/tasks/paperclip_tasks.rake +38 -0
- data/test/lib/paperclip/test/database.yml +5 -0
- data/test/lib/paperclip/test/fixtures/12k.png +0 -0
- data/test/lib/paperclip/test/fixtures/5k.png +0 -0
- data/test/lib/paperclip/test/fixtures/bad.png +1 -0
- data/test/lib/paperclip/test/helper.rb +38 -0
- data/test/lib/paperclip/test/test_attachment.rb +99 -0
- data/test/lib/paperclip/test/test_geometry.rb +142 -0
- data/test/lib/paperclip/test/test_integration.rb +76 -0
- data/test/lib/paperclip/test/test_iostream.rb +60 -0
- data/test/lib/paperclip/test/test_paperclip.rb +83 -0
- data/test/lib/paperclip/test/test_thumbnail.rb +76 -0
- data/test/lib/schema.rb +14 -1
- data/test/test_file_column_source.rb +8 -6
- data/test/test_gravatar_source.rb +5 -0
- data/test/test_helper.rb +7 -2
- data/test/test_paperclip_source.rb +52 -0
- data/test/test_rails_asset_source_wrapper.rb +37 -0
- data/test/test_string_substitution_source_wrapper.rb +25 -0
- data/website/index.html +1 -1
- metadata +43 -11
- data/lib/avatar/source/rails_asset_source.rb +0 -64
- data/lib/avatar/source/string_substitution_source.rb +0 -45
- data/lib/avatar/string_substitution.rb +0 -28
- data/test/test_rails_asset_source.rb +0 -50
- data/test/test_string_substitution.rb +0 -28
- data/test/test_string_substitution_source.rb +0 -22
@@ -0,0 +1,25 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
+
require 'avatar/source/static_url_source'
|
3
|
+
require 'avatar/source/wrapper/string_substitution_source_wrapper'
|
4
|
+
|
5
|
+
class TestStringSubstitutionSourceWrapper < Test::Unit::TestCase
|
6
|
+
|
7
|
+
def setup
|
8
|
+
@source = Avatar::Source::StaticUrlSource.new('#{a} and #{b} but not {b}')
|
9
|
+
@wrapper = Avatar::Source::Wrapper::StringSubstitutionSourceWrapper.new(@source)
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_returns_nil_if_underlying_source_returns_nil
|
13
|
+
@source.instance_eval { def avatar_url_for(*args); nil; end }
|
14
|
+
assert_nil @wrapper.avatar_url_for(:a_person)
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_avatar_url_nil_when_not_all_variables_replaced
|
18
|
+
assert_nil @wrapper.avatar_url_for(:bar, :b => 'ham')
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_avatar_url_when_all_variables_replaced
|
22
|
+
assert_equal 'green eggs and ham but not {b}', @wrapper.avatar_url_for(:bar, :a => 'green eggs', :b => 'ham')
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
data/website/index.html
CHANGED
@@ -33,7 +33,7 @@
|
|
33
33
|
<h1>Avatar</h1>
|
34
34
|
<div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/avatar"; return false'>
|
35
35
|
<p>Get Version</p>
|
36
|
-
<a href="http://rubyforge.org/projects/avatar" class="numbers">0.0.
|
36
|
+
<a href="http://rubyforge.org/projects/avatar" class="numbers">0.0.5</a>
|
37
37
|
</div>
|
38
38
|
<h1>→ ‘Avatar’</h1>
|
39
39
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: avatar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Rosen
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-
|
12
|
+
date: 2008-04-01 00:00:00 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -42,11 +42,13 @@ files:
|
|
42
42
|
- lib/avatar/source/file_column_source.rb
|
43
43
|
- lib/avatar/source/gravatar_source.rb
|
44
44
|
- lib/avatar/source/nil_source.rb
|
45
|
-
- lib/avatar/source/
|
45
|
+
- lib/avatar/source/paperclip_source.rb
|
46
46
|
- lib/avatar/source/source_chain.rb
|
47
47
|
- lib/avatar/source/static_url_source.rb
|
48
|
-
- lib/avatar/source/
|
49
|
-
- lib/avatar/
|
48
|
+
- lib/avatar/source/wrapper.rb
|
49
|
+
- lib/avatar/source/wrapper/abstract_source_wrapper.rb
|
50
|
+
- lib/avatar/source/wrapper/rails_asset_source_wrapper.rb
|
51
|
+
- lib/avatar/source/wrapper/string_substitution_source_wrapper.rb
|
50
52
|
- lib/avatar/version.rb
|
51
53
|
- lib/avatar/view.rb
|
52
54
|
- lib/avatar/view/abstract_view_support.rb
|
@@ -86,6 +88,30 @@ files:
|
|
86
88
|
- test/lib/file_column/test/fixtures/skanthak.png
|
87
89
|
- test/lib/file_column/test/magick_test.rb
|
88
90
|
- test/lib/file_column/test/magick_view_only_test.rb
|
91
|
+
- test/lib/paperclip/README
|
92
|
+
- test/lib/paperclip/Rakefile
|
93
|
+
- test/lib/paperclip/generators/paperclip/USAGE
|
94
|
+
- test/lib/paperclip/generators/paperclip/paperclip_generator.rb
|
95
|
+
- test/lib/paperclip/generators/paperclip/templates/paperclip_migration.rb
|
96
|
+
- test/lib/paperclip/init.rb
|
97
|
+
- test/lib/paperclip/lib/paperclip.rb
|
98
|
+
- test/lib/paperclip/lib/paperclip/attachment.rb
|
99
|
+
- test/lib/paperclip/lib/paperclip/geometry.rb
|
100
|
+
- test/lib/paperclip/lib/paperclip/iostream.rb
|
101
|
+
- test/lib/paperclip/lib/paperclip/thumbnail.rb
|
102
|
+
- test/lib/paperclip/lib/paperclip/upfile.rb
|
103
|
+
- test/lib/paperclip/tasks/paperclip_tasks.rake
|
104
|
+
- test/lib/paperclip/test/database.yml
|
105
|
+
- test/lib/paperclip/test/fixtures/12k.png
|
106
|
+
- test/lib/paperclip/test/fixtures/5k.png
|
107
|
+
- test/lib/paperclip/test/fixtures/bad.png
|
108
|
+
- test/lib/paperclip/test/helper.rb
|
109
|
+
- test/lib/paperclip/test/test_attachment.rb
|
110
|
+
- test/lib/paperclip/test/test_geometry.rb
|
111
|
+
- test/lib/paperclip/test/test_integration.rb
|
112
|
+
- test/lib/paperclip/test/test_iostream.rb
|
113
|
+
- test/lib/paperclip/test/test_paperclip.rb
|
114
|
+
- test/lib/paperclip/test/test_thumbnail.rb
|
89
115
|
- test/lib/schema.rb
|
90
116
|
- test/lib/user_suit.png
|
91
117
|
- test/test_abstract_view_support.rb
|
@@ -95,11 +121,11 @@ files:
|
|
95
121
|
- test/test_gravatar_source.rb
|
96
122
|
- test/test_helper.rb
|
97
123
|
- test/test_nil_source.rb
|
98
|
-
- test/
|
124
|
+
- test/test_paperclip_source.rb
|
125
|
+
- test/test_rails_asset_source_wrapper.rb
|
99
126
|
- test/test_source_chain.rb
|
100
127
|
- test/test_static_url_source.rb
|
101
|
-
- test/
|
102
|
-
- test/test_string_substitution_source.rb
|
128
|
+
- test/test_string_substitution_source_wrapper.rb
|
103
129
|
- website/index.html
|
104
130
|
- website/index.txt
|
105
131
|
- website/javascripts/rounded_corners_lite.inc.js
|
@@ -134,6 +160,12 @@ specification_version: 2
|
|
134
160
|
summary: helpers for displaying avatars
|
135
161
|
test_files:
|
136
162
|
- test/lib/file_column/lib/test_case.rb
|
163
|
+
- test/lib/paperclip/test/test_attachment.rb
|
164
|
+
- test/lib/paperclip/test/test_geometry.rb
|
165
|
+
- test/lib/paperclip/test/test_integration.rb
|
166
|
+
- test/lib/paperclip/test/test_iostream.rb
|
167
|
+
- test/lib/paperclip/test/test_paperclip.rb
|
168
|
+
- test/lib/paperclip/test/test_thumbnail.rb
|
137
169
|
- test/test_abstract_view_support.rb
|
138
170
|
- test/test_action_view_support.rb
|
139
171
|
- test/test_avatar.rb
|
@@ -141,8 +173,8 @@ test_files:
|
|
141
173
|
- test/test_gravatar_source.rb
|
142
174
|
- test/test_helper.rb
|
143
175
|
- test/test_nil_source.rb
|
144
|
-
- test/
|
176
|
+
- test/test_paperclip_source.rb
|
177
|
+
- test/test_rails_asset_source_wrapper.rb
|
145
178
|
- test/test_source_chain.rb
|
146
179
|
- test/test_static_url_source.rb
|
147
|
-
- test/
|
148
|
-
- test/test_string_substitution_source.rb
|
180
|
+
- test/test_string_substitution_source_wrapper.rb
|
@@ -1,64 +0,0 @@
|
|
1
|
-
require 'avatar/string_substitution'
|
2
|
-
require 'avatar/source/abstract_source'
|
3
|
-
require 'action_view/helpers/asset_tag_helper'
|
4
|
-
|
5
|
-
module Avatar # :nodoc:
|
6
|
-
module Source # :nodoc:
|
7
|
-
# Source representing a constant path. Allows string variable
|
8
|
-
# substitution (see link:classes/Avatar/StringSubstitution.html).
|
9
|
-
# Good as a default or last-resort source in Rails projects.
|
10
|
-
class RailsAssetSource
|
11
|
-
include StringSubstitution
|
12
|
-
include AbstractSource
|
13
|
-
|
14
|
-
attr_accessor :path
|
15
|
-
attr_accessor :default_options
|
16
|
-
attr_reader :url_helper
|
17
|
-
|
18
|
-
private :url_helper
|
19
|
-
|
20
|
-
# Create a new source with static path +path+.
|
21
|
-
# Raises an error unless +path+ exists.
|
22
|
-
# +default_options+ can include any variables
|
23
|
-
# to be substituted into +path+ as defaults.
|
24
|
-
# Additionally, it can contain the key :only_path,
|
25
|
-
# which determines whether a path or full URI is generated
|
26
|
-
# by default, :only_path is false.
|
27
|
-
def initialize(path, default_options = {})
|
28
|
-
raise ArgumentError.new("path cannot be nil") if path.nil?
|
29
|
-
self.path = path.to_s
|
30
|
-
self.default_options = { :only_path => false }.merge(default_options)
|
31
|
-
@url_helper = Object.new
|
32
|
-
@url_helper.extend(ActionView::Helpers::AssetTagHelper)
|
33
|
-
end
|
34
|
-
|
35
|
-
def only_path?
|
36
|
-
default_options[:default_path]
|
37
|
-
end
|
38
|
-
|
39
|
-
def default_options=(opts)
|
40
|
-
@default_options = opts || {}
|
41
|
-
end
|
42
|
-
|
43
|
-
# Returns nil if person is nil; the static path or URI otherwise.
|
44
|
-
# Options:
|
45
|
-
# * :only_path (Boolean) - whether to output only the path or a fully-qualified URI; defaults to object-level value
|
46
|
-
# Raises an error if both +options[:only_path]+ and the object-level default are both false
|
47
|
-
# and the url returned would only be a path. Try setting
|
48
|
-
# <code>ActionController::Base.asset_host</code> to avoid this error.
|
49
|
-
#
|
50
|
-
# Note: +only_path+ being true is not a guarantee
|
51
|
-
# that only a path will be generated; if it is false,
|
52
|
-
# however, generated URLs will be full URIs.
|
53
|
-
def avatar_url_for(person, options = {})
|
54
|
-
return nil if person.nil?
|
55
|
-
options = default_options.merge(options)
|
56
|
-
path = apply_substitution(self.path, options)
|
57
|
-
uri = url_helper.image_path(path)
|
58
|
-
raise "could not generate protocol and host for #{uri}" unless uri =~ /^http[s]?\:\/\// || options[:only_path]
|
59
|
-
substitution_needed?(uri) ? nil : uri
|
60
|
-
end
|
61
|
-
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
require 'avatar/string_substitution'
|
2
|
-
require 'avatar/source/abstract_source'
|
3
|
-
|
4
|
-
module Avatar # :nodoc:
|
5
|
-
module Source # :nodoc:
|
6
|
-
# Like a StaticUrlSource, but allows variable replacement within the string.
|
7
|
-
# Usage:
|
8
|
-
# source = StringSubstitutionSource.new('#{gender}_icon_#{size}.png')
|
9
|
-
# url = source.avatar_url_for(@person, :gender => :female, :size => :large)
|
10
|
-
# # => 'female_icon_large.png'
|
11
|
-
class StringSubstitutionSource
|
12
|
-
include StringSubstitution
|
13
|
-
include AbstractSource
|
14
|
-
|
15
|
-
attr_accessor :url
|
16
|
-
attr_accessor :default_options
|
17
|
-
|
18
|
-
# Create a new source with static url +url+, which can contain any number
|
19
|
-
# of variables to be subsituted through +options+. See link:classes/Avatar/StringSubstitution.html
|
20
|
-
#
|
21
|
-
# Optionally, can pass in +default _options+ to be applied in replacement, overwritable
|
22
|
-
# by the +options+ passed to :avatar_url_for.
|
23
|
-
def initialize(url, default_options = {})
|
24
|
-
raise ArgumentError.new("URL cannot be nil") if url.nil?
|
25
|
-
self.url = url.to_s
|
26
|
-
self.default_options = default_options || {}
|
27
|
-
end
|
28
|
-
|
29
|
-
# Returns nil if +person+ is nil or if variables in <code>url</code>
|
30
|
-
# remain un-bound after substituting +options+; otherwise, returns
|
31
|
-
# the result of replacing each variable within <code>url</code>
|
32
|
-
# with the value of the corresponding key within +options+.
|
33
|
-
def avatar_url_for(person, options = {})
|
34
|
-
return nil if person.nil?
|
35
|
-
result = apply_substitution(self.url, self.default_options.merge(options))
|
36
|
-
substitution_needed?(result) ? nil : result
|
37
|
-
end
|
38
|
-
|
39
|
-
def default_options=(opts)
|
40
|
-
@default_options = opts || {}
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
require 'avatar/object_support'
|
2
|
-
|
3
|
-
module Avatar # :nodoc:
|
4
|
-
|
5
|
-
# Allows runtime variable substitution into a String.
|
6
|
-
module StringSubstitution
|
7
|
-
|
8
|
-
# For each key in +options+ replaces '#{key}' in +string+ with the
|
9
|
-
# corresponding value in +options+.
|
10
|
-
# +string+ should
|
11
|
-
# be of the form '...#{variable_a}...#{variable_b}...'. <em>Note the
|
12
|
-
# single quotes</em>. Double quotes will cause the variables to be
|
13
|
-
# substituted before this method is run, which is almost
|
14
|
-
# certainly <strong>not</strong> what you want.
|
15
|
-
def apply_substitution(string, options)
|
16
|
-
returning(string.dup) do |result|
|
17
|
-
options.each do |k,v|
|
18
|
-
result.gsub!(Regexp.new('#\{' + "#{k}" + '\}'), "#{v}")
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def substitution_needed?(string)
|
24
|
-
string =~ /#\{.*\}/
|
25
|
-
end
|
26
|
-
|
27
|
-
end
|
28
|
-
end
|
@@ -1,50 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
-
require 'avatar/source/rails_asset_source'
|
3
|
-
require 'action_controller/base'
|
4
|
-
|
5
|
-
class TestRailsAssetSource < Test::Unit::TestCase
|
6
|
-
|
7
|
-
def setup
|
8
|
-
ActionController::Base.asset_host = 'http://test.com'
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_fully_qualified_uri
|
12
|
-
source = Avatar::Source::RailsAssetSource.new('http://example.com/images/avatar.png')
|
13
|
-
assert_equal 'http://example.com/images/avatar.png', source.avatar_url_for(3)
|
14
|
-
end
|
15
|
-
|
16
|
-
def test_string_substitution
|
17
|
-
source = Avatar::Source::RailsAssetSource.new('http://example.com/images/avatar_#{size}.png')
|
18
|
-
assert_equal 'http://example.com/images/avatar_huge.png', source.avatar_url_for(4, {:size => 'huge'})
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_uses_asset_host
|
22
|
-
source = Avatar::Source::RailsAssetSource.new('/images/avatar.png')
|
23
|
-
assert_equal 'http://test.com/images/avatar.png', source.avatar_url_for(4)
|
24
|
-
end
|
25
|
-
|
26
|
-
def test_error_if_cannot_generate_full_uri_and_only_path_false
|
27
|
-
ActionController::Base.asset_host = ''
|
28
|
-
source = Avatar::Source::RailsAssetSource.new('/images/avatar.png')
|
29
|
-
assert_raise(RuntimeError) {
|
30
|
-
source.avatar_url_for(4)
|
31
|
-
}
|
32
|
-
end
|
33
|
-
|
34
|
-
def test_no_error_if_cannot_generate_full_uri_and_only_path_true
|
35
|
-
ActionController::Base.asset_host = ''
|
36
|
-
source = Avatar::Source::RailsAssetSource.new('/images/avatar.png')
|
37
|
-
assert_equal '/images/avatar.png', source.avatar_url_for(12, :only_path => true)
|
38
|
-
end
|
39
|
-
|
40
|
-
def test_no_url_generated_if_person_is_nil
|
41
|
-
source = Avatar::Source::RailsAssetSource.new('/images/avatar.png')
|
42
|
-
assert_nil source.avatar_url_for(nil)
|
43
|
-
end
|
44
|
-
|
45
|
-
def test_no_url_generated_if_substitution_incomplete
|
46
|
-
source = Avatar::Source::RailsAssetSource.new('/images/avatar_#{size}.png')
|
47
|
-
assert_nil source.avatar_url_for(8)
|
48
|
-
end
|
49
|
-
|
50
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
-
require 'avatar/string_substitution'
|
3
|
-
|
4
|
-
class TestStringSubstitution < Test::Unit::TestCase
|
5
|
-
|
6
|
-
def setup
|
7
|
-
@foo = Object.new
|
8
|
-
@foo.extend Avatar::StringSubstitution
|
9
|
-
@string = 'I don\'t like #{a}, #{b}, or #{c}'
|
10
|
-
end
|
11
|
-
|
12
|
-
def test_apply_complete_substitution
|
13
|
-
assert_equal "I don't like Detroit, jam, or the letter e", @foo.apply_substitution(@string, {:a => 'Detroit', :b => 'jam', :c => 'the letter e'})
|
14
|
-
end
|
15
|
-
|
16
|
-
def test_apply_incomplete_substitution
|
17
|
-
assert_equal 'I don\'t like #{a}, jam, or #{c}', @foo.apply_substitution(@string, {:b => 'jam'})
|
18
|
-
end
|
19
|
-
|
20
|
-
def test_substitution_not_needed
|
21
|
-
assert !@foo.substitution_needed?('foo # bar { baz }# { yoo}')
|
22
|
-
end
|
23
|
-
|
24
|
-
def test_substitution_needed
|
25
|
-
assert @foo.substitution_needed?('foo #{bar} #{baz}')
|
26
|
-
end
|
27
|
-
|
28
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
-
require 'avatar/source/string_substitution_source'
|
3
|
-
|
4
|
-
class TestStringSubstitutionSource < Test::Unit::TestCase
|
5
|
-
|
6
|
-
def setup
|
7
|
-
@source = Avatar::Source::StringSubstitutionSource.new('#{a} and #{b} but not {b}')
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_avatar_url_nil_for_nil_person
|
11
|
-
assert_nil @source.avatar_url_for(nil)
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_avatar_url_nil_when_not_all_variables_replaced
|
15
|
-
assert_nil @source.avatar_url_for(:bar, :b => 'ham')
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_avatar_url_when_all_variables_replaced
|
19
|
-
assert_equal 'green eggs and ham but not {b}', @source.avatar_url_for(:bar, :a => 'green eggs', :b => 'ham')
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|