gollum-lib 5.0.6 → 5.1

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: 694f921b2852f541dadb62d440d8b9dccdf3a387c8017980e9aad575a89b598c
4
- data.tar.gz: 6819382931ebd534d6b698bb733f251b4b7df7c1bc6475dd8130aadf75402971
3
+ metadata.gz: 44933009c24b1e45fbbae1d7fd810e5ecfb77a0e0a1e57fafecae5d186f7c425
4
+ data.tar.gz: eabbfca61595128e345908b29c4f0d46e0428775d4ff49afbda9967e573c9921
5
5
  SHA512:
6
- metadata.gz: 3f6e4e928067b7044f2f415911d2ddace84d352dc5e18d17f5dd096bc98daf40acae64de86934ffd9ae20dca4a5a486bd58c74613b66fe7299bfec8a4c8bd236
7
- data.tar.gz: 2a82c3024a8c0365089e588be77e0efcc73a8406d9882095788e8937f3e281249007b6c7f4dee9c754ae244d19d2394243b856536c4abf63d5af535911fd83b8
6
+ metadata.gz: 167f8d0a577e1ffe62c733ac3808d48400310dfa86dea29bcb163d3728ced0412bd02da064abd6e428266378e4ea5d0b8aaeadb8a68c8aa0b6e99da8739a9684
7
+ data.tar.gz: 185bef530dd0f00cbed9d6a4a684a6f8429e2c700136485f4e8b817c12a3d01200ee2adb25208781ec8ed4837d5cabfaeb78178b4f8f9833cbbdcf55460df211
data/README.md CHANGED
@@ -3,7 +3,7 @@ gollum lib -- A wiki built on top of Git
3
3
 
