ruhoh 1.1 → 2.1

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 (121) hide show
  1. data/Gemfile +3 -3
  2. data/README.md +3 -2
  3. data/Rakefile +1 -22
  4. data/bin/ruhoh +1 -5
  5. data/history.json +16 -0
  6. data/lib/ruhoh.rb +229 -84
  7. data/lib/ruhoh/base/collection.rb +280 -0
  8. data/lib/ruhoh/base/compiler.rb +55 -0
  9. data/lib/ruhoh/base/model.rb +220 -0
  10. data/lib/ruhoh/base/model_view.rb +152 -0
  11. data/lib/ruhoh/base/watcher.rb +25 -0
  12. data/lib/ruhoh/cache.rb +46 -0
  13. data/lib/ruhoh/client.rb +162 -0
  14. data/lib/ruhoh/collections.rb +172 -0
  15. data/lib/ruhoh/console_methods.rb +21 -0
  16. data/lib/ruhoh/{converters/converter.rb → converter.rb} +4 -1
  17. data/lib/ruhoh/programs/compile.rb +22 -0
  18. data/lib/ruhoh/programs/preview.rb +63 -0
  19. data/lib/ruhoh/programs/watch.rb +45 -0
  20. data/lib/ruhoh/resources/dash/collection.rb +10 -0
  21. data/lib/ruhoh/resources/dash/model.rb +5 -0
  22. data/lib/ruhoh/resources/dash/model_view.rb +5 -0
  23. data/lib/ruhoh/resources/dash/previewer.rb +13 -0
  24. data/lib/ruhoh/resources/data/collection.rb +9 -0
  25. data/lib/ruhoh/resources/data/collection_view.rb +23 -0
  26. data/lib/ruhoh/resources/javascripts/collection.rb +9 -0
  27. data/lib/ruhoh/resources/javascripts/collection_view.rb +46 -0
  28. data/lib/ruhoh/resources/javascripts/compiler.rb +5 -0
  29. data/lib/ruhoh/resources/layouts/client.rb +45 -0
  30. data/lib/ruhoh/resources/layouts/model.rb +16 -0
  31. data/lib/ruhoh/resources/media/collection.rb +9 -0
  32. data/lib/ruhoh/resources/media/compiler.rb +27 -0
  33. data/lib/ruhoh/resources/pages/client.rb +124 -0
  34. data/lib/ruhoh/resources/pages/collection.rb +86 -0
  35. data/lib/ruhoh/resources/pages/collection_view.rb +73 -0
  36. data/lib/ruhoh/resources/pages/compiler.rb +101 -0
  37. data/lib/ruhoh/resources/pages/model.rb +5 -0
  38. data/lib/ruhoh/resources/pages/model_view.rb +5 -0
  39. data/lib/ruhoh/resources/pages/previewer.rb +72 -0
  40. data/lib/ruhoh/resources/partials/model.rb +11 -0
  41. data/lib/ruhoh/resources/stylesheets/collection.rb +9 -0
  42. data/lib/ruhoh/resources/stylesheets/collection_view.rb +45 -0
  43. data/lib/ruhoh/resources/stylesheets/compiler.rb +5 -0
  44. data/lib/ruhoh/resources/theme/collection.rb +14 -0
  45. data/lib/ruhoh/resources/theme/compiler.rb +54 -0
  46. data/lib/ruhoh/resources/widgets/collection.rb +26 -0
  47. data/lib/ruhoh/resources/widgets/collection_view.rb +34 -0
  48. data/lib/ruhoh/resources/widgets/compiler.rb +27 -0
  49. data/lib/ruhoh/resources/widgets/model.rb +16 -0
  50. data/lib/ruhoh/routes.rb +29 -0
  51. data/lib/ruhoh/utils.rb +32 -49
  52. data/lib/ruhoh/version.rb +2 -2
  53. data/lib/ruhoh/views/helpers/categories.rb +38 -0
  54. data/lib/ruhoh/views/helpers/paginator.rb +39 -0
  55. data/lib/ruhoh/views/helpers/tags.rb +37 -0
  56. data/lib/ruhoh/views/master_view.rb +183 -0
  57. data/lib/ruhoh/views/rmustache.rb +24 -0
  58. data/ruhoh.gemspec +6 -82
  59. data/spec/spec_helper.rb +1 -1
  60. data/spec/support/shared_contexts.rb +6 -5
  61. data/system/{scaffolds/post.html → _scaffold.html} +1 -1
  62. data/system/{dash.html → dash/index.html} +37 -51
  63. data/system/{scaffolds/layout.html → layouts/_scaffold.html} +0 -0
  64. data/system/layouts/paginator.html +28 -0
  65. data/system/plugins/sprockets/javascripts/compiler.rb +25 -0
  66. data/system/plugins/sprockets/javascripts/previewer.rb +17 -0
  67. data/system/plugins/sprockets/stylesheets/compiler.rb +26 -0
  68. data/system/plugins/sprockets/stylesheets/previewer.rb +17 -0
  69. data/system/widgets/analytics/{layouts/getclicky.html → getclicky.html} +6 -2
  70. data/system/widgets/analytics/{layouts/google.html → google.html} +5 -1
  71. data/system/widgets/comments/{layouts/disqus.html → disqus.html} +6 -2
  72. data/system/widgets/comments/{layouts/facebook.html → facebook.html} +9 -2
  73. data/system/widgets/comments/{layouts/intensedebate.html → intensedebate.html} +5 -1
  74. data/system/widgets/comments/{layouts/livefyre.html → livefyre.html} +5 -1
  75. data/system/widgets/google_prettify/{layouts/google_prettify.html → default.html} +6 -2
  76. metadata +69 -66
  77. data/lib/ruhoh/client/client.rb +0 -306
  78. data/lib/ruhoh/client/console_methods.rb +0 -9
  79. data/lib/ruhoh/client/help.yml +0 -56
  80. data/lib/ruhoh/compiler.rb +0 -72
  81. data/lib/ruhoh/compilers/rss.rb +0 -39
  82. data/lib/ruhoh/compilers/theme.rb +0 -46
  83. data/lib/ruhoh/config.rb +0 -62
  84. data/lib/ruhoh/db.rb +0 -50
  85. data/lib/ruhoh/deployers/s3.rb +0 -71
  86. data/lib/ruhoh/page.rb +0 -106
  87. data/lib/ruhoh/parsers/javascripts.rb +0 -55
  88. data/lib/ruhoh/parsers/layouts.rb +0 -32
  89. data/lib/ruhoh/parsers/pages.rb +0 -79
  90. data/lib/ruhoh/parsers/partials.rb +0 -42
  91. data/lib/ruhoh/parsers/payload.rb +0 -49
  92. data/lib/ruhoh/parsers/posts.rb +0 -259
  93. data/lib/ruhoh/parsers/routes.rb +0 -20
  94. data/lib/ruhoh/parsers/scaffolds.rb +0 -35
  95. data/lib/ruhoh/parsers/site.rb +0 -19
  96. data/lib/ruhoh/parsers/stylesheets.rb +0 -63
  97. data/lib/ruhoh/parsers/theme_config.rb +0 -30
  98. data/lib/ruhoh/parsers/widgets.rb +0 -104
  99. data/lib/ruhoh/paths.rb +0 -83
  100. data/lib/ruhoh/previewer.rb +0 -48
  101. data/lib/ruhoh/program.rb +0 -68
  102. data/lib/ruhoh/templaters/asset_helpers.rb +0 -66
  103. data/lib/ruhoh/templaters/base_helpers.rb +0 -147
  104. data/lib/ruhoh/templaters/helpers.rb +0 -8
  105. data/lib/ruhoh/templaters/rmustache.rb +0 -70
  106. data/lib/ruhoh/urls.rb +0 -50
  107. data/lib/ruhoh/watch.rb +0 -78
  108. data/spec/config_spec.rb +0 -50
  109. data/spec/db_spec.rb +0 -91
  110. data/spec/page_spec.rb +0 -164
  111. data/spec/parsers/layouts_spec.rb +0 -41
  112. data/spec/parsers/pages_spec.rb +0 -120
  113. data/spec/parsers/posts_spec.rb +0 -309
  114. data/spec/parsers/routes_spec.rb +0 -39
  115. data/spec/parsers/site_spec.rb +0 -28
  116. data/spec/setup_spec.rb +0 -12
  117. data/system/scaffolds/draft.html +0 -9
  118. data/system/scaffolds/page.html +0 -4
  119. data/system/widgets/analytics/config.yml +0 -5
  120. data/system/widgets/comments/config.yml +0 -13
  121. data/system/widgets/google_prettify/config.yml +0 -1
