inch-badge 0.1.1 → 0.2.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.
- checksums.yaml +4 -4
- data/assets/badge.svg.erb +18 -0
- data/bin/inch-badge +1 -1
- data/lib/inch/badge/config.rb +1 -0
- data/lib/inch/badge/grade_section.rb +24 -0
- data/lib/inch/badge/image/base.rb +16 -0
- data/lib/inch/badge/image/png.rb +34 -0
- data/lib/inch/badge/image/svg.rb +38 -0
- data/lib/inch/badge/image.rb +12 -55
- data/lib/inch/badge/version.rb +1 -1
- data/lib/inch/badge.rb +1 -0
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 81c85a0aa45308466719b944224699b4b6e62326
|
4
|
+
data.tar.gz: e3409f537dc99bc9e0b1bc1b9b07cb3ab98b4aba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c94399d410cce68b0d6f762702cfc29d35c735fbdf50fef7a6a24947732c1e6cdb25ba429b797c6f47251c1f9393da630ff96b9ea9891d617118d36ecc6d3923
|
7
|
+
data.tar.gz: 1c119e4f073b4c4a7124e2b2c6935cda722e4f7f841b35dca60cc9572590fed27a91f4a556bdec604ea7df0ce87d79c2b86080338f2c78764b9f241db4912910
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="77" height="18">
|
2
|
+
<linearGradient id="a" x2="0" y2="100%">
|
3
|
+
<stop offset="0" stop-color="#fff" stop-opacity=".7"/><stop offset=".1" stop-color="#aaa" stop-opacity=".1"/><stop offset=".9" stop-opacity=".3"/><stop offset="1" stop-opacity=".5"/>
|
4
|
+
</linearGradient>
|
5
|
+
<rect rx="4" width="77" height="18" fill="#555"/>
|
6
|
+
|
7
|
+
<% x = 0 %>
|
8
|
+
<% @grades.each do |grade| %>
|
9
|
+
<rect x="<%= 34+x %>" y="4" width="<%= grade.width %>" height="10" fill="<%= grade.color %>"/>
|
10
|
+
<% x += grade.width %>
|
11
|
+
<% end %>
|
12
|
+
|
13
|
+
<rect rx="4" width="77" height="18" fill="url(#a)"/>
|
14
|
+
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
15
|
+
<text x="18.5" y="13" fill="#010101" fill-opacity=".3">docs</text>
|
16
|
+
<text x="18.5" y="12">docs</text>
|
17
|
+
</g>
|
18
|
+
</svg>
|
data/bin/inch-badge
CHANGED
data/lib/inch/badge/config.rb
CHANGED
@@ -0,0 +1,24 @@
|
|
1
|
+
module Inch
|
2
|
+
module Badge
|
3
|
+
class GradeSection < Struct.new(:name, :color, :size, :overall)
|
4
|
+
def prefix(x)
|
5
|
+
if x == 0
|
6
|
+
"begin"
|
7
|
+
elsif x == section_width - 1
|
8
|
+
"end"
|
9
|
+
else
|
10
|
+
"body"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def width
|
15
|
+
return 0 if overall == 0
|
16
|
+
((size / overall.to_f) * section_width).round
|
17
|
+
end
|
18
|
+
|
19
|
+
def section_width
|
20
|
+
Config::SECTION_WIDTH
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Inch
|
2
|
+
module Badge
|
3
|
+
module Image
|
4
|
+
class Base
|
5
|
+
def initialize(filename, numbers)
|
6
|
+
@filename = filename
|
7
|
+
@numbers = numbers.map(&:to_i)
|
8
|
+
@overall = @numbers.inject(0, :+)
|
9
|
+
@grades = Config::GRADE_ORDER.map.with_index do |name, index|
|
10
|
+
GradeSection.new(name, Config::GRADE_COLOR[index], @numbers[index], @overall)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'chunky_png'
|
2
|
+
|
3
|
+
module Inch
|
4
|
+
module Badge
|
5
|
+
module Image
|
6
|
+
class PNG < Base
|
7
|
+
def save
|
8
|
+
base_image = ChunkyPNG::Image.from_file( Config.image_path('bg.png') )
|
9
|
+
|
10
|
+
x = 0
|
11
|
+
@grades.each do |grade|
|
12
|
+
grade.width.times do |i|
|
13
|
+
if x < grade.section_width
|
14
|
+
badge = load_image( Config.image_path("grade-#{grade.name}-#{grade.prefix(x)}.png") )
|
15
|
+
base_image.compose!(badge, 34+x, 0)
|
16
|
+
end
|
17
|
+
x += 1
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
base_image.save(@filename, :fast_rgba)
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def load_image(filename)
|
27
|
+
@cache ||= {}
|
28
|
+
@cache[filename] ||= ChunkyPNG::Image.from_file(filename)
|
29
|
+
@cache[filename]
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'erb'
|
2
|
+
|
3
|
+
module Inch
|
4
|
+
module Badge
|
5
|
+
module Image
|
6
|
+
class SVG < Base
|
7
|
+
def save
|
8
|
+
template_content = File.read( Config.image_path('badge.svg.erb') )
|
9
|
+
renderer = ERB.new(template_content)
|
10
|
+
output = renderer.result(binding)
|
11
|
+
|
12
|
+
File.open(@filename, 'w') {|f| f.write(output) }
|
13
|
+
return
|
14
|
+
|
15
|
+
x = 0
|
16
|
+
@grades.each do |grade|
|
17
|
+
grade.width.times do |i|
|
18
|
+
if x < grade.section_width
|
19
|
+
badge = load_image( Config.image_path("grade-#{grade.name}-#{grade.prefix(x)}.png") )
|
20
|
+
base_image.compose!(badge, 34+x, 0)
|
21
|
+
end
|
22
|
+
x += 1
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def load_image(filename)
|
31
|
+
@cache ||= {}
|
32
|
+
@cache[filename] ||= ChunkyPNG::Image.from_file(filename)
|
33
|
+
@cache[filename]
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/lib/inch/badge/image.rb
CHANGED
@@ -1,63 +1,20 @@
|
|
1
|
-
require 'chunky_png'
|
2
1
|
|
3
2
|
module Inch
|
4
3
|
module Badge
|
5
|
-
|
6
|
-
def
|
7
|
-
if
|
8
|
-
|
9
|
-
elsif
|
10
|
-
|
4
|
+
module Image
|
5
|
+
def self.create(filename, numbers)
|
6
|
+
if filename =~ /\.png$/
|
7
|
+
PNG.new(filename, numbers).save
|
8
|
+
elsif filename =~ /\.svg$/
|
9
|
+
SVG.new(filename, numbers).save
|
11
10
|
else
|
12
|
-
"
|
11
|
+
raise "Unknown data format: #{filename}"
|
13
12
|
end
|
14
13
|
end
|
15
|
-
|
16
|
-
def width
|
17
|
-
return 0 if overall == 0
|
18
|
-
((size / overall.to_f) * section_width).round
|
19
|
-
end
|
20
|
-
|
21
|
-
def section_width
|
22
|
-
Config::SECTION_WIDTH
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
class Image
|
27
|
-
def initialize(filename, numbers)
|
28
|
-
@filename = filename
|
29
|
-
@numbers = numbers.map(&:to_i)
|
30
|
-
@overall = @numbers.inject(0, :+)
|
31
|
-
end
|
32
|
-
|
33
|
-
def save
|
34
|
-
@grades = Config::GRADE_ORDER.map.with_index do |name, index|
|
35
|
-
GradeSection.new(name, @numbers[index], @overall)
|
36
|
-
end
|
37
|
-
|
38
|
-
base_image = ChunkyPNG::Image.from_file( Config.image_path('bg.png') )
|
39
|
-
|
40
|
-
x = 0
|
41
|
-
@grades.each do |grade|
|
42
|
-
grade.width.times do |i|
|
43
|
-
if x < grade.section_width
|
44
|
-
badge = load_image( Config.image_path("grade-#{grade.name}-#{grade.prefix(x)}.png") )
|
45
|
-
base_image.compose!(badge, 34+x, 0)
|
46
|
-
end
|
47
|
-
x += 1
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
base_image.save(@filename, :fast_rgba)
|
52
|
-
end
|
53
|
-
|
54
|
-
private
|
55
|
-
|
56
|
-
def load_image(filename)
|
57
|
-
@cache ||= {}
|
58
|
-
@cache[filename] ||= ChunkyPNG::Image.from_file(filename)
|
59
|
-
@cache[filename]
|
60
|
-
end
|
61
14
|
end
|
62
15
|
end
|
63
|
-
end
|
16
|
+
end
|
17
|
+
|
18
|
+
require_relative 'image/base'
|
19
|
+
require_relative 'image/png'
|
20
|
+
require_relative 'image/svg'
|
data/lib/inch/badge/version.rb
CHANGED
data/lib/inch/badge.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: inch-badge
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- René Föhring
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-03-
|
11
|
+
date: 2014-03-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: chunky_png
|
@@ -67,6 +67,7 @@ files:
|
|
67
67
|
- LICENSE.txt
|
68
68
|
- README.md
|
69
69
|
- Rakefile
|
70
|
+
- assets/badge.svg.erb
|
70
71
|
- assets/bg.png
|
71
72
|
- assets/grade-A-begin.png
|
72
73
|
- assets/grade-A-body.png
|
@@ -84,7 +85,11 @@ files:
|
|
84
85
|
- inch-badge.gemspec
|
85
86
|
- lib/inch/badge.rb
|
86
87
|
- lib/inch/badge/config.rb
|
88
|
+
- lib/inch/badge/grade_section.rb
|
87
89
|
- lib/inch/badge/image.rb
|
90
|
+
- lib/inch/badge/image/base.rb
|
91
|
+
- lib/inch/badge/image/png.rb
|
92
|
+
- lib/inch/badge/image/svg.rb
|
88
93
|
- lib/inch/badge/version.rb
|
89
94
|
homepage: ''
|
90
95
|
licenses:
|