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.
Files changed (59) hide show
  1. data/.ruby +80 -0
  2. data/.yardopts +9 -0
  3. data/HISTORY.md +147 -0
  4. data/LICENSE.txt +30 -0
  5. data/README.md +132 -26
  6. data/bin/smeagol +9 -39
  7. data/bin/smeagol-init +3 -0
  8. data/bin/smeagol-preview +4 -0
  9. data/bin/smeagol-serve +4 -0
  10. data/bin/smeagol-update +4 -0
  11. data/bin/smeagold +1 -4
  12. data/lib/smeagol.rb +77 -6
  13. data/lib/smeagol/app.rb +121 -75
  14. data/lib/smeagol/cache.rb +43 -24
  15. data/lib/smeagol/cli.rb +166 -0
  16. data/lib/smeagol/config.rb +154 -0
  17. data/lib/smeagol/console.rb +369 -0
  18. data/lib/smeagol/controller.rb +275 -0
  19. data/lib/smeagol/core_ext.rb +12 -0
  20. data/lib/smeagol/gollum/blob_entry.rb +17 -0
  21. data/lib/smeagol/gollum/file.rb +44 -0
  22. data/lib/smeagol/gollum/page.rb +47 -0
  23. data/lib/smeagol/gollum/wiki.rb +31 -0
  24. data/lib/smeagol/helpers/rss.rb +96 -0
  25. data/lib/smeagol/helpers/toc.rb +69 -0
  26. data/lib/smeagol/public/assets/smeagol/gollum.css +716 -0
  27. data/lib/smeagol/public/{smeagol → assets/smeagol}/html5.js +0 -0
  28. data/lib/smeagol/public/{smeagol → assets/smeagol}/pygment.css +0 -0
  29. data/lib/smeagol/public/assets/smeagol/template.css +631 -0
  30. data/lib/smeagol/repository.rb +85 -0
  31. data/lib/smeagol/settings.rb +302 -0
  32. data/lib/smeagol/templates/layouts/page.mustache +19 -0
  33. data/lib/smeagol/templates/layouts/versions.mustache +16 -0
  34. data/lib/smeagol/templates/partials/footer.mustache +17 -0
  35. data/lib/smeagol/templates/partials/header.mustache +47 -0
  36. data/lib/smeagol/templates/settings.yml +64 -0
  37. data/lib/smeagol/version.rb +1 -1
  38. data/lib/smeagol/views/base.rb +188 -27
  39. data/lib/smeagol/views/form.rb +56 -0
  40. data/lib/smeagol/views/page.rb +126 -25
  41. data/lib/smeagol/views/post.rb +51 -0
  42. data/lib/smeagol/views/versions.rb +20 -6
  43. data/lib/smeagol/wiki.rb +25 -45
  44. data/test/helper.rb +72 -8
  45. data/test/test_app.rb +57 -0
  46. data/test/test_cache.rb +10 -11
  47. data/test/test_init.rb +27 -0
  48. data/test/test_update.rb +20 -0
  49. data/test/test_wiki.rb +13 -10
  50. metadata +142 -216
  51. data/bin/smeagol-static +0 -115
  52. data/lib/file.rb +0 -10
  53. data/lib/smeagol/hash.rb +0 -13
  54. data/lib/smeagol/option_parser.rb +0 -138
  55. data/lib/smeagol/public/smeagol/main.css +0 -234
  56. data/lib/smeagol/templates/page.mustache +0 -58
  57. data/lib/smeagol/templates/versions.mustache +0 -50
  58. data/test/test_file.rb +0 -12
  59. data/test/test_hash.rb +0 -18