@@ -1,9 +1,16 @@
1
+ ---
2
+ appid : 123
3
+ num_posts: 5
4
+ width: 580
5
+ colorscheme: light
6
+ ---
7
+
1
8
  <div id="fb-root"></div>
2
9
  <script>(function(d, s, id) {
3
10
  var js, fjs = d.getElementsByTagName(s)[0];
4
11
  if (d.getElementById(id)) return;
5
12
  js = d.createElement(s); js.id = id;
6
- js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId={{ site.config.facebook.appid }}";
13
+ js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId={{ this_config.appid }}";
7
14
  fjs.parentNode.insertBefore(js, fjs);
8
15
  }(document, 'script', 'facebook-jssdk'));</script>
9
- <div class="fb-comments" data-href="{{ site.production_url }}" data-num-posts="{{ config.facebook.num_posts }}" data-width="{{ config.facebook.width }}" data-colorscheme="{{ config.facebook.colorscheme }}"></div>
16
+ <div class="fb-comments" data-href="{{ urls.production_url }}" data-num-posts="{{ this_config.num_posts }}" data-width="{{ this_config.width }}" data-colorscheme="{{ this_config.colorscheme }}"></div>
@@ -1,5 +1,9 @@
1
+ ---
2
+ account : 123abc
3
+ ---
4
+
1
5
  <script>
