gidget 0.0.12 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,6 @@
1
1
  = gidget
2
2
 
3
- _The smallest taco-loving blog engine in the world!_ (anyone remember 'Yo quiero Taco Bell'?)
3
+ The smallest taco-loving blog engine in the world!
4
4
 
5
5
  Gidget is a minimalist blog engine designed to run on Heroku with a Git-based workflow. It is built upon Sinatra and uses haml and rdiscount for templating and markup. It was largely inspired by Toto, however Gidget is built on top of a DSL to minimize and simplify the code.
6
6
 
@@ -13,11 +13,10 @@ Gidget is a minimalist blog engine designed to run on Heroku with a Git-based wo
13
13
  == Routing
14
14
 
15
15
  * / - an index template with access to the full array of posts
16
- * /2010 - an archive template with all access to all posts from the specified year
17
- * /2010/11 - an archive template with access to all posts from the specified year/month
18
- * /2010/11/19 - an archive template with access to all posts from the specified year/month/day
16
+ * /2010/11/19 - an archive template with access to all posts from the specified year/month/day as well as what year, month, and day it is for (month and day are optional)
19
17
  * /2010/11/19/first-post - a post template with access to the full array of posts and the current post index
20
- * /some-special-page - a page template with access to the full array of posts
18
+ * /page/1 - a paging template with access to posts for the specified day as well as the current page number and total number of pages
19
+ * /some-special-page - a custom template with access to the full array of posts
21
20
 
22
21
  == Post Creation
23
22
 
@@ -32,6 +31,26 @@ The second section is the body of the post and uses markdown as it's markup lang
32
31
 
33
32
  File name and structure (other than the .txt extension) don't matter. Gidget will determine request paths based on the date and title metadata and sort them accordingly.
34
33
 
34
+ == Settings
35
+
36
+ Gidget uses Sinatra's built-in setting support. Settings can be set in your config.ru during creation of the Gidget server:
37
+
38
+ gidget = Gidget::Server.new do
39
+ set :title, "My Awesome Blog"
40
+ set :author, "Your Name Goes Here"
41
+ set :summary_size, 100
42
+ set :page_size, 10
43
+ end
44
+
45
+ run gidget
46
+
47
+ Settings can then be accessed from within templates by using the settings object:
48
+
49
+ !!! 5
50
+ %html
51
+ %head
52
+ %title= settings.title
53
+
35
54
  == Getting Started
36
55
 
37
56
  The following comands install the Gidget gem, create a Gidget app, and then start the app:
@@ -64,7 +83,7 @@ Congrats! You now have your own blog running on the internets!
64
83
 
65
84
  == TO BE DONE
66
85
 
67
- * Possibly add a paging route to allow /page/1 type usage. Need to determine best way of handling options/setting such as page_size.
86
+ * Come up with a decent base theme
68
87
 
69
88
  == Contributing to gidget
70
89
 
@@ -1,18 +1,18 @@
1
1
  require 'rubygems'
2
2
  require 'bundler'
3
3
 
4
- Bundler.require
4
+ #Bundler.require
5
5
 
6
6
  # The following lines are used for debug during gem development
7
7
  # Comment out previous Bundler.require line to avoid conflicts during development
8
- #$: << File.expand_path("../lib")
9
- #require 'gidget'
8
+ $: << File.expand_path("../lib")
9
+ require 'gidget'
10
10
 
11
- gidget = Gidget::Server.new do
12
- set :title, "My Awesome Blog"
13
- set :author, "Your Name Goes Here"
14
- set :summary_size, 100
15
- set :page_size, 10
11
+ gidget = Gidget::Server.new do
12
+ set :title, "My Awesome Blog"
13
+ set :author, "Your Name Goes Here"
14
+ set :summary_size, 100
15
+ set :page_size, 10
16
16
  end
17
17
 
18
18
  run gidget
@@ -1,4 +1,4 @@
1
1
  title: This is the awesome title to a post
2
2
  date: 2010-11-15
3
3
 
4
- Hello world!
4
+ _Hello world!_ I am Gidget-powered!
@@ -1,9 +1,9 @@
1
1
  !!! 5
2
2
  %html
3
- %head
4
- %title= settings.title
5
- %body
6
- %header
7
- %h1 About
8
- %article
9
- %p This blog is run by Gidget.
3
+ %head
4
+ %title= settings.title
5
+ %body
6
+ %header
7
+ %h1 About
8
+ %article
9
+ %p This blog is run by Gidget.
@@ -1,9 +1,9 @@
1
1
  !!! 5
2
2
  %html
