henshin 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (176) hide show
  1. data/.document +5 -0
  2. data/.gitignore +21 -0
  3. data/.yardoc/checksums +12 -0
  4. data/.yardoc/objects/Hash.dat +0 -0
  5. data/.yardoc/objects/Hash/to_options_i.dat +0 -0
  6. data/.yardoc/objects/Henshin.dat +0 -0
  7. data/.yardoc/objects/Henshin/CSSGenerator.dat +0 -0
  8. data/.yardoc/objects/Henshin/CSSGenerator/generate_i.dat +0 -0
  9. data/.yardoc/objects/Henshin/Defaults.dat +0 -0
  10. data/.yardoc/objects/Henshin/Gen.dat +0 -0
  11. data/.yardoc/objects/Henshin/Gen/config_3D_i.dat +0 -0
  12. data/.yardoc/objects/Henshin/Gen/config_i.dat +0 -0
  13. data/.yardoc/objects/Henshin/Gen/content_3D_i.dat +0 -0
  14. data/.yardoc/objects/Henshin/Gen/content_i.dat +0 -0
  15. data/.yardoc/objects/Henshin/Gen/date_3D_i.dat +0 -0
  16. data/.yardoc/objects/Henshin/Gen/date_i.dat +0 -0
  17. data/.yardoc/objects/Henshin/Gen/extension_3D_i.dat +0 -0
  18. data/.yardoc/objects/Henshin/Gen/extension_i.dat +0 -0
  19. data/.yardoc/objects/Henshin/Gen/initialize_i.dat +0 -0
  20. data/.yardoc/objects/Henshin/Gen/layout_3D_i.dat +0 -0
  21. data/.yardoc/objects/Henshin/Gen/layout_i.dat +0 -0
  22. data/.yardoc/objects/Henshin/Gen/override_i.dat +0 -0
  23. data/.yardoc/objects/Henshin/Gen/path_3D_i.dat +0 -0
  24. data/.yardoc/objects/Henshin/Gen/path_i.dat +0 -0
  25. data/.yardoc/objects/Henshin/Gen/payload_i.dat +0 -0
  26. data/.yardoc/objects/Henshin/Gen/process_i.dat +0 -0
  27. data/.yardoc/objects/Henshin/Gen/read_yaml_i.dat +0 -0
  28. data/.yardoc/objects/Henshin/Gen/render_i.dat +0 -0
  29. data/.yardoc/objects/Henshin/Gen/site_3D_i.dat +0 -0
  30. data/.yardoc/objects/Henshin/Gen/site_i.dat +0 -0
  31. data/.yardoc/objects/Henshin/Gen/title_3D_i.dat +0 -0
  32. data/.yardoc/objects/Henshin/Gen/title_i.dat +0 -0
  33. data/.yardoc/objects/Henshin/Gen/write_i.dat +0 -0
  34. data/.yardoc/objects/Henshin/HTMLGenerator.dat +0 -0
  35. data/.yardoc/objects/Henshin/HTMLGenerator/generate_i.dat +0 -0
  36. data/.yardoc/objects/Henshin/JSGenerator.dat +0 -0
  37. data/.yardoc/objects/Henshin/JSGenerator/generate_i.dat +0 -0
  38. data/.yardoc/objects/Henshin/LayoutParser.dat +0 -0
  39. data/.yardoc/objects/Henshin/LayoutParser/generate_i.dat +0 -0
  40. data/.yardoc/objects/Henshin/Post.dat +0 -0
  41. data/.yardoc/objects/Henshin/Post/author_3D_i.dat +0 -0
  42. data/.yardoc/objects/Henshin/Post/author_i.dat +0 -0
  43. data/.yardoc/objects/Henshin/Post/category_3D_i.dat +0 -0
  44. data/.yardoc/objects/Henshin/Post/category_i.dat +0 -0
  45. data/.yardoc/objects/Henshin/Post/date_3D_i.dat +0 -0
  46. data/.yardoc/objects/Henshin/Post/date_i.dat +0 -0
  47. data/.yardoc/objects/Henshin/Post/initialize_i.dat +0 -0
  48. data/.yardoc/objects/Henshin/Post/override_i.dat +0 -0
  49. data/.yardoc/objects/Henshin/Post/payload_i.dat +0 -0
  50. data/.yardoc/objects/Henshin/Post/permalink_i.dat +0 -0
  51. data/.yardoc/objects/Henshin/Post/process_i.dat +0 -0
  52. data/.yardoc/objects/Henshin/Post/read_name_i.dat +0 -0
  53. data/.yardoc/objects/Henshin/Post/read_yaml_i.dat +0 -0
  54. data/.yardoc/objects/Henshin/Post/tags_3D_i.dat +0 -0
  55. data/.yardoc/objects/Henshin/Post/tags_i.dat +0 -0
  56. data/.yardoc/objects/Henshin/Post/title_3D_i.dat +0 -0
  57. data/.yardoc/objects/Henshin/Post/title_i.dat +0 -0
  58. data/.yardoc/objects/Henshin/Post/write_i.dat +0 -0
  59. data/.yardoc/objects/Henshin/Site.dat +0 -0
  60. data/.yardoc/objects/Henshin/Site/archives_3D_i.dat +0 -0
  61. data/.yardoc/objects/Henshin/Site/archives_i.dat +0 -0
  62. data/.yardoc/objects/Henshin/Site/categories_3D_i.dat +0 -0
  63. data/.yardoc/objects/Henshin/Site/categories_i.dat +0 -0
  64. data/.yardoc/objects/Henshin/Site/config_3D_i.dat +0 -0
  65. data/.yardoc/objects/Henshin/Site/config_i.dat +0 -0
  66. data/.yardoc/objects/Henshin/Site/gens_3D_i.dat +0 -0
  67. data/.yardoc/objects/Henshin/Site/gens_i.dat +0 -0
  68. data/.yardoc/objects/Henshin/Site/initialize_i.dat +0 -0
  69. data/.yardoc/objects/Henshin/Site/layouts_3D_i.dat +0 -0
  70. data/.yardoc/objects/Henshin/Site/layouts_i.dat +0 -0
  71. data/.yardoc/objects/Henshin/Site/payload_i.dat +0 -0
  72. data/.yardoc/objects/Henshin/Site/plugins_3D_i.dat +0 -0
  73. data/.yardoc/objects/Henshin/Site/plugins_i.dat +0 -0
  74. data/.yardoc/objects/Henshin/Site/posts_3D_i.dat +0 -0
  75. data/.yardoc/objects/Henshin/Site/posts_i.dat +0 -0
  76. data/.yardoc/objects/Henshin/Site/process_i.dat +0 -0
  77. data/.yardoc/objects/Henshin/Site/read_i.dat +0 -0
  78. data/.yardoc/objects/Henshin/Site/read_layouts_i.dat +0 -0
  79. data/.yardoc/objects/Henshin/Site/read_others_i.dat +0 -0
  80. data/.yardoc/objects/Henshin/Site/read_posts_i.dat +0 -0
  81. data/.yardoc/objects/Henshin/Site/render_i.dat +0 -0
  82. data/.yardoc/objects/Henshin/Site/reset_i.dat +0 -0
  83. data/.yardoc/objects/Henshin/Site/statics_3D_i.dat +0 -0
  84. data/.yardoc/objects/Henshin/Site/statics_i.dat +0 -0
  85. data/.yardoc/objects/Henshin/Site/tags_3D_i.dat +0 -0
  86. data/.yardoc/objects/Henshin/Site/tags_i.dat +0 -0
  87. data/.yardoc/objects/Henshin/Site/write_i.dat +0 -0
  88. data/.yardoc/objects/Henshin/StandardPlugin.dat +0 -0
  89. data/.yardoc/objects/Henshin/configure_c.dat +0 -0
  90. data/.yardoc/objects/Henshin/extensions_c.dat +0 -0
  91. data/.yardoc/objects/Henshin/load_plugins_c.dat +0 -0
  92. data/.yardoc/objects/LiquidPlugin.dat +0 -0
  93. data/.yardoc/objects/LiquidPlugin/extensions_3D_i.dat +0 -0
  94. data/.yardoc/objects/LiquidPlugin/extensions_i.dat +0 -0
  95. data/.yardoc/objects/LiquidPlugin/generate_i.dat +0 -0
  96. data/.yardoc/objects/LiquidPlugin/initialize_i.dat +0 -0
  97. data/.yardoc/objects/LiquidPlugin/read_i.dat +0 -0
  98. data/.yardoc/objects/MarukuPlugin.dat +0 -0
  99. data/.yardoc/objects/MarukuPlugin/extensions_3D_i.dat +0 -0
  100. data/.yardoc/objects/MarukuPlugin/extensions_i.dat +0 -0
  101. data/.yardoc/objects/MarukuPlugin/generate_i.dat +0 -0
  102. data/.yardoc/objects/MarukuPlugin/initialize_i.dat +0 -0
  103. data/.yardoc/objects/PygmentsPlugin.dat +0 -0
  104. data/.yardoc/objects/PygmentsPlugin/extensions_3D_i.dat +0 -0
  105. data/.yardoc/objects/PygmentsPlugin/extensions_i.dat +0 -0
  106. data/.yardoc/objects/PygmentsPlugin/generate_i.dat +0 -0
  107. data/.yardoc/objects/PygmentsPlugin/initialize_i.dat +0 -0
  108. data/.yardoc/objects/SassPlugin.dat +0 -0
  109. data/.yardoc/objects/SassPlugin/extensions_3D_i.dat +0 -0
  110. data/.yardoc/objects/SassPlugin/extensions_i.dat +0 -0
  111. data/.yardoc/objects/SassPlugin/generate_i.dat +0 -0
  112. data/.yardoc/objects/SassPlugin/initialize_i.dat +0 -0
  113. data/.yardoc/objects/String.dat +0 -0
  114. data/.yardoc/objects/String/directory_i.dat +0 -0
  115. data/.yardoc/objects/String/extension_i.dat +0 -0
  116. data/.yardoc/objects/String/file_name_i.dat +0 -0
  117. data/.yardoc/objects/String/slugify_i.dat +0 -0
  118. data/.yardoc/objects/root.dat +0 -0
  119. data/.yardoc/proxy_types +2 -0
  120. data/LICENSE +20 -0
  121. data/README.markdown +73 -0
  122. data/Rakefile +53 -0
  123. data/VERSION +1 -0
  124. data/bin/henshin +31 -0
  125. data/doc/Hash.html +179 -0
  126. data/doc/Henshin.html +479 -0
  127. data/doc/Henshin/CSSGenerator.html +186 -0
  128. data/doc/Henshin/Gen.html +1225 -0
  129. data/doc/Henshin/HTMLGenerator.html +186 -0
  130. data/doc/Henshin/JSGenerator.html +182 -0
  131. data/doc/Henshin/LayoutParser.html +186 -0
  132. data/doc/Henshin/Post.html +1159 -0
  133. data/doc/Henshin/Site.html +1462 -0
  134. data/doc/Henshin/StandardPlugin.html +99 -0
  135. data/doc/LiquidPlugin.html +399 -0
  136. data/doc/MarukuPlugin.html +325 -0
  137. data/doc/PygmentsPlugin.html +325 -0
  138. data/doc/SassPlugin.html +325 -0
  139. data/doc/String.html +371 -0
  140. data/doc/_index.html +239 -0
  141. data/doc/class_list.html +36 -0
  142. data/doc/css/common.css +1 -0
  143. data/doc/css/full_list.css +50 -0
  144. data/doc/css/style.css +273 -0
  145. data/doc/file.README.html +131 -0
  146. data/doc/file_list.html +38 -0
  147. data/doc/frames.html +13 -0
  148. data/doc/index.html +131 -0
  149. data/doc/js/app.js +111 -0
  150. data/doc/js/full_list.js +117 -0
  151. data/doc/js/jquery.js +19 -0
  152. data/doc/method_list.html +611 -0
  153. data/doc/top-level-namespace.html +89 -0
  154. data/henshin.gemspec +224 -0
  155. data/lib/henshin.rb +74 -0
  156. data/lib/henshin/ext.rb +42 -0
  157. data/lib/henshin/gen.rb +89 -0
  158. data/lib/henshin/plugin.rb +43 -0
  159. data/lib/henshin/plugins/liquid.rb +27 -0
  160. data/lib/henshin/plugins/maruku.rb +16 -0
  161. data/lib/henshin/plugins/pygments.rb +15 -0
  162. data/lib/henshin/plugins/sass.rb +16 -0
  163. data/lib/henshin/post.rb +127 -0
  164. data/lib/henshin/site.rb +112 -0
  165. data/test/helper.rb +10 -0
  166. data/test/site/_site/2010/10/20-testing-stuff/index.html +24 -0
  167. data/test/site/_site/2010/5/15-lorem-ipsum/index.html +24 -0
  168. data/test/site/_site/index.html +29 -0
  169. data/test/site/index.html +12 -0
  170. data/test/site/layouts/main.html +15 -0
  171. data/test/site/layouts/post.html +24 -0
  172. data/test/site/options.yaml +11 -0
  173. data/test/site/posts/Testing-Stuff.markdown +7 -0
  174. data/test/site/posts/lorem-ipsum.markdown +7 -0
  175. data/test/test_henshin.rb +7 -0
  176. metadata +261 -0
