smeagol 0.5.9 → 0.6.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.
- data/.ruby +80 -0
- data/.yardopts +9 -0
- data/HISTORY.md +147 -0
- data/LICENSE.txt +30 -0
- data/README.md +132 -26
- data/bin/smeagol +9 -39
- data/bin/smeagol-init +3 -0
- data/bin/smeagol-preview +4 -0
- data/bin/smeagol-serve +4 -0
- data/bin/smeagol-update +4 -0
- data/bin/smeagold +1 -4
- data/lib/smeagol.rb +77 -6
- data/lib/smeagol/app.rb +121 -75
- data/lib/smeagol/cache.rb +43 -24
- data/lib/smeagol/cli.rb +166 -0
- data/lib/smeagol/config.rb +154 -0
- data/lib/smeagol/console.rb +369 -0
- data/lib/smeagol/controller.rb +275 -0
- data/lib/smeagol/core_ext.rb +12 -0
- data/lib/smeagol/gollum/blob_entry.rb +17 -0
- data/lib/smeagol/gollum/file.rb +44 -0
- data/lib/smeagol/gollum/page.rb +47 -0
- data/lib/smeagol/gollum/wiki.rb +31 -0
- data/lib/smeagol/helpers/rss.rb +96 -0
- data/lib/smeagol/helpers/toc.rb +69 -0
- data/lib/smeagol/public/assets/smeagol/gollum.css +716 -0
- data/lib/smeagol/public/{smeagol → assets/smeagol}/html5.js +0 -0
- data/lib/smeagol/public/{smeagol → assets/smeagol}/pygment.css +0 -0
- data/lib/smeagol/public/assets/smeagol/template.css +631 -0
- data/lib/smeagol/repository.rb +85 -0
- data/lib/smeagol/settings.rb +302 -0
- data/lib/smeagol/templates/layouts/page.mustache +19 -0
- data/lib/smeagol/templates/layouts/versions.mustache +16 -0
- data/lib/smeagol/templates/partials/footer.mustache +17 -0
- data/lib/smeagol/templates/partials/header.mustache +47 -0
- data/lib/smeagol/templates/settings.yml +64 -0
- data/lib/smeagol/version.rb +1 -1
- data/lib/smeagol/views/base.rb +188 -27
- data/lib/smeagol/views/form.rb +56 -0
- data/lib/smeagol/views/page.rb +126 -25
- data/lib/smeagol/views/post.rb +51 -0
- data/lib/smeagol/views/versions.rb +20 -6
- data/lib/smeagol/wiki.rb +25 -45
- data/test/helper.rb +72 -8
- data/test/test_app.rb +57 -0
- data/test/test_cache.rb +10 -11
- data/test/test_init.rb +27 -0
- data/test/test_update.rb +20 -0
- data/test/test_wiki.rb +13 -10
- metadata +142 -216
- data/bin/smeagol-static +0 -115
- data/lib/file.rb +0 -10
- data/lib/smeagol/hash.rb +0 -13
- data/lib/smeagol/option_parser.rb +0 -138
- data/lib/smeagol/public/smeagol/main.css +0 -234
- data/lib/smeagol/templates/page.mustache +0 -58
- data/lib/smeagol/templates/versions.mustache +0 -50
- data/test/test_file.rb +0 -12
- data/test/test_hash.rb +0 -18
@@ -0,0 +1,51 @@
|
|
1
|
+
module Smeagol
|
2
|
+
|
3
|
+
module Views
|
4
|
+
|
5
|
+
class Post < Page
|
6
|
+
|
7
|
+
# The Gollum::Page that this view represents.
|
8
|
+
# This is the same as `#page` and `#file`.
|
9
|
+
alias post page
|
10
|
+
|
11
|
+
# Public: static href, used when generating static site.
|
12
|
+
def href
|
13
|
+
dir = ::File.dirname(page.path)
|
14
|
+
name = slug(page.filename_stripped)
|
15
|
+
ext = ::File.extname(page.path)
|
16
|
+
|
17
|
+
if dir != '.'
|
18
|
+
::File.join(dir, name, 'index.html')
|
19
|
+
else
|
20
|
+
if name == settings.index #|| 'Home'
|
21
|
+
'index.html'
|
22
|
+
else
|
23
|
+
::File.join(name, 'index.html')
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
# Internal: Apply slug rules to name.
|
29
|
+
#
|
30
|
+
# TODO: Support configurable slugs.
|
31
|
+
#
|
32
|
+
# Returns [String] Sluggified name.
|
33
|
+
def slug(name)
|
34
|
+
if /^\d\d+\-/ =~ name
|
35
|
+
dirs = []
|
36
|
+
parts = name.split('-')
|
37
|
+
while /^\d+$/ =~ parts.first
|
38
|
+
dirs << parts.shift
|
39
|
+
end
|
40
|
+
dirs << parts.join('-')
|
41
|
+
dirs.join('/')
|
42
|
+
else
|
43
|
+
name
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
@@ -1,16 +1,24 @@
|
|
1
1
|
module Smeagol
|
2
2
|
module Views
|
3
3
|
class Versions < Base
|
4
|
-
#
|
5
|
-
|
6
|
-
|
4
|
+
# Initializes a new mustache view template data object.
|
5
|
+
#
|
6
|
+
# master - Master controller, which creates all the views.
|
7
|
+
#
|
8
|
+
# Returns a new page object.
|
9
|
+
def initialize(master)
|
10
|
+
@master = master
|
11
|
+
@wiki = master.wiki
|
12
|
+
|
13
|
+
setup_template_path
|
7
14
|
end
|
8
|
-
|
15
|
+
|
9
16
|
# Public: The HTML formatted content of the page.
|
10
17
|
def content
|
11
18
|
html = "<a href=\"/\">Current</a><br/>"
|
12
19
|
wiki.repo.tags.each do |tag|
|
13
|
-
|
20
|
+
href = tag.name.start_with?('v') ? "/#{tag.name}" : "/v#{tag.name}"
|
21
|
+
html << "<a href=\"#{href}\">#{tag.name}</a><br/>"
|
14
22
|
end
|
15
23
|
html
|
16
24
|
end
|
@@ -18,8 +26,14 @@ module Smeagol
|
|
18
26
|
# Public: The URL of the project source code. This is set in the settings
|
19
27
|
# file.
|
20
28
|
def source_url
|
21
|
-
|
29
|
+
settings.source_url
|
22
30
|
end
|
31
|
+
|
32
|
+
# TODO: Allow customization ?
|
33
|
+
def layout
|
34
|
+
IO.read(LIBDIR + "/templates/layouts/versions.mustache")
|
35
|
+
end
|
36
|
+
|
23
37
|
end
|
24
38
|
end
|
25
39
|
end
|
data/lib/smeagol/wiki.rb
CHANGED
@@ -1,55 +1,35 @@
|
|
1
|
-
require 'gollum'
|
2
|
-
require 'ostruct'
|
3
|
-
require 'yaml'
|
4
|
-
|
5
1
|
module Smeagol
|
2
|
+
|
3
|
+
# Subclass of Gollum::Wiki.
|
4
|
+
#
|
5
|
+
# TODO: Techincailly this is probably not needed. Presently it only adds
|
6
|
+
# one methods.
|
7
|
+
#
|
6
8
|
class Wiki < Gollum::Wiki
|
7
|
-
# Public: Updates the wiki repository.
|
8
|
-
#
|
9
|
-
# git - The path to the git binary.
|
10
|
-
#
|
11
|
-
# Returns true if successful. Otherwise returns false.
|
12
|
-
def update(git)
|
13
|
-
# TODO: Change this method to raise errors if something goes wrong instead
|
14
|
-
# of returning a status.
|
15
|
-
|
16
|
-
# If the git executable is available, pull from master and check status.
|
17
|
-
if !git.nil?
|
18
|
-
output = `cd #{path} && #{git} pull origin master 2>/dev/null`
|
19
|
-
|
20
|
-
# Write update to log if something happened
|
21
|
-
if output.index('Already up-to-date').nil?
|
22
|
-
$stderr.puts "==Repository updated at #{Time.new()} : #{path}=="
|
23
|
-
end
|
24
|
-
|
25
|
-
return $? == 0
|
26
|
-
# Otherwise return false.
|
27
|
-
else
|
28
|
-
return false
|
29
|
-
end
|
30
|
-
end
|
31
9
|
|
32
|
-
|
10
|
+
# TODO: Wish Gollum let us set these in some other way so that a subclass
|
11
|
+
# doesn't have to do it again.
|
12
|
+
self.default_ref = 'master'
|
13
|
+
self.default_committer_name = 'Anonymous'
|
14
|
+
self.default_committer_email = 'anon@anon.com'
|
15
|
+
self.default_ws_subs = ['_','-']
|
16
|
+
|
17
|
+
# Public: The Smeagol wiki settings. These can be found in the _settings.yml
|
18
|
+
# file at the root of the repository.
|
19
|
+
# This method caches the settings for all subsequent calls.
|
33
20
|
#
|
34
|
-
#
|
21
|
+
# TODO: Should settings be coming from current file or from repo version?
|
22
|
+
# This can be tricky. Right now they come from current file, but
|
23
|
+
# In future we probably need to split this into two config files.
|
24
|
+
# One that comes from version and one that is current.
|
35
25
|
#
|
36
|
-
|
37
|
-
|
38
|
-
# The Smeagol wiki settings. These can be found in the smeagol.yaml file at
|
39
|
-
# the root of the repository.
|
26
|
+
# TODO: This might be better in Controller instead.
|
40
27
|
#
|
41
|
-
# Returns
|
28
|
+
# Returns a Settings object.
|
42
29
|
def settings
|
43
|
-
|
44
|
-
if @settings.nil?
|
45
|
-
file = "#{path}/settings.yml"
|
46
|
-
if File.readable?(file)
|
47
|
-
@settings = YAML::load(IO.read(file)).to_ostruct
|
48
|
-
else
|
49
|
-
@settings = OpenStruct.new
|
50
|
-
end
|
51
|
-
end
|
52
|
-
return @settings
|
30
|
+
@settings ||= Settings.load(path)
|
53
31
|
end
|
32
|
+
|
54
33
|
end
|
34
|
+
|
55
35
|
end
|
data/test/helper.rb
CHANGED
@@ -1,12 +1,76 @@
|
|
1
|
-
require '
|
2
|
-
require '
|
3
|
-
require '
|
1
|
+
require 'citron'
|
2
|
+
require 'ae'
|
3
|
+
require 'fileutils'
|
4
|
+
#require 'mocha'
|
5
|
+
require 'smeagol'
|
6
|
+
require 'rack/test'
|
4
7
|
|
5
|
-
|
6
|
-
|
8
|
+
# Shut-off verbose output from Smeagol.
|
9
|
+
$QUIET = true
|
10
|
+
|
11
|
+
#$:.unshift(File.dirname(__FILE__))
|
12
|
+
#require File.expand_path(File.dirname(__FILE__) + '/../lib/smeagol')
|
7
13
|
|
8
14
|
# Stop test if test wiki path is not set
|
9
|
-
if !ENV.has_key?('SMEAGOL_TEST_WIKI_PATH')
|
10
|
-
puts 'You must set SMEAGOL_TEST_WIKI_PATH in your environment to run the tests.'
|
11
|
-
exit(1);
|
15
|
+
#if !ENV.has_key?('SMEAGOL_TEST_WIKI_PATH')
|
16
|
+
# puts 'You must set SMEAGOL_TEST_WIKI_PATH in your environment to run the tests.'
|
17
|
+
# exit(1);
|
18
|
+
#end
|
19
|
+
|
20
|
+
# TODO: Use Grit instead of shell.
|
21
|
+
def test_wiki(directory='smeagol-test')
|
22
|
+
$test_wiki ||= {}
|
23
|
+
$test_wiki[directory] ||= (
|
24
|
+
directory = File.join('tmp', directory)
|
25
|
+
|
26
|
+
if ::File.directory?("#{directory}/.git")
|
27
|
+
#system "cd #{directory} && git reset --hard"
|
28
|
+
else
|
29
|
+
system "git clone https://github.com/rubyworks/smeagol-test.git #{directory}"
|
30
|
+
end
|
31
|
+
|
32
|
+
directory
|
33
|
+
)
|
34
|
+
end
|
35
|
+
|
36
|
+
=begin
|
37
|
+
class TestWiki
|
38
|
+
include Rack::Test::Methods
|
39
|
+
|
40
|
+
# TODO: Use Grit instead of shell.
|
41
|
+
def self.clone(directory='smeagol-test')
|
42
|
+
if ::File.directory?("#{directory}/.git")
|
43
|
+
#system "cd #{directory} && git reset --hard"
|
44
|
+
else
|
45
|
+
system "git clone https://github.com/rubyworks/smeagol-test.git #{directory}"
|
46
|
+
end
|
47
|
+
new(directory)
|
48
|
+
end
|
49
|
+
|
50
|
+
#
|
51
|
+
def initialize(directory)
|
52
|
+
@directory = directory
|
53
|
+
Smeagol::App.set :environment, :test
|
54
|
+
Smeagol::App.set :repositories, [Smeagol::Repository.new(:path => directory)]
|
55
|
+
Smeagol::App.set :cache_enabled, false
|
56
|
+
end
|
57
|
+
|
58
|
+
#
|
59
|
+
attr :directory
|
60
|
+
|
61
|
+
#
|
62
|
+
def app
|
63
|
+
@app ||= Rack::Builder.new do
|
64
|
+
run Smeagol::App
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
# Helper method.
|
69
|
+
def get_content(body)
|
70
|
+
body = body.gsub(/^.+<article>\n/m, '')
|
71
|
+
body = body.gsub(/\n<\/article>.+$/m, '')
|
72
|
+
return body
|
73
|
+
end
|
12
74
|
end
|
75
|
+
=end
|
76
|
+
|
data/test/test_app.rb
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
testcase Smeagol::App do
|
4
|
+
|
5
|
+
context "Testing Routes" do
|
6
|
+
include Rack::Test::Methods
|
7
|
+
|
8
|
+
# TODO: Wait, there is no `before :all`?
|
9
|
+
setup do
|
10
|
+
@wiki_directory = test_wiki('smeagol-test')
|
11
|
+
end
|
12
|
+
|
13
|
+
test "root" do
|
14
|
+
get '/'
|
15
|
+
body = last_response.body.gsub(/^\s+| +$/, '')
|
16
|
+
body.assert.include?('<html>')
|
17
|
+
body.assert.include?('<title>Smeagol - Home</title>')
|
18
|
+
body.assert.include?('<p>Welcome to the Home page!</p>')
|
19
|
+
end
|
20
|
+
|
21
|
+
test "Test Page" do
|
22
|
+
get '/Test-page'
|
23
|
+
body = last_response.body.gsub(/^\s+| +$/, '')
|
24
|
+
body.assert.include?('<h1>Test page</h1>')
|
25
|
+
body.assert.include?('<p>This is the <strong>test</strong> <em>page</em>.</p>')
|
26
|
+
body.assert.include?('<li>Item 1</li>')
|
27
|
+
end
|
28
|
+
|
29
|
+
test "Code Page" do
|
30
|
+
get '/Code-page'
|
31
|
+
body = last_response.body.gsub(/^\s+| +$/, '')
|
32
|
+
body.assert.include?('<h1>Code page</h1>')
|
33
|
+
body.assert.include?('<p>This is Ruby code:</p>')
|
34
|
+
body.assert.include?('<div class="highlight">')
|
35
|
+
body.assert.include?('<span class="k">')
|
36
|
+
body.assert.include?('<span class="s2">"Hello World!"</span>')
|
37
|
+
end
|
38
|
+
|
39
|
+
#
|
40
|
+
def app
|
41
|
+
@app ||= (
|
42
|
+
path = @wiki_directory
|
43
|
+
|
44
|
+
Rack::Builder.new do
|
45
|
+
Smeagol::App.set :environment, :test
|
46
|
+
Smeagol::App.set :repositories, [Smeagol::Repository.new(:path => path)]
|
47
|
+
Smeagol::App.set :cache_enabled, false
|
48
|
+
Smeagol::App.set :mount_path, ''
|
49
|
+
|
50
|
+
run Smeagol::App
|
51
|
+
end
|
52
|
+
)
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
data/test/test_cache.rb
CHANGED
@@ -1,32 +1,31 @@
|
|
1
|
-
require
|
2
|
-
require 'fileutils'
|
1
|
+
require 'helper'
|
3
2
|
|
4
|
-
|
5
|
-
|
6
|
-
@wiki = Smeagol::Wiki.new(
|
3
|
+
testcase Smeagol::Cache do
|
4
|
+
setup do
|
5
|
+
@wiki = Smeagol::Wiki.new(test_wiki)
|
7
6
|
@cache = Smeagol::Cache.new(@wiki)
|
8
7
|
@cache.clear()
|
9
8
|
end
|
10
9
|
|
11
|
-
|
10
|
+
test 'should show cache hit' do
|
12
11
|
@cache.set_page('Home', 'master', 'abc')
|
13
12
|
assert @cache.cache_hit?('Home')
|
14
13
|
end
|
15
14
|
|
16
|
-
|
15
|
+
test 'should show cache miss' do
|
17
16
|
assert !@cache.cache_hit?('Home')
|
18
17
|
end
|
19
18
|
|
20
|
-
|
19
|
+
test 'should show cache miss for nonexistent_page' do
|
21
20
|
assert !@cache.cache_hit?('THIS_IS_NOT_A_PAGE!')
|
22
21
|
end
|
23
22
|
|
24
|
-
|
23
|
+
test 'should cache page' do
|
25
24
|
@cache.set_page('Home', 'master', 'abc')
|
26
|
-
|
25
|
+
@cache.get_page('Home').assert == 'abc'
|
27
26
|
end
|
28
27
|
|
29
|
-
|
28
|
+
test 'should remove cache' do
|
30
29
|
@cache.set_page('Home', 'master', 'abc')
|
31
30
|
@cache.remove_page('Home')
|
32
31
|
assert !@cache.cache_hit?('Home')
|
data/test/test_init.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
testcase Smeagol::Console do
|
4
|
+
|
5
|
+
context "init" do
|
6
|
+
|
7
|
+
setup do
|
8
|
+
@test_dir = 'tmp/fresh-wiki'
|
9
|
+
FileUtils.rm_r(@test_dir) if File.exist?(@test_dir)
|
10
|
+
FileUtils.mkdir(@test_dir)
|
11
|
+
FileUtils.mkdir(File.join(@test_dir, '.git')) # fake a git repo for testing
|
12
|
+
end
|
13
|
+
|
14
|
+
test "init should create default files." do
|
15
|
+
Dir.chdir(@test_dir) do
|
16
|
+
Smeagol::Console.init()
|
17
|
+
|
18
|
+
File.assert.file?('_settings.yml')
|
19
|
+
File.assert.directory?('_layouts')
|
20
|
+
File.assert.directory?('assets/smeagol')
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
data/test/test_update.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
testcase Smeagol::Console do
|
4
|
+
|
5
|
+
context "update" do
|
6
|
+
|
7
|
+
setup do
|
8
|
+
@test_dir = test_wiki('smeagol-test')
|
9
|
+
end
|
10
|
+
|
11
|
+
test "update should fit pull down current repo" do
|
12
|
+
Dir.chdir(@test_dir) do
|
13
|
+
Smeagol::Console.update('.')
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
|
data/test/test_wiki.rb
CHANGED
@@ -1,15 +1,18 @@
|
|
1
|
-
require
|
1
|
+
require 'helper'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
def test_settings_should_be_open_struct
|
9
|
-
assert_kind_of OpenStruct, @wiki.settings
|
3
|
+
testcase Smeagol::Wiki do
|
4
|
+
|
5
|
+
setup do
|
6
|
+
@wiki = Smeagol::Wiki.new(test_wiki)
|
10
7
|
end
|
11
8
|
|
12
|
-
|
13
|
-
|
9
|
+
test 'settings should be Settings instance' do
|
10
|
+
assert Smeagol::Settings === @wiki.settings
|
14
11
|
end
|
12
|
+
|
13
|
+
#test 'settings should be read from file' do
|
14
|
+
# @wiki.settings.title.assert == 'Smeagol'
|
15
|
+
#end
|
16
|
+
|
15
17
|
end
|
18
|
+
|
metadata
CHANGED
@@ -1,272 +1,198 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: smeagol
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 5
|
9
|
-
- 9
|
10
|
-
version: 0.5.9
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.6.0
|
5
|
+
prerelease:
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Ben Johnson
|
9
|
+
- Thomas Sawyer
|
14
10
|
autorequire:
|
15
11
|
bindir: bin
|
16
12
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
13
|
+
date: 2012-07-30 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
22
16
|
name: rack
|
23
|
-
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
17
|
+
requirement: &31364960 !ruby/object:Gem::Requirement
|
25
18
|
none: false
|
26
|
-
requirements:
|
19
|
+
requirements:
|
27
20
|
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
|
30
|
-
segments:
|
31
|
-
- 1
|
32
|
-
- 2
|
33
|
-
- 0
|
34
|
-
version: 1.2.0
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '1.2'
|
35
23
|
type: :runtime
|
36
|
-
version_requirements: *id001
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: gollum
|
39
24
|
prerelease: false
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
hash: 17
|
46
|
-
segments:
|
47
|
-
- 1
|
48
|
-
- 1
|
49
|
-
- 1
|
50
|
-
version: 1.1.1
|
51
|
-
type: :runtime
|
52
|
-
version_requirements: *id002
|
53
|
-
- !ruby/object:Gem::Dependency
|
54
|
-
name: sinatra
|
55
|
-
prerelease: false
|
56
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
25
|
+
version_requirements: *31364960
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: gollum
|
28
|
+
requirement: &31364360 !ruby/object:Gem::Requirement
|
57
29
|
none: false
|
58
|
-
requirements:
|
59
|
-
- -
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
|
62
|
-
segments:
|
63
|
-
- 1
|
64
|
-
- 0
|
65
|
-
version: "1.0"
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.3'
|
66
34
|
type: :runtime
|
67
|
-
version_requirements: *id003
|
68
|
-
- !ruby/object:Gem::Dependency
|
69
|
-
name: OptionParser
|
70
35
|
prerelease: false
|
71
|
-
|
36
|
+
version_requirements: *31364360
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: sinatra
|
39
|
+
requirement: &31363760 !ruby/object:Gem::Requirement
|
72
40
|
none: false
|
73
|
-
requirements:
|
41
|
+
requirements:
|
74
42
|
- - ~>
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
|
77
|
-
segments:
|
78
|
-
- 0
|
79
|
-
- 5
|
80
|
-
- 1
|
81
|
-
version: 0.5.1
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '1.0'
|
82
45
|
type: :runtime
|
83
|
-
version_requirements: *id004
|
84
|
-
- !ruby/object:Gem::Dependency
|
85
|
-
name: daemons
|
86
46
|
prerelease: false
|
87
|
-
|
47
|
+
version_requirements: *31363760
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: rubypython
|
50
|
+
requirement: &31363180 !ruby/object:Gem::Requirement
|
88
51
|
none: false
|
89
|
-
requirements:
|
90
|
-
- -
|
91
|
-
- !ruby/object:Gem::Version
|
92
|
-
|
93
|
-
segments:
|
94
|
-
- 1
|
95
|
-
- 1
|
96
|
-
- 0
|
97
|
-
version: 1.1.0
|
52
|
+
requirements:
|
53
|
+
- - ! '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0.5'
|
98
56
|
type: :runtime
|
99
|
-
version_requirements: *id005
|
100
|
-
- !ruby/object:Gem::Dependency
|
101
|
-
name: rake
|
102
57
|
prerelease: false
|
103
|
-
|
58
|
+
version_requirements: *31363180
|
59
|
+
- !ruby/object:Gem::Dependency
|
60
|
+
name: citron
|
61
|
+
requirement: &31362700 !ruby/object:Gem::Requirement
|
104
62
|
none: false
|
105
|
-
requirements:
|
106
|
-
- -
|
107
|
-
- !ruby/object:Gem::Version
|
108
|
-
|
109
|
-
segments:
|
110
|
-
- 0
|
111
|
-
- 8
|
112
|
-
- 3
|
113
|
-
version: 0.8.3
|
63
|
+
requirements:
|
64
|
+
- - ! '>='
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '0'
|
114
67
|
type: :development
|
115
|
-
version_requirements: *id006
|
116
|
-
- !ruby/object:Gem::Dependency
|
117
|
-
name: minitest
|
118
68
|
prerelease: false
|
119
|
-
|
69
|
+
version_requirements: *31362700
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: ae
|
72
|
+
requirement: &31362140 !ruby/object:Gem::Requirement
|
120
73
|
none: false
|
121
|
-
requirements:
|
122
|
-
- -
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
|
125
|
-
segments:
|
126
|
-
- 1
|
127
|
-
- 7
|
128
|
-
- 0
|
129
|
-
version: 1.7.0
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
130
78
|
type: :development
|
131
|
-
version_requirements: *id007
|
132
|
-
- !ruby/object:Gem::Dependency
|
133
|
-
name: mocha
|
134
79
|
prerelease: false
|
135
|
-
|
80
|
+
version_requirements: *31362140
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: rack-test
|
83
|
+
requirement: &31361600 !ruby/object:Gem::Requirement
|
136
84
|
none: false
|
137
|
-
requirements:
|
138
|
-
- -
|
139
|
-
- !ruby/object:Gem::Version
|
140
|
-
|
141
|
-
segments:
|
142
|
-
- 0
|
143
|
-
- 9
|
144
|
-
- 8
|
145
|
-
version: 0.9.8
|
85
|
+
requirements:
|
86
|
+
- - ! '>='
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0'
|
146
89
|
type: :development
|
147
|
-
version_requirements: *id008
|
148
|
-
- !ruby/object:Gem::Dependency
|
149
|
-
name: cucumber
|
150
90
|
prerelease: false
|
151
|
-
|
91
|
+
version_requirements: *31361600
|
92
|
+
- !ruby/object:Gem::Dependency
|
93
|
+
name: rdiscount
|
94
|
+
requirement: &31361080 !ruby/object:Gem::Requirement
|
152
95
|
none: false
|
153
|
-
requirements:
|
154
|
-
- -
|
155
|
-
- !ruby/object:Gem::Version
|
156
|
-
|
157
|
-
segments:
|
158
|
-
- 0
|
159
|
-
- 8
|
160
|
-
- 5
|
161
|
-
version: 0.8.5
|
96
|
+
requirements:
|
97
|
+
- - ! '>='
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '0'
|
162
100
|
type: :development
|
163
|
-
version_requirements: *id009
|
164
|
-
- !ruby/object:Gem::Dependency
|
165
|
-
name: rspec
|
166
101
|
prerelease: false
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
- 1
|
175
|
-
- 3
|
176
|
-
- 0
|
177
|
-
version: 1.3.0
|
178
|
-
type: :development
|
179
|
-
version_requirements: *id010
|
180
|
-
- !ruby/object:Gem::Dependency
|
181
|
-
name: capybara
|
182
|
-
prerelease: false
|
183
|
-
requirement: &id011 !ruby/object:Gem::Requirement
|
184
|
-
none: false
|
185
|
-
requirements:
|
186
|
-
- - ~>
|
187
|
-
- !ruby/object:Gem::Version
|
188
|
-
hash: 1
|
189
|
-
segments:
|
190
|
-
- 0
|
191
|
-
- 3
|
192
|
-
- 9
|
193
|
-
version: 0.3.9
|
194
|
-
type: :development
|
195
|
-
version_requirements: *id011
|
196
|
-
description:
|
197
|
-
email:
|
102
|
+
version_requirements: *31361080
|
103
|
+
description: ! 'Smeagol is a customizable read-only Gollum wiki server.
|
104
|
+
|
105
|
+
Smeagol makes it possible to maintain a standalone website,
|
106
|
+
|
107
|
+
but update it through the Gollum wiki interface, e.g. via GitHub.'
|
108
|
+
email:
|
198
109
|
- benbjohnson@yahoo.com
|
199
|
-
|
200
|
-
|
110
|
+
- transfire@gmail.com
|
111
|
+
executables:
|
201
112
|
- smeagold
|
202
|
-
- smeagol-
|
113
|
+
- smeagol-update
|
114
|
+
- smeagol
|
115
|
+
- smeagol-preview
|
116
|
+
- smeagol-serve
|
117
|
+
- smeagol-init
|
203
118
|
extensions: []
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
119
|
+
extra_rdoc_files:
|
120
|
+
- LICENSE.txt
|
121
|
+
- HISTORY.md
|
122
|
+
- README.md
|
123
|
+
files:
|
124
|
+
- .ruby
|
125
|
+
- .yardopts
|
126
|
+
- bin/smeagol
|
127
|
+
- bin/smeagol-init
|
128
|
+
- bin/smeagol-preview
|
129
|
+
- bin/smeagol-serve
|
130
|
+
- bin/smeagol-update
|
131
|
+
- bin/smeagold
|
209
132
|
- lib/smeagol/app.rb
|
210
133
|
- lib/smeagol/cache.rb
|
211
|
-
- lib/smeagol/
|
212
|
-
- lib/smeagol/
|
213
|
-
- lib/smeagol/
|
214
|
-
- lib/smeagol/
|
215
|
-
- lib/smeagol/
|
216
|
-
- lib/smeagol/
|
217
|
-
- lib/smeagol/
|
134
|
+
- lib/smeagol/cli.rb
|
135
|
+
- lib/smeagol/config.rb
|
136
|
+
- lib/smeagol/console.rb
|
137
|
+
- lib/smeagol/controller.rb
|
138
|
+
- lib/smeagol/core_ext.rb
|
139
|
+
- lib/smeagol/gollum/blob_entry.rb
|
140
|
+
- lib/smeagol/gollum/file.rb
|
141
|
+
- lib/smeagol/gollum/page.rb
|
142
|
+
- lib/smeagol/gollum/wiki.rb
|
143
|
+
- lib/smeagol/helpers/rss.rb
|
144
|
+
- lib/smeagol/helpers/toc.rb
|
145
|
+
- lib/smeagol/public/assets/smeagol/gollum.css
|
146
|
+
- lib/smeagol/public/assets/smeagol/html5.js
|
147
|
+
- lib/smeagol/public/assets/smeagol/pygment.css
|
148
|
+
- lib/smeagol/public/assets/smeagol/template.css
|
149
|
+
- lib/smeagol/repository.rb
|
150
|
+
- lib/smeagol/settings.rb
|
151
|
+
- lib/smeagol/templates/layouts/page.mustache
|
152
|
+
- lib/smeagol/templates/layouts/versions.mustache
|
153
|
+
- lib/smeagol/templates/partials/footer.mustache
|
154
|
+
- lib/smeagol/templates/partials/header.mustache
|
155
|
+
- lib/smeagol/templates/settings.yml
|
218
156
|
- lib/smeagol/version.rb
|
219
157
|
- lib/smeagol/views/base.rb
|
158
|
+
- lib/smeagol/views/form.rb
|
220
159
|
- lib/smeagol/views/page.rb
|
160
|
+
- lib/smeagol/views/post.rb
|
221
161
|
- lib/smeagol/views/versions.rb
|
222
162
|
- lib/smeagol/wiki.rb
|
223
163
|
- lib/smeagol.rb
|
224
|
-
- README.md
|
225
164
|
- test/helper.rb
|
165
|
+
- test/test_app.rb
|
226
166
|
- test/test_cache.rb
|
227
|
-
- test/
|
228
|
-
- test/
|
167
|
+
- test/test_init.rb
|
168
|
+
- test/test_update.rb
|
229
169
|
- test/test_wiki.rb
|
230
|
-
-
|
231
|
-
-
|
232
|
-
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
170
|
+
- HISTORY.md
|
171
|
+
- README.md
|
172
|
+
- LICENSE.txt
|
173
|
+
homepage: http://rubyworks.github.com/smeagol
|
174
|
+
licenses:
|
175
|
+
- BSD-2-Clause
|
237
176
|
post_install_message:
|
238
177
|
rdoc_options: []
|
239
|
-
|
240
|
-
require_paths:
|
178
|
+
require_paths:
|
241
179
|
- lib
|
242
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
180
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
243
181
|
none: false
|
244
|
-
requirements:
|
245
|
-
- -
|
246
|
-
- !ruby/object:Gem::Version
|
247
|
-
|
248
|
-
|
249
|
-
- 0
|
250
|
-
version: "0"
|
251
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
182
|
+
requirements:
|
183
|
+
- - ! '>='
|
184
|
+
- !ruby/object:Gem::Version
|
185
|
+
version: '0'
|
186
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
252
187
|
none: false
|
253
|
-
requirements:
|
254
|
-
- -
|
255
|
-
- !ruby/object:Gem::Version
|
256
|
-
|
257
|
-
segments:
|
258
|
-
- 0
|
259
|
-
version: "0"
|
188
|
+
requirements:
|
189
|
+
- - ! '>='
|
190
|
+
- !ruby/object:Gem::Version
|
191
|
+
version: '0'
|
260
192
|
requirements: []
|
261
|
-
|
262
193
|
rubyforge_project:
|
263
|
-
rubygems_version: 1.
|
194
|
+
rubygems_version: 1.8.11
|
264
195
|
signing_key:
|
265
196
|
specification_version: 3
|
266
|
-
summary:
|
267
|
-
test_files:
|
268
|
-
- test/helper.rb
|
269
|
-
- test/test_cache.rb
|
270
|
-
- test/test_file.rb
|
271
|
-
- test/test_hash.rb
|
272
|
-
- test/test_wiki.rb
|
197
|
+
summary: Wiki Cum Website
|
198
|
+
test_files: []
|