fluffy_barbarian 0.0.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.
data/.gitignore ADDED
@@ -0,0 +1,3 @@
1
+ pkg/*
2
+ *.gem
3
+ .bundle
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in fluffy_barbarian.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,40 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ fluffy_barbarian (0.0.1)
5
+ RedCloth
6
+ activesupport
7
+ haml
8
+ i18n
9
+ rack
10
+ rdiscount
11
+ tilt
12
+
13
+ GEM
14
+ remote: http://rubygems.org/
15
+ specs:
16
+ RedCloth (4.2.3)
17
+ activesupport (3.0.1)
18
+ haml (3.0.23)
19
+ i18n (0.4.1)
20
+ rack (1.2.1)
21
+ rake (0.8.7)
22
+ rdiscount (1.6.5)
23
+ test-spec (0.10.0)
24
+ tilt (1.1)
25
+
26
+ PLATFORMS
27
+ ruby
28
+
29
+ DEPENDENCIES
30
+ RedCloth
31
+ activesupport
32
+ bundler
33
+ fluffy_barbarian!
34
+ haml
35
+ i18n
36
+ rack
37
+ rake
38
+ rdiscount
39
+ test-spec
40
+ tilt
data/README.markdown ADDED
@@ -0,0 +1,21 @@
1
+ Fluffy barbarian
2
+ =============
3
+
4
+ Very simple blog engine. Content from disk is rendered with tilt.
5
+
6
+ A sample project is being worked on right now!
7
+
8
+ Installation
9
+ -----------
10
+
11
+ gem install fluffy_barbarian
12
+
13
+ Tests
14
+ -----
15
+
16
+ bundle exec rake test
17
+
18
+ Usage
19
+ -----
20
+
21
+ TODO
data/Rakefile ADDED
@@ -0,0 +1,11 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require 'rake'
5
+ require 'rake/testtask'
6
+
7
+ Rake::TestTask.new do |t|
8
+ t.libs << "test"
9
+ t.verbose = true
10
+ t.test_files = FileList['test/**/*_test.rb']
11
+ end
@@ -0,0 +1,36 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "fluffy_barbarian/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "fluffy_barbarian"
7
+ s.version = FluffyBarbarian::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Cristi Balan"]
10
+ s.email = ["evil@che.lu"]
11
+ s.homepage = "http://rubygems.org/gems/fluffy_barbarian"
12
+ s.summary = %q{Fluffy barbarian carefully handles your blog}
13
+ s.description = s.summary + "!"
14
+
15
+ s.rubyforge_project = "fluffy_barbarian"
16
+
17
+ fixture_files = Dir["test/fixtures/content/_posts/*.mkd"]
18
+ files = "git ls-files --exclude='test/fixtures/content/_posts/*.mkd'"
19
+
20
+ s.files = `#{files}`.split("\n") + fixture_files
21
+ s.test_files = `#{files} -- {test,spec,features}/*`.split("\n") + fixture_files
22
+ s.executables = `#{files} -- bin/*`.split("\n").map{ |f| File.basename(f) }
23
+ s.require_paths = ["lib"]
24
+
25
+ s.add_development_dependency "bundler"
26
+ s.add_development_dependency "rake"
27
+ s.add_development_dependency "test-spec"
28
+
29
+ s.add_dependency "RedCloth"
30
+ s.add_dependency "i18n"
31
+ s.add_dependency "activesupport"
32
+ s.add_dependency "haml"
33
+ s.add_dependency "rack"
34
+ s.add_dependency "rdiscount"
35
+ s.add_dependency "tilt"
36
+ end
@@ -0,0 +1,86 @@
1
+ require 'uri'
2
+ require 'rack'
3
+
4
+ require 'haml'
5
+ require 'rdiscount'
6
+ require 'RedCloth'
7
+ require 'tilt'
8
+
9
+ class RawTemplate < Tilt::Template
10
+ def prepare
11
+ data
12
+ end
13
+
14
+ def precompiled_template(locals)
15
+ data
16
+ end
17
+
18
+ def evaluate(*args)
19
+ data
20
+ end
21
+ end
22
+ Tilt.register 'html', RawTemplate
23
+ Tilt.register 'css', RawTemplate
24
+
25
+ module FluffyBarbarian
26
+ class Application
27
+ include Rack::Utils
28
+ alias_method :h, :escape_html
29
+
30
+ # etag probably only useful outside of heroku
31
+ # use Rack::ETag
32
+
33
+ # set this much lower if you're not on heroku
34
+ # (i.e. if you don't have a reverse proxy)
35
+ # expires(60*60*24*10, :public)
36
+
37
+ def development?
38
+ ENV['RACK_ENV'] == 'development'
39
+ end
40
+
41
+ def production?
42
+ ENV['RACK_ENV'] == 'production'
43
+ end
44
+
45
+ def template_dir; "templates"; end
46
+ def content_dir; "content"; end
47
+ def layout; "layout"; end
48
+
49
+ def render(*args)
50
+ if args.first.is_a? Hash
51
+ options = args.first
52
+ t = options.delete(:template)
53
+ else
54
+ t = args.shift
55
+ options = args.shift || {}
56
+ end
57
+ c = options.delete(:content)
58
+ l = options.has_key?(:layout) ? options.delete(:layout) : layout
59
+
60
+ locals = options.delete(:locals) || locals || {}
61
+
62
+ if t
63
+ output = Tilt.new(guess_file(template_dir, t)).render(self, locals)
64
+ output = Tilt.new(guess_file(template_dir, l)).render(self, locals) { output } if l
65
+ elsif c
66
+ output = Tilt.new(guess_file(content_dir, c)).render(self, locals)
67
+ else
68
+ raise ArgumentError
69
+ end
70
+
71
+ output
72
+ end
73
+
74
+ def guess_file(dir, path)
75
+ dir = dir.to_s
76
+ path = path.to_s
77
+
78
+ return path if File.exists? path
79
+
80
+ path = File.join(dir, path)
81
+ return path if File.exists? path
82
+
83
+ return Dir["#{path}*"].first
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,33 @@
1
+ require 'active_support'
2
+ require 'active_support/inflector/transliterate'
3
+ require 'date'
4
+
5
+ module Enumerable
6
+ def tidy
7
+ self.find_all{ |e| e && e.tidy != "" }.map(&:tidy)
8
+ end
9
+ end
10
+
11
+ class String
12
+ def tidy
13
+ self.chomp.strip.squeeze(" ")
14
+ end
15
+
16
+ # nicked form AS
17
+ def parameterize(sep = '-')
18
+ ActiveSupport::Inflector.parameterize(self, sep)
19
+ end
20
+ end
21
+
22
+ class Date
23
+ def to_s(style=nil)
24
+ month_names = ['ianuarie', 'februarie', 'martie', 'aprilie', 'mai', 'iunie', 'iulie', 'august', 'septembrie', 'octombrie', 'noiembrie', 'decembrie']
25
+ case style
26
+ when :short
27
+ "#{self.day} #{month_names[self.month-1]}"
28
+ when :long
29
+ "#{self.day} #{month_names[self.month-1]} #{self.year}"
30
+ else
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,123 @@
1
+ module FluffyBarbarian
2
+ class Index
3
+ public
4
+ def initialize(path="content/_posts")
5
+ @path = path
6
+ @index_path = "#{@path}.mkd"
7
+ @parsed = nil
8
+ @on_disk = nil
9
+ end
10
+
11
+ def parsed(text=nil)
12
+ return @parsed if @parsed
13
+
14
+ text ||= File.read(@index_path)
15
+ @parsed = []
16
+ posts = text.split(/^(# .*$)\n/).tidy
17
+ posts.each_with_index do |title, index|
18
+ next unless title[0..1] == "# "
19
+
20
+ post = parse_meta(posts[index+1])
21
+ post[:title] = title[2..-1].tidy
22
+
23
+ post[:autoslug] = post[:title].parameterize
24
+ unless post[:slug]
25
+ post[:slug] = post[:autoslug]
26
+ end
27
+ post[:url] = "/#{post[:happened_on].tr("-","/")}/#{post[:slug]}"
28
+
29
+ @parsed << post
30
+ end
31
+
32
+ @parsed
33
+ end
34
+
35
+ def on_disk(path=nil)
36
+ return @on_disk if @on_disk
37
+
38
+ path ||= @path
39
+
40
+ @on_disk = Dir[File.join(path, "**", "*")].select{ |f| File.file? f }
41
+ @on_disk = @on_disk.sort.map do |file|
42
+ title = File.basename(file, ".*").tidy
43
+ { :title => title, :path => File.expand_path(file),
44
+ :autoslug => title.parameterize,
45
+ :extname => File.extname(file) }
46
+ end
47
+ end
48
+
49
+ def sane?
50
+ return false if parsed.length != on_disk.length
51
+ end
52
+
53
+ def all
54
+ @all ||= parsed.map do |post|
55
+ if file = on_disk.find{ |f| f[:autoslug] == post[:autoslug] }
56
+ post[:path] = file[:path]
57
+ post[:extname] = file[:extname]
58
+ post
59
+ end
60
+ end.compact.each_with_index do |post, index|
61
+ post[:index] = index
62
+ post[:type] = "post"
63
+ post[:updated_on] = updated_on(post)
64
+ end
65
+ end
66
+
67
+ def find(splat, slug)
68
+ @post = all.find{|p| p[:slug] == slug.parameterize }
69
+
70
+ return nil unless @post
71
+
72
+ dir = splat.split("/").tidy.map{ |part| part.parameterize }.join("/")
73
+ if slug != @post[:slug] || dir != @post[:happened_on].tr("-","/")
74
+ @post[:fuzzy] = true
75
+ else
76
+ @post[:content] ||= Tilt.new(@post[:path]).render
77
+ @post[:previous] = all[@post[:index] - 1] if @post[:index] > 0
78
+ @post[:next] = all[@post[:index] + 1]
79
+ end
80
+
81
+ @post
82
+ end
83
+
84
+ private
85
+ # according to RFC3339. Example: 2003-12-13T18:30:02Z
86
+ def updated_on(post)
87
+ title = post[:title].gsub(" ", "")
88
+ # so that we don't have two posts on the same date :D
89
+ minutes = title[0].chr.downcase[0] - 87
90
+ seconds = title[1].chr.downcase[0] - 87
91
+ "#{post[:written_on]}T12:#{minutes}:#{seconds}Z"
92
+ end
93
+
94
+ def parse_meta(raw_meta)
95
+ meta = {}
96
+ raw_meta.split("\n").tidy.each do |line|
97
+ if !line.include? ":"
98
+ dates = line.split(",").tidy.map { |d|
99
+ Date.parse(d.gsub(/\D/, "-")).strftime("%Y-%m-%d")
100
+ }
101
+ meta[:happened_on] = dates[0]
102
+ meta[:written_on] = dates[1] || meta[:happened_on]
103
+ else
104
+ parts = line.split(":").tidy
105
+ key = parts[0].to_sym
106
+ case key
107
+ when :tags
108
+ meta[key] = parts[1].split(",").tidy
109
+ when :location
110
+ # can be
111
+ # Buenos Aires
112
+ # Caranavi(-15.833,-67.565)
113
+ location = parts[1].split(/\(|\)/)
114
+ meta[key] = [ location[0], location[1] || location[0] ]
115
+ else
116
+ meta[key] = parts[1]
117
+ end
118
+ end
119
+ end
120
+ meta
121
+ end
122
+ end
123
+ end
@@ -0,0 +1,39 @@
1
+ module FluffyBarbarian
2
+ class Page
3
+ def self.all(path="content/_pages")
4
+ @pages = Dir[File.join(path, "**", "*")].select{ |f| File.file? f }
5
+ @pages = @pages.sort.map do |file|
6
+ title = File.basename(file, ".*").tidy
7
+ dir = file.split("/")[2..-2].map{ |dir| dir.parameterize }.join("/")
8
+ slug = title.parameterize
9
+ { :title => title, :path => File.expand_path(file), :type => "page",
10
+ :autoslug => slug,
11
+ :slug => slug,
12
+ :dir => dir,
13
+ :url => "#{"/#{dir}" if dir != ""}/#{slug}",
14
+ :extname => File.extname(file) }
15
+ end
16
+ end
17
+
18
+ def self.find(splat, slug)
19
+ dir = ""
20
+ # scope by directory first
21
+ if splat
22
+ dir = splat.split("/").tidy.map{ |part| part.parameterize }.join("/")
23
+
24
+ @page = all.find{|page| page[:dir] == dir && page[:slug] == slug.parameterize }
25
+ end
26
+ @page ||= all.find{|page| page[:slug] == slug.parameterize }
27
+
28
+ return nil unless @page
29
+
30
+ if slug != @page[:slug] || dir != @page[:dir]
31
+ @page[:fuzzy] = true
32
+ else
33
+ @page[:content] ||= Tilt.new(@page[:path]).render
34
+ end
35
+
36
+ @page
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,4 @@
1
+ module FluffyBarbarian
2
+ class Post
3
+ end
4
+ end
@@ -0,0 +1,3 @@
1
+ module FluffyBarbarian
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,15 @@
1
+ require 'fluffy_barbarian/ext'
2
+
3
+ require 'fluffy_barbarian/index'
4
+ require 'fluffy_barbarian/post'
5
+ require 'fluffy_barbarian/page'
6
+ require 'fluffy_barbarian/application'
7
+
8
+ module FluffyBarbarian
9
+ class FluffyBarbarianError < StandardError
10
+ # def message
11
+ # value = super
12
+ # value if value != self.class.name
13
+ # end
14
+ end
15
+ end
@@ -0,0 +1 @@
1
+ [Mmm more pie](http://www.weebls-stuff.com/wab/donkey/)
@@ -0,0 +1 @@
1
+ [Mmm pie](http://www.weebls-stuff.com/wab/pie/)
@@ -0,0 +1,8 @@
1
+ # I'm içi, todo bem?
2
+ 2009 11 17, 2010 06 02
3
+ tags: brasil, greeting, todo bém
4
+
5
+ # Mmm pie
6
+ 2009 12 18, 2010 06 05
7
+ tags: mmm, pie
8
+
@@ -0,0 +1,69 @@
1
+ require File.join(File.dirname(__FILE__), "test_helper")
2
+
3
+ describe "FluffyBarbarian::Index, parsing" do
4
+ [
5
+ ["# Mmm pie\n 2009 10 01, 2010 04 12\n tags: brazil, sao paulo",
6
+ [
7
+ { :title => "Mmm pie", :autoslug => "mmm-pie", :slug => "mmm-pie",
8
+ :url => "/2009/10/01/mmm-pie",
9
+ :happened_on => "2009-10-01", :written_on => "2010-04-12",
10
+ :tags => ["brazil", "sao paulo"] }
11
+ ]
12
+ ],
13
+
14
+ ["# Mmm more pie\n 2009 10 15 \n pie: brazil, sao paulo \nslug: moar-pie",
15
+ [
16
+ { :title => "Mmm more pie", :autoslug => "mmm-more-pie", :slug => "moar-pie",
17
+ :url => "/2009/10/15/moar-pie",
18
+ :happened_on => "2009-10-15", :written_on => "2009-10-15",
19
+ :pie => "brazil, sao paulo" }
20
+ ]
21
+ ],
22
+
23
+ ["# Mmm pie\n 2009 10 01, 2010 04 12\n tags: brazil, sao paulo\n\n" +
24
+ "# Mmm more pie\n 2009 10 15 \n pie: brazil , sao paulo",
25
+ [
26
+ { :title => "Mmm pie", :slug => "mmm-pie", :autoslug => "mmm-pie",
27
+ :url => "/2009/10/01/mmm-pie",
28
+ :happened_on => "2009-10-01", :written_on => "2010-04-12",
29
+ :tags => ["brazil", "sao paulo"] },
30
+
31
+ { :title => "Mmm more pie", :slug => "mmm-more-pie", :autoslug => "mmm-more-pie",
32
+ :url => "/2009/10/15/mmm-more-pie",
33
+ :happened_on => "2009-10-15", :written_on => "2009-10-15",
34
+ :pie => "brazil , sao paulo" }
35
+ ],
36
+ ]
37
+
38
+ ].each_with_index do |(raw, parsed), i|
39
+ it "should parse: take #{i}" do
40
+ FluffyBarbarian::Index.new.parsed(raw).should == parsed
41
+ end
42
+ end
43
+
44
+ end
45
+
46
+ describe "FluffyBarbarian::Index, finding" do
47
+ it "should find all posts on disk" do
48
+ index = FluffyBarbarian::Index.new(File.join(FIXTURES, "content/_posts"))
49
+
50
+ index.on_disk.collect{|f| f[:title]}.should ==
51
+ ["I'm içi, todo bem?", "Mmm more pie", "Mmm pie", "Möré weîrd stuff!"]
52
+
53
+ index.on_disk.first[:extname].should == ".mkd"
54
+ end
55
+
56
+ it "should know if it's sane" do
57
+ index = FluffyBarbarian::Index.new(File.join(FIXTURES, "content/_posts"))
58
+ index.should.not.be.sane
59
+ end
60
+
61
+ it "should return all available posts" do
62
+ index = FluffyBarbarian::Index.new(File.join(FIXTURES, "content/_posts"))
63
+
64
+ index.all.collect{|f| f[:title]}.should ==
65
+ ["I'm içi, todo bem?", "Mmm pie"]
66
+
67
+ index.all.first[:extname].should == ".mkd"
68
+ end
69
+ end
@@ -0,0 +1,9 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), "../lib")
2
+ ENV["RACK_ENV"] = "test"
3
+
4
+ FIXTURES = File.join(File.dirname(__FILE__), "fixtures")
5
+
6
+ # require 'mocha'
7
+ require 'test/spec'
8
+
9
+ require 'fluffy_barbarian'
metadata ADDED
@@ -0,0 +1,232 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fluffy_barbarian
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Cristi Balan
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-11-01 00:00:00 -04:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: bundler
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ type: :development
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: rake
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ hash: 3
44
+ segments:
45
+ - 0
46
+ version: "0"
47
+ type: :development
48
+ version_requirements: *id002
49
+ - !ruby/object:Gem::Dependency
50
+ name: test-spec
51
+ prerelease: false
52
+ requirement: &id003 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ hash: 3
58
+ segments:
59
+ - 0
60
+ version: "0"
61
+ type: :development
62
+ version_requirements: *id003
63
+ - !ruby/object:Gem::Dependency
64
+ name: RedCloth
65
+ prerelease: false
66
+ requirement: &id004 !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ hash: 3
72
+ segments:
73
+ - 0
74
+ version: "0"
75
+ type: :runtime
76
+ version_requirements: *id004
77
+ - !ruby/object:Gem::Dependency
78
+ name: i18n
79
+ prerelease: false
80
+ requirement: &id005 !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ hash: 3
86
+ segments:
87
+ - 0
88
+ version: "0"
89
+ type: :runtime
90
+ version_requirements: *id005
91
+ - !ruby/object:Gem::Dependency
92
+ name: activesupport
93
+ prerelease: false
94
+ requirement: &id006 !ruby/object:Gem::Requirement
95
+ none: false
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ hash: 3
100
+ segments:
101
+ - 0
102
+ version: "0"
103
+ type: :runtime
104
+ version_requirements: *id006
105
+ - !ruby/object:Gem::Dependency
106
+ name: haml
107
+ prerelease: false
108
+ requirement: &id007 !ruby/object:Gem::Requirement
109
+ none: false
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ hash: 3
114
+ segments:
115
+ - 0
116
+ version: "0"
117
+ type: :runtime
118
+ version_requirements: *id007
119
+ - !ruby/object:Gem::Dependency
120
+ name: rack
121
+ prerelease: false
122
+ requirement: &id008 !ruby/object:Gem::Requirement
123
+ none: false
124
+ requirements:
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ hash: 3
128
+ segments:
129
+ - 0
130
+ version: "0"
131
+ type: :runtime
132
+ version_requirements: *id008
133
+ - !ruby/object:Gem::Dependency
134
+ name: rdiscount
135
+ prerelease: false
136
+ requirement: &id009 !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ hash: 3
142
+ segments:
143
+ - 0
144
+ version: "0"
145
+ type: :runtime
146
+ version_requirements: *id009
147
+ - !ruby/object:Gem::Dependency
148
+ name: tilt
149
+ prerelease: false
150
+ requirement: &id010 !ruby/object:Gem::Requirement
151
+ none: false
152
+ requirements:
153
+ - - ">="
154
+ - !ruby/object:Gem::Version
155
+ hash: 3
156
+ segments:
157
+ - 0
158
+ version: "0"
159
+ type: :runtime
160
+ version_requirements: *id010
161
+ description: Fluffy barbarian carefully handles your blog!
162
+ email:
163
+ - evil@che.lu
164
+ executables: []
165
+
166
+ extensions: []
167
+
168
+ extra_rdoc_files: []
169
+
170
+ files:
171
+ - .gitignore
172
+ - Gemfile
173
+ - Gemfile.lock
174
+ - README.markdown
175
+ - Rakefile
176
+ - fluffy_barbarian.gemspec
177
+ - lib/fluffy_barbarian.rb
178
+ - lib/fluffy_barbarian/application.rb
179
+ - lib/fluffy_barbarian/ext.rb
180
+ - lib/fluffy_barbarian/index.rb
181
+ - lib/fluffy_barbarian/page.rb
182
+ - lib/fluffy_barbarian/post.rb
183
+ - lib/fluffy_barbarian/version.rb
184
+ - test/fixtures/content/_posts.mkd
185
+ - test/index_test.rb
186
+ - test/test_helper.rb
187
+ - "test/fixtures/content/_posts/I'm ic\xCC\xA7i, todo bem?.mkd"
188
+ - test/fixtures/content/_posts/Mmm more pie.mkd
189
+ - test/fixtures/content/_posts/Mmm pie.mkd
190
+ - "test/fixtures/content/_posts/Mo\xCC\x88re\xCC\x81 wei\xCC\x82rd stuff!.mkd"
191
+ has_rdoc: true
192
+ homepage: http://rubygems.org/gems/fluffy_barbarian
193
+ licenses: []
194
+
195
+ post_install_message:
196
+ rdoc_options: []
197
+
198
+ require_paths:
199
+ - lib
200
+ required_ruby_version: !ruby/object:Gem::Requirement
201
+ none: false
202
+ requirements:
203
+ - - ">="
204
+ - !ruby/object:Gem::Version
205
+ hash: 3
206
+ segments:
207
+ - 0
208
+ version: "0"
209
+ required_rubygems_version: !ruby/object:Gem::Requirement
210
+ none: false
211
+ requirements:
212
+ - - ">="
213
+ - !ruby/object:Gem::Version
214
+ hash: 3
215
+ segments:
216
+ - 0
217
+ version: "0"
218
+ requirements: []
219
+
220
+ rubyforge_project: fluffy_barbarian
221
+ rubygems_version: 1.3.7
222
+ signing_key:
223
+ specification_version: 3
224
+ summary: Fluffy barbarian carefully handles your blog
225
+ test_files:
226
+ - test/fixtures/content/_posts.mkd
227
+ - test/index_test.rb
228
+ - test/test_helper.rb
229
+ - "test/fixtures/content/_posts/I'm ic\xCC\xA7i, todo bem?.mkd"
230
+ - test/fixtures/content/_posts/Mmm more pie.mkd
231
+ - test/fixtures/content/_posts/Mmm pie.mkd
232
+ - "test/fixtures/content/_posts/Mo\xCC\x88re\xCC\x81 wei\xCC\x82rd stuff!.mkd"