smeagol 0.5.9 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|