gravaty 9.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (138) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG +835 -0
  3. data/COPYING.md +675 -0
  4. data/Gemfile +21 -0
  5. data/ISSUES.md +62 -0
  6. data/README.md +287 -0
  7. data/Rakefile +52 -0
  8. data/acknowledgements.md +66 -0
  9. data/authors.md +63 -0
  10. data/copyright.md +468 -0
  11. data/examples/avatar.rb +159 -0
  12. data/examples/basics.rb +75 -0
  13. data/examples/cacert.pem +3401 -0
  14. data/examples/profile.rb +187 -0
  15. data/examples/xmlrpc.rb +41 -0
  16. data/gravaty.gemspec +78 -0
  17. data/gravaty.odp +0 -0
  18. data/gravaty.pdf +0 -0
  19. data/html/CHANGELOG.html +1117 -0
  20. data/html/COPYING_md.html +393 -0
  21. data/html/Gemfile.html +108 -0
  22. data/html/Gravaty/Gravaty.html +1002 -0
  23. data/html/Gravaty/ParsableDuckType.html +162 -0
  24. data/html/Gravaty/Parser.html +239 -0
  25. data/html/Gravaty/Parsers/Avatar.html +169 -0
  26. data/html/Gravaty/Parsers/Callback.html +170 -0
  27. data/html/Gravaty/Parsers/Default.html +178 -0
  28. data/html/Gravaty/Parsers/Force.html +170 -0
  29. data/html/Gravaty/Parsers/Format.html +181 -0
  30. data/html/Gravaty/Parsers/Pixelsize.html +181 -0
  31. data/html/Gravaty/Parsers/Rating.html +181 -0
  32. data/html/Gravaty/Parsers/Secure.html +169 -0
  33. data/html/Gravaty/Parsers/Type.html +181 -0
  34. data/html/Gravaty/Parsers.html +96 -0
  35. data/html/Gravaty/Utils/Downloader/Downloader.html +227 -0
  36. data/html/Gravaty/Utils/Downloader.html +108 -0
  37. data/html/Gravaty/Utils/Raisers.html +203 -0
  38. data/html/Gravaty/Utils/Rfc5322.html +139 -0
  39. data/html/Gravaty/Utils/RpcConnector/RpcConnector.html +248 -0
  40. data/html/Gravaty/Utils/RpcConnector.html +111 -0
  41. data/html/Gravaty/Utils.html +111 -0
  42. data/html/Gravaty.html +320 -0
  43. data/html/ISSUES_md.html +165 -0
  44. data/html/Object.html +187 -0
  45. data/html/README_md.html +276 -0
  46. data/html/Rakefile.html +141 -0
  47. data/html/acknowledgements_md.html +160 -0
  48. data/html/authors_md.html +173 -0
  49. data/html/copyright_md.html +481 -0
  50. data/html/created.rid +59 -0
  51. data/html/css/fonts.css +167 -0
  52. data/html/css/rdoc.css +590 -0
  53. data/html/examples/cacert_pem.html +1056 -0
  54. data/html/fonts/Lato-Light.ttf +0 -0
  55. data/html/fonts/Lato-LightItalic.ttf +0 -0
  56. data/html/fonts/Lato-Regular.ttf +0 -0
  57. data/html/fonts/Lato-RegularItalic.ttf +0 -0
  58. data/html/fonts/SourceCodePro-Bold.ttf +0 -0
  59. data/html/fonts/SourceCodePro-Regular.ttf +0 -0
  60. data/html/gravaty_gemspec.html +169 -0
  61. data/html/images/add.png +0 -0
  62. data/html/images/arrow_up.png +0 -0
  63. data/html/images/brick.png +0 -0
  64. data/html/images/brick_link.png +0 -0
  65. data/html/images/bug.png +0 -0
  66. data/html/images/bullet_black.png +0 -0
  67. data/html/images/bullet_toggle_minus.png +0 -0
  68. data/html/images/bullet_toggle_plus.png +0 -0
  69. data/html/images/date.png +0 -0
  70. data/html/images/delete.png +0 -0
  71. data/html/images/find.png +0 -0
  72. data/html/images/loadingAnimation.gif +0 -0
  73. data/html/images/macFFBgHack.png +0 -0
  74. data/html/images/package.png +0 -0
  75. data/html/images/page_green.png +0 -0
  76. data/html/images/page_white_text.png +0 -0
  77. data/html/images/page_white_width.png +0 -0
  78. data/html/images/plugin.png +0 -0
  79. data/html/images/ruby.png +0 -0
  80. data/html/images/tag_blue.png +0 -0
  81. data/html/images/tag_green.png +0 -0
  82. data/html/images/transparent.png +0 -0
  83. data/html/images/wrench.png +0 -0
  84. data/html/images/wrench_orange.png +0 -0
  85. data/html/images/zoom.png +0 -0
  86. data/html/index.html +308 -0
  87. data/html/js/darkfish.js +161 -0
  88. data/html/js/jquery.js +4 -0
  89. data/html/js/navigation.js +141 -0
  90. data/html/js/navigation.js.gz +0 -0
  91. data/html/js/search.js +109 -0
  92. data/html/js/search_index.js +1 -0
  93. data/html/js/search_index.js.gz +0 -0
  94. data/html/js/searcher.js +229 -0
  95. data/html/js/searcher.js.gz +0 -0
  96. data/html/table_of_contents.html +995 -0
  97. data/lib/gravaty/application.rb +354 -0
  98. data/lib/gravaty/constants.rb +65 -0
  99. data/lib/gravaty/locales/en.yml +38 -0
  100. data/lib/gravaty/locales/it.yml +38 -0
  101. data/lib/gravaty/locales/ja.yml +39 -0
  102. data/lib/gravaty/parser.rb +50 -0
  103. data/lib/gravaty/parsers/avatar.rb +40 -0
  104. data/lib/gravaty/parsers/callback.rb +41 -0
  105. data/lib/gravaty/parsers/default.rb +92 -0
  106. data/lib/gravaty/parsers/force.rb +40 -0
  107. data/lib/gravaty/parsers/format.rb +45 -0
  108. data/lib/gravaty/parsers/pixelsize.rb +45 -0
  109. data/lib/gravaty/parsers/rating.rb +45 -0
  110. data/lib/gravaty/parsers/secure.rb +39 -0
  111. data/lib/gravaty/parsers/type.rb +45 -0
  112. data/lib/gravaty/utils/downloader.rb +156 -0
  113. data/lib/gravaty/utils/raisers.rb +63 -0
  114. data/lib/gravaty/utils/rfc5322.rb +110 -0
  115. data/lib/gravaty/utils/rpc_connector.rb +86 -0
  116. data/lib/gravaty/version.rb +24 -0
  117. data/lib/gravaty.rb +75 -0
  118. data/test/gravaty/locales/test_locales.rb +69 -0
  119. data/test/gravaty/parsers/test_avatar.rb +39 -0
  120. data/test/gravaty/parsers/test_callback.rb +42 -0
  121. data/test/gravaty/parsers/test_default.rb +79 -0
  122. data/test/gravaty/parsers/test_force.rb +39 -0
  123. data/test/gravaty/parsers/test_format.rb +54 -0
  124. data/test/gravaty/parsers/test_pixelsize.rb +56 -0
  125. data/test/gravaty/parsers/test_rating.rb +54 -0
  126. data/test/gravaty/parsers/test_secure.rb +39 -0
  127. data/test/gravaty/parsers/test_type.rb +44 -0
  128. data/test/gravaty/test_application.rb +126 -0
  129. data/test/gravaty/test_avatar.rb +122 -0
  130. data/test/gravaty/test_parser.rb +59 -0
  131. data/test/gravaty/test_profile.rb +70 -0
  132. data/test/gravaty/utils/test_downloader.rb +51 -0
  133. data/test/gravaty/utils/test_raisers.rb +62 -0
  134. data/test/gravaty/utils/test_rfc5322.rb +82 -0
  135. data/test/gravaty/utils/test_rpc_connector.rb +82 -0
  136. data/test/test_gravaty.rb +48 -0
  137. data/test/test_helper.rb +105 -0
  138. metadata +348 -0