2
- var idcomments_acct = '{{ config.intensedebate.account }}';
6
+ var idcomments_acct = '{{ this_config.account }}';
3
7
  var idcomments_post_id;
4
8
  var idcomments_post_url;
5
9
  </script>
@@ -1,6 +1,10 @@
1
+ ---
2
+ site_id : 123
3
+ ---
4
+
1
5
  <script type='text/javascript' src='http://zor.livefyre.com/wjs/v1.0/javascripts/livefyre_init.js'></script>
2
6
  <script type='text/javascript'>
3
7
  var fyre = LF({
4
- site_id: {{ config.livefyre.site_id }}
8
+ site_id: {{ this_config.site_id }}
5
9
  });
6
10
  </script>
@@ -1,10 +1,14 @@
1
+ ---
2
+ linenums : true
3
+ ---
4
+
1
5
  <!-- Google Prettify -->
2
6
  <script src="http://cdnjs.cloudflare.com/ajax/libs/prettify/188.0.0/prettify.js"></script>
3
7
  <script>
4
8
  var pres = document.getElementsByTagName("pre");
5
9
  for (var i=0; i < pres.length; ++i) {
6
- pres[i].className = "prettyprint {{# config.linenums }}linenums{{/config.linenums}}";
10
+ pres[i].className = "prettyprint {{# this_config.linenums }}linenums{{/this_config.linenums}}";
7
11
  }
8
12
  prettyPrint();
9
13
  </script>
10
- <!-- end Google Prettify -->
14
+ <!-- end Google Prettify -->
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruhoh
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.1'
4
+ version: '2.1'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-26 00:00:00.000000000 Z
12
+ date: 2013-05-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rack
@@ -50,7 +50,7 @@ dependencies:
50
50
  requirements:
51
51
  - - ~>
52
52
  - !ruby/object:Gem::Version
53
- version: '1.4'
53
+ version: 1.4.0
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
@@ -58,7 +58,7 @@ dependencies:
58
58
  requirements:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: '1.4'
