fontist 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8dbc313275aceace35c9a4f5e39bf17af46e8d0c2d661f4270909c36d6dc855e
4
- data.tar.gz: 8abacb5373f59f3e0df5fae5baeb2a81adfab4eb40a5ae55a12867c4da646d88
3
+ metadata.gz: ec6fb2284e060c8f43ac62c16a9777d25d20886ef2ff687eecdfb963980bb350
4
+ data.tar.gz: ddcba3ee0f0a7c75f23532d7809c7c40492583ba032b4ebbc204d0730f6af9a4
5
5
  SHA512:
6
- metadata.gz: d5b234dcafb1ad011c508b1972b2b0ba79aa0222cdc5117d6c47250f2a8e4f3ec62f9404ac039ee8452b88aa050200201d1b3957e2ff70c7da1f54556b82a41a
7
- data.tar.gz: 49dc8f923c050fc6d793fe5a24315e75728e5baa9c50cb97ca596641d4344d301bdab3bd96b0e6f7157b745daaa78e5755325e22d2dc97dd72aff6bf4ddae8d4
6
+ metadata.gz: 7bfc0b3cb5597ceca0474c95d47a26e993ccf91773b4a17b10f08c84ac2ec4dfed40d3a271b309c6b2f7c77cd14dca5978b88a274c7aba3ba3ee95b25afcea30
7
+ data.tar.gz: af007b2fda60f2f53bf2be5c107bf27ec423b9759f62c6827bdecc50ed62bf56a4f4f0969ec9d74f91631f92cad75c0564182424ef2b5754ead6c9335ae87ac1
@@ -8,8 +8,6 @@ require "fontist/errors"
8
8
  require "fontist/version"
9
9
 
10
10
  require "fontist/font"
11
- require "fontist/downloader"
12
-
13
11
  require "fontist/registry"
14
12
  require "fontist/formulas"
15
13
  require "fontist/formula"
@@ -6,7 +6,7 @@ module Fontist
6
6
  include Fontist::Utils::ExeExtractor
7
7
 
8
8
  attr_accessor :license, :license_url, :license_required
9
- attr_accessor :key, :homepage, :description, :temp_resource
9
+ attr_accessor :key, :homepage, :description, :options, :temp_resource
10
10
 
11
11
  def font_list
12
12
  @font_list ||= []
@@ -105,12 +105,19 @@ module Fontist
105
105
  end
106
106
 
107
107
  def download_file(source)
