coderbits 0.1.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +11 -0
- data/README.md +5 -23
- data/coderbits.gemspec +5 -8
- data/lib/coderbits.rb +10 -13
- data/lib/coderbits/client.rb +18 -15
- data/lib/coderbits/version.rb +3 -3
- data/spec/coderbits/client_spec.rb +49 -40
- data/spec/coderbits_spec.rb +6 -8
- data/spec/spec_helper.rb +0 -4
- metadata +5 -66
- data/lib/coderbits/defaults.rb +0 -7
- data/lib/coderbits/glue.rb +0 -116
- data/lib/coderbits/object.rb +0 -5
- data/spec/coderbits/glue_spec.rb +0 -50
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c31dfc8d60d7f5ad255e2f6826b0d50c202b09ac
|
4
|
+
data.tar.gz: c8b8b1a85c77bb29b57d1de768616edc724ade41
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d957113f9ee4d8d9f6ffddfff4aafe0d77ba55ce05b6f739327b9f3d9ca3c1ae3cb2cf324a89f8f4697127e0d6eae116ddcf5ac6472220f47134623d8daa849e
|
7
|
+
data.tar.gz: eac8e94bbf1632fb8a7657ab9c0feb69562c2918e3dfa6ccaef69b5aa4a5d71c85570240f67b118b1875a353b2c3368a2f968628da5b6d943de045b907edfdac
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
### [1.0.0]
|
2
|
+
|
3
|
+
* Remove .glue method
|
4
|
+
* Remove unused dependencies
|
5
|
+
* Enhance specs
|
6
|
+
|
7
|
+
### [0.1.0](https://github.com/artemeff/coderbits/commit/3dd43979b91e1d91aa1400a50b25acccdcfdf054)
|
8
|
+
|
9
|
+
* Add html code generator
|
10
|
+
* Refactoring
|
11
|
+
|
1
12
|
### 0.0.3
|
2
13
|
|
3
14
|
* :save_to fix
|
data/README.md
CHANGED
@@ -16,34 +16,16 @@ Simple wrapper for the Coderbits API
|
|
16
16
|
```ruby
|
17
17
|
require 'coderbits'
|
18
18
|
|
19
|
-
# Create sprite image with css code for earned badges
|
20
|
-
Coderbits.glue('artemeff').run!
|
21
|
-
|
22
|
-
# With options
|
23
|
-
Coderbits.glue('artemeff', glue_options).run!
|
24
|
-
|
25
19
|
# Get user info
|
26
20
|
Codebits.get 'artemeff'
|
27
|
-
```
|
28
21
|
|
29
|
-
|
22
|
+
# Or you may initialize connection
|
23
|
+
client = Coderbits.new
|
30
24
|
|
31
|
-
|
32
|
-
|
33
|
-
```ruby
|
34
|
-
:badge_size # badges size for download
|
35
|
-
:save_to # path for files
|
36
|
-
:layout # horizontal, vertical or packed
|
37
|
-
:style # css, scss or sass
|
38
|
-
:library # rmagick or chunkypng
|
39
|
-
:selector # selector
|
40
|
-
:padding # add padding to each sprite
|
41
|
-
:margin # add margin to each sprite
|
42
|
-
:nocomments # suppress generation of comments in output stylesheet
|
43
|
-
:output_image # output location for generated image
|
44
|
-
:output_style # output location for generated stylesheet
|
25
|
+
# And get data by this way
|
26
|
+
client.get 'artemeff'
|
45
27
|
```
|
46
28
|
|
47
29
|
### Copyright
|
48
30
|
|
49
|
-
Copyright (c) 2012 Yuri Artemev. See LICENSE.
|
31
|
+
Copyright (c) 2012 Yuri Artemev. See [LICENSE](https://github.com/artemeff/coderbits/blob/master/LICENSE) for further details.
|
data/coderbits.gemspec
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
4
|
require "coderbits/version"
|
4
5
|
|
5
6
|
Gem::Specification.new do |s|
|
6
7
|
s.name = "coderbits"
|
7
|
-
s.version =
|
8
|
+
s.version = Coderbits::VERSION
|
8
9
|
s.authors = ["Yuri Artemev"]
|
9
10
|
s.email = ["i@artemeff.com"]
|
10
|
-
s.homepage = "
|
11
|
+
s.homepage = "https://github.com/artemeff/coderbits"
|
11
12
|
s.description = %q{Simple wrapper for the Coderbits API}
|
12
13
|
s.summary = %q{Coderbits API wrapper}
|
13
14
|
s.files = %w(CHANGELOG.md README.md LICENSE Rakefile coderbits.gemspec)
|
@@ -17,11 +18,7 @@ Gem::Specification.new do |s|
|
|
17
18
|
s.require_paths = ['lib']
|
18
19
|
s.test_files = Dir.glob("spec/**/*")
|
19
20
|
|
20
|
-
s.add_development_dependency 'bundler', '~> 1.0'
|
21
21
|
s.add_dependency 'faraday', '~> 0.8'
|
22
|
-
s.add_dependency '
|
23
|
-
s.add_dependency 'multi_json', '~> 1.7'
|
24
|
-
s.add_dependency 'sprite-factory', '~> 1.5'
|
25
|
-
s.add_dependency 'chunky_png', '~> 1.2'
|
22
|
+
s.add_dependency 'multi_json', '~> 1.3'
|
26
23
|
s.add_dependency 'hashie', '~> 2.0'
|
27
24
|
end
|
data/lib/coderbits.rb
CHANGED
@@ -1,26 +1,23 @@
|
|
1
|
-
require 'sprite_factory'
|
2
1
|
require 'multi_json'
|
3
2
|
require 'hashie'
|
4
3
|
require 'faraday'
|
5
|
-
require 'faraday_middleware'
|
6
4
|
|
7
|
-
require 'coderbits/defaults'
|
8
5
|
require 'coderbits/client'
|
9
|
-
require 'coderbits/
|
10
|
-
require 'coderbits/glue'
|
6
|
+
require 'coderbits/version'
|
11
7
|
|
12
8
|
module Coderbits
|
13
9
|
class << self
|
14
|
-
#
|
15
|
-
def new
|
16
|
-
Coderbits::Client.new
|
10
|
+
# alias for Coderbits::Client.new
|
11
|
+
def new options = {}
|
12
|
+
Coderbits::Client.new options
|
17
13
|
end
|
18
|
-
|
19
|
-
alias_method :get, :new
|
20
14
|
|
21
|
-
#
|
22
|
-
def
|
23
|
-
Coderbits::
|
15
|
+
# alias for Coderbits::Client.new.get
|
16
|
+
def get username, options = {}
|
17
|
+
Coderbits::Client.new.get username, options
|
24
18
|
end
|
25
19
|
end
|
20
|
+
|
21
|
+
# attach Hashie to data
|
22
|
+
class Object < Hashie::Mash; end
|
26
23
|
end
|
data/lib/coderbits/client.rb
CHANGED
@@ -1,26 +1,30 @@
|
|
1
1
|
module Coderbits
|
2
2
|
class Client
|
3
|
-
#
|
4
|
-
|
3
|
+
# default faraday options
|
4
|
+
BASE_URL = "https://coderbits.com/"
|
5
|
+
HEADERS = { accept: 'application/json' }
|
6
|
+
SSL = { verify: false }
|
5
7
|
|
6
|
-
#
|
8
|
+
# faraday instance only for reading
|
7
9
|
attr_reader :connection
|
8
10
|
|
9
|
-
#
|
10
|
-
# establish faraday connection
|
11
|
+
# create instance of faraday
|
11
12
|
def initialize options = {}
|
12
|
-
options[:
|
13
|
-
options[:headers] ||= Coderbits::Defaults::HEADERS
|
14
|
-
options[:ssl] ||= Coderbits::Defaults::SSL
|
13
|
+
options = safe(options, [:headers, :ssl])
|
15
14
|
|
16
|
-
|
15
|
+
params = {
|
16
|
+
url: BASE_URL,
|
17
|
+
headers: options[:headers] || HEADERS.merge({'User-Agent' => "Ruby Coderbits #{Coderbits::VERSION}"}),
|
18
|
+
ssl: options[:ssl] || SSL
|
19
|
+
}
|
20
|
+
|
21
|
+
@connection = Faraday.new params
|
17
22
|
end
|
18
23
|
|
19
|
-
# Coderbits::Client.new.get username: 'artemeff'
|
20
24
|
# gets user data
|
21
25
|
def get username, options = {}
|
22
26
|
begin
|
23
|
-
response = @connection.get "/#{username}.json", safe(options)
|
27
|
+
response = @connection.get "/#{username}.json", safe(options, [:account, :callback])
|
24
28
|
|
25
29
|
status = response.status
|
26
30
|
error = false
|
@@ -48,10 +52,9 @@ module Coderbits
|
|
48
52
|
|
49
53
|
private
|
50
54
|
|
51
|
-
|
52
|
-
|
53
|
-
options.select { |k, v| OPTIONS.include? k }
|
55
|
+
def safe options, allowed
|
56
|
+
options.select { |k, v| allowed.include? k }
|
54
57
|
end
|
55
58
|
|
56
59
|
end
|
57
|
-
end
|
60
|
+
end
|
data/lib/coderbits/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
|
2
|
-
VERSION = "
|
3
|
-
end
|
1
|
+
module Coderbits
|
2
|
+
VERSION = "1.0.0"
|
3
|
+
end
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe Coderbits::Client do
|
4
4
|
|
5
5
|
describe ".new" do
|
6
|
-
it "
|
6
|
+
it "setup faraday instance" do
|
7
7
|
expect(Coderbits::Client.new.connection).to be_a Faraday::Connection
|
8
8
|
end
|
9
9
|
end
|
@@ -11,75 +11,84 @@ describe Coderbits::Client do
|
|
11
11
|
describe ".get" do
|
12
12
|
|
13
13
|
describe "without options" do
|
14
|
-
|
15
|
-
@data = Coderbits::Client.new.get 'artemeff'
|
16
|
-
end
|
14
|
+
let(:data) { Coderbits::Client.new.get 'artemeff' }
|
17
15
|
|
18
|
-
it "
|
19
|
-
expect(
|
16
|
+
it "is a Coderbits::Object instance" do
|
17
|
+
expect(data).to be_a Coderbits::Object
|
20
18
|
end
|
21
19
|
|
22
|
-
it "
|
23
|
-
|
20
|
+
it "return status 200" do
|
21
|
+
data.status.should be 200
|
24
22
|
end
|
25
23
|
|
26
|
-
it "
|
27
|
-
|
24
|
+
it "runs without errors" do
|
25
|
+
data.error.should be false
|
28
26
|
end
|
29
27
|
|
30
|
-
it "
|
31
|
-
|
28
|
+
it "have username" do
|
29
|
+
data.should include :username
|
32
30
|
end
|
33
31
|
end
|
34
32
|
|
35
33
|
describe "with options" do
|
36
|
-
|
37
|
-
data
|
38
|
-
|
39
|
-
data.should be_an_instance_of String
|
40
|
-
end
|
34
|
+
describe "callback" do
|
35
|
+
let(:data) { Coderbits::Client.new.get 'artemeff', callback: 'callbackFunction' }
|
41
36
|
|
42
|
-
|
43
|
-
|
37
|
+
it "return string" do
|
38
|
+
expect(data).to be_a String
|
39
|
+
end
|
44
40
|
|
45
|
-
|
41
|
+
it "have callback function" do
|
42
|
+
data.should include("callbackFunction")
|
43
|
+
end
|
46
44
|
end
|
45
|
+
|
46
|
+
#describe "account" do
|
47
|
+
# let(:data) { Coderbits::Client.new.get 'artemeff', account: 'github' }
|
48
|
+
#
|
49
|
+
# it do
|
50
|
+
# pending "i don't know what is that, but i should wrote this"
|
51
|
+
# end
|
52
|
+
#end
|
47
53
|
end
|
48
54
|
|
49
|
-
describe "with
|
50
|
-
|
51
|
-
@data = Coderbits::Client.new.get "prettyuserthatdoesntexist#{rand(10)}"
|
52
|
-
end
|
55
|
+
describe "with user that does not exist" do
|
56
|
+
let(:data) { Coderbits::Client.new.get "i_am_not_in_danger_skyler_i_am_the_danger" }
|
53
57
|
|
54
|
-
it "
|
55
|
-
|
58
|
+
it "return status 200" do
|
59
|
+
data.status.should be 200
|
56
60
|
end
|
57
61
|
|
58
|
-
it "
|
59
|
-
|
62
|
+
it "have errors" do
|
63
|
+
data.error.should match "User not found"
|
60
64
|
end
|
61
65
|
end
|
62
66
|
end
|
63
67
|
|
64
68
|
describe "#safe" do
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
69
|
+
let(:client) { Coderbits::Client.new }
|
70
|
+
let(:allowed) { [:foo, :bar] }
|
71
|
+
let(:options) do
|
72
|
+
{
|
73
|
+
foo: 1,
|
74
|
+
bar: 2,
|
75
|
+
baz: 3
|
72
76
|
}
|
73
77
|
end
|
74
78
|
|
75
|
-
it "
|
76
|
-
|
79
|
+
it "have bad option" do
|
80
|
+
options.should include :baz
|
81
|
+
end
|
82
|
+
|
83
|
+
it "delete bad option" do
|
84
|
+
client.send(:safe, options, allowed).should_not include :baz
|
77
85
|
end
|
78
86
|
|
79
|
-
it "
|
80
|
-
|
87
|
+
it "have allowed options after safing" do
|
88
|
+
params = client.send(:safe, options, allowed)
|
81
89
|
|
82
|
-
|
90
|
+
params.should include :foo
|
91
|
+
params.should include :bar
|
83
92
|
end
|
84
93
|
end
|
85
94
|
|
data/spec/coderbits_spec.rb
CHANGED
@@ -1,17 +1,15 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Coderbits do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
expect(Coderbits.new('artemeff')).to be_a Hash
|
4
|
+
describe ".new" do
|
5
|
+
it "is a Coderbits::Client.new" do
|
6
|
+
expect(Coderbits.new).to be_a Coderbits::Client
|
8
7
|
end
|
9
8
|
end
|
10
9
|
|
11
|
-
describe ".
|
12
|
-
it "is a Coderbits::
|
13
|
-
expect(Coderbits.
|
10
|
+
describe ".get" do
|
11
|
+
it "is a Coderbits::Client.new.get" do
|
12
|
+
expect(Coderbits.get('artemeff')).to be_a Hash
|
14
13
|
end
|
15
14
|
end
|
16
|
-
|
17
15
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: coderbits
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yuri Artemev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-06-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: bundler
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ~>
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.0'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ~>
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '1.0'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: faraday
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -38,62 +24,20 @@ dependencies:
|
|
38
24
|
- - ~>
|
39
25
|
- !ruby/object:Gem::Version
|
40
26
|
version: '0.8'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: faraday_middleware
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ~>
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0.8'
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ~>
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0.8'
|
55
27
|
- !ruby/object:Gem::Dependency
|
56
28
|
name: multi_json
|
57
29
|
requirement: !ruby/object:Gem::Requirement
|
58
30
|
requirements:
|
59
31
|
- - ~>
|
60
32
|
- !ruby/object:Gem::Version
|
61
|
-
version: '1.
|
62
|
-
type: :runtime
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ~>
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '1.7'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: sprite-factory
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ~>
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '1.5'
|
76
|
-
type: :runtime
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - ~>
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '1.5'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: chunky_png
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ~>
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '1.2'
|
33
|
+
version: '1.3'
|
90
34
|
type: :runtime
|
91
35
|
prerelease: false
|
92
36
|
version_requirements: !ruby/object:Gem::Requirement
|
93
37
|
requirements:
|
94
38
|
- - ~>
|
95
39
|
- !ruby/object:Gem::Version
|
96
|
-
version: '1.
|
40
|
+
version: '1.3'
|
97
41
|
- !ruby/object:Gem::Dependency
|
98
42
|
name: hashie
|
99
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -121,16 +65,12 @@ files:
|
|
121
65
|
- Rakefile
|
122
66
|
- coderbits.gemspec
|
123
67
|
- lib/coderbits/client.rb
|
124
|
-
- lib/coderbits/defaults.rb
|
125
|
-
- lib/coderbits/glue.rb
|
126
|
-
- lib/coderbits/object.rb
|
127
68
|
- lib/coderbits/version.rb
|
128
69
|
- lib/coderbits.rb
|
129
70
|
- spec/coderbits/client_spec.rb
|
130
|
-
- spec/coderbits/glue_spec.rb
|
131
71
|
- spec/coderbits_spec.rb
|
132
72
|
- spec/spec_helper.rb
|
133
|
-
homepage:
|
73
|
+
homepage: https://github.com/artemeff/coderbits
|
134
74
|
licenses:
|
135
75
|
- MIT
|
136
76
|
metadata: {}
|
@@ -156,7 +96,6 @@ specification_version: 4
|
|
156
96
|
summary: Coderbits API wrapper
|
157
97
|
test_files:
|
158
98
|
- spec/coderbits/client_spec.rb
|
159
|
-
- spec/coderbits/glue_spec.rb
|
160
99
|
- spec/coderbits_spec.rb
|
161
100
|
- spec/spec_helper.rb
|
162
101
|
has_rdoc:
|
data/lib/coderbits/defaults.rb
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
module Coderbits
|
2
|
-
module Defaults
|
3
|
-
BASE_URL = 'https://coderbits.com' unless defined? Coderbits::Defaults::BASE_URL
|
4
|
-
HEADERS = { accept: 'application/json' } unless defined? Coderbits::Defaults::HEADERS
|
5
|
-
SSL = { verify: false } unless defined? Coderbits::Defaults::SSL
|
6
|
-
end
|
7
|
-
end
|
data/lib/coderbits/glue.rb
DELETED
@@ -1,116 +0,0 @@
|
|
1
|
-
module Coderbits
|
2
|
-
class Glue
|
3
|
-
# valid options
|
4
|
-
OPTIONS = [
|
5
|
-
:badge_size, :save_to, :layout, :style, :library, :selector,
|
6
|
-
:padding, :margin, :nocomments, :output_image, :output_style,
|
7
|
-
:width, :height
|
8
|
-
]
|
9
|
-
|
10
|
-
def initialize username, options = {}
|
11
|
-
safe options
|
12
|
-
@username = username
|
13
|
-
end
|
14
|
-
|
15
|
-
# launching all rockets
|
16
|
-
def run!
|
17
|
-
imgs = download_images
|
18
|
-
css = merge_images
|
19
|
-
html = generate_html imgs
|
20
|
-
|
21
|
-
{
|
22
|
-
images: imgs,
|
23
|
-
css: css,
|
24
|
-
html: html
|
25
|
-
}
|
26
|
-
end
|
27
|
-
|
28
|
-
def download_images
|
29
|
-
# get user data
|
30
|
-
data = Coderbits::Client.new.get @username
|
31
|
-
|
32
|
-
# collect images
|
33
|
-
images = data.badges.select { |b| b.earned }.map { |b| b.image_link.match(/(.*)\/(.*)/)[2] }.uniq
|
34
|
-
|
35
|
-
# create directories
|
36
|
-
Dir.mkdir @options[:save_to] unless Dir.exists? @options[:save_to]
|
37
|
-
Dir.mkdir "#{@options[:save_to]}/badges" unless Dir.exists? "#{@options[:save_to]}/badges"
|
38
|
-
|
39
|
-
# connection for download images
|
40
|
-
connection = Coderbits::Client.new(headers: { accept: 'image/png' }).connection
|
41
|
-
|
42
|
-
# download images
|
43
|
-
images.each do |img|
|
44
|
-
# specify badge size
|
45
|
-
img = change_size img unless @options[:badge_size] == 64
|
46
|
-
|
47
|
-
# download image
|
48
|
-
begin
|
49
|
-
response = connection.get "/images/badges/#{img}"
|
50
|
-
|
51
|
-
# save to disk
|
52
|
-
if response.headers["content-type"] == "image/png"
|
53
|
-
File.open("#{@options[:save_to]}/badges/#{img.downcase}", 'wb') { |f| f.write response.body }
|
54
|
-
end
|
55
|
-
rescue Exception => e
|
56
|
-
# TODO logging
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
# merge and generate css by SpriteFactory
|
62
|
-
def merge_images
|
63
|
-
SpriteFactory.run! "#{@options[:save_to]}/badges", @options
|
64
|
-
end
|
65
|
-
|
66
|
-
def generate_html images
|
67
|
-
html_tags = []
|
68
|
-
|
69
|
-
images.each do |name|
|
70
|
-
html_tags << "<img src='#{@options[:output_image]}' class='#{@options[:selector][1..-1]}#{name.downcase.gsub(/.png/,'')}'>"
|
71
|
-
end
|
72
|
-
|
73
|
-
html_tags.join "\n"
|
74
|
-
end
|
75
|
-
|
76
|
-
def safe options
|
77
|
-
# select only allowed options
|
78
|
-
options = options.select { |k, v| OPTIONS.include? k }
|
79
|
-
|
80
|
-
dflt = {
|
81
|
-
badge_size: 64, # badges size for download
|
82
|
-
save_to: '.', # path for files
|
83
|
-
|
84
|
-
layout: 'horizontal', # horizontal, vertical or packed
|
85
|
-
style: 'css', # css, scss or sass
|
86
|
-
library: 'chunkypng', # rmagick or chunkypng
|
87
|
-
selector: '.badge-', # selector
|
88
|
-
padding: 0, # add padding to each sprite
|
89
|
-
margin: 0, # add margin to each sprite
|
90
|
-
nocomments: true # suppress generation of comments in output stylesheet
|
91
|
-
}
|
92
|
-
|
93
|
-
if options.has_key? :save_to
|
94
|
-
save_to = options[:save_to]
|
95
|
-
else
|
96
|
-
save_to = dflt[:save_to]
|
97
|
-
end
|
98
|
-
|
99
|
-
dflt[:output_image] = "#{save_to}/badges.png" # output location for generated image
|
100
|
-
dflt[:output_style] = "#{save_to}/badges.css" # output location for generated stylesheet
|
101
|
-
|
102
|
-
@options = dflt.merge options
|
103
|
-
end
|
104
|
-
|
105
|
-
private
|
106
|
-
|
107
|
-
def change_size filename
|
108
|
-
# parse image name
|
109
|
-
params = filename.match /([A-z\-_]+)(\d+).png/
|
110
|
-
|
111
|
-
# custom badge size
|
112
|
-
"#{params[1]}#{@options[:badge_size]}.png"
|
113
|
-
end
|
114
|
-
|
115
|
-
end
|
116
|
-
end
|
data/lib/coderbits/object.rb
DELETED
data/spec/coderbits/glue_spec.rb
DELETED
@@ -1,50 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Coderbits::Glue do
|
4
|
-
|
5
|
-
describe ".new" do
|
6
|
-
before do
|
7
|
-
@glue = Coderbits::Glue.new 'artemeff', save_to: './temp/'
|
8
|
-
end
|
9
|
-
|
10
|
-
it "should have username" do
|
11
|
-
@glue.instance_variable_get(:@username).should have(8).characters
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
describe ".run!" do
|
16
|
-
after do
|
17
|
-
FileUtils.rm_rf './temp/'
|
18
|
-
end
|
19
|
-
|
20
|
-
it "should work" do
|
21
|
-
Coderbits.glue('artemeff', save_to: './temp/').run!
|
22
|
-
end
|
23
|
-
|
24
|
-
it "should work with custom badge size" do
|
25
|
-
Coderbits.glue('artemeff', badge_size: 32, save_to: './temp/').run!
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
describe "#safe" do
|
30
|
-
before do
|
31
|
-
@glue = Coderbits::Glue.new 'artemeff'
|
32
|
-
|
33
|
-
@options = {
|
34
|
-
bad_option: false,
|
35
|
-
save_to: './'
|
36
|
-
}
|
37
|
-
end
|
38
|
-
|
39
|
-
it "should have bad option" do
|
40
|
-
@options.should include :bad_option
|
41
|
-
end
|
42
|
-
|
43
|
-
it "should delete bad options" do
|
44
|
-
safe = @glue.send :safe, @options
|
45
|
-
|
46
|
-
safe.should_not include :bad_option
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
end
|