61
+ version: 1.4.0
62
62
  - !ruby/object:Gem::Dependency
63
63
  name: redcarpet
64
64
  requirement: !ruby/object:Gem::Requirement
@@ -104,76 +104,84 @@ files:
104
104
  - bin/ruhoh
105
105
  - history.json
106
106
  - lib/ruhoh.rb
107
- - lib/ruhoh/client/client.rb
108
- - lib/ruhoh/client/console_methods.rb
109
- - lib/ruhoh/client/help.yml
110
- - lib/ruhoh/compiler.rb
111
- - lib/ruhoh/compilers/rss.rb
112
- - lib/ruhoh/compilers/theme.rb
113
- - lib/ruhoh/config.rb
114
- - lib/ruhoh/converters/converter.rb
107
+ - lib/ruhoh/base/collection.rb
108
+ - lib/ruhoh/base/compiler.rb
109
+ - lib/ruhoh/base/model.rb
110
+ - lib/ruhoh/base/model_view.rb
111
+ - lib/ruhoh/base/watcher.rb
112
+ - lib/ruhoh/cache.rb
113
+ - lib/ruhoh/client.rb
114
+ - lib/ruhoh/collections.rb
115
+ - lib/ruhoh/console_methods.rb
116
+ - lib/ruhoh/converter.rb
115
117
  - lib/ruhoh/converters/markdown.rb
116
- - lib/ruhoh/db.rb
117
- - lib/ruhoh/deployers/s3.rb
118
118
  - lib/ruhoh/friend.rb
119
119
  - lib/ruhoh/logger.rb
120
- - lib/ruhoh/page.rb
121
- - lib/ruhoh/parsers/javascripts.rb
122
- - lib/ruhoh/parsers/layouts.rb
123
- - lib/ruhoh/parsers/pages.rb
124
- - lib/ruhoh/parsers/partials.rb
125
- - lib/ruhoh/parsers/payload.rb
126
- - lib/ruhoh/parsers/posts.rb
127
- - lib/ruhoh/parsers/routes.rb
128
- - lib/ruhoh/parsers/scaffolds.rb
129
- - lib/ruhoh/parsers/site.rb
130
- - lib/ruhoh/parsers/stylesheets.rb
131
- - lib/ruhoh/parsers/theme_config.rb
132
- - lib/ruhoh/parsers/widgets.rb
133
- - lib/ruhoh/paths.rb
134
- - lib/ruhoh/previewer.rb
135
- - lib/ruhoh/program.rb
136
- - lib/ruhoh/templaters/asset_helpers.rb
137
- - lib/ruhoh/templaters/base_helpers.rb
138
- - lib/ruhoh/templaters/helpers.rb
139
- - lib/ruhoh/templaters/rmustache.rb
140
- - lib/ruhoh/urls.rb
120
+ - lib/ruhoh/programs/compile.rb
121
+ - lib/ruhoh/programs/preview.rb
122
+ - lib/ruhoh/programs/watch.rb
123
+ - lib/ruhoh/resources/dash/collection.rb
124
+ - lib/ruhoh/resources/dash/model.rb
125
+ - lib/ruhoh/resources/dash/model_view.rb
126
+ - lib/ruhoh/resources/dash/previewer.rb
127
+ - lib/ruhoh/resources/data/collection.rb
128
+ - lib/ruhoh/resources/data/collection_view.rb
129
+ - lib/ruhoh/resources/javascripts/collection.rb
130
+ - lib/ruhoh/resources/javascripts/collection_view.rb
131
+ - lib/ruhoh/resources/javascripts/compiler.rb
132
+ - lib/ruhoh/resources/layouts/client.rb
133
+ - lib/ruhoh/resources/layouts/model.rb
134
+ - lib/ruhoh/resources/media/collection.rb
135
+ - lib/ruhoh/resources/media/compiler.rb
136
+ - lib/ruhoh/resources/pages/client.rb
137
+ - lib/ruhoh/resources/pages/collection.rb
138
+ - lib/ruhoh/resources/pages/collection_view.rb
139
+ - lib/ruhoh/resources/pages/compiler.rb
140
+ - lib/ruhoh/resources/pages/model.rb
141
+ - lib/ruhoh/resources/pages/model_view.rb
142
+ - lib/ruhoh/resources/pages/previewer.rb
143
+ - lib/ruhoh/resources/partials/model.rb
144
+ - lib/ruhoh/resources/stylesheets/collection.rb
145
+ - lib/ruhoh/resources/stylesheets/collection_view.rb
146
+ - lib/ruhoh/resources/stylesheets/compiler.rb
147
+ - lib/ruhoh/resources/theme/collection.rb
148
+ - lib/ruhoh/resources/theme/compiler.rb
149
+ - lib/ruhoh/resources/widgets/collection.rb
150
+ - lib/ruhoh/resources/widgets/collection_view.rb
151
+ - lib/ruhoh/resources/widgets/compiler.rb
152
+ - lib/ruhoh/resources/widgets/model.rb
153
+ - lib/ruhoh/routes.rb
141
154
  - lib/ruhoh/utils.rb
