jekyll-algolia 1.1.5 → 1.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.
@@ -29,18 +29,19 @@ module Jekyll
29
29
  # "X:Your content"
30
30
  # Where X is either I, W or E for marking respectively an info, warning or
31
31
  # error display
32
- def self.log(line)
33
- type, content = /^(I|W|E):(.*)/.match(line).captures
32
+ def self.log(input)
33
+ type, content = /^(I|W|E):(.*)/m.match(input).captures
34
34
  logger_mapping = {
35
35
  'E' => :error,
36
36
  'I' => :info,
37
37
  'W' => :warn
38
38
  }
39
39
 
40
- # Jekyll logger tries to center log lines, so we force a consistent
41
- # width of 80 chars
42
- content = content.ljust(80, ' ')
43
- Jekyll.logger.send(logger_mapping[type], content)
40
+ # Display by chunk of 80-characters lines
41
+ lines = Utils.split_lines(content, 80)
42
+ lines.each do |line|
43
+ Jekyll.logger.send(logger_mapping[type], line)
44
+ end
44
45
  end
45
46
 
46
47
  # Public: Only display a log line if verbose mode is enabled
@@ -78,7 +79,7 @@ module Jekyll
78
79
  # Convert all variables
79
80
  content = File.open(file).read
80
81
  metadata.each do |key, value|
81
- content = content.gsub("{#{key}}", value)
82
+ content = content.gsub("{#{key}}", value.to_s)
82
83
  end
83
84
 
84
85
  # Display each line differently
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Jekyll
4
+ # Overwriting the Jekyll::Document class
5
+ class Document
6
+ # By default, Jekyll will set the current date (time of build) to any
7
+ # collection item. This will break our diff algorithm, so we monkey patch
8
+ # this call to return nil if no date is defined instead.
9
+ def date
10
+ data['date'] || nil
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'progressbar'
4
+ require 'ostruct'
5
+
6
+ module Jekyll
7
+ module Algolia
8
+ # Module to push records to Algolia and configure the index
9
+ module ProgressBar
10
+ include Jekyll::Algolia
11
+
12
+ def self.should_be_silenced?
13
+ Configurator.verbose?
14
+ end
15
+
16
+ def self.create(options)
17
+ if should_be_silenced?
18
+ fake_bar = OpenStruct.new
19
+ fake_bar.increment = nil
20
+ return fake_bar
21
+ end
22
+
23
+ ::ProgressBar.create(options)
24
+ end
25
+ end
26
+ end
27
+ end
@@ -31,10 +31,10 @@ module Jekyll
31
31
  # input - the variable to test
32
32
  # classname - the string representation of the class
33
33
  def self.instance_of?(input, classname)
34
- return input.instance_of? Object.const_get(classname)
34
+ input.instance_of? Object.const_get(classname)
35
35
  rescue StandardError
36
36
  # The class might not even exist
37
- return false
37
+ false
38
38
  end
39
39
 
40
40
  # Public: Convert an HTML string to its content only
@@ -46,14 +46,14 @@ module Jekyll
46
46
  text.tr("\n", ' ').squeeze(' ').strip
47
47
  end
48
48
 
49
- # Public: Remove all keys with a nil value or an empty array from a hash
49
+ # Public: Remove all keys with a nil value or an empty string from a hash
50
50
  #
51
51
  # hash - The input hash
52
52
  def self.compact_empty(hash)
53
53
  new_hash = {}
54
54
  hash.each do |key, value|
55
55
  next if value.nil?
56
- next if value.respond_to?(:empty?) && value.empty?
56
+ next if value.is_a?(String) && value.empty?
57
57
  new_hash[key] = value
58
58
  end
59
59
  new_hash
@@ -127,6 +127,54 @@ module Jekyll
127
127
 
128
128
  stringified
129
129
  end