@@ -0,0 +1,89 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta name="Content-Type" content="text/html; charset=utf-8" />
6
+ <title>Top Level Namespace</title>
7
+ <link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
8
+ <link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
9
+
10
+ <script type="text/javascript" charset="utf-8">
11
+ relpath = '';
12
+ if (relpath != '') relpath += '/';
13
+ </script>
14
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
15
+ <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
16
+
17
+ </head>
18
+ <body>
19
+ <script type="text/javascript" charset="utf-8">
20
+ if (window.top.frames.main) document.body.className = 'frames';
21
+ </script>
22
+
23
+ <div id="header">
24
+ <div id="menu">
25
+
26
+ <a href="_index.html">Index</a> &raquo;
27
+
28
+
29
+ <span class="title">Top Level Namespace</span>
30
+
31
+
32
+ <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
33
+ </div>
34
+
35
+ <div id="search">
36
+ <a id="class_list_link" href="#">Class List</a>
37
+ <a id="method_list_link" href="#">Method List</a>
38
+ <a id ="file_list_link" href="#">File List</a>
39
+ </div>
40
+
41
+ <div class="clear"></div>
42
+ </div>
43
+
44
+ <iframe id="search_frame"></iframe>
45
+
46
+ <div id="content"><h1>Top Level Namespace
47
+
48
+
49
+ </h1>
50
+
51
+ <dl class="box">
52
+
53
+
54
+
55
+
56
+
57
+
58
+
59
+
60
+ </dl>
61
+ <div class="clear"></div>
62
+
63
+ <h2>Defined Under Namespace</h2>
64
+ <p class="children">
65
+
66
+
67
+ <strong class="modules">Modules:</strong> <a href="Henshin.html" title="Henshin (module)">Henshin</a>
68
+
69
+
70
+
71
+ <strong class="classes">Classes:</strong> <a href="Hash.html" title="Hash (class)">Hash</a>, <a href="LiquidPlugin.html" title="LiquidPlugin (class)">LiquidPlugin</a>, <a href="MarukuPlugin.html" title="MarukuPlugin (class)">MarukuPlugin</a>, <a href="PygmentsPlugin.html" title="PygmentsPlugin (class)">PygmentsPlugin</a>, <a href="SassPlugin.html" title="SassPlugin (class)">SassPlugin</a>, <a href="String.html" title="String (class)">String</a>
72
+
73
+
74
+ </p>
75
+
76
+
77
+
78
+
79
+
80
+ </div>
81
+
82
+ <div id="footer">
83
+ Generated on Wed May 19 14:45:03 2010 by
84
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool">yard</a>
85
+ 0.5.4 (ruby-1.9.1).
86
+ </div>
87
+
88
+ </body>
89
+ </html>
@@ -0,0 +1,224 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{henshin}
8
+ s.version = "0.0.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["hawx"]
12
+ s.date = %q{2010-05-19}
13
+ s.default_executable = %q{henshin}
14
+ s.description = %q{Henshin is a static site generator, with a plugin system and more}
15
+ s.email = %q{m@hawx.me}
16
+ s.executables = ["henshin"]
17
+ s.extra_rdoc_files = [
18
+ "LICENSE",
19
+ "README.markdown"
20
+ ]
21
+ s.files = [
22
+ ".document",
23
+ ".gitignore",
24
+ ".yardoc/checksums",
25
+ ".yardoc/objects/Hash.dat",
26
+ ".yardoc/objects/Hash/to_options_i.dat",
27
+ ".yardoc/objects/Henshin.dat",
28
+ ".yardoc/objects/Henshin/CSSGenerator.dat",
29
+ ".yardoc/objects/Henshin/CSSGenerator/generate_i.dat",
30
+ ".yardoc/objects/Henshin/Defaults.dat",
31
+ ".yardoc/objects/Henshin/Gen.dat",
32
+ ".yardoc/objects/Henshin/Gen/config_3D_i.dat",
33
+ ".yardoc/objects/Henshin/Gen/config_i.dat",
34
+ ".yardoc/objects/Henshin/Gen/content_3D_i.dat",
35
+ ".yardoc/objects/Henshin/Gen/content_i.dat",
36
+ ".yardoc/objects/Henshin/Gen/date_3D_i.dat",
37
+ ".yardoc/objects/Henshin/Gen/date_i.dat",
38
+ ".yardoc/objects/Henshin/Gen/extension_3D_i.dat",
39
+ ".yardoc/objects/Henshin/Gen/extension_i.dat",
40
+ ".yardoc/objects/Henshin/Gen/initialize_i.dat",
41
+ ".yardoc/objects/Henshin/Gen/layout_3D_i.dat",
42
+ ".yardoc/objects/Henshin/Gen/layout_i.dat",
43
+ ".yardoc/objects/Henshin/Gen/override_i.dat",
44
+ ".yardoc/objects/Henshin/Gen/path_3D_i.dat",
45
+ ".yardoc/objects/Henshin/Gen/path_i.dat",
46
+ ".yardoc/objects/Henshin/Gen/payload_i.dat",
47
+ ".yardoc/objects/Henshin/Gen/process_i.dat",
48
+ ".yardoc/objects/Henshin/Gen/read_yaml_i.dat",
49
+ ".yardoc/objects/Henshin/Gen/render_i.dat",
50
+ ".yardoc/objects/Henshin/Gen/site_3D_i.dat",
51
+ ".yardoc/objects/Henshin/Gen/site_i.dat",
52
+ ".yardoc/objects/Henshin/Gen/title_3D_i.dat",
53
+ ".yardoc/objects/Henshin/Gen/title_i.dat",
54
+ ".yardoc/objects/Henshin/Gen/write_i.dat",
55
+ ".yardoc/objects/Henshin/HTMLGenerator.dat",
56
+ ".yardoc/objects/Henshin/HTMLGenerator/generate_i.dat",
57
+ ".yardoc/objects/Henshin/JSGenerator.dat",
58
+ ".yardoc/objects/Henshin/JSGenerator/generate_i.dat",
59
+ ".yardoc/objects/Henshin/LayoutParser.dat",
60
+ ".yardoc/objects/Henshin/LayoutParser/generate_i.dat",
61
+ ".yardoc/objects/Henshin/Post.dat",
62
+ ".yardoc/objects/Henshin/Post/author_3D_i.dat",
63
+ ".yardoc/objects/Henshin/Post/author_i.dat",
64
+ ".yardoc/objects/Henshin/Post/category_3D_i.dat",
65
+ ".yardoc/objects/Henshin/Post/category_i.dat",
66
+ ".yardoc/objects/Henshin/Post/date_3D_i.dat",
67
+ ".yardoc/objects/Henshin/Post/date_i.dat",
68
+ ".yardoc/objects/Henshin/Post/initialize_i.dat",
69
+ ".yardoc/objects/Henshin/Post/override_i.dat",
70
+ ".yardoc/objects/Henshin/Post/payload_i.dat",
71
+ ".yardoc/objects/Henshin/Post/permalink_i.dat",
72
+ ".yardoc/objects/Henshin/Post/process_i.dat",
73
+ ".yardoc/objects/Henshin/Post/read_name_i.dat",
74
+ ".yardoc/objects/Henshin/Post/read_yaml_i.dat",
75
+ ".yardoc/objects/Henshin/Post/tags_3D_i.dat",
76
+ ".yardoc/objects/Henshin/Post/tags_i.dat",
77
+ ".yardoc/objects/Henshin/Post/title_3D_i.dat",
78
+ ".yardoc/objects/Henshin/Post/title_i.dat",
79
+ ".yardoc/objects/Henshin/Post/write_i.dat",
80
+ ".yardoc/objects/Henshin/Site.dat",
81
+ ".yardoc/objects/Henshin/Site/archives_3D_i.dat",
82
+ ".yardoc/objects/Henshin/Site/archives_i.dat",
83
+ ".yardoc/objects/Henshin/Site/categories_3D_i.dat",
84
+ ".yardoc/objects/Henshin/Site/categories_i.dat",
85
+ ".yardoc/objects/Henshin/Site/config_3D_i.dat",
86
+ ".yardoc/objects/Henshin/Site/config_i.dat",
87
+ ".yardoc/objects/Henshin/Site/gens_3D_i.dat",
88
+ ".yardoc/objects/Henshin/Site/gens_i.dat",
89
+ ".yardoc/objects/Henshin/Site/initialize_i.dat",
90
+ ".yardoc/objects/Henshin/Site/layouts_3D_i.dat",
91
+ ".yardoc/objects/Henshin/Site/layouts_i.dat",
92
+ ".yardoc/objects/Henshin/Site/payload_i.dat",
93
+ ".yardoc/objects/Henshin/Site/plugins_3D_i.dat",
94
+ ".yardoc/objects/Henshin/Site/plugins_i.dat",
95
+ ".yardoc/objects/Henshin/Site/posts_3D_i.dat",
96
+ ".yardoc/objects/Henshin/Site/posts_i.dat",
97
+ ".yardoc/objects/Henshin/Site/process_i.dat",
98
+ ".yardoc/objects/Henshin/Site/read_i.dat",
99
+ ".yardoc/objects/Henshin/Site/read_layouts_i.dat",
100
+ ".yardoc/objects/Henshin/Site/read_others_i.dat",
101
+ ".yardoc/objects/Henshin/Site/read_posts_i.dat",
102
+ ".yardoc/objects/Henshin/Site/render_i.dat",
103
+ ".yardoc/objects/Henshin/Site/reset_i.dat",
104
+ ".yardoc/objects/Henshin/Site/statics_3D_i.dat",
105
+ ".yardoc/objects/Henshin/Site/statics_i.dat",
106
+ ".yardoc/objects/Henshin/Site/tags_3D_i.dat",
107
+ ".yardoc/objects/Henshin/Site/tags_i.dat",
108
+ ".yardoc/objects/Henshin/Site/write_i.dat",
109
+ ".yardoc/objects/Henshin/StandardPlugin.dat",
110
+ ".yardoc/objects/Henshin/configure_c.dat",
111
+ ".yardoc/objects/Henshin/extensions_c.dat",
112
+ ".yardoc/objects/Henshin/load_plugins_c.dat",
113
+ ".yardoc/objects/LiquidPlugin.dat",
114
+ ".yardoc/objects/LiquidPlugin/extensions_3D_i.dat",
115
+ ".yardoc/objects/LiquidPlugin/extensions_i.dat",
116
+ ".yardoc/objects/LiquidPlugin/generate_i.dat",
117
+ ".yardoc/objects/LiquidPlugin/initialize_i.dat",
118
+ ".yardoc/objects/LiquidPlugin/read_i.dat",
119
+ ".yardoc/objects/MarukuPlugin.dat",
120
+ ".yardoc/objects/MarukuPlugin/extensions_3D_i.dat",
121
+ ".yardoc/objects/MarukuPlugin/extensions_i.dat",
122
+ ".yardoc/objects/MarukuPlugin/generate_i.dat",
123
+ ".yardoc/objects/MarukuPlugin/initialize_i.dat",
124
+ ".yardoc/objects/PygmentsPlugin.dat",
125
+ ".yardoc/objects/PygmentsPlugin/extensions_3D_i.dat",
126
+ ".yardoc/objects/PygmentsPlugin/extensions_i.dat",
127
+ ".yardoc/objects/PygmentsPlugin/generate_i.dat",
128
+ ".yardoc/objects/PygmentsPlugin/initialize_i.dat",
129
+ ".yardoc/objects/SassPlugin.dat",
130
+ ".yardoc/objects/SassPlugin/extensions_3D_i.dat",
131
+ ".yardoc/objects/SassPlugin/extensions_i.dat",
132
+ ".yardoc/objects/SassPlugin/generate_i.dat",
133
+ ".yardoc/objects/SassPlugin/initialize_i.dat",
134
+ ".yardoc/objects/String.dat",
135
+ ".yardoc/objects/String/directory_i.dat",
136
+ ".yardoc/objects/String/extension_i.dat",
137
+ ".yardoc/objects/String/file_name_i.dat",
138
+ ".yardoc/objects/String/slugify_i.dat",
139
+ ".yardoc/objects/root.dat",
140
+ ".yardoc/proxy_types",
141
+ "LICENSE",
142
+ "README.markdown",
143
+ "Rakefile",
144
+ "VERSION",
145
+ "bin/henshin",
146
+ "doc/Hash.html",
147
+ "doc/Henshin.html",
148
+ "doc/Henshin/CSSGenerator.html",
149
+ "doc/Henshin/Gen.html",
150
+ "doc/Henshin/HTMLGenerator.html",
151
+ "doc/Henshin/JSGenerator.html",
152
+ "doc/Henshin/LayoutParser.html",
153
+ "doc/Henshin/Post.html",
154
+ "doc/Henshin/Site.html",
155
+ "doc/Henshin/StandardPlugin.html",
156
+ "doc/LiquidPlugin.html",
157
+ "doc/MarukuPlugin.html",
158
+ "doc/PygmentsPlugin.html",
159
+ "doc/SassPlugin.html",
160
+ "doc/String.html",
161
+ "doc/_index.html",
162
+ "doc/class_list.html",
163
+ "doc/css/common.css",
164
+ "doc/css/full_list.css",
165
+ "doc/css/style.css",
166
+ "doc/file.README.html",
167
+ "doc/file_list.html",
168
+ "doc/frames.html",
169
+ "doc/index.html",
170
+ "doc/js/app.js",
171
+ "doc/js/full_list.js",
172
+ "doc/js/jquery.js",
173
+ "doc/method_list.html",
174
+ "doc/top-level-namespace.html",
175
+ "henshin.gemspec",
176
+ "lib/henshin.rb",
177
+ "lib/henshin/ext.rb",
178
+ "lib/henshin/gen.rb",
179
+ "lib/henshin/plugin.rb",
180
+ "lib/henshin/plugins/liquid.rb",
181
+ "lib/henshin/plugins/maruku.rb",
182
+ "lib/henshin/plugins/pygments.rb",
183
+ "lib/henshin/plugins/sass.rb",
184
+ "lib/henshin/post.rb",
185
+ "lib/henshin/site.rb",
186
+ "test/helper.rb",
187
+ "test/site/_site/2010/10/20-testing-stuff/index.html",
188
+ "test/site/_site/2010/5/15-lorem-ipsum/index.html",
189
+ "test/site/_site/index.html",
190
+ "test/site/index.html",
191
+ "test/site/layouts/main.html",
192
+ "test/site/layouts/post.html",
193
+ "test/site/options.yaml",
194
+ "test/site/posts/Testing-Stuff.markdown",
195
+ "test/site/posts/lorem-ipsum.markdown",
196
+ "test/test_henshin.rb"
197
+ ]
198
+ s.homepage = %q{http://github.com/hawx/henshin}
199
+ s.rdoc_options = ["--charset=UTF-8"]
200
+ s.require_paths = ["lib"]
201
+ s.rubygems_version = %q{1.3.6}
202
+ s.summary = %q{Henshin is a static site generator}
203
+ s.test_files = [
204
+ "test/helper.rb",
205
+ "test/test_henshin.rb"
206
+ ]
207
+
208
+ if s.respond_to? :specification_version then
209
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
210
+ s.specification_version = 3
211
+
212
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
213
+ s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
214
+ s.add_development_dependency(%q<yard>, [">= 0"])
215
+ else
216
+ s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
217
+ s.add_dependency(%q<yard>, [">= 0"])
218
+ end
219
+ else
220
+ s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
221
+ s.add_dependency(%q<yard>, [">= 0"])
222
+ end
223
+ end
224
+
@@ -0,0 +1,74 @@
1
+ $:.unshift File.dirname(__FILE__)
2
+
3
+ # standard ruby
4
+ require 'time'
5
+ require 'yaml'
6
+ require 'pp'
7
+
8
+ # library
9
+ require 'henshin/site'
10
+
11
+ require 'henshin/gen'
12
+ require 'henshin/post'
13
+ #require 'henshin/page'
14
+
15
+ require 'henshin/ext'
16
+
17
+
18
+ module Henshin
19
+
20
+ # Default options for configuration
21
+ Defaults = {:title => 'A site',
22
+ :description => 'No description',
23
+ :time_zone => 'GMT',
24
+ :author => '',
25
+ :layout => '',
26
+ :file_name => '{title-with-dashes}.{extension}',
27
+ :permalink => '/{year}/{month}/{date}/{title}.html',
28
+ :plugins => ['maraku', 'liquid'],
29
+ :root => '.',
30
+ :target => '_site' }
31
+
32
+
33
+ # Creates the configuration hash by merging defaults, supplied options and options read from the 'options.yaml' file. Then loads the plugins
34
+ #
35
+ # @param [Hash] override to override other set options
36
+ # @return [Hash] the merged configuration hash
37
+ def self.configure( override={} )
38
+ config_file = (override[:root] || Defaults[:root]) + '/options.yaml'
39
+ config = YAML.load_file( config_file ).to_options
40
+
41
+ settings = Defaults.merge(config).merge(override)
42
+ settings[:plugins] = Henshin.load_plugins( settings[:plugins] )
43
+ settings[:extensions] = Henshin.extensions( settings[:plugins] )
44
+ settings
45
+ end
46
+
47
+
48
+ # Loads the specified plugins
49
+ #
50
+ # @param [Array] plugins list of plugins to load
51
+ # @return [Array] list of loaded plugin instances
52
+ def self.load_plugins( to_load )
53
+ plugins = []
54
+ to_load.each do |l|
55
+ require 'henshin/plugins/' + l
56
+ plugins << eval( l.capitalize + 'Plugin.new' )
57
+ end
58
+ plugins
59
+ end
60
+
61
+
62
+ # Lists the file extensions the currently loaded plugins use
63
+ #
64
+ # @param [Array] plugins array of loaded plugin instances
65
+ # @return [Array] a list of file extensions
66
+ def self.extensions( plugins )
67
+ extensions = []
68
+ plugins.each do |i|
69
+ extensions << i.extensions
70
+ end
71
+ extensions.flatten!
72
+ end
73
+
74
+ end
@@ -0,0 +1,42 @@
1
+ class Hash
2
+ # stripped straight out of rails
3
+ # converts string keys to symbol keys
4
+ # from http://api.rubyonrails.org/classes/ActiveSupport/CoreExtensions/Hash/Keys.html
5
+ def to_options
6
+ inject({}) do |options, (key, value)|
7
+ options[(key.to_sym rescue key) || key] = value
8
+ options
9
+ end
10
+ end
11
+ end
12
+
13
+ class String
14
+
15
+ # Turns the string to a slug
16
+ def slugify
17
+ slug = self.clone
18
+ slug.gsub!(/[']+/, '')
19
+ slug.gsub!(/\W+/, ' ')
20
+ slug.strip!
21
+ slug.downcase!
22
+ slug.gsub!(' ', '-')
23
+ slug
24
+ end
25
+
26
+ # Gets the extension from a string
27
+ def extension
28
+ self.split('.')[1]
29
+ end
30
+
31
+ # Gets the directory from a string
32
+ def directory
33
+ self =~ /((\/?[a-zA-Z0-9 _-]+\/)+)/
34
+ $1
35
+ end
36
+
37
+ # Gets the filename from a string
38
+ def file_name
39
+ self.dup.gsub(/([a-zA-Z0-9_-]+\/)/, '')
40
+ end
41
+
42
+ end
@@ -0,0 +1,89 @@
1
+ module Henshin
2
+
3
+ # This is the main class for all pages, posts, sass, etc, that need to be run through a plugin
4
+ class Gen
5
+
6
+ attr_accessor :path, :extension, :content, :layout, :date, :title
7
+ attr_accessor :site, :config
8
+
9
+ def initialize( path, site )
10
+ @path = path
11
+ @site = site
12
+ @config = site.config
13
+ @extension = path.extension
14
+ @layout = site.layouts[ site.config[:layout] ]
15
+ end
16
+
17
+
18
+ ##
19
+ # Processes the file
20
+ def process
21
+ self.read_yaml
22
+ end
23
+
24
+ # Reads the files yaml frontmatter and uses it to override some settings, then grabs content
25
+ def read_yaml
26
+ file = File.read(self.path)
27
+
28
+ if file =~ /^(---\s*\n.*?\n?^---\s*$\n?)/m
29
+ override = YAML.load_file(@path).to_options
30
+ self.override(override)
31
+ @content = file[$1.size..-1]
32
+ else
33
+ @content = file
34
+ end
35
+ end
36
+
37
+ # Uses the loaded data to override settings
38
+ #
39
+ # @param [Hash] override data to override settings with
40
+ def override( override )
41
+ @layout ||= @site.layouts[ override[:layout] ]
42
+ @date ||= Time.parse( override[:date].to_s )
43
+ end
44
+
45
+
46
+ ##
47
+ # Renders the files content
48
+ def render
49
+ # render the posts content
50
+ config[:plugins].each do |plugin|
51
+ if plugin.extensions.include?( @extension ) && !plugin.is_a?( LayoutParser )
52
+ @content = plugin.generate( @content )
53
+ end
54
+ end
55
+
56
+ # do the layout
57
+ config[:plugins].each do |plugin|
58
+ if plugin.is_a?( LayoutParser )
59
+ @content = plugin.generate( @layout, self.payload )
60
+ end
61
+ end
62
+ end
63
+
64
+ # Creates the data to be sent to the layout engine
65
+ #
66
+ # @return [Hash] the payload for the layout engine
67
+ def payload
68
+ {
69
+ 'yield' => @content,
70
+ 'site' => @site.payload['site']
71
+ }
72
+ end
73
+
74
+
75
+ ##
76
+ # Writes the file to the correct place
77
+ def write
78
+ write_path = File.join( config[:root], config[:target], @path[ config[:root].size..-1 ] )
79
+
80
+ FileUtils.mkdir_p File.join( write_path.directory )
81
+ file = File.new( File.join( write_path ), "w" )
82
+ file.puts( @content )
83
+ end
84
+
85
+
86
+
87
+ end
88
+
89
+ end