142
155
  - lib/ruhoh/version.rb
143
- - lib/ruhoh/watch.rb
156
+ - lib/ruhoh/views/helpers/categories.rb
157
+ - lib/ruhoh/views/helpers/paginator.rb
158
+ - lib/ruhoh/views/helpers/tags.rb
159
+ - lib/ruhoh/views/master_view.rb
160
+ - lib/ruhoh/views/rmustache.rb
144
161
  - ruhoh.gemspec
145
- - spec/config_spec.rb
146
- - spec/db_spec.rb
147
- - spec/page_spec.rb
148
- - spec/parsers/layouts_spec.rb
149
- - spec/parsers/pages_spec.rb
150
- - spec/parsers/posts_spec.rb
151
- - spec/parsers/routes_spec.rb
152
- - spec/parsers/site_spec.rb
153
- - spec/setup_spec.rb
154
162
  - spec/spec_helper.rb
155
163
  - spec/support/shared_contexts.rb
156
- - system/dash.html
164
+ - system/_scaffold.html
165
+ - system/dash/index.html
166
+ - system/layouts/_scaffold.html
167
+ - system/layouts/paginator.html
157
168
  - system/partials/categories_list.html
158
169
  - system/partials/pages_list.html
159
170
  - system/partials/posts_collate.html
160
171
  - system/partials/posts_list.html
161
172
  - system/partials/posts_summary.html
162
173
  - system/partials/tags_list.html
163
- - system/scaffolds/draft.html
164
- - system/scaffolds/layout.html
165
- - system/scaffolds/page.html
166
- - system/scaffolds/post.html
167
- - system/widgets/analytics/config.yml
168
- - system/widgets/analytics/layouts/getclicky.html
169
- - system/widgets/analytics/layouts/google.html
170
- - system/widgets/comments/config.yml
171
- - system/widgets/comments/layouts/disqus.html
172
- - system/widgets/comments/layouts/facebook.html
173
- - system/widgets/comments/layouts/intensedebate.html
174
- - system/widgets/comments/layouts/livefyre.html
175
- - system/widgets/google_prettify/config.yml
176
- - system/widgets/google_prettify/layouts/google_prettify.html
174
+ - system/plugins/sprockets/javascripts/compiler.rb
175
+ - system/plugins/sprockets/javascripts/previewer.rb
176
+ - system/plugins/sprockets/stylesheets/compiler.rb
177
+ - system/plugins/sprockets/stylesheets/previewer.rb
178
+ - system/widgets/analytics/getclicky.html
179
+ - system/widgets/analytics/google.html
180
+ - system/widgets/comments/disqus.html
181
+ - system/widgets/comments/facebook.html
182
+ - system/widgets/comments/intensedebate.html
183
+ - system/widgets/comments/livefyre.html
184
+ - system/widgets/google_prettify/default.html
177
185
  homepage: http://github.com/ruhoh/ruhoh.rb
