gollum-lib 5.0.a.4-java → 5.0.5-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 +4 -4
- data/Gemfile +2 -1
- data/HISTORY.md +4 -0
- data/README.md +12 -7
- data/Rakefile +8 -7
- data/gemspec.rb +17 -10
- data/gollum-lib.gemspec +8 -6
- data/gollum-lib_java.gemspec +2 -2
- data/lib/gollum-lib.rb +9 -9
- data/lib/gollum-lib/blob_entry.rb +2 -8
- data/lib/gollum-lib/committer.rb +23 -61
- data/lib/gollum-lib/file.rb +105 -82
- data/lib/gollum-lib/file_view.rb +8 -4
- data/lib/gollum-lib/filter.rb +12 -0
- data/lib/gollum-lib/filter/code.rb +9 -13
- data/lib/gollum-lib/filter/critic_markup.rb +97 -0
- data/lib/gollum-lib/filter/emoji.rb +11 -8
- data/lib/gollum-lib/filter/macro.rb +5 -2
- data/lib/gollum-lib/filter/plantuml.rb +1 -1
- data/lib/gollum-lib/filter/remote_code.rb +3 -2
- data/lib/gollum-lib/filter/render.rb +25 -2
- data/lib/gollum-lib/filter/sanitize.rb +1 -8
- data/lib/gollum-lib/filter/tags.rb +57 -46
- data/lib/gollum-lib/filter/toc.rb +17 -21
- data/lib/gollum-lib/filter/yaml.rb +1 -1
- data/lib/gollum-lib/git_access.rb +0 -25
- data/lib/gollum-lib/helpers.rb +13 -3
- data/lib/gollum-lib/macro.rb +4 -0
- data/lib/gollum-lib/macro/audio.rb +9 -0
- data/lib/gollum-lib/macro/global_toc.rb +2 -1
- data/lib/gollum-lib/macro/navigation.rb +8 -6
- data/lib/gollum-lib/macro/note.rb +19 -0
- data/lib/gollum-lib/macro/octicon.rb +12 -0
- data/lib/gollum-lib/macro/series.rb +2 -2
- data/lib/gollum-lib/macro/warn.rb +11 -0
- data/lib/gollum-lib/markup.rb +17 -32
- data/lib/gollum-lib/markups.rb +13 -8
- data/lib/gollum-lib/page.rb +80 -166
- data/lib/gollum-lib/pagination.rb +7 -6
- data/lib/gollum-lib/redirects.rb +42 -0
- data/lib/gollum-lib/sanitization.rb +32 -357
- data/lib/gollum-lib/version.rb +1 -1
- data/lib/gollum-lib/wiki.rb +216 -404
- metadata +65 -27
- data/ROADMAP +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 58d6a76ac3ff4e944c5954024fe52ba50cf208f86c9623131bb3aac6011c8540
|
4
|
+
data.tar.gz: 59b0439f772973507254aaa566e134984c5c1761f7242b4c09c9ef3fe9e34aab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 047b9eae8522314a1cd2300fb6eacfa58376595a0ed84c514b35d0a1a61f16625bf12793f47b76339a328ae57add678b0829265086352de3d0cde285030131fc
|
7
|
+
data.tar.gz: 9ab4e40babd84d9baa3041e7212431fb05a95855dd428964e4d5467ebebd75b2405a1a7fbbb038a5ab8ca0ae14401f172eaf2f6f0e6fd8f510358e7b0f5cbb3c
|
data/Gemfile
CHANGED
data/HISTORY.md
CHANGED
data/README.md
CHANGED
@@ -19,10 +19,9 @@ Gollum-lib follows the rules of [Semantic Versioning](http://semver.org/) and us
|
|
19
19
|
|
20
20
|
## SYSTEM REQUIREMENTS
|
21
21
|
|
22
|
-
-
|
23
|
-
- Ruby 2.1.0+ (>= 2.3.3 recommended)
|
22
|
+
- Ruby 2.4.0+
|
24
23
|
- Unix like operating system (OS X, Ubuntu, Debian, and more)
|
25
|
-
- Will not work on Windows with the default [
|
24
|
+
- Will not work on Windows with the default [rugged](https://github.com/github/grit) adapter, but works via JRuby.
|
26
25
|
|
27
26
|
## INSTALLATION
|
28
27
|
|
@@ -92,7 +91,13 @@ Note that `base_path` just modifies the links.
|
|
92
91
|
Get the latest version of the given human or canonical page name:
|
93
92
|
|
94
93
|
```ruby
|
95
|
-
page = wiki.page('page
|
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
|
+
# => <Gollum::Page>
|
96
|
+
|
97
|
+
page = wiki.page('page name') # For convenience, you can leave out the '/' in front. Paths are assumed to be relative to '/'.
|
98
|
+
# => <Gollum::Page>
|
99
|
+
|
100
|
+
page = wiki.page('page name.md') # You can also specifiy the extension explicitly to disambiguate between pages with the same name, but different formats.
|
96
101
|
# => <Gollum::Page>
|
97
102
|
|
98
103
|
page.raw_data
|
@@ -141,7 +146,7 @@ vsns.first.authored_date
|
|
141
146
|
Get a specific version of a given canonical page file:
|
142
147
|
|
143
148
|
```ruby
|
144
|
-
wiki.page('page
|
149
|
+
wiki.page('page name', '5ec521178e0eec4dc39741a8978a2ba6616d0f0a')
|
145
150
|
```
|
146
151
|
|
147
152
|
Get the latest version of a given static file:
|
@@ -182,10 +187,10 @@ commit = { :message => 'commit message',
|
|
182
187
|
```
|
183
188
|
|
184
189
|
Write a new version of a page (the file will be created if it does not already
|
185
|
-
exist) and commit the change. The file will be written at the repo root.
|
190
|
+
exist) and commit the change. The file will be written at the repo root if no subdirectory is specified.
|
186
191
|
|
187
192
|
```ruby
|
188
|
-
wiki.write_page('Page Name', :markdown, 'Page contents', commit)
|
193
|
+
wiki.write_page('Subdirectory/Page Name', :markdown, 'Page contents', commit)
|
189
194
|
```
|
190
195
|
|
191
196
|
Update an existing page. If the format is different than the page's current
|
data/Rakefile
CHANGED
@@ -51,11 +51,11 @@ def gemspec_file
|
|
51
51
|
end
|
52
52
|
|
53
53
|
def gemspecs
|
54
|
-
|
54
|
+
["#{name}.gemspec", "#{name}_java.gemspec"]
|
55
55
|
end
|
56
56
|
|
57
57
|
def gem_files
|
58
|
-
|
58
|
+
["#{name}-#{version}.gem", "#{name}-#{version}-java.gem"]
|
59
59
|
end
|
60
60
|
|
61
61
|
def replace_header(head, header_name)
|
@@ -75,6 +75,7 @@ Rake::TestTask.new(:test) do |test|
|
|
75
75
|
test.libs << 'lib' << 'test' << '.'
|
76
76
|
test.pattern = 'test/**/test_*.rb'
|
77
77
|
test.verbose = true
|
78
|
+
test.warning = false
|
78
79
|
end
|
79
80
|
|
80
81
|
desc "Generate RCov test coverage and open in your browser"
|
@@ -107,7 +108,7 @@ end
|
|
107
108
|
|
108
109
|
desc "Build and install"
|
109
110
|
task :install => :build do
|
110
|
-
sh "gem install --local --no-
|
111
|
+
sh "gem install --local --no-document pkg/#{name}-#{version}.gem"
|
111
112
|
end
|
112
113
|
|
113
114
|
#############################################################################
|
@@ -118,14 +119,14 @@ end
|
|
118
119
|
|
119
120
|
desc 'Create a release build'
|
120
121
|
task :release => :build do
|
121
|
-
unless `git branch` =~ /
|
122
|
-
puts "You must be on the
|
122
|
+
unless `git branch` =~ /master/
|
123
|
+
puts "You must be on the master branch to release!"
|
123
124
|
exit!
|
124
125
|
end
|
125
126
|
sh "git commit --allow-empty -a -m 'Release #{version}'"
|
126
|
-
sh "git pull --rebase origin
|
127
|
+
sh "git pull --rebase origin master"
|
127
128
|
sh "git tag v#{version}"
|
128
|
-
sh "git push origin
|
129
|
+
sh "git push origin master"
|
129
130
|
sh "git push origin v#{version}"
|
130
131
|
sh "gem push pkg/#{name}-#{version}.gem"
|
131
132
|
sh "gem push pkg/#{name}-#{version}-java.gem"
|
data/gemspec.rb
CHANGED
@@ -3,12 +3,12 @@ def specification(version, default_adapter, platform = nil)
|
|
3
3
|
s.specification_version = 2 if s.respond_to? :specification_version=
|
4
4
|
s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version=
|
5
5
|
s.rubygems_version = '0.0.1'
|
6
|
-
s.required_ruby_version = '>= 2.
|
6
|
+
s.required_ruby_version = '>= 2.4'
|
7
7
|
|
8
8
|
s.name = 'gollum-lib'
|
9
9
|
s.version = version
|
10
10
|
s.platform = platform if platform
|
11
|
-
s.date = '
|
11
|
+
s.date = '2020-08-03'
|
12
12
|
s.date = '2017-04-13'
|
13
13
|
s.rubyforge_project = 'gollum-lib'
|
14
14
|
s.license = 'MIT'
|
@@ -28,27 +28,29 @@ def specification(version, default_adapter, platform = nil)
|
|
28
28
|
s.add_dependency *default_adapter
|
29
29
|
s.add_dependency 'rouge', '~> 3.1'
|
30
30
|
s.add_dependency 'nokogiri', '~> 1.8'
|
31
|
-
s.add_dependency '
|
32
|
-
s.add_dependency '
|
33
|
-
s.add_dependency '
|
34
|
-
s.add_dependency '
|
31
|
+
s.add_dependency 'loofah', '~> 2.3'
|
32
|
+
s.add_dependency 'github-markup', '~> 3.0'
|
33
|
+
s.add_dependency 'gemojione', '~> 4.1'
|
34
|
+
s.add_dependency 'octicons', '~> 8.5'
|
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', '~> 1.
|
38
|
+
s.add_development_dependency 'kramdown', '~> 2.1.0'
|
39
|
+
s.add_development_dependency 'kramdown-parser-gfm', '~> 1.1.0'
|
39
40
|
s.add_development_dependency 'RedCloth', '~> 4.2.9'
|
40
41
|
s.add_development_dependency 'mocha', '~> 1.2.0'
|
41
42
|
s.add_development_dependency 'shoulda', '~> 3.5.0'
|
42
43
|
s.add_development_dependency 'wikicloth', '~> 0.8.3'
|
43
44
|
s.add_development_dependency 'bibtex-ruby', '~> 4.3'
|
44
45
|
s.add_development_dependency 'citeproc-ruby', '~> 1.1'
|
45
|
-
s.add_development_dependency '
|
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'
|
46
48
|
s.add_development_dependency 'pry', '~> 0.10.1'
|
47
49
|
# required by pry
|
48
50
|
s.add_development_dependency 'rb-readline', '~> 0.5.1'
|
49
51
|
# updating minitest-reporters requires a new minitest which fails with gollum's tests.
|
50
52
|
s.add_development_dependency 'test-unit', '~> 3.1.5'
|
51
|
-
s.add_development_dependency 'minitest-reporters', '~>
|
53
|
+
s.add_development_dependency 'minitest-reporters', '~> 1.4'
|
52
54
|
s.add_development_dependency 'nokogiri-diff', '~> 0.2.0'
|
53
55
|
# required by guard
|
54
56
|
s.add_development_dependency 'guard', '~> 2.8.2'
|
@@ -63,7 +65,6 @@ def specification(version, default_adapter, platform = nil)
|
|
63
65
|
HISTORY.md
|
64
66
|
LICENSE
|
65
67
|
README.md
|
66
|
-
ROADMAP
|
67
68
|
Rakefile
|
68
69
|
docs/sanitization.md
|
69
70
|
gemspec.rb
|
@@ -77,6 +78,7 @@ def specification(version, default_adapter, platform = nil)
|
|
77
78
|
lib/gollum-lib/filter.rb
|
78
79
|
lib/gollum-lib/filter/bibtex.rb
|
79
80
|
lib/gollum-lib/filter/code.rb
|
81
|
+
lib/gollum-lib/filter/critic_markup.rb
|
80
82
|
lib/gollum-lib/filter/emoji.rb
|
81
83
|
lib/gollum-lib/filter/macro.rb
|
82
84
|
lib/gollum-lib/filter/pandoc_bib.rb
|
@@ -93,14 +95,19 @@ def specification(version, default_adapter, platform = nil)
|
|
93
95
|
lib/gollum-lib/hook.rb
|
94
96
|
lib/gollum-lib/macro.rb
|
95
97
|
lib/gollum-lib/macro/all_pages.rb
|
98
|
+
lib/gollum-lib/macro/audio.rb
|
96
99
|
lib/gollum-lib/macro/global_toc.rb
|
97
100
|
lib/gollum-lib/macro/navigation.rb
|
101
|
+
lib/gollum-lib/macro/note.rb
|
102
|
+
lib/gollum-lib/macro/octicon.rb
|
98
103
|
lib/gollum-lib/macro/series.rb
|
99
104
|
lib/gollum-lib/macro/video.rb
|
105
|
+
lib/gollum-lib/macro/warn.rb
|
100
106
|
lib/gollum-lib/markup.rb
|
101
107
|
lib/gollum-lib/markups.rb
|
102
108
|
lib/gollum-lib/page.rb
|
103
109
|
lib/gollum-lib/pagination.rb
|
110
|
+
lib/gollum-lib/redirects.rb
|
104
111
|
lib/gollum-lib/sanitization.rb
|
105
112
|
lib/gollum-lib/version.rb
|
106
113
|
lib/gollum-lib/wiki.rb
|
data/gollum-lib.gemspec
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), 'gemspec.rb')
|
2
2
|
require File.join(File.dirname(__FILE__), 'lib', 'gollum-lib', 'version.rb')
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
3
|
+
# This file needs to conditionally define the default adapter for MRI and Java, because this is the file that is included from the Gemfile.
|
4
|
+
# In addition, the default Java adapter needs to be defined in gollum-lib_java.gemspec beause that file is used to *build* the Java gem.
|
5
|
+
if RUBY_PLATFORM == 'java' then
|
6
|
+
default_adapter = ['gollum-rjgit_adapter', '~> 0.6']
|
7
|
+
else
|
8
|
+
default_adapter = ['gollum-rugged_adapter', '~> 1.0']
|
9
|
+
end
|
10
|
+
Gem::Specification.new &specification(Gollum::Lib::VERSION, default_adapter)
|
data/gollum-lib_java.gemspec
CHANGED
@@ -1,4 +1,4 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), 'gemspec.rb')
|
2
2
|
require File.join(File.dirname(__FILE__), 'lib', 'gollum-lib', 'version.rb')
|
3
|
-
default_adapter = ['gollum-rjgit_adapter', '~> 0.
|
4
|
-
Gem::Specification.new &specification(Gollum::Lib::VERSION, default_adapter, "java")
|
3
|
+
default_adapter = ['gollum-rjgit_adapter', '~> 0.6']
|
4
|
+
Gem::Specification.new &specification(Gollum::Lib::VERSION, default_adapter, "java")
|
data/lib/gollum-lib.rb
CHANGED
@@ -5,15 +5,17 @@ require 'digest/sha1'
|
|
5
5
|
require 'ostruct'
|
6
6
|
require 'pathname'
|
7
7
|
|
8
|
-
DEFAULT_ADAPTER = RUBY_PLATFORM == 'java' ? 'rjgit' : '
|
8
|
+
DEFAULT_ADAPTER = RUBY_PLATFORM == 'java' ? 'rjgit' : 'rugged'
|
9
9
|
|
10
|
+
module Gollum; end
|
10
11
|
Gollum::GIT_ADAPTER = DEFAULT_ADAPTER if !defined?(Gollum::GIT_ADAPTER)
|
11
12
|
require "#{Gollum::GIT_ADAPTER.downcase}_adapter"
|
12
13
|
|
13
14
|
# external
|
14
15
|
require 'github/markup'
|
15
|
-
require '
|
16
|
+
require 'erb'
|
16
17
|
require 'gemojione'
|
18
|
+
require 'loofah'
|
17
19
|
|
18
20
|
# internal
|
19
21
|
require File.expand_path('../gollum-lib/git_access', __FILE__)
|
@@ -22,9 +24,10 @@ require File.expand_path('../gollum-lib/committer', __FILE__)
|
|
22
24
|
require File.expand_path('../gollum-lib/pagination', __FILE__)
|
23
25
|
require File.expand_path('../gollum-lib/blob_entry', __FILE__)
|
24
26
|
require File.expand_path('../gollum-lib/wiki', __FILE__)
|
27
|
+
require File.expand_path('../gollum-lib/redirects', __FILE__)
|
28
|
+
require File.expand_path('../gollum-lib/file', __FILE__)
|
25
29
|
require File.expand_path('../gollum-lib/page', __FILE__)
|
26
30
|
require File.expand_path('../gollum-lib/macro', __FILE__)
|
27
|
-
require File.expand_path('../gollum-lib/file', __FILE__)
|
28
31
|
require File.expand_path('../gollum-lib/file_view', __FILE__)
|
29
32
|
require File.expand_path('../gollum-lib/markup', __FILE__)
|
30
33
|
require File.expand_path('../gollum-lib/markups', __FILE__)
|
@@ -40,19 +43,16 @@ module Gollum
|
|
40
43
|
class Error < StandardError; end
|
41
44
|
|
42
45
|
class DuplicatePageError < Error
|
43
|
-
attr_accessor :dir
|
44
|
-
attr_accessor :existing_path
|
45
46
|
attr_accessor :attempted_path
|
46
47
|
|
47
|
-
def initialize(
|
48
|
-
@dir = dir
|
49
|
-
@existing_path = existing
|
48
|
+
def initialize(attempted, message = nil)
|
50
49
|
@attempted_path = attempted
|
51
|
-
super(message || "Cannot write #{@
|
50
|
+
super(message || "Cannot write #{@attempted_path}: path already exists.")
|
52
51
|
end
|
53
52
|
end
|
54
53
|
|
55
54
|
class InvalidGitRepositoryError < StandardError; end
|
56
55
|
class NoSuchPathError < StandardError; end
|
56
|
+
class IllegalDirectoryPath < StandardError; end
|
57
57
|
|
58
58
|
end
|
@@ -47,10 +47,7 @@ module Gollum
|
|
47
47
|
#
|
48
48
|
# Returns a Gollum::Page instance.
|
49
49
|
def page(wiki, commit)
|
50
|
-
|
51
|
-
page = wiki.page_class.new(wiki).populate(blob, self.dir)
|
52
|
-
page.version = commit
|
53
|
-
page
|
50
|
+
::Gollum::Page.new(wiki, self.blob(wiki.repo), self.dir, commit)
|
54
51
|
end
|
55
52
|
|
56
53
|
# Gets a File instance for this blob.
|
@@ -59,10 +56,7 @@ module Gollum
|
|
59
56
|
#
|
60
57
|
# Returns a Gollum::File instance.
|
61
58
|
def file(wiki, commit)
|
62
|
-
|
63
|
-
file = wiki.file_class.new(wiki).populate(blob, self.dir)
|
64
|
-
file.version = commit
|
65
|
-
file
|
59
|
+
::Gollum::File.new(wiki, self.blob(wiki.repo), self.dir, commit)
|
66
60
|
end
|
67
61
|
|
68
62
|
def inspect
|
data/lib/gollum-lib/committer.rb
CHANGED
@@ -30,7 +30,6 @@ module Gollum
|
|
30
30
|
@wiki = wiki
|
31
31
|
@options = options
|
32
32
|
@callbacks = []
|
33
|
-
after_commit { |*args| Hook.execute(:post_commit, *args) }
|
34
33
|
end
|
35
34
|
|
36
35
|
# Public: References the Git index for this commit.
|
@@ -55,7 +54,7 @@ module Gollum
|
|
55
54
|
@actor ||= begin
|
56
55
|
@options[:name] = @wiki.default_committer_name if @options[:name].nil?
|
57
56
|
@options[:email] = @wiki.default_committer_email if @options[:email].nil?
|
58
|
-
Gollum::Git::Actor.new(@options[:name], @options[:email])
|
57
|
+
Gollum::Git::Actor.new(@options[:name], @options[:email], @options[:time])
|
59
58
|
end
|
60
59
|
end
|
61
60
|
|
@@ -71,82 +70,46 @@ module Gollum
|
|
71
70
|
end
|
72
71
|
end
|
73
72
|
|
74
|
-
# Adds a
|
73
|
+
# Adds a path to the Index.
|
75
74
|
#
|
76
|
-
#
|
77
|
-
# prefix or suffix slashes (e.g. "foo/bar").
|
78
|
-
# name - The String Gollum::Page filename_stripped.
|
79
|
-
# format - The Symbol Gollum::Page format.
|
75
|
+
# path - The String path to be added
|
80
76
|
# data - The String wiki data to store in the tree map.
|
81
77
|
#
|
82
|
-
# Raises Gollum::DuplicatePageError if a matching filename already exists.
|
78
|
+
# Raises Gollum::DuplicatePageError if a matching filename already exists, unless force_overwrite is explicitly enabled.
|
83
79
|
# This way, pages are not inadvertently overwritten.
|
84
80
|
#
|
85
81
|
# Returns nothing (modifies the Index in place).
|
86
|
-
def add_to_index(
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
fullpath = ::File.join(*[dir, path])
|
92
|
-
fullpath = fullpath[1..-1] if fullpath =~ /^\//
|
93
|
-
|
94
|
-
if index.current_tree && (tree = index.current_tree / (@wiki.page_file_dir || '/'))
|
95
|
-
tree = tree / dir unless tree.nil?
|
96
|
-
end
|
97
|
-
|
98
|
-
if tree
|
99
|
-
downpath = path.downcase.sub(/\.\w+$/, '')
|
100
|
-
|
101
|
-
tree.blobs.each do |blob|
|
102
|
-
next if page_path_scheduled_for_deletion?(index.tree, fullpath)
|
103
|
-
|
104
|
-
existing_file = blob.name.downcase.sub(/\.\w+$/, '')
|
105
|
-
existing_file_ext = ::File.extname(blob.name).sub(/^\./, '')
|
106
|
-
|
107
|
-
new_file_ext = ::File.extname(path).sub(/^\./, '')
|
108
|
-
|
109
|
-
if downpath == existing_file && (new_file_ext == existing_file_ext)
|
110
|
-
raise DuplicatePageError.new(dir, blob.name, path)
|
111
|
-
end
|
82
|
+
def add_to_index(path, data, options = {}, force_overwrite = false)
|
83
|
+
if tree = index.current_tree
|
84
|
+
unless page_path_scheduled_for_deletion?(index.tree, path) || force_overwrite
|
85
|
+
raise DuplicatePageError.new(path) if tree / path
|
112
86
|
end
|
113
87
|
end
|
114
88
|
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
89
|
+
unless options[:normalize] == false
|
90
|
+
begin
|
91
|
+
data = @wiki.normalize(data)
|
92
|
+
rescue ArgumentError => err
|
93
|
+
# Swallow errors that arise from data being binary
|
94
|
+
raise err unless err.message.include?('invalid byte sequence')
|
95
|
+
end
|
122
96
|
end
|
123
|
-
index.add(
|
97
|
+
index.add(path, data)
|
124
98
|
end
|
125
99
|
|
126
100
|
# Update the given file in the repository's working directory if there
|
127
101
|
# is a working directory present.
|
128
102
|
#
|
129
|
-
#
|
130
|
-
# name - The String name of the page or the stripped filename
|
131
|
-
# (should be pre-canonicalized if required).
|
132
|
-
# format - The Symbol format of the page.
|
103
|
+
# path - The String path to update
|
133
104
|
#
|
134
105
|
# Returns nothing.
|
135
|
-
def update_working_dir(
|
106
|
+
def update_working_dir(path)
|
136
107
|
unless @wiki.repo.bare
|
137
|
-
if @wiki.page_file_dir &&
|
138
|
-
|
108
|
+
if @wiki.page_file_dir && !path.start_with?(@wiki.page_file_dir)
|
109
|
+
# Skip the path if it is not under the wiki's page file dir
|
110
|
+
return nil
|
139
111
|
end
|
140
112
|
|
141
|
-
path =
|
142
|
-
if dir == ''
|
143
|
-
@wiki.page_file_name(name, format)
|
144
|
-
else
|
145
|
-
::File.join(dir, @wiki.page_file_name(name, format))
|
146
|
-
end
|
147
|
-
|
148
|
-
path = path.force_encoding('ascii-8bit') if path.respond_to?(:force_encoding)
|
149
|
-
|
150
113
|
Dir.chdir(::File.join(@wiki.repo.path, '..')) do
|
151
114
|
if file_path_scheduled_for_deletion?(index.tree, path)
|
152
115
|
@wiki.repo.git.rm(path, :force => true)
|
@@ -165,6 +128,7 @@ module Gollum
|
|
165
128
|
@callbacks.each do |cb|
|
166
129
|
cb.call(self, sha1)
|
167
130
|
end
|
131
|
+
Hook.execute(:post_commit, self, sha1)
|
168
132
|
sha1
|
169
133
|
end
|
170
134
|
|
@@ -192,8 +156,7 @@ module Gollum
|
|
192
156
|
parts = path.split('/')
|
193
157
|
if parts.size == 1
|
194
158
|
deletions = map.keys.select { |k| !map[k] }
|
195
|
-
|
196
|
-
deletions.any? { |d| d.downcase.sub(/\.\w+$/, '') == downfile }
|
159
|
+
deletions.any? { |d| d == parts.first }
|
197
160
|
else
|
198
161
|
part = parts.shift
|
199
162
|
if (rest = map[part])
|
@@ -230,7 +193,6 @@ module Gollum
|
|
230
193
|
|
231
194
|
# Proxies methods t
|
232
195
|
def method_missing(name, *args)
|
233
|
-
args.map! { |item| item.respond_to?(:force_encoding) ? item.force_encoding('ascii-8bit') : item }
|
234
196
|
index.send(name, *args)
|
235
197
|
end
|
236
198
|
end
|