smeagol 0.5.9 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
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