flurin-buttonize 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/MIT-LICENSE +20 -0
- data/README +39 -0
- data/bin/buttonize +6 -0
- data/examples/buttons.rb +23 -0
- data/examples/default/big_blue_left.gif +0 -0
- data/examples/default/big_blue_middle.gif +0 -0
- data/examples/default/big_blue_right.gif +0 -0
- data/examples/default/big_green_left.gif +0 -0
- data/examples/default/big_green_middle.gif +0 -0
- data/examples/default/big_green_right.gif +0 -0
- data/examples/default/big_orange_left.gif +0 -0
- data/examples/default/big_orange_middle.gif +0 -0
- data/examples/default/big_orange_right.gif +0 -0
- data/examples/default/big_red_left.gif +0 -0
- data/examples/default/big_red_middle.gif +0 -0
- data/examples/default/big_red_right.gif +0 -0
- data/examples/default/small_blue_left.gif +0 -0
- data/examples/default/small_blue_middle.gif +0 -0
- data/examples/default/small_blue_right.gif +0 -0
- data/examples/default/small_green_left.gif +0 -0
- data/examples/default/small_green_middle.gif +0 -0
- data/examples/default/small_green_right.gif +0 -0
- data/examples/default/small_orange_left.gif +0 -0
- data/examples/default/small_orange_middle.gif +0 -0
- data/examples/default/small_orange_right.gif +0 -0
- data/examples/default/small_red_left.gif +0 -0
- data/examples/default/small_red_middle.gif +0 -0
- data/examples/default/small_red_right.gif +0 -0
- data/examples/default/styles.rb +23 -0
- data/examples/default/table_blue_left.gif +0 -0
- data/examples/default/table_blue_middle.gif +0 -0
- data/examples/default/table_blue_right.gif +0 -0
- data/examples/default/table_green_left.gif +0 -0
- data/examples/default/table_green_middle.gif +0 -0
- data/examples/default/table_green_right.gif +0 -0
- data/examples/default/table_orange_left.gif +0 -0
- data/examples/default/table_orange_middle.gif +0 -0
- data/examples/default/table_orange_right.gif +0 -0
- data/examples/default/table_red_left.gif +0 -0
- data/examples/default/table_red_middle.gif +0 -0
- data/examples/default/table_red_right.gif +0 -0
- data/lib/buttonize.rb +22 -0
- data/lib/buttonize/button.rb +90 -0
- data/lib/buttonize/button_set.rb +98 -0
- data/lib/buttonize/cli.rb +58 -0
- data/lib/buttonize/style_set.rb +54 -0
- metadata +117 -0
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2009 Flurin Egger, DigitPaint (http://www.digitpaint.nl)
|
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
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
Buttonize, your favourite button generator.
|
2
|
+
===========================================
|
3
|
+
|
4
|
+
Buttonize is a little tool to generate sets of buttons by creating simple image templates (a left side, a repeatable middle
|
5
|
+
and a right side). You can use buttonize do create sets of buttons and sets of button styles. See the examples directory
|
6
|
+
for more information (examples/buttons.rb is a buttonset file and examples/default/styles.rb is a styleset file)
|
7
|
+
|
8
|
+
|
9
|
+
Installing
|
10
|
+
============
|
11
|
+
|
12
|
+
Buttonize has the following dependencies:
|
13
|
+
|
14
|
+
* Ruby 1.8.x (not tested in 1.9.x)
|
15
|
+
* Rubygems
|
16
|
+
* RMagick
|
17
|
+
* Thor (for the commandline tool)
|
18
|
+
|
19
|
+
If all is well you can just install the gem by running:
|
20
|
+
|
21
|
+
sudo gem install flurin-buttonize --source=http://gems.github.com
|
22
|
+
|
23
|
+
|
24
|
+
Quickstart
|
25
|
+
==========
|
26
|
+
|
27
|
+
For the impatient who just want to generate a blue button (and have all required stuff installed)!
|
28
|
+
|
29
|
+
Run:
|
30
|
+
buttonize button --style=big_blue "My first button"
|
31
|
+
|
32
|
+
and open
|
33
|
+
my_first_button.gif
|
34
|
+
|
35
|
+
|
36
|
+
Copyright & license
|
37
|
+
===================
|
38
|
+
|
39
|
+
Copyright (c) 2009 Flurin Egger, DigitPaint, MIT Style License. (see MIT-LICENSE)
|
data/bin/buttonize
ADDED
data/examples/buttons.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../lib/buttonize"
|
2
|
+
|
3
|
+
buttons = Buttonize::ButtonSet.define(:style_file => File.dirname(__FILE__) + "/default/styles.rb", :style_set => :default) do |set|
|
4
|
+
|
5
|
+
set.button "Test", :style => :small_green
|
6
|
+
|
7
|
+
set.group("big",:style => :big_green) do |s|
|
8
|
+
s.button "Confirm"
|
9
|
+
s.button "Export", "export"
|
10
|
+
s.button "Import", "import", :width => 65
|
11
|
+
end
|
12
|
+
|
13
|
+
set.group("big",:style => :big_blue) do |s|
|
14
|
+
s.button "Continue"
|
15
|
+
end
|
16
|
+
|
17
|
+
set.group("small", :style => :small_red) do |s|
|
18
|
+
s.button "Unsubscribe"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
# This will not be ran if you use the buttonize commandline script
|
23
|
+
buttons.generate(:target_path => "~/temp/button_out")
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,23 @@
|
|
1
|
+
Buttonize::StyleSet.define(:template_path => File.dirname(__FILE__)) do |set|
|
2
|
+
set.style(:big_blue) do |s|
|
3
|
+
s.font_size = 10
|
4
|
+
s.template_base = "big_blue"
|
5
|
+
s.paddings = [20,20]
|
6
|
+
end
|
7
|
+
|
8
|
+
set.style(:big_orange, :based_on => :big_blue, :template_base => "big_orange")
|
9
|
+
set.style(:big_red, :based_on => :big_blue, :template_base => "big_red")
|
10
|
+
set.style(:big_green, :based_on => :big_blue, :template_base => "big_green")
|
11
|
+
|
12
|
+
set.style(:small_blue, :font_size => 9, :template_base => "small_blue", :width => 65)
|
13
|
+
set.style(:small_orange, :based_on => :small_blue, :template_base => "small_orange")
|
14
|
+
set.style(:small_red, :based_on => :small_blue, :template_base => "small_red")
|
15
|
+
set.style(:small_green, :based_on => :small_blue, :template_base => "small_green")
|
16
|
+
end
|
17
|
+
|
18
|
+
# Styles = {
|
19
|
+
# :table_blue => {:fontsize => 8, :base => "table_blue", :paddings => [5,5], :font => File.dirname(__FILE__) + "/fonts/slkscrb.ttf", :antialias => false},
|
20
|
+
# :table_orange => {:fontsize => 8, :base => "table_orange", :paddings => [5,5], :font => File.dirname(__FILE__) + "/fonts/slkscrb.ttf", :antialias => false},
|
21
|
+
# :table_red => {:fontsize => 8, :base => "table_red", :paddings => [5,5], :font => File.dirname(__FILE__) + "/fonts/slkscrb.ttf", :antialias => false},
|
22
|
+
# :table_green => {:fontsize => 8, :base => "table_green", :paddings => [5,5], :font => File.dirname(__FILE__) + "/fonts/slkscrb.ttf", :antialias => false}
|
23
|
+
# }
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/lib/buttonize.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rmagick'
|
3
|
+
include Magick
|
4
|
+
require 'fileutils'
|
5
|
+
include FileUtils
|
6
|
+
|
7
|
+
module Buttonize
|
8
|
+
def run_in_cli!
|
9
|
+
@run_in_cli = true
|
10
|
+
end
|
11
|
+
|
12
|
+
def cli?
|
13
|
+
@run_in_cli
|
14
|
+
end
|
15
|
+
|
16
|
+
module_function :run_in_cli!, :cli?
|
17
|
+
end
|
18
|
+
|
19
|
+
require File.dirname(__FILE__) + "/buttonize/button"
|
20
|
+
require File.dirname(__FILE__) + "/buttonize/style_set"
|
21
|
+
require File.dirname(__FILE__) + "/buttonize/button_set"
|
22
|
+
|
@@ -0,0 +1,90 @@
|
|
1
|
+
class Buttonize::Button
|
2
|
+
|
3
|
+
attr_reader :options
|
4
|
+
|
5
|
+
def initialize(options)
|
6
|
+
@options = {
|
7
|
+
:font_size => 9,
|
8
|
+
:paddings => [10,10],
|
9
|
+
:width => nil,
|
10
|
+
:template_base => "button",
|
11
|
+
:template_path => File.dirname(__FILE__) + "/../../examples/default",
|
12
|
+
:font => "Arial",#File.dirname(__FILE__) + "/fonts/verdanab.ttf",
|
13
|
+
:text_offset => {:x => 0, :y => 0},
|
14
|
+
:target_path => Dir.pwd,
|
15
|
+
:antialias => true
|
16
|
+
}.update(options)
|
17
|
+
@options[:template_images] ||= ["_left","_middle","_right"].map{|p| options[:template_base] + p + ".gif" }
|
18
|
+
|
19
|
+
# Validation
|
20
|
+
@options[:template_images].each{|i| raise "Missing template_image #{i}" unless File.exist?(File.join(options[:template_path],i)) }
|
21
|
+
end
|
22
|
+
|
23
|
+
def log(text)
|
24
|
+
puts text
|
25
|
+
end
|
26
|
+
|
27
|
+
def generate(text, filename = nil)
|
28
|
+
filename ||= self.text_to_filename(text)
|
29
|
+
filename = add_extension(filename,"gif")
|
30
|
+
paddings = options[:paddings]
|
31
|
+
|
32
|
+
# Load the images
|
33
|
+
left,mid,right = options[:template_images].map{|p| Image.read(File.join(options[:template_path],p)).first }
|
34
|
+
|
35
|
+
draw = Draw.new
|
36
|
+
draw.pointsize = options[:font_size]
|
37
|
+
draw.fill = "#fff"
|
38
|
+
draw.gravity = Magick::CenterGravity
|
39
|
+
draw.font = options[:font]
|
40
|
+
draw.font_weight = Magick::BoldWeight
|
41
|
+
draw.text_antialias = options[:antialias] || false
|
42
|
+
|
43
|
+
# Measure the text first
|
44
|
+
metrics = draw.get_type_metrics(text)
|
45
|
+
target_width = metrics.width + paddings[0] + paddings[1]
|
46
|
+
|
47
|
+
target_width = options[:width] if options[:width] && options[:width] > target_width
|
48
|
+
|
49
|
+
self.log "Generating image with text \"#{text}\" and width #{target_width}px and height #{left.rows}px"
|
50
|
+
dst = Image.new(target_width,left.rows) { self.background_color = "transparent"}
|
51
|
+
|
52
|
+
# Place left
|
53
|
+
dst.composite!(left,0,0,Magick::OverCompositeOp)
|
54
|
+
|
55
|
+
# Fill up the middle
|
56
|
+
pos = left.columns
|
57
|
+
while pos < (target_width - right.columns) do
|
58
|
+
if pos + mid.columns >= (target_width - right.columns)
|
59
|
+
leftover = target_width - pos - right.columns
|
60
|
+
dst.composite!(mid,(pos - (mid.columns - leftover)),0,Magick::OverCompositeOp)
|
61
|
+
pos = pos - (mid.columns - leftover) + mid.columns
|
62
|
+
else
|
63
|
+
dst.composite!(mid,pos,0,Magick::OverCompositeOp)
|
64
|
+
pos += mid.columns
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
# Place right
|
70
|
+
dst.composite!(right,pos,0,Magick::OverCompositeOp)
|
71
|
+
draw.annotate(dst,0,0,options[:text_offset][:x],options[:text_offset][:y],text)
|
72
|
+
dst.write(File.join(options[:target_path],filename))
|
73
|
+
dst.destroy!
|
74
|
+
|
75
|
+
filename
|
76
|
+
end
|
77
|
+
|
78
|
+
def text_to_filename(text)
|
79
|
+
text.to_s.downcase.gsub(/[^a-z0-9]/,"_").squeeze("_").gsub(/_$/,"")
|
80
|
+
end
|
81
|
+
|
82
|
+
def add_extension(filename,extension)
|
83
|
+
if filename =~ /\.#{extension}$/
|
84
|
+
filename
|
85
|
+
else
|
86
|
+
filename + "." + extension
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
module Buttonize
|
2
|
+
class ButtonSet
|
3
|
+
|
4
|
+
class << self
|
5
|
+
# Define a buttonset
|
6
|
+
#
|
7
|
+
# ==== Options
|
8
|
+
# :style_file:: The style definition file to load
|
9
|
+
# :style_set:: The styleset to use, defaults to :default
|
10
|
+
# :target_path:: The output directory
|
11
|
+
# --
|
12
|
+
def define(options={},&block)
|
13
|
+
@@set = self.new(options)
|
14
|
+
yield @@set
|
15
|
+
@@set
|
16
|
+
end
|
17
|
+
|
18
|
+
def current
|
19
|
+
@@set
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
attr_reader :groups, :buttons, :options
|
24
|
+
attr_accessor :path
|
25
|
+
|
26
|
+
def initialize(options)
|
27
|
+
defaults = {:style_set => :default}
|
28
|
+
@options = defaults.update(options)
|
29
|
+
@buttons = []
|
30
|
+
@groups = []
|
31
|
+
@path = ""
|
32
|
+
@parent = nil
|
33
|
+
end
|
34
|
+
|
35
|
+
def group(name,options={})
|
36
|
+
group = self.class.new({}.update(self.options).update(options))
|
37
|
+
group.path = File.join(self.path,name)
|
38
|
+
yield group
|
39
|
+
@groups << group
|
40
|
+
group
|
41
|
+
end
|
42
|
+
|
43
|
+
def button(text,*opts)
|
44
|
+
button = {:text => text, :options => {}}
|
45
|
+
button[:options] = opts.pop if opts.last.kind_of?(Hash)
|
46
|
+
button[:filename] = opts.pop if opts.last.kind_of?(String)
|
47
|
+
@buttons << button
|
48
|
+
button
|
49
|
+
end
|
50
|
+
|
51
|
+
# Generate all buttons recursively,
|
52
|
+
# all options set in define can be overruled here.
|
53
|
+
# --
|
54
|
+
def generate(options)
|
55
|
+
# Don't run this when we're in cli mode
|
56
|
+
return if Buttonize.cli?
|
57
|
+
generate_buttons(options)
|
58
|
+
end
|
59
|
+
|
60
|
+
protected
|
61
|
+
|
62
|
+
def generate_buttons(options)
|
63
|
+
current_options = self.options.merge(options)
|
64
|
+
|
65
|
+
require current_options[:style_file] if current_options[:style_file]
|
66
|
+
styleset = Buttonize::StyleSet.sets[current_options[:style_set]]
|
67
|
+
|
68
|
+
# 1. Generate my own buttons
|
69
|
+
self.buttons.each do |button|
|
70
|
+
button_options = button[:options].dup
|
71
|
+
|
72
|
+
# Determine target path
|
73
|
+
button_options[:target_path] = File.join(current_options[:target_path],self.path) unless button_options[:target_path]
|
74
|
+
|
75
|
+
# Merge with group options
|
76
|
+
button_options = current_options.merge(button_options)
|
77
|
+
|
78
|
+
# Merge with style options
|
79
|
+
style_name = button_options.delete(:style)
|
80
|
+
button_options = styleset.styles[style_name].merge(button_options) if styleset.styles.has_key?(style_name)
|
81
|
+
|
82
|
+
Button.new(button_options).generate(button[:text],button[:filename])
|
83
|
+
end
|
84
|
+
|
85
|
+
# 2. Generate buttons of my groups
|
86
|
+
self.groups.each do |group|
|
87
|
+
# Create target path
|
88
|
+
if File.directory?(current_options[:target_path]) && !File.directory?(File.join(current_options[:target_path],group.path))
|
89
|
+
FileUtils.mkdir_p(File.join(current_options[:target_path],group.path))
|
90
|
+
end
|
91
|
+
|
92
|
+
# Generate buttons
|
93
|
+
group.send(:generate_buttons,options)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
end
|
98
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'thor'
|
2
|
+
|
3
|
+
module Buttonize
|
4
|
+
|
5
|
+
class CLI < Thor
|
6
|
+
|
7
|
+
desc "generate BUTTONSET", "Generates a whole bunch of buttons from a ButtonSet file"
|
8
|
+
method_options :target_path => :optional, # The target where to put the generated buttons, defaults to PWD + "buttons"
|
9
|
+
:style_file => :optional, # The styleset file to load. Defaults to default built-in styles
|
10
|
+
:style_set => :optional # The styleset to use. Defaults to "default"
|
11
|
+
def generate(buttonset)
|
12
|
+
options = self.options.inject({}){|mem,h| mem[h[0].to_sym] = h[1]; mem}
|
13
|
+
|
14
|
+
target_path = options[:target_path]
|
15
|
+
if !target_path
|
16
|
+
target_path = File.join(Dir.pwd,"buttons")
|
17
|
+
FileUtils.mkdir_p(target_path) if !File.directory?(target_path)
|
18
|
+
end
|
19
|
+
|
20
|
+
options[:target_path] ||= target_path
|
21
|
+
|
22
|
+
Buttonize.run_in_cli!
|
23
|
+
|
24
|
+
# Load the buttonset
|
25
|
+
require buttonset
|
26
|
+
raise "Are you sure #{buttonset} is a buttonset file?" if !ButtonSet.current
|
27
|
+
|
28
|
+
puts "Generating buttons...."
|
29
|
+
ButtonSet.current.send(:generate_buttons,options)
|
30
|
+
end
|
31
|
+
|
32
|
+
desc "button TEXT [OUTFILE]", "Generates a single button with TEXT on it, it sanitizes the text to generate filename"
|
33
|
+
method_options :style_file => :optional, # The styleset file to load. Defaults to default built-in styles
|
34
|
+
:style_set => :optional, # The styleset to use. Defaults to "default"
|
35
|
+
:style => :required # The button style to use.
|
36
|
+
def button(text,outfile=nil)
|
37
|
+
options = {"style_file" => File.join(File.dirname(__FILE__),"../../examples/default/styles.rb"), "style_set" => :default}.update(self.options)
|
38
|
+
style = get_style(options["style_file"],options["style_set"],options["style"])
|
39
|
+
Buttonize::Button.new(style).generate(text,outfile)
|
40
|
+
end
|
41
|
+
|
42
|
+
protected
|
43
|
+
|
44
|
+
def get_style(file,set,style)
|
45
|
+
style_options = get_styleset(file,set).styles[style.to_sym]
|
46
|
+
raise "No such style '#{style}' defined in styleset '#{set}'" if style_options.nil?
|
47
|
+
style_options
|
48
|
+
end
|
49
|
+
|
50
|
+
def get_styleset(file,set)
|
51
|
+
require file
|
52
|
+
set = Buttonize::StyleSet.sets[set.to_sym]
|
53
|
+
raise "No such styleset '#{set}' defined in '#{file}'" if set.nil?
|
54
|
+
set
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
class Buttonize::StyleSet
|
2
|
+
|
3
|
+
class Style < Hash
|
4
|
+
def method_missing(meth,*params)
|
5
|
+
if meth.to_s =~ /=$/
|
6
|
+
self[meth.to_s.sub(/=$/,"").to_sym] = params.first
|
7
|
+
elsif self.has_key?(meth)
|
8
|
+
self[meth]
|
9
|
+
else
|
10
|
+
super(meth,*params)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class << self
|
16
|
+
def define(*opts,&block)
|
17
|
+
options = {}
|
18
|
+
options = opts.pop if opts.last.kind_of?(Hash)
|
19
|
+
name = opts.pop if opts.last.kind_of?(String)
|
20
|
+
name ||= :default
|
21
|
+
set = self.sets[name] = self.new(name,options)
|
22
|
+
yield set
|
23
|
+
set
|
24
|
+
end
|
25
|
+
|
26
|
+
def sets
|
27
|
+
@@sets ||= {}
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
attr_reader :name, :styles, :options
|
32
|
+
|
33
|
+
def initialize(name,options={})
|
34
|
+
@name = name
|
35
|
+
@styles = {}
|
36
|
+
@options = options
|
37
|
+
end
|
38
|
+
|
39
|
+
def style(name,options={})
|
40
|
+
style = Style.new
|
41
|
+
|
42
|
+
style.update(self.options)
|
43
|
+
if base = options.delete(:based_on)
|
44
|
+
style.update(self.styles[base])
|
45
|
+
end
|
46
|
+
style.update(options)
|
47
|
+
|
48
|
+
yield(style) if block_given?
|
49
|
+
|
50
|
+
self.styles[name] = style
|
51
|
+
end
|
52
|
+
|
53
|
+
|
54
|
+
end
|
metadata
ADDED
@@ -0,0 +1,117 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: flurin-buttonize
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Flurin Egger
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-01-23 00:00:00 -08:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rmagick
|
17
|
+
version_requirement:
|
18
|
+
version_requirements: !ruby/object:Gem::Requirement
|
19
|
+
requirements:
|
20
|
+
- - ~>
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 2.5.1
|
23
|
+
version:
|
24
|
+
- !ruby/object:Gem::Dependency
|
25
|
+
name: wycats-thor
|
26
|
+
version_requirement:
|
27
|
+
version_requirements: !ruby/object:Gem::Requirement
|
28
|
+
requirements:
|
29
|
+
- - ~>
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: 0.9.8
|
32
|
+
version:
|
33
|
+
description:
|
34
|
+
email: f.p.egger@gmail.com
|
35
|
+
executables:
|
36
|
+
- buttonize
|
37
|
+
extensions: []
|
38
|
+
|
39
|
+
extra_rdoc_files: []
|
40
|
+
|
41
|
+
files:
|
42
|
+
- bin/buttonize
|
43
|
+
- examples/buttons.rb
|
44
|
+
- examples/default
|
45
|
+
- examples/default/big_blue_left.gif
|
46
|
+
- examples/default/big_blue_middle.gif
|
47
|
+
- examples/default/big_blue_right.gif
|
48
|
+
- examples/default/big_green_left.gif
|
49
|
+
- examples/default/big_green_middle.gif
|
50
|
+
- examples/default/big_green_right.gif
|
51
|
+
- examples/default/big_orange_left.gif
|
52
|
+
- examples/default/big_orange_middle.gif
|
53
|
+
- examples/default/big_orange_right.gif
|
54
|
+
- examples/default/big_red_left.gif
|
55
|
+
- examples/default/big_red_middle.gif
|
56
|
+
- examples/default/big_red_right.gif
|
57
|
+
- examples/default/small_blue_left.gif
|
58
|
+
- examples/default/small_blue_middle.gif
|
59
|
+
- examples/default/small_blue_right.gif
|
60
|
+
- examples/default/small_green_left.gif
|
61
|
+
- examples/default/small_green_middle.gif
|
62
|
+
- examples/default/small_green_right.gif
|
63
|
+
- examples/default/small_orange_left.gif
|
64
|
+
- examples/default/small_orange_middle.gif
|
65
|
+
- examples/default/small_orange_right.gif
|
66
|
+
- examples/default/small_red_left.gif
|
67
|
+
- examples/default/small_red_middle.gif
|
68
|
+
- examples/default/small_red_right.gif
|
69
|
+
- examples/default/styles.rb
|
70
|
+
- examples/default/table_blue_left.gif
|
71
|
+
- examples/default/table_blue_middle.gif
|
72
|
+
- examples/default/table_blue_right.gif
|
73
|
+
- examples/default/table_green_left.gif
|
74
|
+
- examples/default/table_green_middle.gif
|
75
|
+
- examples/default/table_green_right.gif
|
76
|
+
- examples/default/table_orange_left.gif
|
77
|
+
- examples/default/table_orange_middle.gif
|
78
|
+
- examples/default/table_orange_right.gif
|
79
|
+
- examples/default/table_red_left.gif
|
80
|
+
- examples/default/table_red_middle.gif
|
81
|
+
- examples/default/table_red_right.gif
|
82
|
+
- lib/buttonize
|
83
|
+
- lib/buttonize/button.rb
|
84
|
+
- lib/buttonize/button_set.rb
|
85
|
+
- lib/buttonize/cli.rb
|
86
|
+
- lib/buttonize/style_set.rb
|
87
|
+
- lib/buttonize.rb
|
88
|
+
- MIT-LICENSE
|
89
|
+
- README
|
90
|
+
has_rdoc: false
|
91
|
+
homepage: http://github.com/flurin/buttonize
|
92
|
+
post_install_message:
|
93
|
+
rdoc_options: []
|
94
|
+
|
95
|
+
require_paths:
|
96
|
+
- lib
|
97
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
98
|
+
requirements:
|
99
|
+
- - ">="
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: "0"
|
102
|
+
version:
|
103
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
104
|
+
requirements:
|
105
|
+
- - ">="
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
version: "0"
|
108
|
+
version:
|
109
|
+
requirements: []
|
110
|
+
|
111
|
+
rubyforge_project:
|
112
|
+
rubygems_version: 1.2.0
|
113
|
+
signing_key:
|
114
|
+
specification_version: 2
|
115
|
+
summary: A button generation tool for web applications.
|
116
|
+
test_files: []
|
117
|
+
|