gollum-lib 4.2.1-java → 4.2.2-java

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7898217e9876f9639f9edf77e48e967bb8227e19
4
- data.tar.gz: 3a0b3ae3743367ca76c8632d109e5b2cd9cdc665
3
+ metadata.gz: d251ccb17ef08c54c7619aff450d52fee60afd1a
4
+ data.tar.gz: 94929bd617697704de1c9be1b1e5fe643b1a11e3
5
5
  SHA512:
6
- metadata.gz: fc2747593ae2568e3c3420ad8c4b14362629309442944926caa34b92ba518718ce09f3922d843b26aba052dff20e247ebd955a8dacbe158331d37ab17d42270e
7
- data.tar.gz: 4a2cfc05bff797971e209678520516c7b32f19016dd5189a50c1e0b50b61e09661b7332b122c95c9a60bf15351a8eef3fe81d6fd2f38042fe713d72c5385aa17
6
+ metadata.gz: 46672d43228533de53ac6b584b1207bdf5e92d0efb90117a68d8f9ec0ce283007bef43b7d46854273abaa53d4e80fd0a7b7f32ded2a38a5c7503d38e71857dd9
7
+ data.tar.gz: e0eeea8a09af09489d7b7790ef73a9488f4a8aeba797fd092ff5703ef66db87ef1af4ac78b68f24ce52ed8e768bcbf1a33c2215dd728618ea8c241d821553370
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 = '2016-07-13'
11
+ s.date = '2016-11-18'
12
12
  s.rubyforge_project = 'gollum-lib'
13
13
  s.license = 'MIT'
14
14
 
@@ -27,9 +27,10 @@ def specification(version, default_adapter, platform = nil)
27
27
  s.add_dependency *default_adapter
28
28
  s.add_dependency 'rouge', '~> 2.0'
29
29
  s.add_dependency 'nokogiri', '~> 1.6.4'
30
- s.add_dependency 'stringex', '~> 2.5.1'
31
- s.add_dependency 'sanitize', '~> 2.1.0'
32
- s.add_dependency 'github-markup', '~> 1.4.0'
30
+ s.add_dependency 'stringex', '~> 2.6'
31
+ s.add_dependency 'sanitize', '~> 2.1'
32
+ s.add_dependency 'github-markup', '~> 1.4'
33
+ s.add_dependency 'gemojione', '~> 2.2'
33
34
 
34
35
  s.add_development_dependency 'org-ruby', '~> 0.9.9'
35
36
  s.add_development_dependency 'kramdown', '~> 1.6.0'
@@ -70,6 +71,7 @@ def specification(version, default_adapter, platform = nil)
70
71
  lib/gollum-lib/file_view.rb
71
72
  lib/gollum-lib/filter.rb
72
73
  lib/gollum-lib/filter/code.rb
74
+ lib/gollum-lib/filter/emoji.rb
73
75
  lib/gollum-lib/filter/macro.rb
74
76
  lib/gollum-lib/filter/metadata.rb
75
77
  lib/gollum-lib/filter/plain_text.rb
data/lib/gollum-lib.rb CHANGED
@@ -16,6 +16,7 @@ end
16
16
  # external
17
17
  require 'github/markup'
18
18
  require 'sanitize'
19
+ require 'gemojione'
19
20
 
20
21
  # internal
21
22
  require File.expand_path('../gollum-lib/git_access', __FILE__)
@@ -62,4 +63,3 @@ module Gollum
62
63
  class NoSuchPathError < StandardError; end
63
64
 
64
65
  end
65
-
@@ -20,8 +20,12 @@ module Gollum
20
20
 
21
21
  def new_page(page)
22
22
  name = page.name
