fontcustom 1.3.3 → 1.3.4
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 +13 -5
- data/.travis.yml +7 -0
- data/CHANGELOG.md +12 -0
- data/README.md +4 -0
- data/fontcustom.gemspec +1 -1
- data/gemfiles/Gemfile.listen_1 +6 -0
- data/lib/fontcustom.rb +4 -0
- data/lib/fontcustom/base.rb +2 -2
- data/lib/fontcustom/cli.rb +16 -0
- data/lib/fontcustom/generator/template.rb +15 -4
- data/lib/fontcustom/options.rb +1 -1
- data/lib/fontcustom/scripts/generate.py +14 -9
- data/lib/fontcustom/templates/_fontcustom.scss +2 -0
- data/lib/fontcustom/templates/fontcustom-preview.html +1 -1
- data/lib/fontcustom/templates/fontcustom.yml +4 -0
- data/lib/fontcustom/version.rb +1 -1
- data/lib/fontcustom/watcher.rb +32 -11
- data/spec/fixtures/shared/templates/custom.css +1 -4
- data/spec/fontcustom/base_spec.rb +9 -9
- data/spec/fontcustom/cli_spec.rb +2 -2
- data/spec/fontcustom/generator/font_spec.rb +13 -13
- data/spec/fontcustom/generator/template_spec.rb +31 -7
- data/spec/fontcustom/manifest_spec.rb +1 -1
- data/spec/fontcustom/options_spec.rb +32 -32
- data/spec/fontcustom/utility_spec.rb +6 -6
- data/spec/fontcustom/watcher_spec.rb +9 -8
- metadata +23 -15
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
MTRkNmEyNmI5ZTFhNjhhMTVmZTdlOTlkYzRiZTRhYWY2OGFkOGNkZg==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
MGUzYTA4ZGNiZjBjN2M1NGJlY2ZkZWQxZDgwZjY3YzNiZjIzZjM3NQ==
|
5
7
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
ZWVjYTY1N2Q4NWRkNzY0ZTFlMzY1ZGFmZTc1ZmNkZGJjZTM1YmYyMjA4NDc1
|
10
|
+
ZjI4MmY0NzJlODRjOWVhNTkxMTc2YTE4NTRmZWM4OWE0N2FiNWM5ZGM5N2E3
|
11
|
+
OWQ2NjlkYTBkMGRhODhmZjljYTMzYzUyZGE2MWVhOGIzOTk0MDg=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
OWY3MTM5OWE1ZWMxMGVkMDFjNTExNGIzMTVjM2VmZjE3NDY3YTZjODhjMTI4
|
14
|
+
ZTQ4NGI0OWZiYWQzMGEwYzg0NTBmZjQ2N2RlYjgxNGIwMzFlY2ZhMzk5ZTNj
|
15
|
+
MTA0OGE2YzFiMWJiMGZlZmEwYzE4MTE1NDhhZjIyMjJiNzMxOGM=
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
## 1.3.4 (10/11/2014)
|
2
|
+
|
3
|
+
* Updates rspec tests to be compatible with rspec v3.1.6
|
4
|
+
* Add additional metrics to make it easier to have different size icon fonts ([#175](https://github.com/FontCustom/fontcustom/pull/175))
|
5
|
+
* Add woff data uri to generated CSS + template helper ([#182](https://github.com/FontCustom/fontcustom/pull/182))
|
6
|
+
* Support listen v1 and v2 ([#191](https://github.com/FontCustom/fontcustom/pull/191))
|
7
|
+
* Add multiple classes to config file ([#174](https://github.com/FontCustom/fontcustom/issues/174))
|
8
|
+
* Don't strip "%" symbol (and other potentially valid characters) from CSS selector ([#173](https://github.com/FontCustom/fontcustom/issues/173))
|
9
|
+
* Fix bug where custom template path appears in output filenames ([#198](https://github.com/FontCustom/fontcustom/pull/198), [#172](https://github.com/FontCustom/fontcustom/issues/172))
|
10
|
+
* SCSS content variables like Font Awesome ([#151](https://github.com/FontCustom/fontcustom/issues/151))
|
11
|
+
* Running compile on a folder containing directories shouldn't throw an error
|
12
|
+
|
1
13
|
## 1.3.3 (2/20/2014)
|
2
14
|
|
3
15
|
* Removes ttfautohint ([#160c](https://github.com/FontCustom/fontcustom/pull/160#issuecomment-34593191))
|
data/README.md
CHANGED
@@ -73,6 +73,10 @@ output:
|
|
73
73
|
```yml
|
74
74
|
font_name: fontcustom # Also sets the default output directory and
|
75
75
|
# the name of generated stock templates
|
76
|
+
font_design_size: 16 # The size of the original glyphs
|
77
|
+
font_em: 512 # Scale font up to this size
|
78
|
+
font_ascent: 448 # Location of font ascent
|
79
|
+
font_descent: 64 # Location of font descent
|
76
80
|
no_hash: false # Don't add asset-busting hashes to font files
|
77
81
|
autowidth: false # Automatically size glyphs based on the width of
|
78
82
|
# their individual vectors
|
data/fontcustom.gemspec
CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |gem|
|
|
20
20
|
|
21
21
|
gem.add_dependency "json", "~>1.4"
|
22
22
|
gem.add_dependency "thor", "~>0.14"
|
23
|
-
gem.add_dependency "listen", "
|
23
|
+
gem.add_dependency "listen", ">=1.0","<3.0"
|
24
24
|
|
25
25
|
gem.add_development_dependency "rake"
|
26
26
|
gem.add_development_dependency "bundler"
|
data/lib/fontcustom.rb
CHANGED
@@ -28,6 +28,10 @@ module Fontcustom
|
|
28
28
|
:config => nil,
|
29
29
|
:templates => %w|css preview|,
|
30
30
|
:font_name => "fontcustom",
|
31
|
+
:font_design_size => 16,
|
32
|
+
:font_em => 512,
|
33
|
+
:font_ascent => 448,
|
34
|
+
:font_descent => 64,
|
31
35
|
:css_selector => ".icon-{{glyph}}",
|
32
36
|
:preprocessor_path => nil,
|
33
37
|
:autowidth => false,
|
data/lib/fontcustom/base.rb
CHANGED
@@ -38,8 +38,8 @@ module Fontcustom
|
|
38
38
|
|
39
39
|
# Calculates a hash of vectors, options, and templates (content and filenames)
|
40
40
|
def checksum
|
41
|
-
files = Dir.glob
|
42
|
-
files += Dir.glob
|
41
|
+
files = Dir.glob(File.join(@options[:input][:vectors], "*.svg")).select { |fn| File.file?(fn) }
|
42
|
+
files += Dir.glob(File.join(@options[:input][:templates], "*")).select { |fn| File.file?(fn) }
|
43
43
|
content = files.map { |file| File.read(file) }.join
|
44
44
|
content << files.join
|
45
45
|
content << @options.flatten(2).join
|
data/lib/fontcustom/cli.rb
CHANGED
@@ -25,6 +25,22 @@ module Fontcustom
|
|
25
25
|
class_option :font_name, :aliases => "-f", :type => :string,
|
26
26
|
:desc => "The font's name. Also determines the file names of generated templates.",
|
27
27
|
:default => DEFAULT_OPTIONS[:font_name]
|
28
|
+
|
29
|
+
class_option :font_design_size, :aliases => '-x', :type => :numeric,
|
30
|
+
:desc => "Size (in pica points) for which this font was designed.",
|
31
|
+
:default => DEFAULT_OPTIONS[:font_design_size]
|
32
|
+
|
33
|
+
class_option :font_em, :aliases => '-m', :type => :numeric,
|
34
|
+
:desc => "The em size of the font. Setting this will scale the entire font to the given size.",
|
35
|
+
:default => DEFAULT_OPTIONS[:font_em]
|
36
|
+
|
37
|
+
class_option :font_ascent, :aliases => '-a', :type => :numeric,
|
38
|
+
:desc => "The font's ascent.",
|
39
|
+
:default => DEFAULT_OPTIONS[:font_ascent]
|
40
|
+
|
41
|
+
class_option :font_descent, :aliases => '-z', :type => :numeric,
|
42
|
+
:desc => "The font's descent.",
|
43
|
+
:default => DEFAULT_OPTIONS[:font_descent]
|
28
44
|
|
29
45
|
class_option :css_selector, :aliases => "-s", :type => :string,
|
30
46
|
:desc => "Format of generated CSS selector. \"{{glyph}}\" is substituted for the glyph name.",
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require "json"
|
2
2
|
require "pathname"
|
3
|
+
require "base64"
|
3
4
|
|
4
5
|
module Fontcustom
|
5
6
|
module Generator
|
@@ -36,7 +37,7 @@ module Fontcustom
|
|
36
37
|
css_path = Pathname.new(@options[:output][:css]).realdirpath
|
37
38
|
preview_path = Pathname.new(@options[:output][:preview]).realdirpath
|
38
39
|
@font_path = File.join fonts_path.relative_path_from(css_path).to_s, name
|
39
|
-
@font_path_alt = if @options[:preprocessor_path].nil?
|
40
|
+
@font_path_alt = if @options[:preprocessor_path].nil?
|
40
41
|
@font_path
|
41
42
|
elsif ! @options[:preprocessor_path] || @options[:preprocessor_path].empty?
|
42
43
|
name
|
@@ -51,9 +52,9 @@ module Fontcustom
|
|
51
52
|
existing = @manifest.get :templates
|
52
53
|
created = []
|
53
54
|
begin
|
54
|
-
@options[:templates].each do |
|
55
|
+
@options[:templates].each do |template_name|
|
55
56
|
begin
|
56
|
-
source = get_source_path(
|
57
|
+
source = get_source_path(template_name)
|
57
58
|
target = get_target_path(source)
|
58
59
|
template source, target, :verbose => false, :force => true
|
59
60
|
end
|
@@ -89,7 +90,7 @@ module Fontcustom
|
|
89
90
|
packaged = %w|fontcustom-preview.html fontcustom.css _fontcustom.scss _fontcustom-rails.scss|
|
90
91
|
|
91
92
|
target = if @options[:output].keys.include? base.to_sym
|
92
|
-
File.join @options[:output][base.to_sym],
|
93
|
+
File.join @options[:output][base.to_sym], base
|
93
94
|
elsif ext && css_exts.include?(ext)
|
94
95
|
File.join @options[:output][:css], base
|
95
96
|
elsif source.match(/fontcustom-preview\.html/)
|
@@ -129,6 +130,7 @@ module Fontcustom
|
|
129
130
|
font-family: "#{font_name}";
|
130
131
|
src: #{url}("#{path}.eot");
|
131
132
|
src: #{url}("#{path}.eot?#iefix") format("embedded-opentype"),
|
133
|
+
#{url}(#{woff_data_uri}),
|
132
134
|
#{url}("#{path}.woff") format("woff"),
|
133
135
|
#{url}("#{path}.ttf") format("truetype"),
|
134
136
|
#{url}("#{path}.svg##{font_name}") format("svg");
|
@@ -144,6 +146,15 @@ module Fontcustom
|
|
144
146
|
}|
|
145
147
|
end
|
146
148
|
|
149
|
+
def woff_data_uri
|
150
|
+
"data:application/x-font-woff;charset=utf-8;base64,#{woff_base64}"
|
151
|
+
end
|
152
|
+
|
153
|
+
def woff_base64
|
154
|
+
woff_path = File.join(@options[:output][:fonts], "#{@font_path_alt}.woff")
|
155
|
+
Base64.encode64(File.read(File.join(woff_path))).gsub("\n", "")
|
156
|
+
end
|
157
|
+
|
147
158
|
def glyph_selectors
|
148
159
|
output = @glyphs.map do |name, value|
|
149
160
|
@options[:css_selector].sub("{{glyph}}", name.to_s) + ":before"
|
data/lib/fontcustom/options.rb
CHANGED
@@ -90,7 +90,7 @@ module Fontcustom
|
|
90
90
|
raise Fontcustom::Error,
|
91
91
|
"CSS selector `#{@options[:css_selector]}` should contain the \"{{glyph}}\" placeholder."
|
92
92
|
end
|
93
|
-
@options[:css_selector] = @options[:css_selector].strip.gsub(/[
|
93
|
+
@options[:css_selector] = @options[:css_selector].strip.gsub(/[^&%=\[\]\.#\{\}""\d\w]/, "-")
|
94
94
|
end
|
95
95
|
|
96
96
|
def set_input_paths
|
@@ -28,20 +28,19 @@ options = manifest['options']
|
|
28
28
|
# Font
|
29
29
|
#
|
30
30
|
|
31
|
+
design_px = options['font_em'] / options['font_design_size']
|
32
|
+
|
31
33
|
font = fontforge.font()
|
32
34
|
font.encoding = 'UnicodeFull'
|
33
|
-
font.design_size =
|
34
|
-
font.em =
|
35
|
-
font.ascent =
|
36
|
-
font.descent =
|
35
|
+
font.design_size = options['font_design_size']
|
36
|
+
font.em = options['font_em']
|
37
|
+
font.ascent = options['font_ascent']
|
38
|
+
font.descent = options['font_descent']
|
37
39
|
font.fontname = options['font_name']
|
38
40
|
font.familyname = options['font_name']
|
39
41
|
font.fullname = options['font_name']
|
40
42
|
if options['autowidth']:
|
41
|
-
font.autoWidth(0, 0,
|
42
|
-
|
43
|
-
# NOTE not referenced anywhere, safe to remove?
|
44
|
-
KERNING = 15
|
43
|
+
font.autoWidth(0, 0, options['font_em'])
|
45
44
|
|
46
45
|
#
|
47
46
|
# Glyphs
|
@@ -73,7 +72,13 @@ def createGlyph( name, source, code ):
|
|
73
72
|
glyph.left_side_bearing = glyph.right_side_bearing = 0
|
74
73
|
glyph.round()
|
75
74
|
else:
|
76
|
-
glyph.width =
|
75
|
+
glyph.width = options['font_em']
|
76
|
+
width = glyph.width - glyph.left_side_bearing - glyph.right_side_bearing
|
77
|
+
aligned_to_pixel_grid = (width % design_px == 0)
|
78
|
+
if (aligned_to_pixel_grid):
|
79
|
+
shift = glyph.left_side_bearing % design_px
|
80
|
+
glyph.left_side_bearing = glyph.left_side_bearing - shift
|
81
|
+
glyph.right_side_bearing = glyph.right_side_bearing + shift
|
77
82
|
|
78
83
|
for glyph, data in manifest['glyphs'].iteritems():
|
79
84
|
name = createGlyph(glyph, data['source'], data['codepoint'])
|
@@ -154,7 +154,7 @@
|
|
154
154
|
selector = @options[:css_selector].sub('{{glyph}}', name.to_s) %>
|
155
155
|
<div class="glyph">
|
156
156
|
<div class="preview-glyphs">
|
157
|
-
<% scale.each do |n| %><span class="step size-<%= n %>"><span class="letters">Pp</span><i id="<%= selector[1..-1] %>" class="<%= selector[1..-1] %>"></i></span><% end %>
|
157
|
+
<% scale.each do |n| %><span class="step size-<%= n %>"><span class="letters">Pp</span><i id="<%= selector[1..-1] %>" class="<%= selector[1..-1].gsub('.', ' ') %>"></i></span><% end %>
|
158
158
|
</div>
|
159
159
|
<div class="preview-scale">
|
160
160
|
<% scale.each do |n| %><span class="step"><%= n %></span><% end %>
|
@@ -5,6 +5,10 @@
|
|
5
5
|
# --------------------------------------------------------------------------- #
|
6
6
|
|
7
7
|
font_name: fontcustom
|
8
|
+
font_design_size: 16
|
9
|
+
font_em: 512
|
10
|
+
font_ascent: 448
|
11
|
+
font_descent: 64
|
8
12
|
css_selector: .icon-{{glyph}}
|
9
13
|
preprocessor_path: ""
|
10
14
|
autowidth: false
|
data/lib/fontcustom/version.rb
CHANGED
data/lib/fontcustom/watcher.rb
CHANGED
@@ -14,16 +14,7 @@ module Fontcustom
|
|
14
14
|
packaged = %w|preview css scss scss-rails|
|
15
15
|
templates.delete_if { |template| packaged.include?(template) }
|
16
16
|
|
17
|
-
|
18
|
-
@listener = Listen.to(@options[:input][:vectors])
|
19
|
-
else
|
20
|
-
@listener = Listen.to(@options[:input][:vectors], @options[:input][:templates])
|
21
|
-
end
|
22
|
-
|
23
|
-
@listener = @listener.relative_paths(true)
|
24
|
-
@listener = @listener.filter(/(#{templates.join("|")}|.+\.svg)$/)
|
25
|
-
@listener = @listener.change(&callback)
|
26
|
-
@listener = @listener.polling_fallback_message(false) if @is_test
|
17
|
+
create_listener(templates)
|
27
18
|
end
|
28
19
|
|
29
20
|
def watch
|
@@ -35,11 +26,32 @@ module Fontcustom
|
|
35
26
|
|
36
27
|
private
|
37
28
|
|
29
|
+
def create_listener(templates)
|
30
|
+
listen_options = {}
|
31
|
+
listen_options[:polling_fallback_message] = false if @is_test
|
32
|
+
|
33
|
+
listen_dirs = [@options[:input][:vectors]]
|
34
|
+
listen_dirs << @options[:input][:templates] unless templates.empty?
|
35
|
+
|
36
|
+
if listen_eq2
|
37
|
+
listen_options[:only] = /(#{templates.join("|")}|.+\.svg)$/
|
38
|
+
@listener = Listen.to(listen_dirs, listen_options, &callback)
|
39
|
+
else
|
40
|
+
listen_options[:filter] = /(#{templates.join("|")}|.+\.svg)$/
|
41
|
+
listen_options[:relative_paths] = true
|
42
|
+
@listener = Listen::Listener.new(listen_dirs, listen_options, &callback)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
38
46
|
def start
|
39
47
|
if @is_test # Non-blocking listener
|
40
48
|
@listener.start
|
41
49
|
else
|
42
|
-
|
50
|
+
if listen_eq2
|
51
|
+
@listener.start.join
|
52
|
+
else
|
53
|
+
@listener.start!
|
54
|
+
end
|
43
55
|
end
|
44
56
|
end
|
45
57
|
|
@@ -65,5 +77,14 @@ module Fontcustom
|
|
65
77
|
def compile
|
66
78
|
@base.compile
|
67
79
|
end
|
80
|
+
|
81
|
+
def listen_eq2
|
82
|
+
begin
|
83
|
+
require 'listen/version'
|
84
|
+
::Listen::VERSION =~ /^2\./
|
85
|
+
rescue LoadError
|
86
|
+
false
|
87
|
+
end
|
88
|
+
end
|
68
89
|
end
|
69
90
|
end
|
@@ -1,31 +1,31 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe Fontcustom::Base do
|
4
|
-
before(:each) { Fontcustom::Manifest.
|
4
|
+
before(:each) { allow(Fontcustom::Manifest).to receive(:write_file) }
|
5
5
|
|
6
6
|
context "#compile" do
|
7
7
|
context "when [:checksum][:current] equals [:checksum][:previous]" do
|
8
8
|
it "should show 'no change' message" do
|
9
|
-
Fontcustom::Base.
|
9
|
+
allow(Fontcustom::Base).to receive(:check_fontforge)
|
10
10
|
options = double("options")
|
11
|
-
options.
|
12
|
-
Fontcustom::Options.
|
11
|
+
allow(options).to receive(:options).and_return({})
|
12
|
+
allow(Fontcustom::Options).to receive(:new).and_return options
|
13
13
|
|
14
14
|
output = capture(:stdout) do
|
15
15
|
base = Fontcustom::Base.new({})
|
16
16
|
manifest = base.instance_variable_get :@manifest
|
17
|
-
manifest.
|
18
|
-
base.
|
17
|
+
expect(manifest).to receive(:get).and_return :previous => "abc"
|
18
|
+
expect(base).to receive(:checksum).and_return "abc"
|
19
19
|
base.compile
|
20
20
|
end
|
21
|
-
output.
|
21
|
+
expect(output).to match(/No changes/)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
26
|
context ".check_fontforge" do
|
27
27
|
it "should raise error if fontforge isn't installed" do
|
28
|
-
Fontcustom::Base.
|
28
|
+
allow_any_instance_of(Fontcustom::Base).to receive(:"`").and_return("")
|
29
29
|
expect { Fontcustom::Base.new(:option => "foo") }.to raise_error Fontcustom::Error, /fontforge/
|
30
30
|
end
|
31
31
|
end
|
@@ -33,7 +33,7 @@ describe Fontcustom::Base do
|
|
33
33
|
context ".checksum" do
|
34
34
|
it "should return hash of all vectors and templates" do
|
35
35
|
pending "SHA2 is different on CI servers. Why?"
|
36
|
-
Fontcustom::Base.
|
36
|
+
allow(Fontcustom::Base).to receive(:check_fontforge)
|
37
37
|
base = Fontcustom::Base.new({})
|
38
38
|
base.instance_variable_set :@options, {
|
39
39
|
:input => {:vectors => fixture("shared/vectors")},
|
data/spec/fontcustom/cli_spec.rb
CHANGED
@@ -7,8 +7,8 @@ describe Fontcustom::CLI do
|
|
7
7
|
live_test do |testdir|
|
8
8
|
Fontcustom::CLI.start ["compile", "vectors", "--quiet"]
|
9
9
|
manifest = File.join testdir, ".fontcustom-manifest.json"
|
10
|
-
Dir.glob(File.join(testdir, "fontcustom", "fontcustom_*\.{ttf,svg,woff,eot}")).length.
|
11
|
-
File.read(manifest).
|
10
|
+
expect(Dir.glob(File.join(testdir, "fontcustom", "fontcustom_*\.{ttf,svg,woff,eot}")).length).to eq(4)
|
11
|
+
expect(File.read(manifest)).to match(/"fonts":.+fontcustom\/fontcustom_.+\.ttf"/m)
|
12
12
|
end
|
13
13
|
end
|
14
14
|
end
|
@@ -2,7 +2,7 @@ require "spec_helper"
|
|
2
2
|
|
3
3
|
describe Fontcustom::Generator::Font do
|
4
4
|
def generator
|
5
|
-
Fontcustom::Manifest.
|
5
|
+
allow_any_instance_of(Fontcustom::Manifest).to receive(:write_file)
|
6
6
|
Fontcustom::Generator::Font.new("")
|
7
7
|
end
|
8
8
|
|
@@ -12,9 +12,9 @@ describe Fontcustom::Generator::Font do
|
|
12
12
|
test_manifest
|
13
13
|
manifest = File.join Dir.pwd, ".fontcustom-manifest.json"
|
14
14
|
gen = Fontcustom::Generator::Font.new manifest
|
15
|
-
gen.
|
15
|
+
allow(gen).to receive(:create_fonts)
|
16
16
|
gen.generate
|
17
|
-
File.read(manifest).
|
17
|
+
expect(File.read(manifest)).to match(/"glyphs":.+"C":/m)
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
@@ -23,8 +23,8 @@ describe Fontcustom::Generator::Font do
|
|
23
23
|
test_manifest
|
24
24
|
manifest = File.join Dir.pwd, ".fontcustom-manifest.json"
|
25
25
|
Fontcustom::Generator::Font.new(manifest).generate
|
26
|
-
Dir.glob(File.join(testdir, "fontcustom", "fontcustom_*\.{ttf,svg,woff,eot}")).length.
|
27
|
-
File.read(manifest).
|
26
|
+
expect(Dir.glob(File.join(testdir, "fontcustom", "fontcustom_*\.{ttf,svg,woff,eot}")).length).to eq(4)
|
27
|
+
expect(File.read(manifest)).to match(/"fonts":.*fontcustom\/fontcustom_.+\.ttf"/m)
|
28
28
|
end
|
29
29
|
end
|
30
30
|
end
|
@@ -37,8 +37,8 @@ describe Fontcustom::Generator::Font do
|
|
37
37
|
:quiet => true
|
38
38
|
}
|
39
39
|
gen.instance_variable_set :@options, options
|
40
|
-
gen.
|
41
|
-
gen.
|
40
|
+
expect(gen).to receive(:empty_directory).with("path/fonts", :verbose => false)
|
41
|
+
expect(gen).to receive(:empty_directory).with("path/vectors", :verbose => false)
|
42
42
|
gen.send :create_output_dirs
|
43
43
|
end
|
44
44
|
end
|
@@ -51,9 +51,9 @@ describe Fontcustom::Generator::Font do
|
|
51
51
|
|
52
52
|
gen.send :set_glyph_info
|
53
53
|
data = manifest.instance_variable_get(:@data)
|
54
|
-
data[:glyphs][:C].
|
55
|
-
data[:glyphs][:D].
|
56
|
-
data[:glyphs][:"a_R3ally-eXotic-f1Le-Name"].
|
54
|
+
expect(data[:glyphs][:C]).to include(:codepoint => 61696)
|
55
|
+
expect(data[:glyphs][:D]).to include(:codepoint => 61697)
|
56
|
+
expect(data[:glyphs][:"a_R3ally-eXotic-f1Le-Name"]).to include(:codepoint => 61698)
|
57
57
|
end
|
58
58
|
|
59
59
|
it "should not change codepoints of existing glyphs" do
|
@@ -64,9 +64,9 @@ describe Fontcustom::Generator::Font do
|
|
64
64
|
|
65
65
|
gen.send :set_glyph_info
|
66
66
|
data = manifest.instance_variable_get(:@data)
|
67
|
-
data[:glyphs][:C].
|
68
|
-
data[:glyphs][:D].
|
69
|
-
data[:glyphs][:"a_R3ally-eXotic-f1Le-Name"].
|
67
|
+
expect(data[:glyphs][:C]).to include(:codepoint => 61699)
|
68
|
+
expect(data[:glyphs][:D]).to include(:codepoint => 61700)
|
69
|
+
expect(data[:glyphs][:"a_R3ally-eXotic-f1Le-Name"]).to include(:codepoint => 61701)
|
70
70
|
end
|
71
71
|
end
|
72
72
|
end
|
@@ -15,7 +15,7 @@ describe Fontcustom::Generator::Template do
|
|
15
15
|
Fontcustom::Generator::Template.new(manifest).generate
|
16
16
|
|
17
17
|
content = File.read manifest
|
18
|
-
content.
|
18
|
+
expect(content).to match(/fontcustom\/fontcustom-preview.html/)
|
19
19
|
end
|
20
20
|
end
|
21
21
|
end
|
@@ -27,9 +27,9 @@ describe Fontcustom::Generator::Template do
|
|
27
27
|
options[:output] = {:fonts => fixture("sandbox/test/fonts"), :css => fixture("sandbox/test/css"), :preview => fixture("sandbox/test")}
|
28
28
|
|
29
29
|
gen.send :set_relative_paths
|
30
|
-
gen.instance_variable_get(:@font_path).
|
31
|
-
gen.instance_variable_get(:@font_path_alt).
|
32
|
-
gen.instance_variable_get(:@font_path_preview).
|
30
|
+
expect(gen.instance_variable_get(:@font_path)).to match("../fonts")
|
31
|
+
expect(gen.instance_variable_get(:@font_path_alt)).to match("../fonts")
|
32
|
+
expect(gen.instance_variable_get(:@font_path_preview)).to match(".")
|
33
33
|
end
|
34
34
|
|
35
35
|
it "should assign @font_path_alt if :preprocessor_path is set" do
|
@@ -39,7 +39,7 @@ describe Fontcustom::Generator::Template do
|
|
39
39
|
options[:output] = {:fonts => fixture("sandbox/test/fonts"), :css => fixture("sandbox/test/css"), :preview => fixture("sandbox/test")}
|
40
40
|
|
41
41
|
gen.send :set_relative_paths
|
42
|
-
gen.instance_variable_get(:@font_path_alt).
|
42
|
+
expect(gen.instance_variable_get(:@font_path_alt)).to match("fonts/fontcustom")
|
43
43
|
end
|
44
44
|
|
45
45
|
it "should assign @font_path_alt as bare font name if :preprocessor_path is false" do
|
@@ -49,7 +49,7 @@ describe Fontcustom::Generator::Template do
|
|
49
49
|
options[:output] = {:fonts => fixture("sandbox/test/fonts"), :css => fixture("sandbox/test/css"), :preview => fixture("sandbox/test")}
|
50
50
|
|
51
51
|
gen.send :set_relative_paths
|
52
|
-
gen.instance_variable_get(:@font_path_alt).
|
52
|
+
expect(gen.instance_variable_get(:@font_path_alt)).to_not match("../fonts")
|
53
53
|
end
|
54
54
|
|
55
55
|
it "should assign '.' when paths are the same" do
|
@@ -58,7 +58,31 @@ describe Fontcustom::Generator::Template do
|
|
58
58
|
options[:output] = {:fonts => fixture("sandbox/test/fonts"), :css => fixture("sandbox/test/fonts"), :preview => fixture("sandbox/test/fonts")}
|
59
59
|
|
60
60
|
gen.send :set_relative_paths
|
61
|
-
gen.instance_variable_get(:@font_path).
|
61
|
+
expect(gen.instance_variable_get(:@font_path)).to match("./")
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
context ".create_files" do
|
66
|
+
it "should not include the template path in custom output file paths" do
|
67
|
+
gen = Fontcustom::Generator::Template.new fixture("generators/.fontcustom-manifest.json")
|
68
|
+
|
69
|
+
# Set options to specify a custom CSS template with a custom output location.
|
70
|
+
options = gen.instance_variable_get :@options
|
71
|
+
options[:input][:templates] = fixture("shared/templates")
|
72
|
+
options[:templates] = ['custom.css']
|
73
|
+
options[:output][:'custom.css'] = fixture("sandbox/test")
|
74
|
+
|
75
|
+
# Don't update the manifest based on these options.
|
76
|
+
manifest = gen.instance_variable_get :@manifest
|
77
|
+
expect(manifest).to receive(:set)
|
78
|
+
|
79
|
+
# Confirm that the output file doesn't include the template path.
|
80
|
+
expect(gen).to receive(:template).once do |source, target|
|
81
|
+
expect(source).to match("shared/templates")
|
82
|
+
expect(target).to_not match("shared/templates")
|
83
|
+
end
|
84
|
+
|
85
|
+
gen.send :create_files
|
62
86
|
end
|
63
87
|
end
|
64
88
|
end
|
@@ -10,7 +10,7 @@ describe Fontcustom::Manifest do
|
|
10
10
|
Fontcustom::Manifest.new manifest, options
|
11
11
|
end
|
12
12
|
content = File.read File.join(testdir, ".fontcustom-manifest.json")
|
13
|
-
content.
|
13
|
+
expect(content).to match(/"options":.+"input":/m)
|
14
14
|
end
|
15
15
|
end
|
16
16
|
end
|
@@ -8,8 +8,8 @@ describe Fontcustom::Options do
|
|
8
8
|
end
|
9
9
|
|
10
10
|
before(:each) do
|
11
|
-
Fontcustom::Options.
|
12
|
-
Fontcustom::Options.
|
11
|
+
allow_any_instance_of(Fontcustom::Options).to receive(:say_message)
|
12
|
+
allow_any_instance_of(Fontcustom::Options).to receive(:parse_options)
|
13
13
|
end
|
14
14
|
|
15
15
|
context ".overwrite_examples" do
|
@@ -18,7 +18,7 @@ describe Fontcustom::Options do
|
|
18
18
|
o.send :overwrite_examples
|
19
19
|
cli = o.instance_variable_get(:@cli_options)
|
20
20
|
Fontcustom::EXAMPLE_OPTIONS.keys.each do |key|
|
21
|
-
cli[key].
|
21
|
+
expect(cli[key]).to eq(Fontcustom::DEFAULT_OPTIONS[key])
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
@@ -28,13 +28,13 @@ describe Fontcustom::Options do
|
|
28
28
|
it "should use options[:config] if it's a file" do
|
29
29
|
o = options :config => "options/any-file-name.yml"
|
30
30
|
o.send :set_config_path
|
31
|
-
o.instance_variable_get(:@cli_options)[:config].
|
31
|
+
expect(o.instance_variable_get(:@cli_options)[:config]).to eq("options/any-file-name.yml")
|
32
32
|
end
|
33
33
|
|
34
34
|
it "should search for fontcustom.yml if options[:config] is a dir" do
|
35
35
|
o = options :config => "options/config-is-in-dir"
|
36
36
|
o.send :set_config_path
|
37
|
-
o.instance_variable_get(:@cli_options)[:config].
|
37
|
+
expect(o.instance_variable_get(:@cli_options)[:config]).to eq("options/config-is-in-dir/fontcustom.yml")
|
38
38
|
end
|
39
39
|
|
40
40
|
it "should raise error if :config doesn't exist" do
|
@@ -48,7 +48,7 @@ describe Fontcustom::Options do
|
|
48
48
|
FileUtils.cd fixture("options") do
|
49
49
|
o = options
|
50
50
|
o.send :set_config_path
|
51
|
-
o.instance_variable_get(:@cli_options)[:config].
|
51
|
+
expect(o.instance_variable_get(:@cli_options)[:config]).to eq("fontcustom.yml")
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
@@ -56,14 +56,14 @@ describe Fontcustom::Options do
|
|
56
56
|
FileUtils.cd fixture("options/rails-like") do
|
57
57
|
o = options
|
58
58
|
o.send :set_config_path
|
59
|
-
o.instance_variable_get(:@cli_options)[:config].
|
59
|
+
expect(o.instance_variable_get(:@cli_options)[:config]).to eq("config/fontcustom.yml")
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
63
63
|
it "should be false if nothing is found" do
|
64
64
|
o = options :manifest => "options/no-config-here/.fontcustom-manifest.json"
|
65
65
|
o.send :set_config_path
|
66
|
-
o.instance_variable_get(:@cli_options)[:config].
|
66
|
+
expect(o.instance_variable_get(:@cli_options)[:config]).to eq(false)
|
67
67
|
end
|
68
68
|
end
|
69
69
|
end
|
@@ -72,7 +72,7 @@ describe Fontcustom::Options do
|
|
72
72
|
it "should warn if fontcustom.yml is blank" do
|
73
73
|
o = options
|
74
74
|
o.instance_variable_set :@cli_options, {:config => fixture("options/fontcustom-empty.yml")}
|
75
|
-
o.
|
75
|
+
expect(o).to receive(:say_message).with :warn, /was empty/
|
76
76
|
o.send :load_config
|
77
77
|
end
|
78
78
|
|
@@ -86,7 +86,7 @@ describe Fontcustom::Options do
|
|
86
86
|
o = options
|
87
87
|
o.instance_variable_set :@cli_options, {:config => false}
|
88
88
|
o.send :load_config
|
89
|
-
o.instance_variable_get(:@config_options).
|
89
|
+
expect(o.instance_variable_get(:@config_options)).to eq({})
|
90
90
|
end
|
91
91
|
|
92
92
|
context "when :debug is true" do
|
@@ -96,7 +96,7 @@ describe Fontcustom::Options do
|
|
96
96
|
:config => fixture("options/any-file-name.yml"),
|
97
97
|
:debug => true
|
98
98
|
}
|
99
|
-
o.
|
99
|
+
expect(o).to receive(:say_message).with :debug, /Using settings/
|
100
100
|
o.send :load_config
|
101
101
|
end
|
102
102
|
end
|
@@ -107,7 +107,7 @@ describe Fontcustom::Options do
|
|
107
107
|
o = options
|
108
108
|
o.instance_variable_set :@config_options, { :input => "config" }
|
109
109
|
o.send :merge_options
|
110
|
-
o.options[:input].
|
110
|
+
expect(o.options[:input]).to eq("config")
|
111
111
|
end
|
112
112
|
|
113
113
|
it "should overwrite config file and defaults with CLI options" do
|
@@ -115,8 +115,8 @@ describe Fontcustom::Options do
|
|
115
115
|
o.instance_variable_set :@config_options, { :input => "config", :output => "output" }
|
116
116
|
o.instance_variable_set :@cli_options, { :input => "cli" }
|
117
117
|
o.send :merge_options
|
118
|
-
o.options[:input].
|
119
|
-
o.options[:output].
|
118
|
+
expect(o.options[:input]).to eq("cli")
|
119
|
+
expect(o.options[:output]).to eq("output")
|
120
120
|
end
|
121
121
|
end
|
122
122
|
|
@@ -125,7 +125,7 @@ describe Fontcustom::Options do
|
|
125
125
|
o = options
|
126
126
|
o.instance_variable_set :@options, { :font_name => " A_stR4nG3 nAm3 Ø& " }
|
127
127
|
o.send :clean_font_name
|
128
|
-
o.options[:font_name].
|
128
|
+
expect(o.options[:font_name]).to eq("A_stR4nG3--nAm3---")
|
129
129
|
end
|
130
130
|
end
|
131
131
|
|
@@ -144,7 +144,7 @@ describe Fontcustom::Options do
|
|
144
144
|
o = options
|
145
145
|
o.instance_variable_set :@options, { :input => { :vectors => "vectors" } }
|
146
146
|
o.send :set_input_paths
|
147
|
-
o.options[:input][:templates].
|
147
|
+
expect(o.options[:input][:templates]).to eq("vectors")
|
148
148
|
end
|
149
149
|
end
|
150
150
|
|
@@ -153,7 +153,7 @@ describe Fontcustom::Options do
|
|
153
153
|
o = options
|
154
154
|
o.instance_variable_set :@options, { :input => { :vectors => "vectors", :templates => "templates" } }
|
155
155
|
o.send :set_input_paths
|
156
|
-
o.options[:input][:templates].
|
156
|
+
expect(o.options[:input][:templates]).to eq("templates")
|
157
157
|
end
|
158
158
|
end
|
159
159
|
|
@@ -183,8 +183,8 @@ describe Fontcustom::Options do
|
|
183
183
|
o = options
|
184
184
|
o.instance_variable_set :@options, { :input => "vectors" }
|
185
185
|
o.send :set_input_paths
|
186
|
-
o.options[:input].
|
187
|
-
o.options[:input].
|
186
|
+
expect(o.options[:input]).to have_key(:vectors)
|
187
|
+
expect(o.options[:input]).to have_key(:templates)
|
188
188
|
end
|
189
189
|
end
|
190
190
|
|
@@ -193,7 +193,7 @@ describe Fontcustom::Options do
|
|
193
193
|
o = options
|
194
194
|
o.instance_variable_set :@options, { :input => "vectors" }
|
195
195
|
o.send :set_input_paths
|
196
|
-
o.options[:input][:templates].
|
196
|
+
expect(o.options[:input][:templates]).to eq("vectors")
|
197
197
|
end
|
198
198
|
end
|
199
199
|
|
@@ -219,7 +219,7 @@ describe Fontcustom::Options do
|
|
219
219
|
:debug => true,
|
220
220
|
:font_name => "Test-Font"
|
221
221
|
}
|
222
|
-
o.
|
222
|
+
expect(o).to receive(:say_message).with :debug, /Test-Font/
|
223
223
|
o.send :set_output_paths
|
224
224
|
end
|
225
225
|
end
|
@@ -230,8 +230,8 @@ describe Fontcustom::Options do
|
|
230
230
|
o = options
|
231
231
|
o.instance_variable_set :@options, { :output => { :fonts => "output/fonts" } }
|
232
232
|
o.send :set_output_paths
|
233
|
-
o.options[:output][:css].
|
234
|
-
o.options[:output][:preview].
|
233
|
+
expect(o.options[:output][:css]).to eq("output/fonts")
|
234
|
+
expect(o.options[:output][:preview]).to eq("output/fonts")
|
235
235
|
end
|
236
236
|
|
237
237
|
it "should preserve :css and :preview if they do exist" do
|
@@ -244,8 +244,8 @@ describe Fontcustom::Options do
|
|
244
244
|
}
|
245
245
|
}
|
246
246
|
o.send :set_output_paths
|
247
|
-
o.options[:output][:css].
|
248
|
-
o.options[:output][:preview].
|
247
|
+
expect(o.options[:output][:css]).to eq("output/styles")
|
248
|
+
expect(o.options[:output][:preview]).to eq("output/preview")
|
249
249
|
end
|
250
250
|
|
251
251
|
it "should create additional paths if they are given" do
|
@@ -257,7 +257,7 @@ describe Fontcustom::Options do
|
|
257
257
|
}
|
258
258
|
}
|
259
259
|
o.send :set_output_paths
|
260
|
-
o.options[:output][:"special.js"].
|
260
|
+
expect(o.options[:output][:"special.js"]).to eq("assets/javascripts")
|
261
261
|
end
|
262
262
|
|
263
263
|
it "should raise an error if :fonts isn't set" do
|
@@ -275,18 +275,18 @@ describe Fontcustom::Options do
|
|
275
275
|
o = options
|
276
276
|
o.instance_variable_set :@options, { :output => "output/fonts" }
|
277
277
|
o.send :set_output_paths
|
278
|
-
o.options[:output].
|
279
|
-
o.options[:output].
|
280
|
-
o.options[:output].
|
281
|
-
o.options[:output].
|
278
|
+
expect(o.options[:output]).to be_a(Hash)
|
279
|
+
expect(o.options[:output]).to have_key(:fonts)
|
280
|
+
expect(o.options[:output]).to have_key(:css)
|
281
|
+
expect(o.options[:output]).to have_key(:preview)
|
282
282
|
end
|
283
283
|
|
284
284
|
it "should set :css and :preview to match :fonts" do
|
285
285
|
o = options
|
286
286
|
o.instance_variable_set :@options, { :output => "output/fonts" }
|
287
287
|
o.send :set_output_paths
|
288
|
-
o.options[:output][:css].
|
289
|
-
o.options[:output][:preview].
|
288
|
+
expect(o.options[:output][:css]).to eq("output/fonts")
|
289
|
+
expect(o.options[:output][:preview]).to eq("output/fonts")
|
290
290
|
end
|
291
291
|
|
292
292
|
it "should raise an error if :fonts exists but isn't a directory" do
|
@@ -14,7 +14,7 @@ describe Fontcustom::Utility do
|
|
14
14
|
it "should include Thor::Action methods" do
|
15
15
|
gen = Generator.new
|
16
16
|
%w|template add_file remove_file|.each do |method|
|
17
|
-
gen.
|
17
|
+
expect(gen).to respond_to(method.to_sym)
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
@@ -22,7 +22,7 @@ describe Fontcustom::Utility do
|
|
22
22
|
it "should turn string keys into symbols" do
|
23
23
|
gen = Generator.new
|
24
24
|
hash = gen.symbolize_hash "foo" => "bar"
|
25
|
-
hash.
|
25
|
+
expect(hash).to eq({ :foo => "bar" })
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
@@ -30,14 +30,14 @@ describe Fontcustom::Utility do
|
|
30
30
|
it "should define getter method" do
|
31
31
|
gen = Generator.new
|
32
32
|
hash = gen.methodize_hash :foo => "bar"
|
33
|
-
hash.foo.
|
33
|
+
expect(hash.foo).to eq("bar")
|
34
34
|
end
|
35
35
|
|
36
36
|
it "should define setter method" do
|
37
37
|
gen = Generator.new
|
38
38
|
hash = gen.methodize_hash :foo => "bar"
|
39
39
|
hash.foo = "baz"
|
40
|
-
hash.foo.
|
40
|
+
expect(hash.foo).to eq("baz")
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
@@ -45,8 +45,8 @@ describe Fontcustom::Utility do
|
|
45
45
|
it "should replace the contents of a file" do
|
46
46
|
gen = Generator.new
|
47
47
|
file = double "file"
|
48
|
-
File.
|
49
|
-
file.
|
48
|
+
expect(File).to receive(:open).with(fixture("shared/test"), "w").and_yield file
|
49
|
+
expect(file).to receive(:write).with("testing")
|
50
50
|
gen.write_file fixture("shared/test"), "testing"
|
51
51
|
end
|
52
52
|
end
|
@@ -9,8 +9,8 @@ describe Fontcustom::Watcher do
|
|
9
9
|
#end
|
10
10
|
|
11
11
|
def watcher(options)
|
12
|
-
Fontcustom::Manifest.
|
13
|
-
Fontcustom::Base.
|
12
|
+
allow_any_instance_of(Fontcustom::Manifest).to receive(:write_file)
|
13
|
+
allow_any_instance_of(Fontcustom::Base).to receive(:compile)
|
14
14
|
|
15
15
|
# undocumented — non-blocking use of watcher for testing
|
16
16
|
Fontcustom::Watcher.new options, true
|
@@ -18,7 +18,7 @@ describe Fontcustom::Watcher do
|
|
18
18
|
|
19
19
|
context "#watch" do
|
20
20
|
it "should compile on init" do
|
21
|
-
Fontcustom::Base.
|
21
|
+
expect_any_instance_of(Fontcustom::Base).to receive(:compile).once
|
22
22
|
|
23
23
|
w = watcher(
|
24
24
|
:input => "shared/vectors",
|
@@ -33,7 +33,7 @@ describe Fontcustom::Watcher do
|
|
33
33
|
end
|
34
34
|
|
35
35
|
it "should not call generators on init if options[:skip_first] is passed" do
|
36
|
-
Fontcustom::Base.
|
36
|
+
expect_any_instance_of(Fontcustom::Base).to_not receive(:compile).once
|
37
37
|
|
38
38
|
w = watcher(
|
39
39
|
:input => "shared/vectors",
|
@@ -48,7 +48,7 @@ describe Fontcustom::Watcher do
|
|
48
48
|
end
|
49
49
|
|
50
50
|
it "should call generators when vectors change" do
|
51
|
-
Fontcustom::Base.
|
51
|
+
expect_any_instance_of(Fontcustom::Base).to receive(:compile).once
|
52
52
|
|
53
53
|
w = watcher(
|
54
54
|
:input => "shared/vectors",
|
@@ -70,13 +70,13 @@ describe Fontcustom::Watcher do
|
|
70
70
|
end
|
71
71
|
|
72
72
|
it "should call generators when custom templates change" do
|
73
|
-
Fontcustom::Base.
|
73
|
+
expect_any_instance_of(Fontcustom::Base).to receive(:compile).once
|
74
74
|
|
75
75
|
w = watcher(
|
76
76
|
:input => {:vectors => "shared/vectors", :templates => "shared/templates"},
|
77
77
|
:templates => %w|css preview custom.css|,
|
78
78
|
:output => "output",
|
79
|
-
:skip_first =>
|
79
|
+
:skip_first => false
|
80
80
|
)
|
81
81
|
|
82
82
|
capture(:stdout) do
|
@@ -86,6 +86,7 @@ describe Fontcustom::Watcher do
|
|
86
86
|
new = content + "\n.bar { color: red; }"
|
87
87
|
|
88
88
|
w.watch
|
89
|
+
sleep 1
|
89
90
|
File.open(template, "w") { |file| file.write(new) }
|
90
91
|
sleep 1
|
91
92
|
ensure
|
@@ -97,7 +98,7 @@ describe Fontcustom::Watcher do
|
|
97
98
|
end
|
98
99
|
|
99
100
|
it "should do nothing when non-vectors change" do
|
100
|
-
Fontcustom::Base.
|
101
|
+
expect_any_instance_of(Fontcustom::Base).to_not receive(:compile).once
|
101
102
|
|
102
103
|
w = watcher(
|
103
104
|
:input => "shared/vectors",
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fontcustom
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kai Zau
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-10-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
@@ -43,56 +43,62 @@ dependencies:
|
|
43
43
|
name: listen
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
- -
|
46
|
+
- - ! '>='
|
47
47
|
- !ruby/object:Gem::Version
|
48
48
|
version: '1.0'
|
49
|
+
- - <
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: '3.0'
|
49
52
|
type: :runtime
|
50
53
|
prerelease: false
|
51
54
|
version_requirements: !ruby/object:Gem::Requirement
|
52
55
|
requirements:
|
53
|
-
- -
|
56
|
+
- - ! '>='
|
54
57
|
- !ruby/object:Gem::Version
|
55
58
|
version: '1.0'
|
59
|
+
- - <
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.0'
|
56
62
|
- !ruby/object:Gem::Dependency
|
57
63
|
name: rake
|
58
64
|
requirement: !ruby/object:Gem::Requirement
|
59
65
|
requirements:
|
60
|
-
- - '>='
|
66
|
+
- - ! '>='
|
61
67
|
- !ruby/object:Gem::Version
|
62
68
|
version: '0'
|
63
69
|
type: :development
|
64
70
|
prerelease: false
|
65
71
|
version_requirements: !ruby/object:Gem::Requirement
|
66
72
|
requirements:
|
67
|
-
- - '>='
|
73
|
+
- - ! '>='
|
68
74
|
- !ruby/object:Gem::Version
|
69
75
|
version: '0'
|
70
76
|
- !ruby/object:Gem::Dependency
|
71
77
|
name: bundler
|
72
78
|
requirement: !ruby/object:Gem::Requirement
|
73
79
|
requirements:
|
74
|
-
- - '>='
|
80
|
+
- - ! '>='
|
75
81
|
- !ruby/object:Gem::Version
|
76
82
|
version: '0'
|
77
83
|
type: :development
|
78
84
|
prerelease: false
|
79
85
|
version_requirements: !ruby/object:Gem::Requirement
|
80
86
|
requirements:
|
81
|
-
- - '>='
|
87
|
+
- - ! '>='
|
82
88
|
- !ruby/object:Gem::Version
|
83
89
|
version: '0'
|
84
90
|
- !ruby/object:Gem::Dependency
|
85
91
|
name: rspec
|
86
92
|
requirement: !ruby/object:Gem::Requirement
|
87
93
|
requirements:
|
88
|
-
- - '>='
|
94
|
+
- - ! '>='
|
89
95
|
- !ruby/object:Gem::Version
|
90
96
|
version: '0'
|
91
97
|
type: :development
|
92
98
|
prerelease: false
|
93
99
|
version_requirements: !ruby/object:Gem::Requirement
|
94
100
|
requirements:
|
95
|
-
- - '>='
|
101
|
+
- - ! '>='
|
96
102
|
- !ruby/object:Gem::Version
|
97
103
|
version: '0'
|
98
104
|
description: Font Custom makes using vector icons easy. Generate icon fonts and supporting
|
@@ -116,6 +122,7 @@ files:
|
|
116
122
|
- TODO.md
|
117
123
|
- bin/fontcustom
|
118
124
|
- fontcustom.gemspec
|
125
|
+
- gemfiles/Gemfile.listen_1
|
119
126
|
- lib/fontcustom.rb
|
120
127
|
- lib/fontcustom/base.rb
|
121
128
|
- lib/fontcustom/cli.rb
|
@@ -173,24 +180,25 @@ files:
|
|
173
180
|
homepage: http://fontcustom.com
|
174
181
|
licenses: []
|
175
182
|
metadata: {}
|
176
|
-
post_install_message: '>> Thanks for installing Font Custom! Please ensure that
|
177
|
-
is installed before compiling any icons. Visit <http://fontcustom.com>
|
183
|
+
post_install_message: ! '>> Thanks for installing Font Custom! Please ensure that
|
184
|
+
fontforge is installed before compiling any icons. Visit <http://fontcustom.com>
|
185
|
+
for instructions.'
|
178
186
|
rdoc_options: []
|
179
187
|
require_paths:
|
180
188
|
- lib
|
181
189
|
required_ruby_version: !ruby/object:Gem::Requirement
|
182
190
|
requirements:
|
183
|
-
- - '>='
|
191
|
+
- - ! '>='
|
184
192
|
- !ruby/object:Gem::Version
|
185
193
|
version: '0'
|
186
194
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
187
195
|
requirements:
|
188
|
-
- - '>='
|
196
|
+
- - ! '>='
|
189
197
|
- !ruby/object:Gem::Version
|
190
198
|
version: '0'
|
191
199
|
requirements: []
|
192
200
|
rubyforge_project:
|
193
|
-
rubygems_version: 2.
|
201
|
+
rubygems_version: 2.2.2
|
194
202
|
signing_key:
|
195
203
|
specification_version: 4
|
196
204
|
summary: Generate icon fonts from the command line.
|