4
4
  [![Gem Version](https://badge.fury.io/rb/gollum-lib.svg)](http://badge.fury.io/rb/gollum-lib)
5
5
  [![Build Status](https://travis-ci.org/gollum/gollum-lib.svg?branch=master)](https://travis-ci.org/gollum/gollum-lib)
6
- [![Dependency Status](https://gemnasium.com/gollum/gollum-lib.svg)](https://gemnasium.com/gollum/gollum-lib)
6
+ [![Cutting Edge Dependency Status](https://dometto-cuttingedge.herokuapp.com/github/gollum/gollum-lib/svg 'Cutting Edge Dependency Status')](https://dometto-cuttingedge.herokuapp.com/github/gollum/gollum-lib/info)
7
7
 
8
8
  ## DESCRIPTION
9
9
 
@@ -91,7 +91,7 @@ Note that `base_path` just modifies the links.
91
91
  Get the latest version of the given human or canonical page name:
92
92
 
93
93
  ```ruby
94
- page = wiki.page('/page name') # Finds pages in the root directory of the wiki that are named 'page name' with a valid extension.
94
+ page = wiki.page('/page name') # Finds pages in the root directory of the wiki that are named 'page name' with a valid extension.
95
95
  # => <Gollum::Page>
96
96
 
97
97
  page = wiki.page('page name') # For convenience, you can leave out the '/' in front. Paths are assumed to be relative to '/'.
@@ -217,6 +217,21 @@ end
217
217
  Gollum::Hook.unregister(:post_commit, :hook_id)
218
218
  ```
219
219
 
220
+ Register or unregister a hook to be called after the wiki is initialized:
221
+
222
+ ```ruby
223
+ Gollum::Hook.register(:post_wiki_initialize, :hook_id) do |wiki|
224
+ # Your code here
225
+ end
226
+
227
+ Gollum::Hook.unregister(:post_wiki_initialize, :hook_id)
228
+ ```
229
+
230
+ A combination of both hooks can be used to pull from a remote after
231
+ `:post_wiki_initialize` and push to a remote after `:post_commit` which in
232
+ effect keeps the remote in sync both ways. Keep in mind that it may not be
233
+ possible to resolve all conflicts automatically.
234
+
220
235
  ## WINDOWS FILENAME VALIDATION
221
236
 
222
237
  Note that filenames on windows must not contain any of the following characters `\ / : * ? " < > |`. See [this support article](http://support.microsoft.com/kb/177506) for details.
data/gemspec.rb CHANGED
@@ -8,7 +8,7 @@ def specification(version, default_adapter, platform = nil)
8
8
  s.name = 'gollum-lib'
9
9
  s.version = version
10
10
  s.platform = platform if platform
11
- s.date = '2020-09-23'
11
+ s.date = '2021-02-13'
12
12
  s.date = '2017-04-13'
13
13
  s.rubyforge_project = 'gollum-lib'
14
14
  s.license = 'MIT'
@@ -31,34 +31,31 @@ def specification(version, default_adapter, platform = nil)
31
31
  s.add_dependency 'loofah', '~> 2.3'
32
32
  s.add_dependency 'github-markup', '~> 3.0'
33
33
  s.add_dependency 'gemojione', '~> 4.1'
34
- s.add_dependency 'octicons', '~> 8.5'
34
+ s.add_dependency 'octicons', '~> 12.0'
35
35
  s.add_dependency 'twitter-text', '1.14.7'
36
36
 
37
37
  s.add_development_dependency 'org-ruby', '~> 0.9.9'
38
- s.add_development_dependency 'kramdown', '~> 2.1.0'
38
+ s.add_development_dependency 'kramdown', '~> 2.3.0'
39
39
  s.add_development_dependency 'kramdown-parser-gfm', '~> 1.1.0'
40
40
  s.add_development_dependency 'RedCloth', '~> 4.2.9'
41
- s.add_development_dependency 'mocha', '~> 1.2.0'
42
- s.add_development_dependency 'shoulda', '~> 3.5.0'
41
+ s.add_development_dependency 'mocha', '~> 1.11'
42
+ s.add_development_dependency 'shoulda', '~> 4.0'
43
43
  s.add_development_dependency 'wikicloth', '~> 0.8.3'
44
- s.add_development_dependency 'bibtex-ruby', '~> 4.3'
44
+ s.add_development_dependency 'bibtex-ruby', '~> 6.0'
45
45
  s.add_development_dependency 'citeproc-ruby', '~> 1.1'
46
46
  s.add_development_dependency 'unicode_utils', '~> 1.4.0' # required by citeproc-ruby on ruby < 2.4
47
- s.add_development_dependency 'rake', '~> 12.3', '>= 12.3.3'
48
- s.add_development_dependency 'pry', '~> 0.10.1'
47
+ s.add_development_dependency 'rake', '~> 13.0'
48
+ s.add_development_dependency 'pry', '~> 0.13'
49
49
  # required by pry
50
50
  s.add_development_dependency 'rb-readline', '~> 0.5.1'
51
51
  # updating minitest-reporters requires a new minitest which fails with gollum's tests.
52
- s.add_development_dependency 'test-unit', '~> 3.1.5'
52
+ s.add_development_dependency 'test-unit', '~> 3.3'
53
53
  s.add_development_dependency 'minitest-reporters', '~> 1.4'
54
54
  s.add_development_dependency 'nokogiri-diff', '~> 0.2.0'
55
- # required by guard
56
- s.add_development_dependency 'guard', '~> 2.8.2'
57
- s.add_development_dependency 'guard-minitest', '~> 2.3.2'
58
- s.add_development_dependency 'rb-inotify', '~> 0.9.3'
59
- s.add_development_dependency 'rb-fsevent', '~> 0.9.4'
60
- s.add_development_dependency 'rb-fchange', '~> 0.0.6'
61
- s.add_development_dependency 'twitter_cldr', '~> 3.1.0'
55
+ s.add_development_dependency 'guard', '~> 2.16'
56
+ s.add_development_dependency 'guard-minitest', '~> 2.4'
57
+ s.add_development_dependency 'twitter_cldr', '~> 6.4'
58
+
62
59
  # = MANIFEST =
63
60
  s.files = %w(
64
61
  Gemfile
@@ -14,16 +14,15 @@ class Gollum::Filter::PandocBib < Gollum::Filter
14
14
 
15
15
  def extract(data)
16
16
  return data unless supported_format? && bibliography_metadata_present?
17
- bib_metadata = {}
18
- bib_metadata.merge!(@markup.metadata.select {|key, _value| BIB_KEYS.include?(key)})
17
+ @bib_metadata.select! {|key, _value| BIB_KEYS.include?(key)}
19
18
 
20
19
  BIB_PATH_KEYS.each do |bibliography_key|
21
20
  if path = @markup.metadata[bibliography_key]
22
21
  next unless file = @markup.wiki.file(path)
23
- bib_metadata[bibliography_key] = path_for_bibfile(file)
22
+ @bib_metadata[bibliography_key] = path_for_bibfile(file)
24
23
  end
25
24
  end
26
- bib_metadata.empty? ? data : "#{bib_metadata.to_yaml}---\n#{data}"
25
+ @bib_metadata.empty? ? data : "#{@bib_metadata.to_yaml}---\n#{data}"
27
26
  end
28
27
 
29
28
  private
@@ -47,6 +46,8 @@ class Gollum::Filter::PandocBib < Gollum::Filter
47
46
  end
48
47
 
49
48
  def bibliography_metadata_present?
50
- @markup.metadata && @markup.metadata.keys.any? {|key| ALL_BIB_KEYS.include?(key)}
49
+ return false unless @markup.metadata
50
+ @bib_metadata = @markup.wiki.metadata.merge(@markup.metadata)
51
+ @bib_metadata.keys.any? {|key| ALL_BIB_KEYS.include?(key)}
51
52
  end
52
53
  end
@@ -1,5 +1,8 @@
1
1
  # Inserts header anchors and creates TOC
2
2
  class Gollum::Filter::TOC < Gollum::Filter
3
+
4
+ HEADERS = (1..6).to_a
5
+
3
6
  def extract(data)
4
7
  data
5
8
  end
@@ -10,12 +13,15 @@ class Gollum::Filter::TOC < Gollum::Filter
10
13
  @toc_doc = nil
11
14
  @anchor_names = {}
12
15
  @current_ancestors = []
13
-
16
+ @headers_levels = {}
14
17
  toc_str = ''
15
18
  if @markup.sub_page && @markup.parent_page
16
19
  toc_str = @markup.parent_page.toc_data
17
20
  else
18
- @doc.css('h1,h2,h3,h4,h5,h6').each_with_index do |header, i|
21
+ @headers = @doc.css(headers_selector)
22
+ get_toc_levels()
23
+
24
+ @headers.each_with_index do |header, i|
19
25
  next if header.content.empty?
20
26
  # omit the first H1 (the page title) from the TOC if so configured
21
27
  next if (i == 0 && header.name =~ /[Hh]1/) && @markup.wiki && @markup.wiki.h1_title
@@ -59,6 +65,39 @@ class Gollum::Filter::TOC < Gollum::Filter
59
65
 
60
66
  private
61
67
 
68
+ def headers_selector
69
+ HEADERS.map { |n| make_header_tag(n) } .join(',')
70
+ end
71
+
72
+ def get_header_level(header)
73
+ header.name.match(/[Hh]([1-6])/)[1].to_i
74
+ end
75
+
76
+ # Find level as it should be viewed in TOC for each header
77
+ # and save hash to @header_levels
78
+ def get_toc_levels
79
+ stack = []
80
+
81
+ @headers.each do |header|
82
+ cur_level = get_header_level(header)
83
+
84
+ loop do
85
+ prev_level = stack[-1]
86
+ break if prev_level.nil? || prev_level < cur_level
87
+ stack.pop
88
+ end
89
+
90
+ stack.push cur_level
91
+ @headers_levels[header] = stack.size
92
+ end
93
+ end
94
+
95
+ # Generates header in format "h<level>"
96
+ def make_header_tag(level)
97
+ raise "Header should be from 1 to 6" unless level.between?(1, 6)
98
+ "h#{level}"
99
+ end
100
+
62
101
  # Generates the anchor name from the given header element
63
102
  # removing all non alphanumeric characters, replacing them
64
103
  # with single dashes.
@@ -100,7 +139,7 @@ class Gollum::Filter::TOC < Gollum::Filter
100
139
  @tail ||= @toc_doc.child
101
140
  @tail_level ||= 0
102
141
 
103
- level = header.name.gsub(/[hH]/, '').to_i
142
+ level = @headers_levels[header]
104
143
 
105
144
  if @tail_level < level
106
145
  while @tail_level < level
@@ -58,7 +58,7 @@ module Gollum
58
58
  if gem_exists?('pandoc-ruby')
59
59
  GitHub::Markup::Markdown::MARKDOWN_GEMS.clear
60
60
  GitHub::Markup::Markdown::MARKDOWN_GEMS['pandoc-ruby'] = proc { |content|
61
- PandocRuby.convert(content, :from => 'markdown-tex_math_dollars-raw_tex', :to => :html, :filter => 'pandoc-citeproc')
61
+ PandocRuby.convert(content, '--citeproc', :from => 'markdown-tex_math_dollars-raw_tex', :to => :html)
62
62
  }
63
63
  else
64
64
  GitHub::Markup::Markdown::MARKDOWN_GEMS['kramdown'] = proc { |content|
@@ -28,9 +28,10 @@ module Gollum
28
28
  self.clear
29
29
  self.merge!(redirects)
30
30
  end
31
-
32
- def dump
33
- @wiki.overwrite_file(REDIRECTS_FILE, self.to_yaml, {})
31
+
32
+ def dump(commit=nil)
33
+ commit = {} if commit.nil?
34
+ @wiki.overwrite_file(REDIRECTS_FILE, self.to_yaml, commit)
34
35
  end
35
36
 
36
37
  def get_head_sha
@@ -1,5 +1,5 @@
1
1
  module Gollum
2
2
  module Lib
3
- VERSION = '5.0.6'
3
+ VERSION = '5.1'
4
4
  end
5
5
  end
@@ -150,6 +150,8 @@ module Gollum
150
150
  @filter_chain.delete(:Emoji) unless options.fetch :emoji, false
151
151
  @filter_chain.delete(:PandocBib) unless ::Gollum::MarkupRegisterUtils.using_pandoc?
152
152
  @filter_chain.delete(:CriticMarkup) unless options.fetch :critic_markup, false
153
+
154
+ Hook.execute(:post_wiki_initialize, self)
153
155
  end
154
156
 
155
157
  # Public: check whether the wiki's git repo exists on the filesystem.
@@ -551,14 +553,14 @@ module Gollum
551
553
  @redirects
552
554
  end
553
555
 
554
- def add_redirect(old_path, new_path)
556
+ def add_redirect(old_path, new_path, commit=nil)
555
557
  redirects[old_path] = new_path
556
- redirects.dump
558
+ redirects.dump(commit)
557
559
  end
558
560
 
559
- def remove_redirect(path)
561
+ def remove_redirect(path, commit=nil)
560
562
  redirects.tap{|k| k.delete(path)}
561
- redirects.dump
563
+ redirects.dump(commit)
562
564
  end
563
565
 
564
566
  #########################################################################
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gollum-lib
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.6
4
+ version: '5.1'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Preston-Werner
@@ -101,14 +101,14 @@ dependencies:
101
101
  requirements:
102
102
  - - "~>"
103
103
  - !ruby/object:Gem::Version
104
- version: '8.5'
104
+ version: '12.0'
105
105
  type: :runtime
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
108
108
  requirements:
109
109
  - - "~>"
110
110
  - !ruby/object:Gem::Version
111
- version: '8.5'
111
+ version: '12.0'
112
112
  - !ruby/object:Gem::Dependency
113
113
  name: twitter-text
114
114
  requirement: !ruby/object:Gem::Requirement
@@ -143,14 +143,14 @@ dependencies:
143
143
  requirements:
144
144
  - - "~>"
145
145
  - !ruby/object:Gem::Version
146
- version: 2.1.0
146
+ version: 2.3.0
147
147
  type: :development
148
148
  prerelease: false
149
149
  version_requirements: !ruby/object:Gem::Requirement
150
150
  requirements:
151
151
  - - "~>"
152
152
  - !ruby/object:Gem::Version
153
- version: 2.1.0
153
+ version: 2.3.0
154
154
  - !ruby/object:Gem::Dependency
155
155
  name: kramdown-parser-gfm
156
156
  requirement: !ruby/object:Gem::Requirement
@@ -185,28 +185,28 @@ dependencies:
185
185
  requirements:
186
186
  - - "~>"
187
187
  - !ruby/object:Gem::Version
188
- version: 1.2.0
188
+ version: '1.11'
189
189
  type: :development
190
190
  prerelease: false
191
191
  version_requirements: !ruby/object:Gem::Requirement
192
192
  requirements:
193
193
  - - "~>"
194
194
  - !ruby/object:Gem::Version
195
- version: 1.2.0
195
+ version: '1.11'
196
196
  - !ruby/object:Gem::Dependency
197
197
  name: shoulda
198
198
  requirement: !ruby/object:Gem::Requirement
199
199
  requirements:
200
200
  - - "~>"
201
201
  - !ruby/object:Gem::Version
202
- version: 3.5.0
202
+ version: '4.0'
203
203
  type: :development
204
204
  prerelease: false
205
205
  version_requirements: !ruby/object:Gem::Requirement
206
206
  requirements:
207
207
  - - "~>"
208
208
  - !ruby/object:Gem::Version
209
- version: 3.5.0
209
+ version: '4.0'
210
210
  - !ruby/object:Gem::Dependency
211
211
  name: wikicloth
212
212
  requirement: !ruby/object:Gem::Requirement
@@ -227,14 +227,14 @@ dependencies:
227
227
  requirements:
228
228
  - - "~>"
229
229
  - !ruby/object:Gem::Version
230
- version: '4.3'
230
+ version: '6.0'
231
231
  type: :development
232
232
  prerelease: false
233
233
  version_requirements: !ruby/object:Gem::Requirement
234
234
  requirements:
235
235
  - - "~>"
236
236
  - !ruby/object:Gem::Version
237
- version: '4.3'
237
+ version: '6.0'
238
238
  - !ruby/object:Gem::Dependency
239
239
  name: citeproc-ruby
240
240
  requirement: !ruby/object:Gem::Requirement
@@ -269,34 +269,28 @@ dependencies:
269
269
  requirements:
270
270
  - - "~>"
271
271
  - !ruby/object:Gem::Version
272
- version: '12.3'
273
- - - ">="
274
- - !ruby/object:Gem::Version
275
- version: 12.3.3
272
+ version: '13.0'
276
273
  type: :development
277
274
  prerelease: false
278
275
  version_requirements: !ruby/object:Gem::Requirement
279
276
  requirements:
280
277
  - - "~>"
281
278
  - !ruby/object:Gem::Version
282
- version: '12.3'
283
- - - ">="
284
- - !ruby/object:Gem::Version
285
- version: 12.3.3
279
+ version: '13.0'
286
280
  - !ruby/object:Gem::Dependency
287
281
  name: pry
288
282
  requirement: !ruby/object:Gem::Requirement
289
283
  requirements:
290
284
  - - "~>"
291
285
  - !ruby/object:Gem::Version
292
- version: 0.10.1
286
+ version: '0.13'
293
287
  type: :development
294
288
  prerelease: false
295
289
  version_requirements: !ruby/object:Gem::Requirement
296
290
  requirements:
297
291
  - - "~>"
298
292
  - !ruby/object:Gem::Version
299
- version: 0.10.1
293
+ version: '0.13'
300
294
  - !ruby/object:Gem::Dependency
301
295
  name: rb-readline
302
296
  requirement: !ruby/object:Gem::Requirement
@@ -317,14 +311,14 @@ dependencies:
317
311
  requirements:
318
312
  - - "~>"
319
313
  - !ruby/object:Gem::Version
320
- version: 3.1.5
314
+ version: '3.3'
321
315
  type: :development
322
316
  prerelease: false
323
317
  version_requirements: !ruby/object:Gem::Requirement
324
318
  requirements:
325
319
  - - "~>"
326
320
  - !ruby/object:Gem::Version
327
- version: 3.1.5
321
+ version: '3.3'
328
322
  - !ruby/object:Gem::Dependency
329
323
  name: minitest-reporters
330
324
  requirement: !ruby/object:Gem::Requirement
@@ -359,84 +353,42 @@ dependencies:
359
353
  requirements:
360
354
  - - "~>"
361
355
  - !ruby/object:Gem::Version
362
- version: 2.8.2
356
+ version: '2.16'
363
357
  type: :development
364
358
  prerelease: false
365
359
  version_requirements: !ruby/object:Gem::Requirement
366
360
  requirements:
367
361
  - - "~>"
368
362
  - !ruby/object:Gem::Version
369
- version: 2.8.2
363
+ version: '2.16'
370
364
  - !ruby/object:Gem::Dependency
371
365
  name: guard-minitest
372
366
  requirement: !ruby/object:Gem::Requirement
373
367
  requirements:
374
368
  - - "~>"
375
369
  - !ruby/object:Gem::Version
376
- version: 2.3.2
377
- type: :development
378
- prerelease: false
379
- version_requirements: !ruby/object:Gem::Requirement
380
- requirements:
381
- - - "~>"
382
- - !ruby/object:Gem::Version
383
- version: 2.3.2
384
- - !ruby/object:Gem::Dependency
385
- name: rb-inotify
386
- requirement: !ruby/object:Gem::Requirement
387
- requirements:
388
- - - "~>"
389
- - !ruby/object:Gem::Version
390
- version: 0.9.3
391
- type: :development
392
- prerelease: false
393
- version_requirements: !ruby/object:Gem::Requirement
394
- requirements:
395
- - - "~>"
396
- - !ruby/object:Gem::Version
397
- version: 0.9.3
398
- - !ruby/object:Gem::Dependency
399
- name: rb-fsevent
400
- requirement: !ruby/object:Gem::Requirement
401
- requirements:
402
- - - "~>"
403
- - !ruby/object:Gem::Version
404
- version: 0.9.4
405
- type: :development
406
- prerelease: false
407
- version_requirements: !ruby/object:Gem::Requirement
408
- requirements:
409
- - - "~>"
410
- - !ruby/object:Gem::Version
411
- version: 0.9.4
412
- - !ruby/object:Gem::Dependency
413
- name: rb-fchange
414
- requirement: !ruby/object:Gem::Requirement
415
- requirements:
416
- - - "~>"
417
- - !ruby/object:Gem::Version
418
- version: 0.0.6
370
+ version: '2.4'
419
371
  type: :development
420
372
  prerelease: false
421
373
  version_requirements: !ruby/object:Gem::Requirement
422
374
  requirements:
423
375
  - - "~>"
424
376
  - !ruby/object:Gem::Version
425
- version: 0.0.6
377
+ version: '2.4'
426
378
  - !ruby/object:Gem::Dependency
427
379
  name: twitter_cldr
428
380
  requirement: !ruby/object:Gem::Requirement
429
381
  requirements:
430
382
  - - "~>"
431
383
  - !ruby/object:Gem::Version
432
- version: 3.1.0
384
+ version: '6.4'
433
385
  type: :development
434
386
  prerelease: false
435
387
  version_requirements: !ruby/object:Gem::Requirement
436
388
  requirements:
437
389
  - - "~>"
438
390
  - !ruby/object:Gem::Version
439
- version: 3.1.0
391
+ version: '6.4'
440
392
  description: A simple, Git-powered wiki with a sweet API and local frontend.
441
393
  email: tom@github.com
442
394
  executables: []