@@ -1,58 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
5
- <title>{{wiki_title}} - {{page_title}}</title>
6
- <link rel="stylesheet" href="/smeagol/main.css" type="text/css"/>
7
- <link rel="stylesheet" href="/smeagol/pygment.css" type="text/css"/>
8
-
9
- <!--[if lt IE 9]>
10
- <script src="/smeagol/html5.js"></script>
11
- <![endif]-->
12
-
13
- {{#tracking_id}}
14
- <script type="text/javascript">
15
- var _gaq = _gaq || [];
16
- _gaq.push(['_setAccount', '{{{tracking_id}}}']);
17
- _gaq.push(['_trackPageview']);
18
-
19
- (function() {
20
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
21
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
22
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
23
- })();
24
- </script>
25
- {{/tracking_id}}
26
- </head>
27
-
28
- <body>
29
- {{{ribbon_html}}}
30
-
31
- <div id="container">
32
- <header>
33
- <h1>{{wiki_title}}</h1>
34
- </header>
35
-
36
- <nav>
37
- {{{menu_html}}}
38
- </nav>
39
-
40
- <article>
41
- {{#not_home?}}
42
- <h1>{{page_title}}</h1>
43
- {{/not_home?}}
44
- <div id="content">
45
- {{{content}}}
46
- </div>
47
- </article>
48
-
49
- <footer>
50
- <small>Last edited by <b>{{author}}</b> on {{date}}.</small>
51
- <small style="float:right;">
52
- This site is a <a href="https://github.com/blog/699-making-github-more-open-git-backed-wikis">GitHub Wiki</a>
53
- mirror powered by <a href="http://smeagolrb.info">Smeagol</a>.
54
- </small>
55
- </footer>
56
- </div>
57
- </body>
58
- </html>
@@ -1,50 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
5
- <title>{{wiki_title}} - Versions</title>
6
- <link rel="stylesheet" href="/smeagol/main.css" type="text/css"/>
7
-
8
- <!--[if lt IE 9]>
9
- <script src="/smeagol/html5.js"></script>
10
- <![endif]-->
11
-
12
- {{#tracking_id}}
13
- <script type="text/javascript">
14
- var _gaq = _gaq || [];
15
- _gaq.push(['_setAccount', '{{{tracking_id}}}']);
16
- _gaq.push(['_trackPageview']);
17
-
18
- (function() {
19
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
20
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
21
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
22
- })();
23
- </script>
24
- {{/tracking_id}}
25
- </head>
26
-
27
- <body>
28
- {{{ribbon_html}}}
29
-
30
- <div id="container">
31
- <header>
32
- <h1>{{wiki_title}}</h1>
33
- </header>
34
-
35
- <nav>
36
- {{{menu_html}}}
37
- </nav>
38
-
39
- <article>
40
- <h1>Versions</h1>
41
- <div id="content">
42
- {{{content}}}
43
- </div>
44
- </article>
45
-
46
- <footer>
47
- </footer>
48
- </div>
49
- </body>
50
- </html>
@@ -1,12 +0,0 @@
1
- require File.dirname(__FILE__) + '/helper'
2
-
3
- class FileTestCase < MiniTest::Unit::TestCase
4
- def test_sanitize_should_remove_parent_refs
5
- assert_equal '/', File.sanitize_path('../')
6
- assert_equal '/', File.sanitize_path('/..')
7
- assert_equal '//', File.sanitize_path('/../')
8
- assert_equal '', File.sanitize_path('..')
9
- assert_equal '..abc', File.sanitize_path('..abc')
10
- assert_equal '/this/is//a/test', File.sanitize_path('/this/is/../a/test')
11
- end
12
- end
@@ -1,18 +0,0 @@
1
- require File.dirname(__FILE__) + '/helper'
2
-
3
- class HashTestCase < MiniTest::Unit::TestCase
4
- def test_create_ostruct_root_copy
5
- hash = {:a => 1}
6
- assert_kind_of OpenStruct, hash.to_ostruct
7
- end
8
-
9
- def test_should_create_deep_copy_hashes
10
- hash = {:a => 1, :b => {:c => 2}}
11
- assert_kind_of OpenStruct, hash.to_ostruct.b
12
- end
13
-
14
- def test_should_create_deep_copy_arrays
15
- hash = {:a => 1, :b => [{:c => 2}]}
16
- assert_kind_of OpenStruct, hash.to_ostruct.b[0]
17
- end
18
- end