Browse code

Changed rake task 'post' to 'new_post' and updated the yaml front matter. Added 'new_page' rake task for easily adding new pages with a default yaml block

Brandon Mathis authored on 19/07/2011 at 20:09:42
Showing 1 changed files
... ...
@@ -12,13 +12,14 @@ deploy_branch  = "gh-pages"
12 12
 
13 13
 ## -- Misc Configs, you probably have no reason to changes these -- ##
14 14
 
15
-public_dir  = "public"    # compiled site directory
16
-source_dir  = "source"    # source file directory
17
-deploy_dir  = "_deploy"    # deploy directory (for Github pages deployment)
18
-stash_dir   = "_stash"    # directory to stash posts for speedy generation
19
-posts_dir   = "_posts"    # directory for blog files
20
-themes_dir  = ".themes"    # directory for blog files
21
-post_format = "markdown"  # file format for new posts when using the post rake task
15
+public_dir   = "public"    # compiled site directory
16
+source_dir   = "source"    # source file directory
17
+deploy_dir   = "_deploy"   # deploy directory (for Github pages deployment)
18
+stash_dir    = "_stash"    # directory to stash posts for speedy generation
19
+posts_dir    = "_posts"    # directory for blog files
20
+themes_dir   = ".themes"   # directory for blog files
21
+new_post_ext = "markdown"  # default new post file extension when using the new_post task
22
+new_page_ext = "markdown"  # default new page file extension when using the new_page task
22 23
 
23 24
 
24 25
 desc "Initial setup for Octopress: copies the default theme into the path of Jekyll's generator. Rake install defaults to rake install[classic] to install a different theme run rake install[some_theme_name]"
... ...
@@ -54,22 +55,55 @@ task :preview do
54 54
   system "trap 'kill $jekyllPid $compassPid' Exit; jekyll --auto --server & jekyllPid=$!; compass watch & compassPid=$!; wait"
55 55
 end
56 56
 
57
-# usage rake post[my-new-post] or rake post['my new post'] or rake post (defaults to "new-post")
57
+# usage rake new_post[my-new-post] or rake new_post['my new post'] or rake new_post (defaults to "new-post")
58 58
 desc "Begin a new post in #{source_dir}/#{posts_dir}"
59
-task :post, :filename do |t, args|
59
+task :new_post, :title do |t, args|
60 60
   require './plugins/titlecase.rb'
61
-  args.with_defaults(:filename => 'new-post')
62
-  open("#{source_dir}/_posts/#{Time.now.strftime('%Y-%m-%d')}-#{args.filename.downcase.gsub(/[ _]/, '-')}.#{post_format}", 'w') do |post|
61
+  args.with_defaults(:title => 'new-post')
62
+  title = args.title
63
+  filename = "#{source_dir}/#{posts_dir}/#{Time.now.strftime('%Y-%m-%d')}-#{title.downcase.gsub(/&/,'and').gsub(/[,\.'":\(\)\[\]]/,'').gsub(/\W/, '-')}.#{new_post_ext}"
64
+  puts "Creating new post: #{filename}"
65
+  open(filename, 'w') do |post|
63 66
     system "mkdir -p #{source_dir}/#{posts_dir}";
64 67
     post.puts "---"
65
-    post.puts "title: #{args.filename.gsub(/[-_]/, ' ').titlecase}"
66
-    post.puts "date: #{Time.now.strftime('%Y-%m-%d %H:%M')}"
67 68
     post.puts "layout: post"
69
+    post.puts "title: #{title.gsub(/&/,'&').titlecase}"
70
+    post.puts "date: #{Time.now.strftime('%Y-%m-%d %H:%M')}"
71
+    post.puts "comments: true"
68 72
     post.puts "categories: "
69 73
     post.puts "---"
70 74
   end
71 75
 end
72 76
 
77
+# usage rake new_page[my-new-page] or rake new_page[my-new-page.html] or rake new_page (defaults to "new-page.markdown")
78
+desc "Begin a new post in #{source_dir}/#{posts_dir}"
79
+task :new_page, :filename do |t, args|
80
+  require './plugins/titlecase.rb'
81
+  args.with_defaults(:filename => 'new-page')
82
+  page_dir = source_dir
83
+  if args.filename =~ /(^.+\/)?(\w+)(\.)?(.+)?/
84
+    page_dir += "/#{$1}"
85
+    name = $2
86
+    extension = $4 || new_page_ext
87
+    filename = "#{name}.#{extension}"
88
+    mkdir_p page_dir
89
+    file = page_dir + filename
90
+    puts "Creating new page: #{file}"
91
+    open(file, 'w') do |page|
92
+      page.puts "---"
93
+      page.puts "layout: page"
94
+      page.puts "title: #{name.gsub(/[-_]/, ' ').titlecase}"
95
+      page.puts "date: #{Time.now.strftime('%Y-%m-%d %H:%M')}"
96
+      page.puts "comments: true"
97
+      page.puts "sharing: true"
98
+      page.puts "footer: true"
99
+      page.puts "---"
100
+    end
101
+  else
102
+    puts "Syntax error: #{args.filename} contains unsupported characters"
103
+  end
104
+end
105
+
73 106
 # usage rake isolate[my-post]
74 107
 desc "Move all other posts than the one currently being worked on to a temporary stash location (stash) so regenerating the site happens much quicker."
75 108
 task :isolate, :filename do |t, args|