motion-gravatar 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.md ADDED
@@ -0,0 +1,31 @@
1
+ # Generate Gravatar URLs in RubyMotion
2
+
3
+ Generate the URL for a user's Gravatar image by providing an email address, image size, and optional default image URL.
4
+
5
+ # Install
6
+
7
+ Gemfile
8
+
9
+ ```ruby
10
+ source :rubygems
11
+
12
+ gem 'motion-gravatar', :git => 'git://github.com/brianpattison/motion-gravatar.git'
13
+ ```
14
+
15
+ Run `bundle install`.
16
+
17
+ # Usage
18
+
19
+ ```ruby
20
+ email = 'brian@brianpattison.com'
21
+ size = 512
22
+ defaultURL = 'http://example.com/gravatar/default.jpg'
23
+ url = Gravatar.getURL(email, size, defaultURL)
24
+ ```
25
+
26
+ Both `size` and `defaultURL` are optional. If not provided, Gravatar's defaults will be used, which is 80px for the size and
27
+ the Gravatar logo as the default image if one does not exist for the provided email address.
28
+
29
+ # Thanks
30
+
31
+ Thanks to [@MugunthKumar](https://github.com/MugunthKumar) for the Objective-C side with [Gravatar](https://github.com/MugunthKumar/Gravatar)!
@@ -0,0 +1,14 @@
1
+ # Class for generating Gravatar URLs.
2
+ class Gravatar
3
+
4
+ # Generate the URL for a user's Gravatar image by providing an email address, image size, and optional default image URL.
5
+ # @param [String] email
6
+ # @param [Integer] size Between 1 and 512. The default is 80. (optional)
7
+ # @param [String] defaultURL (optional)
8
+ # @return [NSURL]
9
+ def self.getURL(email, size=nil, defaultURL=nil)
10
+ size = 80 if size.nil?
11
+ GravatarHelper.getGravatarURL(email, size:size, defaultURL:defaultURL)
12
+ end
13
+
14
+ end
@@ -0,0 +1,10 @@
1
+ unless defined?(Motion::Project::Config)
2
+ raise "This file must be required within a RubyMotion project Rakefile."
3
+ end
4
+
5
+ Motion::Project::App.setup do |app|
6
+ Dir.glob(File.join(File.dirname(__FILE__), 'motion-gravatar/*.rb')).each do |file|
7
+ app.files.unshift(file)
8
+ end
9
+ app.vendor_project(File.join(File.dirname(__FILE__), '../vendor/GravatarHelper'), :xcode, :headers_dir => 'GravatarHelper')
10
+ end
@@ -0,0 +1,12 @@
1
+ Gem::Specification.new do |gem|
2
+ gem.authors = ["Brian Pattison"]
3
+ gem.email = ["brian@brianpattison.com"]
4
+ gem.description = "Generate Gravatar URLs"
5
+ gem.summary = "Generate the URL for a user's Gravatar image by providing an email address, image size, and optional default image URL."
6
+ gem.homepage = "https://github.com/brianpattison/motion-gravatar"
7
+
8
+ gem.files = `git ls-files`.split($\)
9
+ gem.name = "motion-gravatar"
10
+ gem.require_paths = ["lib"]
11
+ gem.version = '0.0.1'
12
+ end
@@ -0,0 +1,7 @@
1
+ //
2
+ // Prefix header for all source files of the 'GravatarHelper' target in the 'GravatarHelper' project
3
+ //
4
+
5
+ #ifdef __OBJC__
6
+ #import <Foundation/Foundation.h>
7
+ #endif
@@ -0,0 +1,17 @@
1
+ //
2
+ // GravatarHelper.h
3
+ // Gravatar
4
+ //
5
+ // Created by Mugunth Kumar on 11-Sep-10.
6
+ // Copyright 2010 Steinlogic. All rights reserved.
7
+ //
8
+ // Modified by Brian Pattison
9
+
10
+ #import <Foundation/Foundation.h>
11
+
12
+
13
+ @interface GravatarHelper : NSObject {
14
+
15
+ }
16
+ + (NSURL*) getGravatarURL:(NSString*)emailAddress size:(int)size defaultURL:(NSString*)defaultURL;
17
+ @end
@@ -0,0 +1,41 @@
1
+ //
2
+ // GravatarHelper.m
3
+ // Gravatar
4
+ //
5
+ // Created by Mugunth Kumar on 11-Sep-10.
6
+ // Copyright 2010 Steinlogic. All rights reserved.
7
+ //
8
+ // Modified by Brian Pattison
9
+
10
+ #import "GravatarHelper.h"
11
+ #import <CommonCrypto/CommonDigest.h>
12
+
13
+ @implementation GravatarHelper
14
+
15
+ + (NSURL*) getGravatarURL:(NSString*)emailAddress size:(int)size defaultURL:(NSString*)defaultURL
16
+ {
17
+ NSString *curatedEmail = [[emailAddress stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] lowercaseString];
18
+
19
+ const char *cStr = [curatedEmail UTF8String];
20
+ unsigned char result[16];
21
+ CC_MD5(cStr, strlen(cStr), result); // compute MD5
22
+
23
+ NSString *md5email = [NSString stringWithFormat:@"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
24
+ result[0], result[1], result[2], result[3],
25
+ result[4], result[5], result[6], result[7],
26
+ result[8], result[9], result[10], result[11],
27
+ result[12], result[13], result[14], result[15]
28
+ ];
29
+
30
+ NSString *gravatarEndPoint;
31
+
32
+ if (defaultURL != nil) {
33
+ NSString *escapedDefaultURL = (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)defaultURL, NULL, (CFStringRef)@"!’\"();:@&=+$,/?%#[]% ", kCFStringEncodingISOLatin1);
34
+ gravatarEndPoint = [NSString stringWithFormat:@"http://www.gravatar.com/avatar/%@?s=%d&d=%@", md5email, size, escapedDefaultURL];
35
+ } else {
36
+ gravatarEndPoint = [NSString stringWithFormat:@"http://www.gravatar.com/avatar/%@?s=%d", md5email, size];
37
+ }
38
+
39
+ return [NSURL URLWithString:gravatarEndPoint];
40
+ }
41
+ @end
@@ -0,0 +1,231 @@
1
+ // !$*UTF8*$!
2
+ {
3
+ archiveVersion = 1;
4
+ classes = {
5
+ };
6
+ objectVersion = 46;
7
+ objects = {
8
+
9
+ /* Begin PBXBuildFile section */
10
+ D3FFB45A159BE4B800541F99 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D3FFB459159BE4B800541F99 /* Foundation.framework */; };
11
+ D3FFB460159BE4B800541F99 /* GravatarHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = D3FFB45F159BE4B800541F99 /* GravatarHelper.m */; };
12
+ /* End PBXBuildFile section */
13
+
14
+ /* Begin PBXFileReference section */
15
+ D3FFB456159BE4B800541F99 /* libGravatarHelper.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libGravatarHelper.a; sourceTree = BUILT_PRODUCTS_DIR; };
16
+ D3FFB459159BE4B800541F99 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
17
+ D3FFB45D159BE4B800541F99 /* GravatarHelper-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "GravatarHelper-Prefix.pch"; sourceTree = "<group>"; };
18
+ D3FFB45E159BE4B800541F99 /* GravatarHelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GravatarHelper.h; sourceTree = "<group>"; };
19
+ D3FFB45F159BE4B800541F99 /* GravatarHelper.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GravatarHelper.m; sourceTree = "<group>"; };
20
+ /* End PBXFileReference section */
21
+
22
+ /* Begin PBXFrameworksBuildPhase section */
23
+ D3FFB453159BE4B800541F99 /* Frameworks */ = {
24
+ isa = PBXFrameworksBuildPhase;
25
+ buildActionMask = 2147483647;
26
+ files = (
27
+ D3FFB45A159BE4B800541F99 /* Foundation.framework in Frameworks */,
28
+ );
29
+ runOnlyForDeploymentPostprocessing = 0;
30
+ };
31
+ /* End PBXFrameworksBuildPhase section */
32
+
33
+ /* Begin PBXGroup section */
34
+ D3FFB44B159BE4B800541F99 = {
35
+ isa = PBXGroup;
36
+ children = (
37
+ D3FFB45B159BE4B800541F99 /* GravatarHelper */,
38
+ D3FFB458159BE4B800541F99 /* Frameworks */,
39
+ D3FFB457159BE4B800541F99 /* Products */,
40
+ );
41
+ sourceTree = "<group>";
42
+ };
43
+ D3FFB457159BE4B800541F99 /* Products */ = {
44
+ isa = PBXGroup;
45
+ children = (
46
+ D3FFB456159BE4B800541F99 /* libGravatarHelper.a */,
47
+ );
48
+ name = Products;
49
+ sourceTree = "<group>";
50
+ };
51
+ D3FFB458159BE4B800541F99 /* Frameworks */ = {
52
+ isa = PBXGroup;
53
+ children = (
54
+ D3FFB459159BE4B800541F99 /* Foundation.framework */,
55
+ );
56
+ name = Frameworks;
57
+ sourceTree = "<group>";
58
+ };
59
+ D3FFB45B159BE4B800541F99 /* GravatarHelper */ = {
60
+ isa = PBXGroup;
61
+ children = (
62
+ D3FFB45E159BE4B800541F99 /* GravatarHelper.h */,
63
+ D3FFB45F159BE4B800541F99 /* GravatarHelper.m */,
64
+ D3FFB45C159BE4B800541F99 /* Supporting Files */,
65
+ );
66
+ path = GravatarHelper;
67
+ sourceTree = "<group>";
68
+ };
69
+ D3FFB45C159BE4B800541F99 /* Supporting Files */ = {
70
+ isa = PBXGroup;
71
+ children = (
72
+ D3FFB45D159BE4B800541F99 /* GravatarHelper-Prefix.pch */,
73
+ );
74
+ name = "Supporting Files";
75
+ sourceTree = "<group>";
76
+ };
77
+ /* End PBXGroup section */
78
+
79
+ /* Begin PBXHeadersBuildPhase section */
80
+ D3FFB454159BE4B800541F99 /* Headers */ = {
81
+ isa = PBXHeadersBuildPhase;
82
+ buildActionMask = 2147483647;
83
+ files = (
84
+ );
85
+ runOnlyForDeploymentPostprocessing = 0;
86
+ };
87
+ /* End PBXHeadersBuildPhase section */
88
+
89
+ /* Begin PBXNativeTarget section */
90
+ D3FFB455159BE4B800541F99 /* GravatarHelper */ = {
91
+ isa = PBXNativeTarget;
92
+ buildConfigurationList = D3FFB463159BE4B800541F99 /* Build configuration list for PBXNativeTarget "GravatarHelper" */;
93
+ buildPhases = (
94
+ D3FFB452159BE4B800541F99 /* Sources */,
95
+ D3FFB453159BE4B800541F99 /* Frameworks */,
96
+ D3FFB454159BE4B800541F99 /* Headers */,
97
+ );
98
+ buildRules = (
99
+ );
100
+ dependencies = (
101
+ );
102
+ name = GravatarHelper;
103
+ productName = GravatarHelper;
104
+ productReference = D3FFB456159BE4B800541F99 /* libGravatarHelper.a */;
105
+ productType = "com.apple.product-type.library.static";
106
+ };
107
+ /* End PBXNativeTarget section */
108
+
109
+ /* Begin PBXProject section */
110
+ D3FFB44D159BE4B800541F99 /* Project object */ = {
111
+ isa = PBXProject;
112
+ attributes = {
113
+ LastUpgradeCheck = 0430;
114
+ };
115
+ buildConfigurationList = D3FFB450159BE4B800541F99 /* Build configuration list for PBXProject "GravatarHelper" */;
116
+ compatibilityVersion = "Xcode 3.2";
117
+ developmentRegion = English;
118
+ hasScannedForEncodings = 0;
119
+ knownRegions = (
120
+ en,
121
+ );
122
+ mainGroup = D3FFB44B159BE4B800541F99;
123
+ productRefGroup = D3FFB457159BE4B800541F99 /* Products */;
124
+ projectDirPath = "";
125
+ projectRoot = "";
126
+ targets = (
127
+ D3FFB455159BE4B800541F99 /* GravatarHelper */,
128
+ );
129
+ };
130
+ /* End PBXProject section */
131
+
132
+ /* Begin PBXSourcesBuildPhase section */
133
+ D3FFB452159BE4B800541F99 /* Sources */ = {
134
+ isa = PBXSourcesBuildPhase;
135
+ buildActionMask = 2147483647;
136
+ files = (
137
+ D3FFB460159BE4B800541F99 /* GravatarHelper.m in Sources */,
138
+ );
139
+ runOnlyForDeploymentPostprocessing = 0;
140
+ };
141
+ /* End PBXSourcesBuildPhase section */
142
+
143
+ /* Begin XCBuildConfiguration section */
144
+ D3FFB461159BE4B800541F99 /* Debug */ = {
145
+ isa = XCBuildConfiguration;
146
+ buildSettings = {
147
+ ALWAYS_SEARCH_USER_PATHS = NO;
148
+ ARCHS = "$(ARCHS_STANDARD_32_BIT)";
149
+ COPY_PHASE_STRIP = NO;
150
+ GCC_C_LANGUAGE_STANDARD = gnu99;
151
+ GCC_DYNAMIC_NO_PIC = NO;
152
+ GCC_OPTIMIZATION_LEVEL = 0;
153
+ GCC_PREPROCESSOR_DEFINITIONS = (
154
+ "DEBUG=1",
155
+ "$(inherited)",
156
+ );
157
+ GCC_SYMBOLS_PRIVATE_EXTERN = NO;
158
+ GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
159
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
160
+ GCC_WARN_UNINITIALIZED_AUTOS = YES;
161
+ GCC_WARN_UNUSED_VARIABLE = YES;
162
+ IPHONEOS_DEPLOYMENT_TARGET = 5.1;
163
+ SDKROOT = iphoneos;
164
+ };
165
+ name = Debug;
166
+ };
167
+ D3FFB462159BE4B800541F99 /* Release */ = {
168
+ isa = XCBuildConfiguration;
169
+ buildSettings = {
170
+ ALWAYS_SEARCH_USER_PATHS = NO;
171
+ ARCHS = "$(ARCHS_STANDARD_32_BIT)";
172
+ COPY_PHASE_STRIP = YES;
173
+ GCC_C_LANGUAGE_STANDARD = gnu99;
174
+ GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
175
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
176
+ GCC_WARN_UNINITIALIZED_AUTOS = YES;
177
+ GCC_WARN_UNUSED_VARIABLE = YES;
178
+ IPHONEOS_DEPLOYMENT_TARGET = 5.1;
179
+ SDKROOT = iphoneos;
180
+ VALIDATE_PRODUCT = YES;
181
+ };
182
+ name = Release;
183
+ };
184
+ D3FFB464159BE4B800541F99 /* Debug */ = {
185
+ isa = XCBuildConfiguration;
186
+ buildSettings = {
187
+ DSTROOT = /tmp/GravatarHelper.dst;
188
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
189
+ GCC_PREFIX_HEADER = "GravatarHelper/GravatarHelper-Prefix.pch";
190
+ OTHER_LDFLAGS = "-ObjC";
191
+ PRODUCT_NAME = "$(TARGET_NAME)";
192
+ SKIP_INSTALL = YES;
193
+ };
194
+ name = Debug;
195
+ };
196
+ D3FFB465159BE4B800541F99 /* Release */ = {
197
+ isa = XCBuildConfiguration;
198
+ buildSettings = {
199
+ DSTROOT = /tmp/GravatarHelper.dst;
200
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
201
+ GCC_PREFIX_HEADER = "GravatarHelper/GravatarHelper-Prefix.pch";
202
+ OTHER_LDFLAGS = "-ObjC";
203
+ PRODUCT_NAME = "$(TARGET_NAME)";
204
+ SKIP_INSTALL = YES;
205
+ };
206
+ name = Release;
207
+ };
208
+ /* End XCBuildConfiguration section */
209
+
210
+ /* Begin XCConfigurationList section */
211
+ D3FFB450159BE4B800541F99 /* Build configuration list for PBXProject "GravatarHelper" */ = {
212
+ isa = XCConfigurationList;
213
+ buildConfigurations = (
214
+ D3FFB461159BE4B800541F99 /* Debug */,
215
+ D3FFB462159BE4B800541F99 /* Release */,
216
+ );
217
+ defaultConfigurationIsVisible = 0;
218
+ defaultConfigurationName = Release;
219
+ };
220
+ D3FFB463159BE4B800541F99 /* Build configuration list for PBXNativeTarget "GravatarHelper" */ = {
221
+ isa = XCConfigurationList;
222
+ buildConfigurations = (
223
+ D3FFB464159BE4B800541F99 /* Debug */,
224
+ D3FFB465159BE4B800541F99 /* Release */,
225
+ );
226
+ defaultConfigurationIsVisible = 0;
227
+ };
228
+ /* End XCConfigurationList section */
229
+ };
230
+ rootObject = D3FFB44D159BE4B800541F99 /* Project object */;
231
+ }
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <Workspace
3
+ version = "1.0">
4
+ <FileRef
5
+ location = "self:GravatarHelper.xcodeproj">
6
+ </FileRef>
7
+ </Workspace>
@@ -0,0 +1,58 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <Scheme
3
+ version = "1.3">
4
+ <BuildAction
5
+ parallelizeBuildables = "YES"
6
+ buildImplicitDependencies = "YES">
7
+ <BuildActionEntries>
8
+ <BuildActionEntry
9
+ buildForTesting = "YES"
10
+ buildForRunning = "YES"
11
+ buildForProfiling = "YES"
12
+ buildForArchiving = "YES"
13
+ buildForAnalyzing = "YES">
14
+ <BuildableReference
15
+ BuildableIdentifier = "primary"
16
+ BlueprintIdentifier = "D3FFB455159BE4B800541F99"
17
+ BuildableName = "libGravatarHelper.a"
18
+ BlueprintName = "GravatarHelper"
19
+ ReferencedContainer = "container:GravatarHelper.xcodeproj">
20
+ </BuildableReference>
21
+ </BuildActionEntry>
22
+ </BuildActionEntries>
23
+ </BuildAction>
24
+ <TestAction
25
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
26
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
27
+ shouldUseLaunchSchemeArgsEnv = "YES"
28
+ buildConfiguration = "Debug">
29
+ <Testables>
30
+ </Testables>
31
+ </TestAction>
32
+ <LaunchAction
33
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
34
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
35
+ launchStyle = "0"
36
+ useCustomWorkingDirectory = "NO"
37
+ buildConfiguration = "Debug"
38
+ ignoresPersistentStateOnLaunch = "NO"
39
+ debugDocumentVersioning = "YES"
40
+ allowLocationSimulation = "YES">
41
+ <AdditionalOptions>
42
+ </AdditionalOptions>
43
+ </LaunchAction>
44
+ <ProfileAction
45
+ shouldUseLaunchSchemeArgsEnv = "YES"
46
+ savedToolIdentifier = ""
47
+ useCustomWorkingDirectory = "NO"
48
+ buildConfiguration = "Release"
49
+ debugDocumentVersioning = "YES">
50
+ </ProfileAction>
51
+ <AnalyzeAction
52
+ buildConfiguration = "Debug">
53
+ </AnalyzeAction>
54
+ <ArchiveAction
55
+ buildConfiguration = "Release"
56
+ revealArchiveInOrganizer = "YES">
57
+ </ArchiveAction>
58
+ </Scheme>
@@ -0,0 +1,22 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>SchemeUserState</key>
6
+ <dict>
7
+ <key>GravatarHelper.xcscheme</key>
8
+ <dict>
9
+ <key>orderHint</key>
10
+ <integer>0</integer>
11
+ </dict>
12
+ </dict>
13
+ <key>SuppressBuildableAutocreation</key>
14
+ <dict>
15
+ <key>D3FFB455159BE4B800541F99</key>
16
+ <dict>
17
+ <key>primary</key>
18
+ <true/>
19
+ </dict>
20
+ </dict>
21
+ </dict>
22
+ </plist>
metadata ADDED
@@ -0,0 +1,59 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: motion-gravatar
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Brian Pattison
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-06-28 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: Generate Gravatar URLs
15
+ email:
16
+ - brian@brianpattison.com
17
+ executables: []
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - README.md
22
+ - lib/motion-gravatar.rb
23
+ - lib/motion-gravatar/motion-gravatar.rb
24
+ - motion-gravatar.gemspec
25
+ - vendor/GravatarHelper/GravatarHelper.xcodeproj/project.pbxproj
26
+ - vendor/GravatarHelper/GravatarHelper.xcodeproj/project.xcworkspace/contents.xcworkspacedata
27
+ - vendor/GravatarHelper/GravatarHelper.xcodeproj/project.xcworkspace/xcuserdata/brian.xcuserdatad/UserInterfaceState.xcuserstate
28
+ - vendor/GravatarHelper/GravatarHelper.xcodeproj/xcuserdata/brian.xcuserdatad/xcschemes/GravatarHelper.xcscheme
29
+ - vendor/GravatarHelper/GravatarHelper.xcodeproj/xcuserdata/brian.xcuserdatad/xcschemes/xcschememanagement.plist
30
+ - vendor/GravatarHelper/GravatarHelper/GravatarHelper-Prefix.pch
31
+ - vendor/GravatarHelper/GravatarHelper/GravatarHelper.h
32
+ - vendor/GravatarHelper/GravatarHelper/GravatarHelper.m
33
+ homepage: https://github.com/brianpattison/motion-gravatar
34
+ licenses: []
35
+ post_install_message:
36
+ rdoc_options: []
37
+ require_paths:
38
+ - lib
39
+ required_ruby_version: !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ required_rubygems_version: !ruby/object:Gem::Requirement
46
+ none: false
47
+ requirements:
48
+ - - ! '>='
49
+ - !ruby/object:Gem::Version
50
+ version: '0'
51
+ requirements: []
52
+ rubyforge_project:
53
+ rubygems_version: 1.8.10
54
+ signing_key:
55
+ specification_version: 3
56
+ summary: Generate the URL for a user's Gravatar image by providing an email address,
57
+ image size, and optional default image URL.
58
+ test_files: []
59
+ has_rdoc: