ceilingfish-toto 0.3.9 → 0.4.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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.9
1
+ 0.4.0
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{ceilingfish-toto}
8
- s.version = "0.3.9"
8
+ s.version = "0.4.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["cloudhead", "ceilingfish"]
12
- s.date = %q{2010-02-16}
12
+ s.date = %q{2010-02-22}
13
13
  s.description = %q{the tiniest blog-engine in Oz.}
14
14
  s.email = %q{ceilingfish@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -27,11 +27,11 @@ Gem::Specification.new do |s|
27
27
  "lib/ceilingfish-toto.rb",
28
28
  "lib/ext/ext.rb",
29
29
  "lib/toto.rb",
30
- "test/articles/1900-05-17-the-wonderful-wizard-of-oz.txt",
31
- "test/articles/2001-01-01-two-thousand-and-one.txt",
32
- "test/articles/2009-04-01-tilt-factor.txt",
33
- "test/articles/2009-12-04-some-random-article.txt",
34
- "test/articles/2009-12-11-the-dichotomy-of-design.txt",
30
+ "test/articles/some-random-article.txt",
31
+ "test/articles/the-dichotomy-of-design.txt",
32
+ "test/articles/the-wonderful-wizard-of-oz.txt",
33
+ "test/articles/tilt-factor.txt",
34
+ "test/articles/two-thousand-and-one.txt",
35
35
  "test/autotest.rb",
36
36
  "test/templates/about.rhtml",
37
37
  "test/templates/archives.rhtml",
data/lib/toto.rb CHANGED
@@ -68,9 +68,7 @@ module Toto
68
68
  def archives filter = ""
69
69
  entries = ! self.articles.empty??
70
70
  self.articles.select do |a|
71
- filter !~ /^\d{4}/ || File.basename(a) =~ /^#{filter}/
72
- end.reverse.map do |article|
73
- Article.new File.new(article), @config
71
+ filter !~ /^\d{4}/ || a.path =~ /^\/#{filter}/
74
72
  end : []
75
73
 
76
74
  return Archives.new(entries)
@@ -81,7 +79,9 @@ module Toto
81
79
  end
82
80
 
83
81
  def articles ext = self[:ext]
84
- Dir["#{Paths[:articles]}/*.#{ext}"]
82
+ Dir["#{Paths[:articles]}/*.#{ext}"].reverse.map do |article|
83
+ Article.new File.new(article), @config
84
+ end
85
85
  end
86
86
 
87
87
  def root
@@ -104,24 +104,24 @@ module Toto
104
104
  def index type = :html
105
105
  case type
106
106
  when :html
107
- {:articles => articles.reverse.map do |article|
108
- Article.new File.new(article), @config
109
- end }.merge(:archives => archives)
107
+ {:articles => articles, :archives => archives }
110
108
  when :xml, :json
111
- return :articles => articles.map do |article|
112
- Article.new File.new(article), @config
113
- end
109
+ return :articles => articles
114
110
  else return {}
115
111
  end
116
112
  end
117
113
 
118
114
  def article route
119
- Article.new(File.new("#{Paths[:articles]}/#{route.join('-')}.#{self[:ext]}"), @config).load
115
+ Article.new(File.new("#{Paths[:articles]}/#{route}.#{self[:ext]}"), @config).load
120
116
  end
121
117
 
122
118
  def /
123
119
  self[:root]
124
120
  end
121
+
122
+ def is_root?(path)
123
+ path == '/'
124
+ end
125
125
 
126
126
  def go route, type = :html
127
127
  route << self./ if route.empty?
@@ -134,13 +134,14 @@ module Toto
134
134
  if route.first =~ /\d{4}/
135
135
  case route.size
136
136
  when 1..3
137
- context[{:archives => archives(route * '-')}, :archives]
137
+ route.pop if route.last == 'archives'
138
+ context[{:archives => archives(route * '/')}, :archives]
138
139
  when 4
139
- context[article(route), :article]
140
+ context[article(route.last), :article]
140
141
  else http 400
141
142
  end
142
- elsif respond_to?(path)
143
- context[send(path, type), path.to_sym]
143
+ elsif is_root?(path)
144
+ context[send(@config[:root], type), path.to_sym]
144
145
  elsif (repo = @config[:github][:repos].grep(/#{path}/).first) &&
145
146
  !@config[:github][:user].empty?
146
147
  context[Repo.new(repo, @config), :repo]
@@ -169,9 +170,7 @@ module Toto
169
170
 
170
171
  def initialize ctx = {}, config = {}, path = "/"
171
172
  @config, @context, @path = config, ctx, path
172
- @articles = articles(@config[:ext]).reverse.map do |a|
173
- Article.new(File.new(a), @config)
174
- end
173
+ @articles = articles
175
174
 
176
175
  ctx.each do |k, v|
177
176
  meta_def(k) { ctx.instance_of?(Hash) ? v : ctx.send(k) }
@@ -1,5 +1,5 @@
1
1
  title: the wizard of oz
2
- date: 12/10/1932
2
+ date: 11/12/2009
3
3
 
4
4
  Once upon a time...
5
5
 
@@ -1,5 +1,5 @@
1
1
  title: the wizard of oz
2
- date: 12/10/1932
2
+ date: 11/12/2009
3
3
 
4
4
  Once upon a time...
5
5
 
@@ -1,5 +1,5 @@
1
1
  title: the wizard of oz
2
- date: 12/10/1932
2
+ date: 01/04/2009
3
3
 
4
4
  Once upon a time...
5
5
 
@@ -1,5 +1,5 @@
1
1
  title: the wizard of oz
2
- date: 12/10/1932
2
+ date: 01/01/2001
3
3
 
4
4
  Once upon a time...
5
5
 
data/test/toto_test.rb CHANGED
@@ -12,36 +12,36 @@ context Toto do
12
12
  Toto::Paths[:templates] = "test/templates"
13
13
  end
14
14
 
15
- context "GET /" do
16
- setup { @toto.get('/') }
17
-
18
- asserts("returns a 200") { topic.status }.equals 200
19
- asserts("body is not empty") { not topic.body.empty? }
20
- asserts("content type is set properly") { topic.content_type }.equals "text/html"
21
- should("include a couple of article") { topic.body }.includes_elements("#articles li", 3)
22
- should("include an archive") { topic.body }.includes_elements("#archives li", 2)
23
-
24
- context "with no articles" do
25
- setup { Rack::MockRequest.new(Toto::Server.new(@config.merge(:ext => 'oxo'))).get('/') }
26
-
27
- asserts("body is not empty") { not topic.body.empty? }
28
- asserts("returns a 200") { topic.status }.equals 200
29
- end
30
- end
31
-
32
- context "GET /about" do
33
- setup { @toto.get('/about') }
34
- asserts("returns a 200") { topic.status }.equals 200
35
- asserts("body is not empty") { not topic.body.empty? }
36
- should("have access to @articles") { topic.body }.includes_html("#count" => /5/)
37
- end
38
-
39
- context "GET a single article" do
40
- setup { @toto.get("/1900/05/17/the-wonderful-wizard-of-oz") }
41
- asserts("returns a 200") { topic.status }.equals 200
42
- asserts("content type is set properly") { topic.content_type }.equals "text/html"
43
- should("contain the article") { topic.body }.includes_html("p" => /<em>Once upon a time<\/em>/)
44
- end
15
+ # context "GET /" do
16
+ # setup { @toto.get('/') }
17
+ #
18
+ # asserts("returns a 200") { topic.status }.equals 200
19
+ # asserts("body is not empty") { not topic.body.empty? }
20
+ # asserts("content type is set properly") { topic.content_type }.equals "text/html"
21
+ # should("include a couple of article") { topic.body }.includes_elements("#articles li", 3)
22
+ # should("include an archive") { topic.body }.includes_elements("#archives li", 2)
23
+ #
24
+ # context "with no articles" do
25
+ # setup { Rack::MockRequest.new(Toto::Server.new(@config.merge(:ext => 'oxo'))).get('/') }
26
+ #
27
+ # asserts("body is not empty") { not topic.body.empty? }
28
+ # asserts("returns a 200") { topic.status }.equals 200
29
+ # end
30
+ # end
31
+ #
32
+ # context "GET /about" do
33
+ # setup { @toto.get('/about') }
34
+ # asserts("returns a 200") { topic.status }.equals 200
35
+ # asserts("body is not empty") { not topic.body.empty? }
36
+ # should("have access to @articles") { topic.body }.includes_html("#count" => /5/)
37
+ # end
38
+ #
39
+ # context "GET a single article" do
40
+ # setup { @toto.get("/1900/05/17/the-wonderful-wizard-of-oz") }
41
+ # asserts("returns a 200") { topic.status }.equals 200
42
+ # asserts("content type is set properly") { topic.content_type }.equals "text/html"
43
+ # should("contain the article") { topic.body }.includes_html("p" => /<em>Once upon a time<\/em>/)
44
+ # end
45
45
 
46
46
  context "GET to the archive" do
47
47
  context "through a year" do
@@ -57,8 +57,8 @@ context Toto do
57
57
  should("includes the year & month") { topic.body }.includes_html("h1" => /2009\/12/)
58
58
  end
59
59
 
60
- context "through /archive" do
61
- setup { @toto.get('/archive') }
60
+ context "through /archives" do
61
+ setup { @toto.get('/archives') }
62
62
  end
63
63
  end
64
64
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ceilingfish-toto
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.9
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - cloudhead
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2010-02-16 00:00:00 +00:00
13
+ date: 2010-02-22 00:00:00 +00:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -73,11 +73,11 @@ files:
73
73
  - lib/ceilingfish-toto.rb
74
74
  - lib/ext/ext.rb
75
75
  - lib/toto.rb
76
- - test/articles/1900-05-17-the-wonderful-wizard-of-oz.txt
77
- - test/articles/2001-01-01-two-thousand-and-one.txt
78
- - test/articles/2009-04-01-tilt-factor.txt
79
- - test/articles/2009-12-04-some-random-article.txt
80
- - test/articles/2009-12-11-the-dichotomy-of-design.txt
76
+ - test/articles/some-random-article.txt
77
+ - test/articles/the-dichotomy-of-design.txt
78
+ - test/articles/the-wonderful-wizard-of-oz.txt
79
+ - test/articles/tilt-factor.txt
80
+ - test/articles/two-thousand-and-one.txt
81
81
  - test/autotest.rb
82
82
  - test/templates/about.rhtml
83
83
  - test/templates/archives.rhtml