@@ -0,0 +1,187 @@
1
+ #--
2
+ # gravaty
3
+ # Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Marco Bresciani
4
+ #
5
+ # This file is part of gravaty.
6
+ #
7
+ # gravaty is free software: you can redistribute it and/or modify it
8
+ # under the terms of the GNU General Public License as published by the
9
+ # Free Software Foundation, either version 3 of the License, or (at your
10
+ # option) any later version.
11
+ #
12
+ # gravaty is distributed in the hope that it will be useful, but WITHOUT
13
+ # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14
+ # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15
+ # for more details.
16
+ #
17
+ # You should have received a copy of the GNU General Public License
18
+ # along with gravaty. If not, see <http://www.gnu.org/licenses/>.
19
+ #++
20
+
21
+ require_relative '../lib/gravaty'
22
+
23
+ i = 0
24
+
25
+ # Creates the Gravaty object with an (example) email
26
+ puts "------------------------------------------"
27
+ puts "Profile: '#{i}'. Creates the Gravaty object with an (example) email."
28
+ puts "------------------------------------------"
29
+ puts "irb(main):001:0> a_gravaty = Gravaty::gravatize 'user@example.com'"
30
+ a_gravaty = Gravaty::gravatize 'user@example.com'
31
+ puts
32
+ i += 1
33
+
34
+ # Prints the basic URL for profile retrieval, with no frills
35
+ # (https://www.gravatar.com/b58996c504c5638798eb6b511e6f49af)
36
+ puts "------------------------------------------"
37
+ puts "Profile: '#{i}'. Prints the basic URL for profile retrieval, with no frills (https://secure.gravatar.com/b58996c504c5638798eb6b511e6f49af)."
38
+ puts "------------------------------------------"
39
+ puts 'irb(main):001:0> a_gravaty.profile'
40
+ puts a_gravaty.profile
41
+ puts
42
+ i += 1
43
+
44
+ # Prints the basic URL for profile retrieval, with no frills, in json
45
+ # format through json-specific method
46
+ # (https://secure.gravatar.com/b58996c504c5638798eb6b511e6f49af.json)
47
+ puts "------------------------------------------"
48
+ puts "Profile: '#{i}'. Prints the basic URL for profile retrieval, with no frills, in json format through json-specific method (http://www.gravatar.com/b58996c504c5638798eb6b511e6f49af.json)."
49
+ puts "------------------------------------------"
50
+ puts 'irb(main):001:0> a_gravaty.json'
51
+ puts a_gravaty.json
52
+ puts
53
+ i += 1
54
+
55
+ # Prints the basic URL for profile retrieval, in JSON format, with
56
+ # callback string
57
+ # (https://secure.gravatar.com/b58996c504c5638798eb6b511e6f49af.json?callback=my_callback)
58
+ puts "------------------------------------------"
59
+ puts "Profile: '#{i}'. Prints the basic URL for profile retrieval, in JSON format, with callback string (https://secure.gravatar.com/b58996c504c5638798eb6b511e6f49af.json?callback=my_callback)."
60
+ puts "------------------------------------------"
61
+ puts "irb(main):001:0> a_gravaty.json callback: 'my_callback'"
62
+ puts a_gravaty.json callback: 'my_callback'
63
+ puts
64
+ i += 1
65
+
66
+ # Prints the basic URL for profile retrieval, in PHP format
67
+ # (https://secure.gravatar.com/b58996c504c5638798eb6b511e6f49af.php)
68
+ puts "------------------------------------------"
69
+ puts "Profile: '#{i}'. Prints the basic URL for profile retrieval, in PHP format (https://secure.gravatar.com/b58996c504c5638798eb6b511e6f49af.php)."
70
+ puts "------------------------------------------"
71
+ puts "irb(main):001:0> a_gravaty.profile format: 'php'"
72
+ puts a_gravaty.profile format: 'php'
73
+ puts
74
+ i += 1
75
+
76
+ # Prints the basic URL for profile retrieval, with no frills, in QR code
77
+ # format through QR code-specific method
78
+ # (https://secure.gravatar.com/b58996c504c5638798eb6b511e6f49af.qr)
79
+ puts "------------------------------------------"
80
+ puts "Profile: '#{i}'. Prints the basic URL for profile retrieval, with no frills, in QR code format through QR code-specific method (https://secure.gravatar.com/b58996c504c5638798eb6b511e6f49af.qr)."
81
+ puts "------------------------------------------"
82
+ puts 'irb(main):001:0> a_gravaty.qrcode'
83
+ puts a_gravaty.qrcode
84
+ puts
85
+ i += 1
86
+
87
+ # Prints and saves the basic URL for profile retrieval, with no frills,
88
+ # in QR code format
89
+ # (https://secure.gravatar.com/b58996c504c5638798eb6b511e6f49af.qr)
90
+ puts "------------------------------------------"
91
+ puts "Profile: '#{i}'. Prints and saves the basic URL for profile retrieval, with no frills, in QR code format (https://secure.gravatar.com/b58996c504c5638798eb6b511e6f49af.qr)."
92
+ puts "------------------------------------------"
93
+ puts "irb(main):001:0> a_gravaty.profile! format: 'qr'"
94
+ puts a_gravaty.profile! format: 'qr'
95
+ puts
96
+ i += 1
97
+
98
+ # Retrieves the latest saved operation (email address, if none saved)
99
+ # (user@example.com)
100
+ puts "------------------------------------------"
101
+ puts "Profile: '#{i}'. Retrieves the latest saved operation (email address, if none saved) (user@example.com)."
102
+ puts "------------------------------------------"
103
+ puts 'irb(main):001:0> puts a_gravaty'
104
+ puts a_gravaty
105
+ puts
106
+ i += 1
107
+
108
+ # Prints and save the basic URL for profile and later retrieval, in QR
109
+ # code format
110
+ # (https://secure.gravatar.com/b58996c504c5638798eb6b511e6f49af.qr)
111
+ puts "------------------------------------------"
112
+ puts "Profile: '#{i}'. Prints and save the basic URL for profile and later retrieval, in QR code format (https://secure.gravatar.com/b58996c504c5638798eb6b511e6f49af.qr)."
113
+ puts "------------------------------------------"
114
+ puts "irb(main):001:0> a_gravaty.profile! format: 'qr'"
115
+ puts a_gravaty.profile! format: 'qr'
116
+ puts
117
+
118
+ # Downloads the previously saved gravaty configuration with the default
119
+ # name of the file according to saved URI
120
+ # (saves b58996c504c5638798eb6b511e6f49af.qr file via HTTPS)
121
+ puts "------------------------------------------"
122
+ puts "Profile: '#{i}'. Downloads the previously saved gravaty configuration with the default name of the file according to saved URI. (saves b58996c504c5638798eb6b511e6f49af.qr file via HTTPS)"
123
+ puts "------------------------------------------"
124
+ puts 'irb(main):001:0> a_gravaty.download'
125
+ a_gravaty.download
126
+ puts
127
+ i += 1
128
+
129
+ # Prints the basic URL for profile retrieval in QR code format
130
+ # (https://secure.gravatar.com/b58996c504c5638798eb6b511e6f49af.qr)
131
+ puts "------------------------------------------"
132
+ puts "Profile: '#{i}'a. Prints the basic URL for profile retrieval in QR code format (https://secure.gravatar.com/b58996c504c5638798eb6b511e6f49af.qr)."
133
+ puts "------------------------------------------"
134
+ puts 'irb(main):001:0> a_gravaty.qrcode'
135
+ puts a_gravaty.qrcode
136
+ puts
137
+
138
+ # Prints the unsecure URL for profile retrieval in QR code format with
139
+ # specified image size (in pixels)
140
+ # (http://www.gravatar.com/b58996c504c5638798eb6b511e6f49af.qr?s=42)
141
+ puts "------------------------------------------"
142
+ puts "Profile: '#{i}'b. prints the unsecure URL for profile retrieval in QR code format with specified image size (in pixels) (http://www.gravatar.com/b58996c504c5638798eb6b511e6f49af.qr?s=42)."
143
+ puts "------------------------------------------"
144
+ puts 'irb(main):001:0> a_gravaty.qrcode pixelsize: 42, secure: false'
145
+ puts a_gravaty.qrcode! pixelsize: 42, secure: false
146
+ puts
147
+ i += 1
148
+
149
+ # Retrieves the latest saved operation (email address, if none saved)
150
+ # (user@example.com)
151
+ puts "------------------------------------------"
152
+ puts "Profile: '#{i}'. Retrieves the latest saved operation (email address, if none saved) (user@example.com)."
153
+ puts "------------------------------------------"
154
+ puts 'irb(main):001:0> puts a_gravaty'
155
+ puts a_gravaty
156
+ puts
157
+ i += 1
158
+
159
+ # Prints and saves the unsecure URL for profile retrieval, in VFC/vCard
160
+ # format (http://www.gravatar.com/b58996c504c5638798eb6b511e6f49af.vcf)
161
+ puts "------------------------------------------"
162
+ puts "Profile: '#{i}'. Prints and saves the unsecure URL for profile retrieval, in VFC/vCard format (http://www.gravatar.com/b58996c504c5638798eb6b511e6f49af.vcf)."
163
+ puts "------------------------------------------"
164
+ puts "irb(main):001:0> a_gravaty.profile format: 'vcf', secure: false"
165
+ puts a_gravaty.profile! format: 'vcf', secure: false
166
+ puts
167
+ i += 1
168
+
169
+ # Downloads the previously saved gravaty configuration with the default
170
+ # name of the file according to saved URI
171
+ # (saves b58996c504c5638798eb6b511e6f49af.vcf file via HTTP)
172
+ puts "------------------------------------------"
173
+ puts "Profile: '#{i}'. Downloads the previously saved gravaty configuration with the default name of the file according to saved URI. (saves b58996c504c5638798eb6b511e6f49af.vcf file via HTTP)"
174
+ puts "------------------------------------------"
175
+ puts 'irb(main):001:0> a_gravaty.download'
176
+ a_gravaty.download
177
+ puts
178
+ i += 1
179
+
180
+ # Prints the basic URL for profile retrieval, in XML format
181
+ # (https://secure.gravatar.com/b58996c504c5638798eb6b511e6f49af.xml)
182
+ puts "------------------------------------------"
183
+ puts "Profile: '#{i}'. Prints the basic URL for profile retrieval, in XML format (https://secure.gravatar.com/b58996c504c5638798eb6b511e6f49af.xml)."
184
+ puts "------------------------------------------"
185
+ puts "irb(main):001:0> a_gravaty.profile format: 'xml'"
186
+ puts a_gravaty.profile format: 'xml'
187
+ puts
@@ -0,0 +1,41 @@
1
+ #
2
+ # gravaty
3
+ # Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Marco Bresciani
4
+ #
5
+ # This file is part of gravaty.
6
+ #
7
+ # gravaty is free software: you can redistribute it and/or modify it
8
+ # under the terms of the GNU General Public License as published by the
9
+ # Free Software Foundation, either version 3 of the License, or (at your
10
+ # option) any later version.
11
+ #
12
+ # gravaty is distributed in the hope that it will be useful, but WITHOUT
13
+ # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14
+ # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15
+ # for more details.
16
+ #
17
+ # You should have received a copy of the GNU General Public License
18
+ # along with gravaty. If not, see <http://www.gnu.org/licenses/>.
19
+ #
20
+
21
+ require_relative '../lib/gravaty'
22
+
23
+ i = 0
24
+
25
+ # Creates the Gravaty object with an (example) email
26
+ puts "------------------------------------------"
27
+ puts "XML-RPC: '#{i}'. Creates the Gravaty object with an (example) email."
28
+ puts "------------------------------------------"
29
+ puts "irb(main):001:0> a_gravaty = Gravaty::gravatize 'user@example.com'"
30
+ a_gravaty = Gravaty::gravatize 'user@example.com'
31
+ puts
32
+ i += 1
33
+
34
+ # Calls the test method of the XML-RPC API
35
+ puts "------------------------------------------"
36
+ puts "XML-RPC: '#{i}'. Calls the test method of the XML-RPC API with password 'password'."
37
+ puts "------------------------------------------"
38
+ puts 'irb(main):001:0> a_gravaty.xmlrpc Gravaty::RPC_TEST_METHOD'
39
+ a_gravaty.xmlrpc Gravaty::RPC_TEST_METHOD, 'password'
40
+ puts
41
+ i += 1
data/gravaty.gemspec ADDED
@@ -0,0 +1,78 @@
1
+ # gravaty
2
+ # Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Marco Bresciani
3
+ #
4
+ # This file is part of gravaty.
5
+ #
6
+ # gravaty is free software: you can redistribute it and/or modify it
7
+ # under the terms of the GNU General Public License as published by the
8
+ # Free Software Foundation, either version 3 of the License, or (at your
9
+ # option) any later version.
10
+ #
11
+ # gravaty is distributed in the hope that it will be useful, but WITHOUT
12
+ # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13
+ # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14
+ # for more details.
15
+ #
16
+ # You should have received a copy of the GNU General Public License
17
+ # along with gravaty. If not, see <http://www.gnu.org/licenses/>.
18
+
19
+ require_relative 'lib/gravaty/version'
20
+
21
+ SUMMARY = 'This gem automagically prepares complete URIs for Gravatar,
22
+ for both avatars and profiles, with all currently supported options,
23
+ included the XML-RPC API, as of 2014-04-30, starting from a single
24
+ email address!'
25
+
26
+ Gem::Specification.new do |a_gem|
27
+ a_gem.name = 'gravaty'
28
+ a_gem.version = Gravaty::VERSION
29
+ a_gem.license = 'GPL-3.0'
30
+ a_gem.licenses = %w(GPL-3.0 BSD-3-Clause)
31
+ a_gem.author = 'Marco Bresciani'
32
+ a_gem.authors = ['Marco Bresciani', '新部裕', 'Peter R. Marreck',
33
+ 'Jon Maken', 'Łukasz Niemier']
34
+ a_gem.email = 'marcobresciani_1974@libero.it'
35
+ a_gem.homepage = 'https://savannah.nongnu.org/projects/gravaty/'
36
+ a_gem.summary = SUMMARY
37
+ a_gem.description = "#{SUMMARY} It's my first 'real' Ruby gem, hoping
38
+ it will be useful for someone (let me know if you use it, please!).
39
+ GNU GPLv3 license; source code available through anonymous checkout:
40
+ hg clone http://hg.savannah.nongnu.org/hgweb/gravaty/ or write me and
41
+ I'll send it. You can even decide to contribute to this little free
42
+ software project by registering to Savannah and ask to be part of the
43
+ 'gravaty' project! With contributions from: 新部裕, Peter R. Marreck,
44
+ Jon Maken, Łukasz Niemier."
45
+
46
+ COMMON_FILES = %w(acknowledgements.md authors.md CHANGELOG COPYING.md
47
+ copyright.md Gemfile gravaty.gemspec gravaty.odp gravaty.pdf ISSUES.md
48
+ Rakefile README.md)
49
+
50
+ a_gem.files = Dir.glob('{examples,html,lib,test}/**/*') + COMMON_FILES
51
+ a_gem.test_files = Dir.glob('test/**/test_*.rb')
52
+ a_gem.require_path = 'lib'
53
+ a_gem.require_paths = %w(lib)
54
+ a_gem.extra_rdoc_files = COMMON_FILES
55
+
56
+ a_gem.required_ruby_version = '~> 2.6'
57
+ a_gem.rubygems_version = '~> 3.0'
58
+
59
+ a_gem.add_runtime_dependency 'i18n', '~>1.6'
60
+ a_gem.add_runtime_dependency 'json', '~>2.2'
61
+ a_gem.add_runtime_dependency 'xmlrpc', '~>0.3.0'
62
+
63
+ a_gem.add_development_dependency 'bundler', '~>2.0'
64
+ a_gem.add_development_dependency 'minitest', '~>5.11'
65
+ a_gem.add_development_dependency 'rake', '~>12.3'
66
+ a_gem.add_development_dependency 'rdoc', '~>6.1'
67
+ a_gem.add_development_dependency 'simplecov', '~>0.16'
68
+
69
+ a_gem.requirements = a_gem.required_ruby_version.to_s, a_gem.dependencies.to_s
70
+
71
+ begin
72
+ require 'changelog'
73
+ rescue LoadError
74
+ a_gem.post_install_message = "Thank you for using #{a_gem.name} version #{a_gem.version}."
75
+ else
76
+ a_gem.post_install_message = CHANGELOG.new.version_changes
77
+ end
78
+ end
data/gravaty.odp ADDED
Binary file
data/gravaty.pdf ADDED
Binary file