fontist 0.1.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/macosx.yml +30 -0
- data/.github/workflows/ubuntu.yml +2 -2
- data/.github/workflows/windows.yml +32 -0
- data/.gitignore +4 -0
- data/README.md +97 -1
- data/bin/console +2 -5
- data/fontist.gemspec +5 -0
- data/lib/fontist.rb +44 -2
- data/lib/fontist/errors.rb +9 -0
- data/lib/fontist/font.rb +78 -0
- data/lib/fontist/font_formula.rb +123 -0
- data/lib/fontist/formula.rb +90 -0
- data/lib/fontist/formulas.rb +15 -0
- data/lib/fontist/formulas/andale_font.rb +79 -0
- data/lib/fontist/formulas/arial_black_font.rb +78 -0
- data/lib/fontist/formulas/cleartype_fonts.rb +226 -0
- data/lib/fontist/formulas/comic_font.rb +77 -0
- data/lib/fontist/formulas/courier_font.rb +80 -0
- data/lib/fontist/formulas/euphemia_font.rb +85 -0
- data/lib/fontist/formulas/georgia_font.rb +79 -0
- data/lib/fontist/formulas/impact_font.rb +77 -0
- data/lib/fontist/formulas/montserrat_font.rb +132 -0
- data/lib/fontist/formulas/ms_truetype_fonts.rb +124 -0
- data/lib/fontist/formulas/open_sans_fonts.rb +263 -0
- data/lib/fontist/formulas/overpass_font.rb +73 -0
- data/lib/fontist/formulas/source_fonts.rb +109 -0
- data/lib/fontist/formulas/stix_fonts.rb +108 -0
- data/lib/fontist/formulas/tahoma_font.rb +147 -0
- data/lib/fontist/formulas/webding_font.rb +77 -0
- data/lib/fontist/registry.rb +42 -0
- data/lib/fontist/system.yml +17 -0
- data/lib/fontist/system_font.rb +72 -0
- data/lib/fontist/utils.rb +9 -0
- data/lib/fontist/utils/downloader.rb +72 -0
- data/lib/fontist/utils/dsl.rb +77 -0
- data/lib/fontist/utils/exe_extractor.rb +72 -0
- data/lib/fontist/utils/zip_extractor.rb +38 -0
- data/lib/fontist/version.rb +1 -1
- data/spec/fontist/font_formula_spec.rb +67 -0
- data/spec/fontist/font_spec.rb +87 -0
- data/spec/fontist/formula_spec.rb +67 -0
- data/spec/fontist/formulas/andale_font_spec.rb +29 -0
- data/spec/fontist/formulas/arial_black_font_spec.rb +29 -0
- data/spec/fontist/formulas/cleartype_fonts_spec.rb +38 -0
- data/spec/fontist/formulas/comic_font_spec.rb +29 -0
- data/spec/fontist/formulas/courier_font_spec.rb +29 -0
- data/spec/fontist/formulas/euphemia_font_spec.rb +29 -0
- data/spec/fontist/formulas/georgia_font_spec.rb +29 -0
- data/spec/fontist/formulas/impact_font_spec.rb +29 -0
- data/spec/fontist/formulas/montserrat_font_spec.rb +29 -0
- data/spec/fontist/formulas/ms_truetype_fonts_spec.rb +29 -0
- data/spec/fontist/formulas/open_sans_fonts_spec.rb +29 -0
- data/spec/fontist/formulas/overpass_font_spec.rb +29 -0
- data/spec/fontist/formulas/source_fonts_spec.rb +31 -0
- data/spec/fontist/formulas/stix_fonts_spec.rb +29 -0
- data/spec/fontist/formulas/tahoma_font_spec.rb +29 -0
- data/spec/fontist/formulas/webding_font_spec.rb +29 -0
- data/spec/fontist/registry_spec.rb +47 -0
- data/spec/fontist/system_font_spec.rb +44 -0
- data/spec/fontist/utils/downloader_spec.rb +35 -0
- data/spec/spec_helper.rb +8 -0
- data/spec/support/fontist_helper.rb +10 -0
- metadata +113 -2
@@ -0,0 +1,29 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
RSpec.describe Fontist::Formulas::StixFont do
|
4
|
+
describe "initializing" do
|
5
|
+
it "builds the data dictionary" do
|
6
|
+
formula = Fontist::Formulas::StixFont.instance
|
7
|
+
|
8
|
+
expect(formula.fonts.count).to eq(2)
|
9
|
+
expect(formula.fonts.first[:name]).to eq("STIX Two Math")
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "installation" do
|
14
|
+
context "with valid licence agreement" do
|
15
|
+
it "installs the valid fonts" do
|
16
|
+
name = "STIX Two Math"
|
17
|
+
confirmation = "yes"
|
18
|
+
|
19
|
+
stub_fontist_path_to_temp_path
|
20
|
+
paths = Fontist::Formulas::StixFont.fetch_font(
|
21
|
+
name, confirmation: confirmation
|
22
|
+
)
|
23
|
+
|
24
|
+
expect(Fontist::Font.find(name)).not_to be_empty
|
25
|
+
expect(paths.first).to include("fonts/STIX2Math.otf")
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
RSpec.describe Fontist::Formulas::TahomaFont do
|
4
|
+
describe "initializing" do
|
5
|
+
it "builds the data dictionary" do
|
6
|
+
formula = Fontist::Formulas::TahomaFont.instance
|
7
|
+
|
8
|
+
expect(formula.fonts.count).to eq(1)
|
9
|
+
expect(formula.fonts.first[:name]).to eq("Tahoma")
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "installation" do
|
14
|
+
context "with valid licence agreement", slow: true do
|
15
|
+
it "installs the valid fonts", skip_in_windows: true do
|
16
|
+
name = "Tahoma"
|
17
|
+
confirmation = "yes"
|
18
|
+
|
19
|
+
stub_fontist_path_to_temp_path
|
20
|
+
paths = Fontist::Formulas::TahomaFont.fetch_font(
|
21
|
+
name, confirmation: confirmation
|
22
|
+
)
|
23
|
+
|
24
|
+
expect(Fontist::Font.find(name)).not_to be_empty
|
25
|
+
expect(paths.first).to include("fonts/#{name.downcase}.ttf")
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
RSpec.describe Fontist::Formulas::WebdingFont do
|
4
|
+
describe "initializing" do
|
5
|
+
it "builds the data dictionary" do
|
6
|
+
formula = Fontist::Formulas::WebdingFont.instance
|
7
|
+
|
8
|
+
expect(formula.fonts.count).to eq(1)
|
9
|
+
expect(formula.fonts.first[:name]).to eq("Webdings")
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "installation" do
|
14
|
+
context "with valid licence agreement", slow: true do
|
15
|
+
it "installs the valid fonts", skip_in_windows: true do
|
16
|
+
name = "Webdings"
|
17
|
+
confirmation = "yes"
|
18
|
+
|
19
|
+
stub_fontist_path_to_temp_path
|
20
|
+
paths = Fontist::Formulas::WebdingFont.fetch_font(
|
21
|
+
name, confirmation: confirmation
|
22
|
+
)
|
23
|
+
|
24
|
+
expect(Fontist::Font.find(name)).not_to be_empty
|
25
|
+
expect(paths.first).to include("fonts/#{name}.TTF")
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
RSpec.describe Fontist::Registry do
|
4
|
+
describe ".register" do
|
5
|
+
context "with no key provided" do
|
6
|
+
it "registers a fontist formula with default key" do
|
7
|
+
Fontist::Registry.register(Fontist::Formulas::DemoFormula)
|
8
|
+
demo_formula = Fontist::Registry.formulas.demo_formula
|
9
|
+
|
10
|
+
expect(demo_formula.license).to eq("Vendor specific font licences")
|
11
|
+
expect(demo_formula.fonts.first.styles.first.type).to eq("Regular")
|
12
|
+
expect(demo_formula.installer).to eq("Fontist::Formulas::DemoFormula")
|
13
|
+
expect(demo_formula.homepage).to eq("https://github.com/fontist/fontist")
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
context "with custom key provided" do
|
18
|
+
it "registers the formula with this custom key" do
|
19
|
+
Fontist::Registry.register(Fontist::Formulas::DemoFormula, :custom_key)
|
20
|
+
|
21
|
+
expect(Fontist::Registry.formulas.custom_key).not_to be_nil
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
module Fontist
|
27
|
+
module Formulas
|
28
|
+
class DemoFormula < FontFormula
|
29
|
+
key :demo_formula
|
30
|
+
desc "Demo font formula"
|
31
|
+
homepage "https://github.com/fontist/fontist"
|
32
|
+
requires_license_agreement "Vendor specific font licences"
|
33
|
+
|
34
|
+
resource "demo-formula" do
|
35
|
+
urls [ "https://github.com/fontist/fontist" ]
|
36
|
+
sha256 "594e0f42e6581add4dead70c1dfb9"
|
37
|
+
file_size "1234567890"
|
38
|
+
end
|
39
|
+
|
40
|
+
provides_font "Demo font", match_styles_from_file: {
|
41
|
+
"Regular" => "demo-font.ttf",
|
42
|
+
"Italic" => "demo-fonti.ttf"
|
43
|
+
}
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
RSpec.describe Fontist::SystemFont do
|
4
|
+
describe ".find" do
|
5
|
+
context "with a vlaid existing font" do
|
6
|
+
it "returns the complete font path" do
|
7
|
+
name = "DejaVuSerif.ttf"
|
8
|
+
dejavu_ttf = Fontist::SystemFont.find(name, sources: [font_sources])
|
9
|
+
|
10
|
+
expect(dejavu_ttf).not_to be_nil
|
11
|
+
expect(dejavu_ttf.first).to include("spec/fixtures/fonts/")
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
context "with valid font name" do
|
16
|
+
it "returns the complete font path", slow: true do
|
17
|
+
name = "Calibri"
|
18
|
+
stub_fontist_path_to_temp_path
|
19
|
+
Fontist::Formulas::ClearTypeFonts.fetch_font(name, confirmation: "yes")
|
20
|
+
|
21
|
+
calbiri = Fontist::SystemFont.find(name, sources: [font_sources])
|
22
|
+
expect(calbiri.join("|").downcase).to include("#{name.downcase}.ttf")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
context "with invalid font" do
|
27
|
+
it "returns nil for partial-not match" do
|
28
|
+
name = "Deje"
|
29
|
+
expect(Fontist::SystemFont.find(name)).to be_nil
|
30
|
+
end
|
31
|
+
|
32
|
+
it "returns nill to the caller" do
|
33
|
+
name = "invalid-font.ttf"
|
34
|
+
invalid_font = Fontist::SystemFont.find(name, sources: [font_sources])
|
35
|
+
|
36
|
+
expect(invalid_font).to be_nil
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def font_sources
|
42
|
+
@font_sources ||= Fontist.root_path.join("spec/fixtures/fonts/*")
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
RSpec.describe Fontist::Utils::Downloader do
|
4
|
+
describe ".download" do
|
5
|
+
it "return the valid downloaded file" do
|
6
|
+
tempfile = Fontist::Utils::Downloader.download(
|
7
|
+
sample_file[:file],
|
8
|
+
sha: sample_file[:sha],
|
9
|
+
file_size: sample_file[:file_size],
|
10
|
+
)
|
11
|
+
|
12
|
+
expect(tempfile).not_to be_nil
|
13
|
+
expect(tempfile.size).to eq(sample_file[:file_size])
|
14
|
+
end
|
15
|
+
|
16
|
+
it "raises an error for tempared file" do
|
17
|
+
expect{
|
18
|
+
Fontist::Utils::Downloader.download(
|
19
|
+
sample_file[:file],
|
20
|
+
sha: sample_file[:sha] + "mm",
|
21
|
+
file_size: sample_file[:file_size]
|
22
|
+
)
|
23
|
+
}.to raise_error(Fontist::Errors::TemparedFileError)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def sample_file
|
28
|
+
@sample_file ||= {
|
29
|
+
file_size: 150899,
|
30
|
+
file: "https://drive.google.com/u/0/uc?id=1Kk-rpLyQk98ubgxhTRKD2ZkMoY9KqKXk&export=download",
|
31
|
+
sha: "5e513e4bfdada0ff10dd5b96414fcaeade84e235ce043865416ad7673cb6f3d8"
|
32
|
+
}
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
data/spec/spec_helper.rb
CHANGED
@@ -1,13 +1,21 @@
|
|
1
1
|
require "bundler/setup"
|
2
2
|
require "fontist"
|
3
3
|
|
4
|
+
Dir["./spec/support/**/*.rb"].sort.each { |file| require file }
|
5
|
+
|
4
6
|
RSpec.configure do |config|
|
5
7
|
# Enable flags like --only-failures and --next-failure
|
6
8
|
config.example_status_persistence_file_path = ".rspec_status"
|
9
|
+
config.include Fontist::Helper
|
7
10
|
|
8
11
|
# Disable RSpec exposing methods globally on `Module` and `main`
|
9
12
|
config.disable_monkey_patching!
|
10
13
|
|
14
|
+
# Skip the slow tests locally
|
15
|
+
unless ENV.fetch("TEST_ENV", "local").upcase === "CI"
|
16
|
+
config.filter_run_excluding slow: true
|
17
|
+
end
|
18
|
+
|
11
19
|
config.expect_with :rspec do |c|
|
12
20
|
c.syntax = :expect
|
13
21
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fontist
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
@@ -9,8 +9,64 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2020-
|
12
|
+
date: 2020-07-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: down
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - "~>"
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '5.0'
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "~>"
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '5.0'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: libmspack
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - "~>"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: 0.1.0
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: 0.1.0
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: rubyzip
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - "~>"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: 2.3.0
|
49
|
+
type: :runtime
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - "~>"
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 2.3.0
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: pry
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
14
70
|
- !ruby/object:Gem::Dependency
|
15
71
|
name: bundler
|
16
72
|
requirement: !ruby/object:Gem::Requirement
|
@@ -61,7 +117,9 @@ executables: []
|
|
61
117
|
extensions: []
|
62
118
|
extra_rdoc_files: []
|
63
119
|
files:
|
120
|
+
- ".github/workflows/macosx.yml"
|
64
121
|
- ".github/workflows/ubuntu.yml"
|
122
|
+
- ".github/workflows/windows.yml"
|
65
123
|
- ".gitignore"
|
66
124
|
- ".rspec"
|
67
125
|
- Gemfile
|
@@ -73,9 +131,62 @@ files:
|
|
73
131
|
- bin/setup
|
74
132
|
- fontist.gemspec
|
75
133
|
- lib/fontist.rb
|
134
|
+
- lib/fontist/errors.rb
|
135
|
+
- lib/fontist/font.rb
|
136
|
+
- lib/fontist/font_formula.rb
|
137
|
+
- lib/fontist/formula.rb
|
138
|
+
- lib/fontist/formulas.rb
|
139
|
+
- lib/fontist/formulas/andale_font.rb
|
140
|
+
- lib/fontist/formulas/arial_black_font.rb
|
141
|
+
- lib/fontist/formulas/cleartype_fonts.rb
|
142
|
+
- lib/fontist/formulas/comic_font.rb
|
143
|
+
- lib/fontist/formulas/courier_font.rb
|
144
|
+
- lib/fontist/formulas/euphemia_font.rb
|
145
|
+
- lib/fontist/formulas/georgia_font.rb
|
146
|
+
- lib/fontist/formulas/impact_font.rb
|
147
|
+
- lib/fontist/formulas/montserrat_font.rb
|
148
|
+
- lib/fontist/formulas/ms_truetype_fonts.rb
|
149
|
+
- lib/fontist/formulas/open_sans_fonts.rb
|
150
|
+
- lib/fontist/formulas/overpass_font.rb
|
151
|
+
- lib/fontist/formulas/source_fonts.rb
|
152
|
+
- lib/fontist/formulas/stix_fonts.rb
|
153
|
+
- lib/fontist/formulas/tahoma_font.rb
|
154
|
+
- lib/fontist/formulas/webding_font.rb
|
155
|
+
- lib/fontist/registry.rb
|
156
|
+
- lib/fontist/system.yml
|
157
|
+
- lib/fontist/system_font.rb
|
158
|
+
- lib/fontist/utils.rb
|
159
|
+
- lib/fontist/utils/downloader.rb
|
160
|
+
- lib/fontist/utils/dsl.rb
|
161
|
+
- lib/fontist/utils/exe_extractor.rb
|
162
|
+
- lib/fontist/utils/zip_extractor.rb
|
76
163
|
- lib/fontist/version.rb
|
164
|
+
- spec/fixtures/fonts/DejaVuSerif.ttf
|
165
|
+
- spec/fontist/font_formula_spec.rb
|
166
|
+
- spec/fontist/font_spec.rb
|
167
|
+
- spec/fontist/formula_spec.rb
|
168
|
+
- spec/fontist/formulas/andale_font_spec.rb
|
169
|
+
- spec/fontist/formulas/arial_black_font_spec.rb
|
170
|
+
- spec/fontist/formulas/cleartype_fonts_spec.rb
|
171
|
+
- spec/fontist/formulas/comic_font_spec.rb
|
172
|
+
- spec/fontist/formulas/courier_font_spec.rb
|
173
|
+
- spec/fontist/formulas/euphemia_font_spec.rb
|
174
|
+
- spec/fontist/formulas/georgia_font_spec.rb
|
175
|
+
- spec/fontist/formulas/impact_font_spec.rb
|
176
|
+
- spec/fontist/formulas/montserrat_font_spec.rb
|
177
|
+
- spec/fontist/formulas/ms_truetype_fonts_spec.rb
|
178
|
+
- spec/fontist/formulas/open_sans_fonts_spec.rb
|
179
|
+
- spec/fontist/formulas/overpass_font_spec.rb
|
180
|
+
- spec/fontist/formulas/source_fonts_spec.rb
|
181
|
+
- spec/fontist/formulas/stix_fonts_spec.rb
|
182
|
+
- spec/fontist/formulas/tahoma_font_spec.rb
|
183
|
+
- spec/fontist/formulas/webding_font_spec.rb
|
184
|
+
- spec/fontist/registry_spec.rb
|
185
|
+
- spec/fontist/system_font_spec.rb
|
186
|
+
- spec/fontist/utils/downloader_spec.rb
|
77
187
|
- spec/fontist_spec.rb
|
78
188
|
- spec/spec_helper.rb
|
189
|
+
- spec/support/fontist_helper.rb
|
79
190
|
homepage: https://github.com/fontist/fontist
|
80
191
|
licenses:
|
81
192
|
- BSD-2-Clause
|