sigen 0.1.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/LICENSE +20 -0
- data/README.rdoc +19 -0
- data/Rakefile +45 -0
- data/VERSION +1 -0
- data/lib/fonts/Vera.ttf +0 -0
- data/lib/gamercard.rb +125 -0
- data/lib/sigen.rb +54 -0
- data/lib/template.rb +40 -0
- data/lib/templater.rb +36 -0
- data/lib/templates/basic.rb +61 -0
- data/spec/gamercard_spec.rb +48 -0
- data/spec/sigen_spec.rb +16 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +10 -0
- metadata +94 -0
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2009 Matt Aimonetti
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
= sigen
|
2
|
+
|
3
|
+
Sigen or Signature Generator is a collection of tools designed to allow easy creation of gamer card signatures.
|
4
|
+
|
5
|
+
Ruby 1.9 compatible and the backward compatibility is not guaranteed (not tested against 1.8).
|
6
|
+
|
7
|
+
== Note on Patches/Pull Requests
|
8
|
+
|
9
|
+
* Fork the project.
|
10
|
+
* Make your feature addition or bug fix.
|
11
|
+
* Add tests for it. This is important so I don't break it in a
|
12
|
+
future version unintentionally.
|
13
|
+
* Commit, do not mess with rakefile, version, or history.
|
14
|
+
(if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
|
15
|
+
* Send me a pull request. Bonus points for topic branches.
|
16
|
+
|
17
|
+
== Copyright
|
18
|
+
|
19
|
+
Copyright (c) 2010 Sony Computer Entertainment America. See LICENSE for details.
|
data/Rakefile
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
|
4
|
+
begin
|
5
|
+
require 'jeweler'
|
6
|
+
Jeweler::Tasks.new do |gem|
|
7
|
+
gem.name = "sigen"
|
8
|
+
gem.summary = %Q{Signature generator}
|
9
|
+
gem.description = %Q{This gem helps you build signatures like player cards etv..}
|
10
|
+
gem.email = "mattaimonetti@gmail.com"
|
11
|
+
gem.homepage = "http://github.com/mattetti/sigen"
|
12
|
+
gem.authors = ["Matt Aimonetti"]
|
13
|
+
gem.add_development_dependency "rspec", ">= 1.2.9"
|
14
|
+
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
15
|
+
end
|
16
|
+
Jeweler::GemcutterTasks.new
|
17
|
+
rescue LoadError
|
18
|
+
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
19
|
+
end
|
20
|
+
|
21
|
+
require 'spec/rake/spectask'
|
22
|
+
Spec::Rake::SpecTask.new(:spec) do |spec|
|
23
|
+
spec.libs << 'lib' << 'spec'
|
24
|
+
spec.spec_files = FileList['spec/**/*_spec.rb']
|
25
|
+
end
|
26
|
+
|
27
|
+
Spec::Rake::SpecTask.new(:rcov) do |spec|
|
28
|
+
spec.libs << 'lib' << 'spec'
|
29
|
+
spec.pattern = 'spec/**/*_spec.rb'
|
30
|
+
spec.rcov = true
|
31
|
+
end
|
32
|
+
|
33
|
+
task :spec => :check_dependencies
|
34
|
+
|
35
|
+
task :default => :spec
|
36
|
+
|
37
|
+
require 'rake/rdoctask'
|
38
|
+
Rake::RDocTask.new do |rdoc|
|
39
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
40
|
+
|
41
|
+
rdoc.rdoc_dir = 'rdoc'
|
42
|
+
rdoc.title = "sigen #{version}"
|
43
|
+
rdoc.rdoc_files.include('README*')
|
44
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
45
|
+
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.1.0
|
data/lib/fonts/Vera.ttf
ADDED
Binary file
|
data/lib/gamercard.rb
ADDED
@@ -0,0 +1,125 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'RMagick'
|
3
|
+
require_relative 'templater'
|
4
|
+
|
5
|
+
|
6
|
+
# Gamercard.new.generate({:name => 'basic', :player => 'mattetti')
|
7
|
+
class Gamercard
|
8
|
+
include Magick
|
9
|
+
|
10
|
+
attr_accessor :templater
|
11
|
+
|
12
|
+
def initialize(template_data)
|
13
|
+
unless template_data.respond_to?(:has_key?) && template_data.has_key?('name')
|
14
|
+
raise Template::OptionError, 'make sure your template info has a name key and that the key is a string'
|
15
|
+
end
|
16
|
+
@templater = Templater.new(template_data)
|
17
|
+
|
18
|
+
# @columns = 600.0
|
19
|
+
# @rows = 100.0
|
20
|
+
# @font_color = 'white'
|
21
|
+
# @font = File.expand_path(File.join(File.dirname(__FILE__), 'fonts', 'Vera.ttf'))
|
22
|
+
# @margin = 10.0
|
23
|
+
# @avatar_width = (@rows - @margin)
|
24
|
+
# @avatar_x = (@columns - (@avatar_width + (@margin/2)))
|
25
|
+
# @avatar_y = ((@rows - @avatar_width)/2)
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
# Returns the template object via the templater
|
30
|
+
def template
|
31
|
+
templater.template
|
32
|
+
end
|
33
|
+
|
34
|
+
def generate(username, stats={})
|
35
|
+
template.generate(username, stats)
|
36
|
+
end
|
37
|
+
|
38
|
+
def save(path=nil)
|
39
|
+
template.save
|
40
|
+
end
|
41
|
+
|
42
|
+
def to_io
|
43
|
+
template.to_io
|
44
|
+
end
|
45
|
+
|
46
|
+
# def generate(username)
|
47
|
+
# @username = username
|
48
|
+
# @base = render_gradiated_background
|
49
|
+
# insert_avatar
|
50
|
+
# label
|
51
|
+
# last_game
|
52
|
+
# stats
|
53
|
+
# insert_url
|
54
|
+
# @base.write("#{username}.png")
|
55
|
+
# end
|
56
|
+
|
57
|
+
def insert_avatar(avatar_file=nil)
|
58
|
+
if avatar_file
|
59
|
+
@avatar = Image.read('avatar.jpg')[0]
|
60
|
+
resized_avatar = @avatar.resize_to_fit(@avatar_width, @avatar_width)
|
61
|
+
@base.composite!(resized_avatar, @avatar_x, @avatar_y, OverCompositeOp)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def label
|
66
|
+
@d.fill = @font_color
|
67
|
+
@d.font = @font
|
68
|
+
@d.pointsize = 14.0
|
69
|
+
@d.stroke('transparent')
|
70
|
+
@d.font_weight = NormalWeight
|
71
|
+
@d.gravity = WestGravity
|
72
|
+
@d = @d.annotate_scaled(@base, @columns, 1.0, @margin, @margin, "MLB10 #{@username}", 1)
|
73
|
+
end
|
74
|
+
|
75
|
+
def last_game
|
76
|
+
@d.fill = @font_color
|
77
|
+
@d.font = @font
|
78
|
+
@d.pointsize = 8.0
|
79
|
+
@d.stroke('transparent')
|
80
|
+
@d.font_weight = NormalWeight
|
81
|
+
@d.gravity = WestGravity
|
82
|
+
@d = @d.annotate_scaled(@base, @columns, 1.0, @margin, (@rows/4), "Last Game: #{Time.now.to_s}", 1)
|
83
|
+
end
|
84
|
+
|
85
|
+
def stats
|
86
|
+
@d.fill = @font_color
|
87
|
+
@d.font = @font
|
88
|
+
@d.pointsize = 8.0
|
89
|
+
@d.stroke('transparent')
|
90
|
+
@d.font_weight = NormalWeight
|
91
|
+
@d.gravity = WestGravity
|
92
|
+
@d = @d.annotate_scaled(@base, @columns, 1.0, @margin, ((@rows/4)*2), "Stats: 1 | 2 | 3 | 4 | 5 | 6 |\nmore stats on this line", 1)
|
93
|
+
end
|
94
|
+
|
95
|
+
def insert_url
|
96
|
+
@d.fill = @font_color
|
97
|
+
@d.font = @font
|
98
|
+
@d.pointsize = 8.0
|
99
|
+
@d.stroke('transparent')
|
100
|
+
@d.font_weight = NormalWeight
|
101
|
+
@d.gravity = WestGravity
|
102
|
+
@d = @d.annotate_scaled(@base, @columns, 1.0, @margin, (@rows - @margin), "http://theshowcommunity.com/players/#{@username}", 1)
|
103
|
+
end
|
104
|
+
|
105
|
+
# Use with a theme definition method to draw a gradiated background.
|
106
|
+
def render_gradiated_background(top_color='#4a465a', bottom_color='black')
|
107
|
+
Image.new(@columns, @rows, GradientFill.new(0, 0, 100, 0, top_color, bottom_color))
|
108
|
+
end
|
109
|
+
|
110
|
+
end
|
111
|
+
|
112
|
+
|
113
|
+
|
114
|
+
# Magick HACK
|
115
|
+
module Magick
|
116
|
+
class Draw
|
117
|
+
# Additional method to scale annotation text since Draw.scale doesn't.
|
118
|
+
def annotate_scaled(img, width, height, x, y, text, scale)
|
119
|
+
scaled_width = (width * scale) >= 1 ? (width * scale) : 1
|
120
|
+
scaled_height = (height * scale) >= 1 ? (height * scale) : 1
|
121
|
+
|
122
|
+
self.annotate(img, scaled_width, scaled_height, x * scale, y * scale, text)
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end # Magick
|
data/lib/sigen.rb
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
require_relative 'gamercard'
|
2
|
+
|
3
|
+
require 'fileutils'
|
4
|
+
class Sigen
|
5
|
+
@queue = :signatures
|
6
|
+
@default_save_dir = '/tmp/sigen/signatures'
|
7
|
+
|
8
|
+
# location when the signatures will be saved
|
9
|
+
def self.save_dir
|
10
|
+
if @save_dir
|
11
|
+
@save_dir
|
12
|
+
else
|
13
|
+
self.save_dir = @default_save_dir
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.save_dir=(path)
|
18
|
+
@save_dir = path
|
19
|
+
FileUtils.mkdir_p(@save_dir) unless File.exist?(@save_dir)
|
20
|
+
@save_dir
|
21
|
+
end
|
22
|
+
|
23
|
+
# Creates a gamer card signature and saves it in `save_dir`
|
24
|
+
# which points to '/tmp/sigen/signatures' by default.
|
25
|
+
#
|
26
|
+
# ==== Parameters
|
27
|
+
# username<~to_s>:: Username of the player, used to fetch avatar and save the signature.
|
28
|
+
# stats<Hash>:: The stats used in the template. The template will look for the stats using hash keys.
|
29
|
+
# template<Hash>:: Template info used to generate the signature. Keys are expected to be strings and not symbols.
|
30
|
+
# Only the name key is required. Keys are expected to be strings and not symbols.
|
31
|
+
# output_path<String>:: Optional path ti save the output signature.
|
32
|
+
# If not passed, the `save_dir` value will be used.
|
33
|
+
#
|
34
|
+
# ==== Returns
|
35
|
+
# Boolean:: reports the success of the signature creation.
|
36
|
+
#
|
37
|
+
# ==== Examples
|
38
|
+
# Sigen.perform('mattetti',
|
39
|
+
# {'rank' => 123, 'team' => 'Cubs', 'last_win' => '2010-04-27'},
|
40
|
+
# {:name => 'mlb10', :style => 'Cubs'})
|
41
|
+
#
|
42
|
+
# Sigen.perform('mattetti',
|
43
|
+
# {'rank' => 123, 'team' => 'Cubs', 'last_win' => '2010-04-27'},
|
44
|
+
# {:name => 'mlb10', :style => 'Cubs'},
|
45
|
+
# '/tmp/mlb10')
|
46
|
+
#
|
47
|
+
def self.perform(username, stats, template, output_path=nil)
|
48
|
+
card = GamerCard.new(template)
|
49
|
+
card.generate(username, stats)
|
50
|
+
# path = output_path.nil? ? save_dir : output_path
|
51
|
+
# card.save(path)
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
data/lib/template.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
# Gamercard::Template basic class, all templates should inherit from this class
|
2
|
+
class Gamercard
|
3
|
+
class Template
|
4
|
+
include Magick
|
5
|
+
class OptionError < StandardError; end
|
6
|
+
|
7
|
+
attr_reader :passed_settings
|
8
|
+
attr_reader :width, :height, :username, :stats, :generated, :base, :filename
|
9
|
+
|
10
|
+
def initialize(settings={})
|
11
|
+
@passed_settings = settings
|
12
|
+
@generated = false
|
13
|
+
process_settings(settings) if self.class.method_defined?(:process_settings)
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.fonts_path
|
17
|
+
File.expand_path(File.join(File.dirname(__FILE__), 'fonts'))
|
18
|
+
end
|
19
|
+
|
20
|
+
# template helpers inherited by all templates
|
21
|
+
|
22
|
+
def save(path=nil)
|
23
|
+
file_path = path.nil? ? (filename || 'image.png') : File.join(path, (filename || 'image.png'))
|
24
|
+
base.write(file_path)
|
25
|
+
end
|
26
|
+
|
27
|
+
def to_io
|
28
|
+
if @generated
|
29
|
+
StringIO.new(base.to_blob{ self.format = 'PNG' })
|
30
|
+
else
|
31
|
+
nil
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def gradient_background(top_color='#4a465a', bottom_color='black')
|
36
|
+
Image.new(width, height, GradientFill.new(0, 0, width, 0, top_color, bottom_color))
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
data/lib/templater.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
require_relative 'gamercard'
|
2
|
+
require_relative 'template'
|
3
|
+
|
4
|
+
class Gamercard
|
5
|
+
class Templater
|
6
|
+
|
7
|
+
attr_accessor :templates_path, :template
|
8
|
+
|
9
|
+
# Pass an optional template path in the option hash to use a custom path.
|
10
|
+
def initialize(template_data)
|
11
|
+
template_path = template_data.delete('template_path')
|
12
|
+
@templates_path = template_path || File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
|
13
|
+
@template = load_template(template_data)
|
14
|
+
self
|
15
|
+
end
|
16
|
+
|
17
|
+
def load_template(template_data)
|
18
|
+
name = template_data['name']
|
19
|
+
raise 'Your template settings need to include a name entry' if name.nil?
|
20
|
+
begin
|
21
|
+
require File.join(templates_path, "#{name}")
|
22
|
+
rescue LoadError
|
23
|
+
raise ::Gamercard::Template::OptionError, "the #{name}.rb template file could not be found in #{templates_path}"
|
24
|
+
else
|
25
|
+
# find and return template object
|
26
|
+
klass_name = name.capitalize
|
27
|
+
if Template.const_defined?(klass_name)
|
28
|
+
template_klass = Template.const_get(klass_name)
|
29
|
+
template_klass.new(template_data)
|
30
|
+
else
|
31
|
+
raise Template::OptionError, "The #{klass_name} template class was not found"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
class Basic < Gamercard::Template
|
2
|
+
|
3
|
+
|
4
|
+
# The super class already defined the following accessors:
|
5
|
+
# :width, :height, :username, :stats, :generated, :base, :filename
|
6
|
+
|
7
|
+
# method getting called when a new instance is initiated
|
8
|
+
# it's called directly from within initialize
|
9
|
+
def process_settings(passed_settings={})
|
10
|
+
# we could do something with the passed_settings but in this template
|
11
|
+
# only the default settings are used
|
12
|
+
@columns = @width = 600.0
|
13
|
+
@rows = @height = 100.0
|
14
|
+
@font_color = 'white'
|
15
|
+
@font = 'Vera.ttf'
|
16
|
+
@margin = 10.0
|
17
|
+
@avatar_width = (@rows - @margin)
|
18
|
+
@avatar_x = (@columns - (@avatar_width + (@margin/2)))
|
19
|
+
@avatar_y = ((@rows - @avatar_width)/2)
|
20
|
+
end
|
21
|
+
|
22
|
+
def settings
|
23
|
+
{
|
24
|
+
:width => @columns,
|
25
|
+
:height => @rows,
|
26
|
+
:font_color => @font_color,
|
27
|
+
:font => @font,
|
28
|
+
:margin => @margin,
|
29
|
+
:avatar_width => @avatar_width,
|
30
|
+
:avatar_x => @avatar_x,
|
31
|
+
:avatar_y => @avatar_y,
|
32
|
+
:class_name => self.class.name
|
33
|
+
}
|
34
|
+
end
|
35
|
+
|
36
|
+
def username_font
|
37
|
+
File.join(::Gamercard::Template.fonts_path, @font)
|
38
|
+
end
|
39
|
+
|
40
|
+
# Returns an image
|
41
|
+
def generate(username, stats={})
|
42
|
+
@username = username
|
43
|
+
@filename = "#{username}.png"
|
44
|
+
@stats = stats
|
45
|
+
@d = Draw.new
|
46
|
+
@base = gradient_background # uses the template helper with default values
|
47
|
+
username_label
|
48
|
+
@generated = true
|
49
|
+
end
|
50
|
+
|
51
|
+
def username_label
|
52
|
+
@d.fill = @font_color
|
53
|
+
@d.font = username_font
|
54
|
+
@d.pointsize = 14.0
|
55
|
+
@d.stroke('transparent')
|
56
|
+
@d.font_weight = NormalWeight
|
57
|
+
@d.gravity = WestGravity
|
58
|
+
@d = @d.annotate_scaled(@base, @columns, 1.0, @margin, @margin, "#{@username}", 1)
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
describe Gamercard do
|
4
|
+
it "should raise if the passed template doesn't have a name" do
|
5
|
+
lambda{Gamercard.new({})}.should raise_error
|
6
|
+
end
|
7
|
+
|
8
|
+
it "should have a templater and a template" do
|
9
|
+
card = Gamercard.new({'name' => 'basic'})
|
10
|
+
card.template.class.name.should == 'Basic'
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should have template settings" do
|
14
|
+
template = Gamercard.new({'name' => 'basic'}).template
|
15
|
+
template.settings.should_not be_nil
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should be able to generate a gamer card" do
|
19
|
+
card = Gamercard.new({'name' => 'basic'})
|
20
|
+
card.generate('mattetti').should be_true
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should respond to save" do
|
24
|
+
card = Gamercard.new({'name' => 'basic'})
|
25
|
+
card.generate('mattetti')
|
26
|
+
card.should respond_to(:save)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should let you save an image" do
|
30
|
+
card = Gamercard.new({'name' => 'basic'})
|
31
|
+
card.generate('mattetti')
|
32
|
+
card.save
|
33
|
+
File.exist?('./mattetti.png').should be_true
|
34
|
+
FileUtils.rm('./mattetti.png')
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should give an IO version of the card" do
|
38
|
+
card = Gamercard.new({'name' => 'basic'})
|
39
|
+
card.generate('mattetti')
|
40
|
+
card.to_io.should be_an_instance_of(StringIO)
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should return nil if asking for an IO of a not generated card" do
|
44
|
+
card = Gamercard.new({'name' => 'basic'})
|
45
|
+
card.to_io.should be_nil
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
data/spec/sigen_spec.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
describe "Sigen" do
|
4
|
+
it "should have a default save dir" do
|
5
|
+
Sigen.save_dir.should == '/tmp/sigen/signatures'
|
6
|
+
File.exist?(Sigen.save_dir).should be_true
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should let you set a different save dir" do
|
10
|
+
Sigen.save_dir ='/tmp/sigen/signature_test'
|
11
|
+
Sigen.save_dir.should == '/tmp/sigen/signature_test'
|
12
|
+
File.exist?(Sigen.save_dir).should be_true
|
13
|
+
# some cleanup
|
14
|
+
FileUtils.rm_rf(Sigen.save_dir)
|
15
|
+
end
|
16
|
+
end
|
data/spec/spec.opts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sigen
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 1
|
8
|
+
- 0
|
9
|
+
version: 0.1.0
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Matt Aimonetti
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2010-12-13 00:00:00 -07:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: rspec
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
segments:
|
29
|
+
- 1
|
30
|
+
- 2
|
31
|
+
- 9
|
32
|
+
version: 1.2.9
|
33
|
+
type: :development
|
34
|
+
version_requirements: *id001
|
35
|
+
description: This gem helps you build signatures like player cards etv..
|
36
|
+
email: mattaimonetti@gmail.com
|
37
|
+
executables: []
|
38
|
+
|
39
|
+
extensions: []
|
40
|
+
|
41
|
+
extra_rdoc_files:
|
42
|
+
- LICENSE
|
43
|
+
- README.rdoc
|
44
|
+
files:
|
45
|
+
- LICENSE
|
46
|
+
- README.rdoc
|
47
|
+
- Rakefile
|
48
|
+
- VERSION
|
49
|
+
- lib/fonts/Vera.ttf
|
50
|
+
- lib/gamercard.rb
|
51
|
+
- lib/sigen.rb
|
52
|
+
- lib/template.rb
|
53
|
+
- lib/templater.rb
|
54
|
+
- lib/templates/basic.rb
|
55
|
+
- spec/gamercard_spec.rb
|
56
|
+
- spec/sigen_spec.rb
|
57
|
+
- spec/spec.opts
|
58
|
+
- spec/spec_helper.rb
|
59
|
+
has_rdoc: true
|
60
|
+
homepage: http://github.com/mattetti/sigen
|
61
|
+
licenses: []
|
62
|
+
|
63
|
+
post_install_message:
|
64
|
+
rdoc_options: []
|
65
|
+
|
66
|
+
require_paths:
|
67
|
+
- lib
|
68
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
69
|
+
none: false
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
segments:
|
74
|
+
- 0
|
75
|
+
version: "0"
|
76
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
77
|
+
none: false
|
78
|
+
requirements:
|
79
|
+
- - ">="
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
segments:
|
82
|
+
- 0
|
83
|
+
version: "0"
|
84
|
+
requirements: []
|
85
|
+
|
86
|
+
rubyforge_project:
|
87
|
+
rubygems_version: 1.3.7
|
88
|
+
signing_key:
|
89
|
+
specification_version: 3
|
90
|
+
summary: Signature generator
|
91
|
+
test_files:
|
92
|
+
- spec/gamercard_spec.rb
|
93
|
+
- spec/sigen_spec.rb
|
94
|
+
- spec/spec_helper.rb
|