108
- downloaded_file = Fontist::Downloader.download(
109
- source[:urls].sample, sha: source[:sha256], file_size: source[:file_size]
108
+ downloaded_file = Fontist::Utils::Downloader.download(
109
+ source[:urls].sample,
110
+ sha: source[:sha256],
111
+ file_size: source[:file_size],
112
+ progress_bar: is_progress_bar_enabled
110
113
  )
111
114
 
112
115
  @downloaded = true
113
116
  downloaded_file
114
117
  end
118
+
119
+ def is_progress_bar_enabled
120
+ options.nil? ? false : options.fetch(:progress_bar, false)
121
+ end
115
122
  end
116
123
  end
@@ -5,6 +5,7 @@ module Fontist
5
5
  desc "Microsoft ClearType Fonts"
6
6
  homepage "https://www.microsoft.com"
7
7
 
8
+ display_progress_bar(true)
8
9
  resource "PowerPointViewer.exe" do
9
10
  urls [
10
11
  "https://nchc.dl.sourceforge.net/project/mscorefonts2/cabs/PowerPointViewer.exe",
@@ -10,6 +10,7 @@ system:
10
10
  macosx:
11
11
  paths:
12
12
  - /System/Library/Fonts/**/**.{ttf,ttc}
13
+ - /Applications/Microsoft**/Contents/Resources/**/**.{ttf,ttc}
13
14
 
14
15
  unix:
15
16
  paths:
@@ -29,8 +29,8 @@ module Fontist
29
29
  end
30
30
 
31
31
  def lookup_using_font_name
32
- font_names = map_name_to_valid_font_names
33
- font_paths.grep(/#{font_names.join("|")}/i) if font_names
32
+ font_names = map_name_to_valid_font_names || []
33
+ font_paths.grep(/#{font_names.join("|")}/i) unless font_names.empty?
34
34
  end
35
35
 
36
36
  def fontist_fonts_path
@@ -1,4 +1,5 @@
1
1
  require "fontist/utils/dsl"
2
+ require "fontist/utils/downloader"
2
3
  require "fontist/utils/zip_extractor"
3
4
  require "fontist/utils/exe_extractor"
4
5
 
@@ -0,0 +1,72 @@
1
+ module Fontist
2
+ module Utils
3
+ class Downloader
4
+ def initialize(file, file_size: nil, sha: nil, progress_bar: nil)
5
+ @file = file
6
+ @progress_bar = progress_bar
7
+ @sha = [sha].flatten.compact
8
+ @file_size = (file_size || default_file_size).to_i
9
+ end
10
+
11
+ def download
12
+ file = download_file
13
+
14
+ if !sha.empty? && !sha.include?(Digest::SHA256.file(file).to_s)
15
+ raise(Fontist::Errors::TemparedFileError.new(
16
+ "The downloaded file from #{@file} doesn't " \
17
+ "match with the expected sha256 checksum!"
18
+ ))
19
+ end
20
+
21
+ file
22
+ end
23
+
24
+ def self.download(file, options = {})
25
+ new(file, options).download
26
+ end
27
+
28
+ private
29
+
30
+ attr_reader :file, :sha, :file_size
31
+
32
+ def default_file_size
33
+ 5 * byte_to_megabyte
34
+ end
35
+
36
+ def byte_to_megabyte
37
+ @byte_to_megabyte ||= 1024 * 1024
38
+ end
39
+
40
+ def download_path
41
+ options[:download_path] || Fontist.root_path.join("tmp")
42
+ end
43
+
44
+ def download_file
45
+ bar = ProgressBar.new(file_size / byte_to_megabyte)
46
+
47
+ Down.download(
48
+ @file,
49
+ progress_proc: -> (progress) {
50
+ bar.increment(progress / byte_to_megabyte) if @progress_bar === true
51
+ }
52
+ )
53
+
54
+ rescue Down::NotFound
55
+ raise(Fontist::Errors::InvalidResourceError.new("Invalid URL: #{@file}"))
56
+ end
57
+ end
58
+
59
+ class ProgressBar
60
+ def initialize(total)
61
+ @counter = 1
62
+ @total = total
63
+ end
64
+
65
+ def increment(progress)
66
+ complete = sprintf("%#.2f%%", ((@counter.to_f / @total.to_f) * 100))
67
+ print "\r\e[0KDownloads: #{@counter}MB/#{@total}MB (#{complete})"
68
+ @counter = progress
69
+ end
70
+ end
71
+ end
72
+ end
@@ -68,6 +68,10 @@ module Fontist
68
68
  def license_url(url)
69
69
  instance.license_url = url
70
70
  end
71
+
72
+ def display_progress_bar(value )
73
+ instance.options = (instance.options || {}).merge(progress_bar: value )
74
+ end
71
75
  end
72
76
  end
73
77
  end
@@ -1,3 +1,3 @@
1
1
  module Fontist
2
- VERSION = "1.0.0".freeze
2
+ VERSION = "1.1.0".freeze
3
3
  end
@@ -24,6 +24,11 @@ RSpec.describe Fontist::SystemFont do
24
24
  end
25
25
 
26
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
+
27
32
  it "returns nill to the caller" do
28
33
  name = "invalid-font.ttf"
29
34
  invalid_font = Fontist::SystemFont.find(name, sources: [font_sources])
@@ -1,9 +1,9 @@
1
1
  require "spec_helper"
2
2
 
3
- RSpec.describe Fontist::Downloader do
3
+ RSpec.describe Fontist::Utils::Downloader do
4
4
  describe ".download" do
5
5
  it "return the valid downloaded file" do
6
- tempfile = Fontist::Downloader.download(
6
+ tempfile = Fontist::Utils::Downloader.download(
7
7
  sample_file[:file],
8
8
  sha: sample_file[:sha],
9
9
  file_size: sample_file[:file_size],
@@ -15,7 +15,7 @@ RSpec.describe Fontist::Downloader do
15
15
 
16
16
  it "raises an error for tempared file" do
17
17
  expect{
18
- Fontist::Downloader.download(
18
+ Fontist::Utils::Downloader.download(
19
19
  sample_file[:file],
20
20
  sha: sample_file[:sha] + "mm",
21
21
  file_size: sample_file[:file_size]
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: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-06-28 00:00:00.000000000 Z
12
+ date: 2020-07-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: down
@@ -131,7 +131,6 @@ files:
131
131
  - bin/setup
132
132
  - fontist.gemspec
133
133
  - lib/fontist.rb
134
- - lib/fontist/downloader.rb
135
134
  - lib/fontist/errors.rb
136
135
  - lib/fontist/font.rb
137
136
  - lib/fontist/font_formula.rb
@@ -157,12 +156,12 @@ files:
157
156
  - lib/fontist/system.yml
158
157
  - lib/fontist/system_font.rb
159
158
  - lib/fontist/utils.rb
159
+ - lib/fontist/utils/downloader.rb
160
160
  - lib/fontist/utils/dsl.rb
161
161
  - lib/fontist/utils/exe_extractor.rb
162
162
  - lib/fontist/utils/zip_extractor.rb
163
163
  - lib/fontist/version.rb
164
164
  - spec/fixtures/fonts/DejaVuSerif.ttf
165
- - spec/fontist/downloader_spec.rb
166
165
  - spec/fontist/font_formula_spec.rb
167
166
  - spec/fontist/font_spec.rb
168
167
  - spec/fontist/formula_spec.rb
@@ -184,6 +183,7 @@ files:
184
183
  - spec/fontist/formulas/webding_font_spec.rb
185
184
  - spec/fontist/registry_spec.rb
186
185
  - spec/fontist/system_font_spec.rb
186
+ - spec/fontist/utils/downloader_spec.rb
187
187
  - spec/fontist_spec.rb
188
188
  - spec/spec_helper.rb
189
189
  - spec/support/fontist_helper.rb
@@ -1,70 +0,0 @@
1
- module Fontist
2
- class Downloader
3
- def initialize(file, file_size: nil, sha: nil, progress: nil)
4
- @file = file
5
- @progress = progress
6
- @sha = [sha].flatten.compact
7
- @file_size = (file_size || default_file_size).to_i
8
- end
9
-
10
- def download
11
- file = download_file
12
-
13
- if !sha.empty? && !sha.include?(Digest::SHA256.file(file).to_s)
14
- raise(Fontist::Errors::TemparedFileError.new(
15
- "The downloaded file from #{@file} doesn't " \
16
- "match with the expected sha256 checksum!"
17
- ))
18
- end
19
-
20
- file
21
- end
22
-
23
- def self.download(file, options = {})
24
- new(file, options).download
25
- end
26
-
27
- private
28
-
29
- attr_reader :file, :sha, :file_size
30
-
31
- def default_file_size
32
- 5 * byte_to_megabyte
33
- end
34
-
35
- def byte_to_megabyte
36
- @byte_to_megabyte ||= 1024 * 1024
37
- end
38
-
39
- def download_path
40
- options[:download_path] || Fontist.root_path.join("tmp")
41
- end
42
-
43
- def download_file
44
- bar = ProgressBar.new(file_size / byte_to_megabyte)
45
-
46
- Down.download(
47
- @file,
48
- progress_proc: -> (progress) {
49
- bar.increment(progress / byte_to_megabyte) if @progress === true
50
- }
51
- )
52
-
53
- rescue Down::NotFound
54
- raise(Fontist::Errors::InvalidResourceError.new("Invalid URL: #{@file}"))
55
- end
56
- end
57
-
58
- class ProgressBar
59
- def initialize(total)
60
- @counter = 1
61
- @total = total
62
- end
63
-
64
- def increment(progress)
65
- complete = sprintf("%#.2f%%", ((@counter.to_f / @total.to_f) * 100))
66
- print "\r\e[0KDownloads: #{@counter}MB/#{@total}MB (#{complete})"
67
- @counter = progress
68
- end
69
- end
70
- end