178
186
  licenses:
179
187
  - http://www.opensource.org/licenses/MIT
@@ -187,18 +195,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
187
195
  - - ! '>='
188
196
  - !ruby/object:Gem::Version
189
197
  version: '0'
190
- segments:
191
- - 0
192
- hash: -2404318061189800228
193
198
  required_rubygems_version: !ruby/object:Gem::Requirement
194
199
  none: false
195
200
  requirements:
196
201
  - - ! '>='
197
202
  - !ruby/object:Gem::Version
198
203
  version: '0'
199
- segments:
200
- - 0
201
- hash: -2404318061189800228
202
204
  requirements: []
203
205
  rubyforge_project:
204
206
  rubygems_version: 1.8.24
@@ -206,3 +208,4 @@ signing_key:
206
208
  specification_version: 3
207
209
  summary: Ruby based library to process your Ruhoh static blog.
208
210
  test_files: []
211
+ has_rdoc:
@@ -1,306 +0,0 @@
1
- require 'ruhoh/compiler'
2
- require 'ruhoh/client/console_methods'
3
- require 'irb'
4
-
5
- class Ruhoh
6
-
7
- class Client
8
-
9
- Paths = Struct.new(:page_template, :draft_template, :post_template, :layout_template, :theme_template)
10
- DefaultBlogScaffold = 'git://github.com/ruhoh/blog.git'
11
-
12
- def initialize(data)
13
- @iterator = 0
14
- self.setup_options(data)
15
-
16
- cmd = (data[:args][0] == 'new') ? 'blog' : (data[:args][0] || 'help')
17
- Ruhoh::Friend.say {
18
- red "Command not found"
19
- exit
20
- } unless self.respond_to?(cmd)
21
-
22
- unless ['help','blog','compile'].include?(cmd)
23
- Ruhoh.setup
24
- Ruhoh.setup_paths
25
- Ruhoh.setup_urls
26
- end
27
-
28
- self.__send__(cmd)
29
- end
30
-
31
- # Thanks rails! https://github.com/rails/rails/blob/master/railties/lib/rails/commands/console.rb
32
- def console
33
- ARGV.clear # IRB throws an error otherwise.
34
- require 'pp'
35
- IRB::ExtendCommandBundle.send :include, Ruhoh::ConsoleMethods
36
- IRB.start
37
- end
38
-
39
- def setup_options(data)
40
- @args = data[:args]
41
- @options = data[:options]
42
- @opt_parser = data[:opt_parser]
43
- @options.ext = (@options.ext || 'md').gsub('.', '')
44
- end
45
-
46
- # Internal: Show Client Utility help documentation.
47
- def help
48
- file = File.join(Ruhoh::Root, 'lib', 'ruhoh', 'client', 'help.yml')
49
- content = Ruhoh::Utils.parse_yaml_file(file)
50
- options = @opt_parser.help
51
- Ruhoh::Friend.say {
52
- plain content['description']
53
- plain ''
54
- plain options
55
- plain ''
56
- plain 'Commands:'
57
- plain ''
58
- content['commands'].each do |a|
59
- green(" " + a["command"])
60
- plain(" "+ a["desc"])
61
- end
62
- }
63
- end
64
-
65
- def draft
66
- self.draft_or_post(:draft)
67
- end
68
-
69
- def post
70
- self.draft_or_post(:post)
71
- end
72
-
73
- def draft_or_post(type)
74
- begin
75
- name = @args[1] || "untitled-#{type}"
76
- name = "#{name}-#{@iterator}" unless @iterator.zero?
77
- name = Ruhoh::Urls.to_slug(name)
78
- filename = File.join(Ruhoh.paths.posts, "#{name}.#{@options.ext}")
79
- @iterator += 1
80
- end while File.exist?(filename)
81
-
82
- Ruhoh::DB.update(:scaffolds)
83
-
84
- FileUtils.mkdir_p File.dirname(filename)
85
- output = Ruhoh::DB.scaffolds["#{type}.html"].to_s
86
- output = output.gsub('{{DATE}}', Ruhoh::Parsers::Posts.formatted_date(Time.now))
87
- File.open(filename, 'w:UTF-8') {|f| f.puts output }
88
-
89
- Ruhoh::Friend.say {
90
- green "New #{type}:"
91
- green Ruhoh::Utils.relative_path(filename)
92
- green 'View drafts at the URL: /dash'
93
- }
94
- end
95
-
96
- # Public: Create a new page file.
97
- def page
98
- name = @args[1]
99
- Ruhoh::Friend.say {
100
- red "Please specify a path"
101
- plain " ex: ruhoh page projects/hello-world"
102
- exit
103
- } if (name.nil? || name.gsub(/\s/, '').empty?)
104
-
105
- filename = File.join(Ruhoh.paths.pages, name.gsub(/\s/, '-'))
106
- filename = File.join(filename, "index.#{@options.ext}") if File.extname(filename) == ""
107
- if File.exist?(filename)
108
- abort("Create new page: aborted!") if ask("#{filename} already exists. Do you want to overwrite?", ['y', 'n']) == 'n'
109
- end
110
-
111
- Ruhoh::DB.update(:scaffolds)
112
-
113
- FileUtils.mkdir_p File.dirname(filename)
114
- File.open(filename, 'w:UTF-8') do |page|
115
- page.puts Ruhoh::DB.scaffolds['page.html'].to_s
116
- end
117
-
118
- Ruhoh::Friend.say {
119
- green "New page:"
120
- plain Ruhoh::Utils.relative_path(filename)
121
- }
122
- end
123
-
124
- # Public: Update draft filenames to their corresponding titles.
125
- def titleize
126
- Ruhoh::Parsers::Posts.files.each do |file|
127
- next unless File.basename(file) =~ /^untitled/
128
- parsed_page = Ruhoh::Utils.parse_page_file(file)
129
- next unless parsed_page['data']['title']
130
- new_name = Ruhoh::Urls.to_slug(parsed_page['data']['title'])
131
- new_file = File.join(File.dirname(file), "#{new_name}#{File.extname(file)}")
132
- FileUtils.mv(file, new_file)
133
- Ruhoh::Friend.say { green "Renamed #{file} to: #{new_file}" }
134
- end
135
- end
136
-
137
- # Public: Compile to static website.
138
- def compile
139
- Ruhoh::Program.compile(@args[1])
140
- end
141
-
142
- # Public: Create a new blog at the directory provided.
143
- def blog
144
- name = @args[1]
145
- scaffold = @args.length > 2 ? @args[2] : DefaultBlogScaffold
146
- useHg = @options.hg
147
- Ruhoh::Friend.say {
148
- red "Please specify a directory path."
149
- plain " ex: ruhoh new the-blogist"
150
- exit
151
- } if name.nil?
152
-
153
- target_directory = File.join(Dir.pwd, name)
154
-
155
- Ruhoh::Friend.say {
156
- red "#{target_directory} already exists."
157
- plain " Specify another directory or `rm -rf` this directory first."
158
- exit
159
- } if File.exist?(target_directory)
160
-
161
- Ruhoh::Friend.say {
162
- plain "Trying this command:"
163
-
164
- if useHg
165
- cyan " hg clone #{scaffold} #{target_directory}"
166
- success = system('hg', 'clone', scaffold, target_directory)
167
- else
168
- cyan " git clone #{scaffold} #{target_directory}"
169
- success = system('git', 'clone', scaffold, target_directory)
170
- end
171
-
172
- if success
173
- green "Success! Now do..."
174
- cyan " cd #{target_directory}"
175
- cyan " rackup -p9292"
176
- cyan " http://localhost:9292"
177
- else
178
- red "Could not git clone blog scaffold. Please try it manually:"
179
- cyan " git clone git://github.com/ruhoh/blog.git #{target_directory}"
180
- end
181
- }
182
- end
183
-
184
- # Public: Create a new layout file for the active theme.
185
- def layout
186
- name = @args[1]
187
- Ruhoh::Friend.say {
188
- red "Please specify a layout name."
189
- cyan "ex: ruhoh new layout splash"
190
- exit
191
- } if name.nil?
192
-
193
- filename = File.join(Ruhoh.paths.theme_layouts, name.gsub(/\s/, '-').downcase) + ".html"
194
- if File.exist?(filename)
195
- abort("Create new layout: aborted!") if ask("#{filename} already exists. Do you want to overwrite?", ['y', 'n']) == 'n'
196
- end
197
-
198
- Ruhoh::DB.update(:scaffolds)
199
-
200
- FileUtils.mkdir_p File.dirname(filename)
201
- File.open(filename, 'w:UTF-8') do |page|
202
- page.puts Ruhoh::DB.scaffolds['layout.html'].to_s
203
- end
204
-
205
- Ruhoh::Friend.say {
206
- green "New layout:"
207
- plain Ruhoh::Utils.relative_path(filename)
208
- }
209
- end
210
-
211
- # Public : List drafts
212
- def drafts
213
- self.list(:drafts)
214
- end
215
-
216
- # Public : List posts
217
- def posts
218
- self.list(:posts)
219
- end
220
-
221
- # Public : List pages
222
- def pages
223
- self.list(:pages)
224
- end
225
-
226
- # Return the payload hash for inspection/study.
227
- def payload
228
- require 'pp'
229
- Ruhoh::DB.update_all
230
- Ruhoh::Friend.say {
231
- plain Ruhoh::DB.payload.pretty_inspect
232
- }
233
- end
234
-
235
- # Internal: Outputs a list of the given data-type to the terminal.
236
- def list(type)
237
- data = case type
238
- when :posts
239
- Ruhoh::DB.update(:posts)
240
- Ruhoh::DB.posts['dictionary']
241
- when :drafts
242
- Ruhoh::DB.update(:posts)
243
- drafts = Ruhoh::DB.posts['drafts']
244
- h = {}
245
- drafts.each {|id| h[id] = Ruhoh::DB.posts['dictionary'][id]}
246
- h
247
- when :pages
248
- Ruhoh::DB.update(:pages)
249
- Ruhoh::DB.pages
250
- end
251
-
252
- if @options.verbose
253
- Ruhoh::Friend.say {
254
- data.each_value do |p|
255
- cyan("- #{p['id']}")
256
- plain(" title: #{p['title']}")
257
- plain(" url: #{p['url']}")
258
- end
259
- }
260
- else
261
- Ruhoh::Friend.say {
262
- data.each_value do |p|
263
- cyan("- #{p['id']}")
264
- end
265
- }
266
- end
267
- end
268
-
269
- # Internal: Get the last active file based on data-type.
270
- # Note File.ctime is the last time the file was changed as opposed to created.
271
- # Returns: String file id, where id is the relative path to the file.
272
- def last(type)
273
- self.get_files(type).sort_by { |f| File.ctime(f) }.last || nil
274
- end
275
-
276
- # Internal: Get an Array list of file ids based on the data-type.
277
- # Returns: Array of file ids (ids are relative paths to the file.)
278
- def get_files(type)
279
- case type
280
- when 'post'
281
- Ruhoh::Parsers::Posts.files
282
- when 'page'
283
- Ruhoh::Parsers::Pages.files
284
- else
285
- Ruhoh::Friend.say { red "Type: '#{type}' not supported." }
286
- exit
287
- end
288
- end
289
-
290
- def ask(message, valid_options)
291
- if valid_options
292
- answer = get_stdin("#{message} #{valid_options.to_s.gsub(/"/, '').gsub(/, /,'/')} ") while !valid_options.include?(answer)
293
- else
294
- answer = get_stdin(message)
295
- end
296
- answer
297
- end
298
-
299
- def get_stdin(message)
300
- print message
301
- STDIN.gets.chomp
302
- end
303
-
304
-
305
- end #Client
306
- end #Ruhoh