23
- url = url_for_page page
24
- %Q( <li class="file"><a href="#{url}"><span class="icon"></span>#{name}</a></li>)
23
+ url, valid_page = url_for_page page
24
+ %Q( <li class="file"><a href="#{url}"><span class="icon"></span>#{name}</a>#{valid_page ? "" : delete_file(url, valid_page)}</li>)
25
+ end
26
+
27
+ def delete_file(url, valid_page)
28
+ %Q(<form method="POST" action="/deleteFile/#{url}" onsubmit="return confirm('Do you really want to delete the file #{url}?');"><button type="submit" name="delete" value="true"></button></form>)
25
29
  end
26
30
 
27
31
  def new_folder(folder_path)
@@ -42,17 +46,19 @@ module Gollum
42
46
 
43
47
  def url_for_page(page)
44
48
  url = ''
49
+ valid_page_name = false
45
50
  if @show_all
46
51
  # Remove ext for valid pages.
47
52
  filename = page.filename
48
- filename = Page::valid_page_name?(filename) ? filename.chomp(::File.extname(filename)) : filename
53
+ valid_page_name = Page::valid_page_name?(filename)
54
+ filename = valid_page_name ? filename.chomp(::File.extname(filename)) : filename
49
55
 
50
56
  url = ::File.join(::File.dirname(page.path), filename)
51
57
  else
52
58
  url = ::File.join(::File.dirname(page.path), page.filename_stripped)
53
59
  end
54
60
  url = url[2..-1] if url[0, 2] == './'
55
- url
61
+ return url, valid_page_name
56
62
  end
57
63
 
58
64
  def render_files
@@ -0,0 +1,39 @@
1
+ # ~*~ encoding: utf-8 ~*~
2
+
3
+ # Emoji
4
+ #
5
+ # Render emoji such as :smile:
6
+ class Gollum::Filter::Emoji < Gollum::Filter
7
+
8
+ EXTRACT_PATTERN = %r{
9
+ (?<!\[{2})
10
+ :(?<name>[\w-]+):
11
+ (?!\]{^2})
12
+ }ix
13
+
14
+ PROCESS_PATTERN = %r{
15
+ =EEMMOOJJII=
16
+ (?<name>[\w-]+)
17
+ =IIJJOOMMEE=
18
+ }ix
19
+
20
+ def extract(data)
21
+ data.gsub! EXTRACT_PATTERN do
22
+ emoji_exists?($~[:name]) ? "=EEMMOOJJII=#{$~[:name]}=IIJJOOMMEE=" : $&
23
+ end
24
+ data
25
+ end
26
+
27
+ def process(data)
28
+ data.gsub! PROCESS_PATTERN, %q(<img src="/emoji/\k<name>" alt="\k<name>" class="emoji">)
29
+ data
30
+ end
31
+
32
+ private
33
+
34
+ def emoji_exists?(name)
35
+ @index ||= Gemojione::Index.new
36
+ !!@index.find_by_name(name)
37
+ end
38
+
39
+ end
@@ -129,6 +129,10 @@ class Gollum::Filter::Tags < Gollum::Filter
129
129
  path = ::File.join @markup.wiki.base_path, file.path
130
130
  elsif name =~ /^https?:\/\/.+(jpg|png|gif|svg|bmp)$/i
131
131
  path = name
132
+ elsif name =~ /.+(jpg|png|gif|svg|bmp)$/i
133
+ # If is image, file not found and no link, then populate with empty String
134
+ # We can than add an image not found alt attribute for this later
135
+ path = ""
132
136
  end
133
137
 
134
138
  if path
@@ -167,8 +171,10 @@ class Gollum::Filter::Tags < Gollum::Filter
167
171
  end
168
172
  end
169
173
 
170
- if (alt = opts['alt'])
174
+ if path != "" && (alt = opts['alt'])
171
175
  attrs << %{alt="#{alt}"}
176
+ elsif path == ""
177
+ attrs << %{alt="Image not found"}
172
178
  end
173
179
 
174
180
  attr_string = attrs.size > 0 ? attrs.join(' ') + ' ' : ''
@@ -212,7 +218,7 @@ class Gollum::Filter::Tags < Gollum::Filter
212
218
  if parts.size == 1
213
219
  url = parts[0].strip
214
220
  else
215
- name, url = *parts.compact.map(&:strip)
221
+ name, url = *parts.compact.map(&:strip)
216
222
  end
217
223
  accepted_protocols = @markup.wiki.sanitization.protocols['a']['href'].dup
218
224
  if accepted_protocols.include?(:relative)
@@ -230,7 +236,7 @@ class Gollum::Filter::Tags < Gollum::Filter
230
236
  else
231
237
  nil
232
238
  end
233
-
239
+
234
240
  end
235
241
 
236
242
  # Attempt to process the tag as a file link tag.
@@ -99,7 +99,7 @@ module Gollum
99
99
  @format = format
100
100
  @name = name
101
101
 
102
- chain = [:Metadata, :PlainText, :TOC, :RemoteCode, :Code, :Sanitize, :WSD, :Tags, :Render]
102
+ chain = [:Metadata, :PlainText, :Emoji, :TOC, :RemoteCode, :Code, :Sanitize, :WSD, :Tags, :Render]
103
103
 
104
104
  filter_chain = chain.map do |r|
105
105
  Gollum::Filter.const_get(r).new(self)
@@ -477,17 +477,31 @@ module Gollum
477
477
 
478
478
  map ||= @wiki.tree_map_for(@wiki.ref, true)
479
479
  valid_names = subpagenames.map(&:capitalize).join("|")
480
- while entry = map.shift do
481
- next unless entry.name =~ /^_(#{valid_names})/
482
- sub_page_type = ::File.basename(entry.name.downcase.tr('_', ''), ::File.extname(entry.name))
483
- next if instance_variable_get("@#{sub_page_type}")
484
- ::Pathname.new(::File.join('.', ::File.dirname(self.path))).ascend do |dir|
485
- if ::File.join(dir, entry.name) == ::File.join('.', ::Pathname.new(entry.path))
486
- instance_variable_set("@#{sub_page_type}", entry.page(@wiki, @version) )
480
+ # From Ruby 2.2 onwards map.select! could be used
481
+ map = map.select{|entry| entry.name =~ /^_(#{valid_names})/ }
482
+ return if map.empty?
483
+
484
+ subpagenames.each do |subpagename|
485
+ dir = ::Pathname.new(self.path)
486
+ while dir = dir.parent do
487
+ subpageblob = map.find do |blob_entry|
488
+
489
+ filename = "_#{subpagename.to_s.capitalize}"
490
+ searchpath = dir == Pathname.new('.') ? Pathname.new(filename) : dir + filename
491
+ entrypath = ::Pathname.new(blob_entry.path)
492
+ # Ignore extentions
493
+ entrypath = entrypath.dirname + entrypath.basename(entrypath.extname)
494
+ entrypath == searchpath
495
+ end
496
+
497
+ if subpageblob
498
+ instance_variable_set("@#{subpagename}", subpageblob.page(@wiki, @version) )
487
499
  break
488
500
  end
501
+
502
+ break if dir == Pathname.new('.')
489
503
  end
490
- end
504
+ end
491
505
  end
492
506
 
493
507
  def inspect
@@ -1,5 +1,5 @@
1
1
  module Gollum
2
2
  module Lib
3
- VERSION = '4.2.1'
3
+ VERSION = '4.2.2'
4
4
  end
5
5
  end
@@ -194,6 +194,7 @@ module Gollum
194
194
  # Default: false
195
195
  # :collapse_tree - Start with collapsed file view. Default: false
196
196
  # :css - Include the custom.css file from the repo.
197
+ # :emoji - Parse and interpret emoji tags (e.g. :heart:).
197
198
  # :h1_title - Concatenate all h1's on a page to form the
198
199
  # page title.
199
200
  # :index_page - The default page to retrieve or create if the
@@ -240,6 +241,7 @@ module Gollum
240
241
  @show_all = options.fetch :show_all, false
241
242
  @collapse_tree = options.fetch :collapse_tree, false
242
243
  @css = options.fetch :css, false
244
+ @emoji = options.fetch :emoji, false
243
245
  @h1_title = options.fetch :h1_title, false
244
246
  @index_page = options.fetch :index_page, 'Home'
245
247
  @bar_side = options.fetch :sidebar, :right
@@ -248,7 +250,8 @@ module Gollum
248
250
  @allow_uploads = options.fetch :allow_uploads, false
249
251
  @per_page_uploads = options.fetch :per_page_uploads, false
250
252
  @filter_chain = options.fetch :filter_chain,
251
- [:Metadata, :PlainText, :TOC, :RemoteCode, :Code, :Macro, :Sanitize, :WSD, :PlantUML, :Tags, :Render]
253
+ [:Metadata, :PlainText, :TOC, :RemoteCode, :Code, :Macro, :Emoji, :Sanitize, :WSD, :PlantUML, :Tags, :Render]
254
+ @filter_chain.delete(:Emoji) unless options.fetch :emoji, false
252
255
  end
253
256
 
254
257
  # Public: check whether the wiki's git repo exists on the filesystem.
@@ -488,6 +491,43 @@ module Gollum
488
491
  multi_commit ? committer : committer.commit
489
492
  end
490
493
 
494
+ # Public: Delete a file.
495
+ #
496
+ # path - The path to the file to delete
497
+ # commit - The commit Hash details:
498
+ # :message - The String commit message.
499
+ # :name - The String author full name.
500
+ # :email - The String email address.
501
+ # :parent - Optional Gollum::Git::Commit parent to this update.
502
+ # :tree - Optional String SHA of the tree to create the
503
+ # index from.
504
+ # :committer - Optional Gollum::Committer instance. If provided,
505
+ # assume that this operation is part of batch of
506
+ # updates and the commit happens later.
507
+ #
508
+ # Returns the String SHA1 of the newly written version, or the
509
+ # Gollum::Committer instance if this is part of a batch update.
510
+ def delete_file(path, commit)
511
+ dir = ::File.dirname(path)
512
+ ext = ::File.extname(path)
513
+ format = ext.split('.').last || 'txt'
514
+ filename = ::File.basename(path, ext)
515
+
516
+ multi_commit = !!commit[:committer]
517
+ committer = multi_commit ? commit[:committer] : Committer.new(self, commit)
518
+
519
+ committer.delete(path)
520
+
521
+ committer.after_commit do |index, _sha|
522
+ dir = '' if dir == '.'
523
+
524
+ @access.refresh
525
+ index.update_working_dir(dir, filename, format)
526
+ end
527
+
528
+ multi_commit ? committer : committer.commit
529
+ end
530
+
491
531
  # Public: Applies a reverse diff for a given page. If only 1 SHA is given,
492
532
  # the reverse diff will be taken from its parent (^SHA...SHA). If two SHAs
493
533
  # are given, the reverse diff is taken from SHA1...SHA2.
@@ -647,7 +687,7 @@ module Gollum
647
687
  options[:max_count] = 10 unless options[:max_count]
648
688
  @repo.log(@ref, nil, options)
649
689
  end
650
-
690
+
651
691
  # Public: Refreshes just the cached Git reference data. This should
652
692
  # be called after every Gollum update.
653
693
  #
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: 4.2.1
4
+ version: 4.2.2
5
5
  platform: java
6
6
  authors:
7
7
  - Tom Preston-Werner
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-07-13 00:00:00.000000000 Z
12
+ date: 2016-11-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: gollum-rjgit_adapter
@@ -59,42 +59,56 @@ dependencies:
59
59
  requirements:
60
60
  - - ~>
61
61
  - !ruby/object:Gem::Version
62
- version: 2.5.1
62
+ version: '2.6'
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - ~>
68
68
  - !ruby/object:Gem::Version
69
- version: 2.5.1
69
+ version: '2.6'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: sanitize
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
74
  - - ~>
75
75
  - !ruby/object:Gem::Version
76
- version: 2.1.0
76
+ version: '2.1'
77
77
  type: :runtime
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
81
  - - ~>
82
82
  - !ruby/object:Gem::Version
83
- version: 2.1.0
83
+ version: '2.1'
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: github-markup
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
88
  - - ~>
89
89
  - !ruby/object:Gem::Version
90
- version: 1.4.0
90
+ version: '1.4'
91
91
  type: :runtime
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
95
  - - ~>
96
96
  - !ruby/object:Gem::Version
97
- version: 1.4.0
97
+ version: '1.4'
98
+ - !ruby/object:Gem::Dependency
99
+ name: gemojione
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ~>
103
+ - !ruby/object:Gem::Version
104
+ version: '2.2'
105
+ type: :runtime
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ~>
110
+ - !ruby/object:Gem::Version
111
+ version: '2.2'
98
112
  - !ruby/object:Gem::Dependency
99
113
  name: org-ruby
100
114
  requirement: !ruby/object:Gem::Requirement
@@ -371,6 +385,7 @@ files:
371
385
  - lib/gollum-lib/file_view.rb
372
386
  - lib/gollum-lib/filter.rb
373
387
  - lib/gollum-lib/filter/code.rb
388
+ - lib/gollum-lib/filter/emoji.rb
374
389
  - lib/gollum-lib/filter/macro.rb
375
390
  - lib/gollum-lib/filter/metadata.rb
376
391
  - lib/gollum-lib/filter/plain_text.rb