130
+
131
+ # Public: Get a hash representing the difference between two hashes
132
+ #
133
+ # It only checks that all keys of alpha are also in beta, with the same
134
+ # value. If not, it remember what was the value of beta and return it in
135
+ # the output
136
+ def self.diff_keys(alpha, beta)
137
+ diff = {}
138
+ alpha.each do |key, value|
139
+ diff[key] = beta[key] if beta[key] != value
140
+ end
141
+
142
+ return nil if diff.empty?
143
+ diff
144
+ end
145
+
146
+ # Public: Split a long text into lines of specific length
147
+ #
148
+ # It takes care to not cut words
149
+ def self.split_lines(input, max_length)
150
+ # Force splitting on actual new lines first
151
+ if input.include?("\n")
152
+ output = []
153
+ input.split("\n").each do |line|
154
+ output += split_lines(line, max_length)
155
+ end
156
+ return output
157
+ end
158
+
159
+ output = []
160
+ words = input.split(' ')
161
+ current_line = words.shift || ''
162
+ test_line = '' # must be defined outside of the loop
163
+
164
+ words.each do |word|
165
+ test_line = "#{current_line} #{word}"
166
+ if test_line.length > max_length
167
+ output << current_line
168
+ current_line = word
169
+ next
170
+ end
171
+ current_line = test_line
172
+ end
173
+ output << current_line
174
+
175
+ # Making sure all lines are the same length
176
+ output.map { |line| line.ljust(max_length, ' ') }
177
+ end
130
178
  end
131
179
  end
132
180
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Jekyll
4
4
  module Algolia
5
- VERSION = '1.1.5'
5
+ VERSION = '1.2.0'
6
6
  end
7
7
  end
@@ -14,20 +14,6 @@ module Jekyll
14
14
  '--config CONFIG_FILE[,CONFIG_FILE2,...]',
15
15
  Array,
16
16
  'Custom configuration file'
17
- command.option 'future',
18
- '--future',
19
- 'Index posts with a future date'
20
- command.option 'limit_posts',
21
- '--limit_posts MAX_POSTS',
22
- Integer,
23
- 'Limits the number of posts to parse and index'
24
- command.option 'show_drafts',
25
- '-D',
26
- '--drafts',
27
- 'Index posts in the _drafts folder'
28
- command.option 'unpublished',
29
- '--unpublished',
30
- 'Index posts that were marked as unpublished'
31
17
  command.option 'dry_run',
32
18
  '--dry-run',
33
19
  '-n',
@@ -35,6 +21,9 @@ module Jekyll
35
21
  command.option 'verbose',
36
22
  '--verbose',
37
23
  'Display more information on what is indexed'
24
+ command.option 'force_settings',
25
+ '--force-settings',
26
+ 'Force updating of the index settings'
38
27
 
39
28
  command.action do |_, options|
40
29
  configuration = configuration_from_options(options)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-algolia
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.5
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Carry
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-01 00:00:00.000000000 Z
11
+ date: 2018-03-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: algolia_html_extractor
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.2'
19
+ version: 2.5.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '2.2'
26
+ version: 2.5.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: algoliasearch
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '1.6'
97
+ - !ruby/object:Gem::Dependency
98
+ name: progressbar
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.9'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1.9'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: verbal_expressions
99
113
  requirement: !ruby/object:Gem::Requirement
@@ -277,6 +291,7 @@ files:
277
291
  - lib/errors/missing_index_name.txt
278
292
  - lib/errors/no_records_found.txt
279
293
  - lib/errors/record_too_big.txt
294
+ - lib/errors/settings_manually_edited.txt
280
295
  - lib/errors/unknown_application_id.txt
281
296
  - lib/errors/unknown_settings.txt
282
297
  - lib/jekyll-algolia.rb
@@ -287,6 +302,8 @@ files:
287
302
  - lib/jekyll/algolia/hooks.rb
288
303
  - lib/jekyll/algolia/indexer.rb
289
304
  - lib/jekyll/algolia/logger.rb
305
+ - lib/jekyll/algolia/overwrites.rb
306
+ - lib/jekyll/algolia/progress_bar.rb
290
307
  - lib/jekyll/algolia/utils.rb
291
308
  - lib/jekyll/algolia/version.rb
292
309
  - lib/jekyll/commands/algolia.rb