3
- %head
4
- %title= settings.title
5
- %body
6
- %header
7
- %h1 My Blog
8
- %article
9
- %h1= "I found #{posts.size} posts!"
3
+ %head
4
+ %title= settings.title
5
+ %body
6
+ %header
7
+ %h1 My Blog
8
+ %article
9
+ %h1= "I found #{posts.size} posts!"
@@ -1,10 +1,10 @@
1
1
  !!! 5
2
2
  %html
3
- %head
4
- %title= settings.title
5
- %body
6
- %header
7
- %h1 My Blog
8
- %article
9
- %h1= posts[0].title
10
- = posts[0].body
3
+ %head
4
+ %title= settings.title
5
+ %body
6
+ %header
7
+ %h1 My Blog
8
+ %article
9
+ %h1= posts[0].title
10
+ = posts[0].body
@@ -0,0 +1,9 @@
1
+ !!! 5
2
+ %html
3
+ %head
4
+ %title= settings.title
5
+ %body
6
+ %header
7
+ %h1 My Blog
8
+ %article
9
+ %h1= "I found #{posts.size} posts!"
@@ -1,10 +1,10 @@
1
1
  !!! 5
2
2
  %html
3
- %head
4
- %title= settings.title
5
- %body
6
- %header
7
- %h1 My Blog
8
- %article
9
- %h1= posts[index].title
10
- = posts[index].body
3
+ %head
4
+ %title= settings.title
5
+ %body
6
+ %header
7
+ %h1 My Blog
8
+ %article
9
+ %h1= posts[index].title
10
+ = posts[index].body
data/bin/gidget CHANGED
@@ -3,16 +3,16 @@ require 'FileUtils'
3
3
 
4
4
 
5
5
  class App
6
- def initialize(arguments, stdin)
7
- @arguments = arguments
8
- end
9
-
10
-
11
- def run
12
- source = File.expand_path(File.join(File.dirname(__FILE__), '../_stub_'))
13
- destination = File.expand_path(File.join(Dir.pwd, @arguments[0]))
14
-
15
- puts "Creating gidget app stub in destination '#{destination}'"
6
+ def initialize(arguments, stdin)
7
+ @arguments = arguments
8
+ end
9
+
10
+
11
+ def run
12
+ source = File.expand_path(File.join(File.dirname(__FILE__), '../_stub_'))
13
+ destination = File.expand_path(File.join(Dir.pwd, @arguments[0]))
14
+
15
+ puts "Creating gidget app stub in destination '#{destination}'"
16
16
 
17
17
  if (!File.directory? destination)
18
18
  print " Creating destination ... "
@@ -23,11 +23,11 @@ class App
23
23
  end
24
24
 
25
25
  print " Copying stub ... "
26
- FileUtils.cp_r(source + "/.", destination)
27
- puts "done."
28
-
29
- puts "Done."
30
- end
26
+ FileUtils.cp_r(source + "/.", destination)
27
+ puts "done."
28
+
29
+ puts "Done."
30
+ end
31
31
  end
32
32
 
33
33
 
@@ -36,12 +36,30 @@ module Gidget
36
36
  end
37
37
 
38
38
 
39
- get %r{^\/\d{4}(\/\d{2}(\/\d{2})?)?$} do
39
+ get %r{^\/(\d{4})(\/(\d{2})(\/(\d{2}))?)?$} do
40
+ year = params[:captures][0]
41
+ month = params[:captures][2]
42
+ day = params[:captures][4]
43
+
40
44
  posts = PostIndex.instance.select { |p|
41
45
  p.request_path =~ %r{^#{request.path}}
42
46
  }
43
47
 
44
- render_view(:archive, { :posts => posts })
48
+ render_view(:archive, { :posts => posts, :year => year, :month => month, :day => day })
49
+ end
50
+
51
+
52
+ get %r{^\/page\/(\d+$)} do
53
+ current_page = params[:captures][0].to_i
54
+ total_pages = (PostIndex.instance.size + settings.page_size - 1) / settings.page_size
55
+
56
+ if (current_page <= total_pages)
57
+ posts = PostIndex.instance[(current_page - 1) * settings.page_size, settings.page_size]
58
+
59
+ render_view(:page, { :posts => posts, :current_page => current_page, :total_pages => total_pages })
60
+ else
61
+ pass
62
+ end
45
63
  end
46
64
 
47
65
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gidget
3
3
  version: !ruby/object:Gem::Version
4
- hash: 7
4
+ hash: 27
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
+ - 1
8
9
  - 0
9
- - 12
10
- version: 0.0.12
10
+ version: 0.1.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Forrest Robertson
@@ -142,6 +142,7 @@ files:
142
142
  - _stub_/views/about.haml
143
143
  - _stub_/views/archive.haml
144
144
  - _stub_/views/index.haml
145
+ - _stub_/views/page.haml
145
146
  - _stub_/views/post.haml
146
147
  - lib/gidget.rb
147
148
  - lib/gidget/ext.rb