gidget 0.1.1 → 0.2.0

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.
@@ -0,0 +1,14 @@
1
+ require 'rubygems'
2
+
3
+ # the following allows testing of the gem using our stub app
4
+ $: << File.expand_path("../lib")
5
+ require 'gidget'
6
+
7
+ gidget = Gidget::Server.new do
8
+ set :title, "My Awesome Blog"
9
+ set :author, "Your Name Goes Here"
10
+ set :summary_size, 100
11
+ set :page_size, 10
12
+ end
13
+
14
+ run gidget
@@ -3,11 +3,6 @@ require 'bundler'
3
3
 
4
4
  Bundler.require
5
5
 
6
- # The following lines are used for debug during gem development
7
- # Comment out previous Bundler.require line to avoid conflicts during development
8
- #$: << File.expand_path("../lib")
9
- #require 'gidget'
10
-
11
6
  gidget = Gidget::Server.new do
12
7
  set :title, "My Awesome Blog"
13
8
  set :author, "Your Name Goes Here"
@@ -1,4 +1,5 @@
1
1
  title: This is the awesome title to a post
2
2
  date: 2010-11-15
3
+ tags: tag1, tag2
3
4
 
4
5
  _Hello world!_ I am Gidget-powered!
@@ -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!"
@@ -7,4 +7,10 @@ class String
7
7
  def humanize
8
8
  self.capitalize.gsub(/[-_]+/, ' ')
9
9
  end
10
+
11
+
12
+ def starts_with?(prefix)
13
+ prefix = prefix.to_s
14
+ self[0, prefix.length] == prefix
15
+ end
10
16
  end
@@ -1,5 +1,6 @@
1
1
  require 'singleton'
2
2
  require 'gidget/post'
3
+ require 'gidget/tag_index'
3
4
 
4
5
 
5
6
  module Gidget
@@ -7,7 +8,7 @@ module Gidget
7
8
  include Singleton
8
9
 
9
10
 
10
- def initialize
11
+ def load
11
12
  paths = Dir.glob("posts/**/*.txt")
12
13
 
13
14
  # add all the posts to the array
@@ -19,6 +20,9 @@ module Gidget
19
20
  self.replace self.sort_by { |p| p.request_path }.reverse!
20
21
 
21
22
  puts "Post Index created, size = " + self.size.to_s
23
+
24
+ # load the tag index
25
+ TagIndex.instance.load self
22
26
  end
23
27
  end
24
28
  end
@@ -9,9 +9,12 @@ module Gidget
9
9
 
10
10
  set :page_size, 5
11
11
 
12
+
12
13
  def initialize(app=nil, &block)
13
14
  super(app, &b=nil)
14
- self.class.instance_eval(&block) if block_given?
15
+ Server.class_exec(&block) if block_given?
16
+
17
+ PostIndex.instance.load
15
18
  end
16
19
 
17
20
 
@@ -20,7 +23,7 @@ module Gidget
20
23
  end
21
24
 
22
25
 
23
- get %r{^\/\d{4}\/\d{2}\/\d{2}\/\w+} do
26
+ get %r{^\/\d{4}\/\d{2}\/\d{2}\/\w+$} do
24
27
  index = nil
25
28
 
26
29
  PostIndex.instance.each_with_index { |p, i|
@@ -42,7 +45,7 @@ module Gidget
42
45
  day = params[:captures][4]
43
46
 
44
47
  posts = PostIndex.instance.select { |p|
45
- p.request_path =~ %r{^#{request.path}}
48
+ p.request_path.starts_with? request.path
46
49
  }
47
50
 
48
51
  render_view(:archive, { :posts => posts, :year => year, :month => month, :day => day })
@@ -63,7 +66,18 @@ module Gidget
63
66
  end
64
67
 
65
68
 
66
- get %r{^\/\w+} do
69
+ get %r{^\/tag\/(\w+$)} do
70
+ posts = TagIndex.instance[params[:captures][0]]
71
+
72
+ if (posts != nil)
73
+ render_view(:tag, { :posts => posts })
74
+ else
75
+ pass
76
+ end
77
+ end
78
+
79
+
80
+ get %r{^\/\w+$} do
67
81
  begin
68
82
  render_view(request.path.to_sym, { :posts => PostIndex.instance })
69
83
  rescue
@@ -0,0 +1,30 @@
1
+ require 'singleton'
2
+ require 'gidget/post'
3
+
4
+
5
+ module Gidget
6
+ class TagIndex < Hash
7
+ include Singleton
8
+
9
+
10
+ def load posts
11
+ posts.each { |post|
12
+ tags = nil
13
+
14
+ if (post.meta_data.has_key? :tags)
15
+ tags = post.meta_data[:tags].split(',')
16
+
17
+ tags.each { |tag|
18
+ tag.strip!
19
+
20
+ if (!self.has_key? tag)
21
+ self[tag] = []
22
+ end
23
+
24
+ self[tag] << post
25
+ }
26
+ end
27
+ }
28
+ end
29
+ end
30
+ end
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: 25
4
+ hash: 23
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 1
9
- - 1
10
- version: 0.1.1
8
+ - 2
9
+ - 0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Forrest Robertson
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-12-26 00:00:00 -07:00
18
+ date: 2011-01-09 00:00:00 -07:00
19
19
  default_executable: gidget
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -137,6 +137,7 @@ extra_rdoc_files:
137
137
  - README.rdoc
138
138
  files:
139
139
  - _stub_/Gemfile
140
+ - _stub_/config.dev.ru
140
141
  - _stub_/config.ru
141
142
  - _stub_/posts/first-post.txt
142
143
  - _stub_/views/about.haml
@@ -144,11 +145,13 @@ files:
144
145
  - _stub_/views/index.haml
145
146
  - _stub_/views/page.haml
146
147
  - _stub_/views/post.haml
148
+ - _stub_/views/tag.haml
147
149
  - lib/gidget.rb
148
150
  - lib/gidget/ext.rb
149
151
  - lib/gidget/post.rb
150
152
  - lib/gidget/post_index.rb
151
153
  - lib/gidget/server.rb
154
+ - lib/gidget/tag_index.rb
152
155
  - LICENSE.txt
153
156
  - README.rdoc
154
157
  - bin/gidget