tributary 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 +1 -0
- data/.rspec +6 -0
- data/LICENCE +661 -0
- data/README.md +99 -0
- data/Rakefile +5 -0
- data/config.ru +9 -0
- data/lib/tributary/app.rb +61 -0
- data/lib/tributary/item.rb +66 -0
- data/lib/tributary/plugins/dummy.rb +7 -0
- data/lib/tributary/plugins/mnml.rb +14 -0
- data/lib/tributary/plugins/unbreak_my_art.rb +22 -0
- data/lib/tributary/stream.rb +51 -0
- data/lib/tributary.rb +8 -0
- data/spec/fixtures/index.en.en+pl.xml +50 -0
- data/spec/fixtures/index.en.en.xml +50 -0
- data/spec/fixtures/index.en.xml +50 -0
- data/spec/fixtures/index.pl.pl.xml +50 -0
- data/spec/fixtures/index.pl.xml +50 -0
- data/spec/fixtures/index.xml +50 -0
- data/spec/fixtures/layout.css +22 -0
- data/spec/fixtures/pages.css +2 -0
- data/spec/site/articles/600.en.md +5 -0
- data/spec/site/articles/600.md +5 -0
- data/spec/site/articles/bilingual.en.md +4 -0
- data/spec/site/articles/bilingual.pl.md +4 -0
- data/spec/site/articles/unix-millennium-bug.en.md +4 -0
- data/spec/site/articles/welcome.md +4 -0
- data/spec/site/beeps/beep.md +3 -0
- data/spec/site/beeps/dated.md +3 -0
- data/spec/site/beeps/english.en.md +3 -0
- data/spec/site/beeps/link.md +3 -0
- data/spec/site/beeps/polish.pl.md +3 -0
- data/spec/site/beeps/quote.md +4 -0
- data/spec/site/i18n/en.yml +12 -0
- data/spec/site/i18n/pl.yml +12 -0
- data/spec/site/pages/about.md +5 -0
- data/spec/site/views/articles.haml +4 -0
- data/spec/site/views/articles.index.haml +6 -0
- data/spec/site/views/articles.index.sass +0 -0
- data/spec/site/views/articles.sass +2 -0
- data/spec/site/views/beeps.haml +1 -0
- data/spec/site/views/beeps.sass +2 -0
- data/spec/site/views/error.haml +8 -0
- data/spec/site/views/error.sass +6 -0
- data/spec/site/views/index.haml +6 -0
- data/spec/site/views/index.sass +2 -0
- data/spec/site/views/index.xml.haml +17 -0
- data/spec/site/views/layout.haml +56 -0
- data/spec/site/views/layout.sass +22 -0
- data/spec/site/views/pages.haml +3 -0
- data/spec/site/views/pages.sass +2 -0
- data/spec/tributary/app_spec.rb +266 -0
- data/spec/tributary/item_spec.rb +129 -0
- data/spec/tributary/plugins/dummy_spec.rb +12 -0
- data/spec/tributary/plugins/mnml_spec.rb +16 -0
- data/spec/tributary/plugins/unbreak_my_art_spec.rb +36 -0
- data/spec/tributary/stream_spec.rb +155 -0
- data/tributary.gemspec +18 -0
- metadata +204 -0
@@ -0,0 +1,129 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
module Tributary describe Item do
|
4
|
+
|
5
|
+
before :all do
|
6
|
+
App.configure {}
|
7
|
+
@about = Item.new 'spec/site/pages/about.md'
|
8
|
+
@battle = Item.new 'spec/site/articles/600.md'
|
9
|
+
@battle_en = Item.new 'spec/site/articles/600.en.md'
|
10
|
+
@beep = Item.new 'spec/site/beeps/beep.md'
|
11
|
+
@bi_en = Item.new 'spec/site/articles/bilingual.en.md'
|
12
|
+
@bi_pl = Item.new 'spec/site/articles/bilingual.pl.md'
|
13
|
+
@unix = Item.new 'spec/site/articles/unix-millennium-bug.en.md'
|
14
|
+
@welcome = Item.new 'spec/site/articles/welcome.md'
|
15
|
+
end
|
16
|
+
|
17
|
+
context '#<=>' do
|
18
|
+
|
19
|
+
it 'sorts Items by date, date-less last' do
|
20
|
+
[@bi_en, @beep, @welcome, @about, @battle].sort.should == [@battle, @bi_en, @welcome, @beep, @about]
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'sorts same-path Items by lang, based on App.locale' do
|
24
|
+
App.locale = 'pl'
|
25
|
+
[@bi_en, @bi_pl].sort.should == [@bi_pl, @bi_en]
|
26
|
+
[@battle_en, @battle].sort.should == [@battle, @battle_en]
|
27
|
+
App.locale = 'en'
|
28
|
+
[@bi_pl, @bi_en].sort.should == [@bi_en, @bi_pl]
|
29
|
+
[@battle, @battle_en].sort.should == [@battle_en, @battle]
|
30
|
+
App.locale = nil
|
31
|
+
[@bi_pl, @bi_en].sort.should == [@bi_en, @bi_pl]
|
32
|
+
[@battle_en, @battle].sort.should == [@battle, @battle_en]
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
context '#body' do
|
38
|
+
|
39
|
+
it 'returns the given Item’s markdown-processed body' do
|
40
|
+
@about.body.should == "<p>tributary <em>about</em> page</p>\n\n<p>about this tributary install</p>\n"
|
41
|
+
@welcome.body.should == "<p>tributary <em>welcome</em> article</p>\n"
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
context '#date' do
|
47
|
+
|
48
|
+
it 'returns the given Item’s parsed Time' do
|
49
|
+
@about.date.should == nil
|
50
|
+
@battle.date.should == Time.mktime(2010, 7, 15, 12, 00)
|
51
|
+
@unix.date.should == Time.utc(2038, 1, 19, 3, 14, 07)
|
52
|
+
@welcome.date.should == Time.mktime(2010, 7, 15)
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
|
57
|
+
context '#eql?' do
|
58
|
+
|
59
|
+
it 'returns predicate for sane use of Items as Hash keys' do
|
60
|
+
@about.should be_eql Item.new('spec/site/pages/about.md')
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
context '#hash' do
|
66
|
+
|
67
|
+
it 'returns static value for sane use of Items as Hash keys' do
|
68
|
+
@about.hash.should == Item.new('spec/site/pages/about.md').hash
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
72
|
+
|
73
|
+
context '#lang' do
|
74
|
+
|
75
|
+
it 'returns the Item’s language (if defined)' do
|
76
|
+
@about.lang.should == nil
|
77
|
+
@bi_en.lang.should == 'en'
|
78
|
+
@bi_pl.lang.should == 'pl'
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
82
|
+
|
83
|
+
context '#path' do
|
84
|
+
|
85
|
+
it 'returns the given Item’s path' do
|
86
|
+
@about.path.should == 'about'
|
87
|
+
@battle.path.should == '600'
|
88
|
+
@bi_en.path.should == 'bilingual'
|
89
|
+
@bi_pl.path.should == 'bilingual'
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|
93
|
+
|
94
|
+
context '#published?' do
|
95
|
+
|
96
|
+
it 'returns whether the given Item has a date in the past' do
|
97
|
+
@about.should_not be_published
|
98
|
+
@battle.should be_published
|
99
|
+
@unix.should_not be_published
|
100
|
+
@welcome.should be_published
|
101
|
+
end
|
102
|
+
|
103
|
+
end
|
104
|
+
|
105
|
+
context '#title' do
|
106
|
+
|
107
|
+
it 'returns the given Item’s YAML-specified title' do
|
108
|
+
@about.title.should == 'about tributary'
|
109
|
+
@welcome.title.should == 'welcome to tributary'
|
110
|
+
end
|
111
|
+
|
112
|
+
it 'returns elided body if the YAML-specified title is missing' do
|
113
|
+
Item.new('spec/site/beeps/beep.md').title.should == 'beep…'
|
114
|
+
Item.new('spec/site/beeps/link.md').title.should == 'Qué…'
|
115
|
+
Item.new('spec/site/beeps/quote.md').title.should == 'An…'
|
116
|
+
end
|
117
|
+
|
118
|
+
end
|
119
|
+
|
120
|
+
context '#type' do
|
121
|
+
|
122
|
+
it 'returns the given Item’s type' do
|
123
|
+
@about.type.should == :pages
|
124
|
+
@welcome.type.should == :articles
|
125
|
+
end
|
126
|
+
|
127
|
+
end
|
128
|
+
|
129
|
+
end end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
module Tributary describe Plugins::Mnml do
|
4
|
+
|
5
|
+
context '#handle' do
|
6
|
+
|
7
|
+
it 'minimalises the given Item’s title and body' do
|
8
|
+
item = mock Item, body: 'a wonderful body', title: 'an interesting title'
|
9
|
+
mnml = Plugins::Mnml.new.handle item
|
10
|
+
mnml.body.should == ' wndrfl bd'
|
11
|
+
mnml.title.should == 'n ntrstng ttl'
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
end end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
module Tributary describe Plugins::UnbreakMyArt do
|
4
|
+
|
5
|
+
def unbreak string
|
6
|
+
Plugins::UnbreakMyArt.new.handle(mock Item, body: string).body
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '#handle' do
|
10
|
+
|
11
|
+
it 'prevents line wrapping after single-letter words' do
|
12
|
+
unbreak('give me a break').should == 'give me a break'
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'prevents line wrapping after line-starting single-letter words' do
|
16
|
+
unbreak('a fish!').should == 'a fish!'
|
17
|
+
unbreak("this is\na fish!").should == "this is\na fish!"
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'does not alter one-letter HTML tags' do
|
21
|
+
unbreak("<a href='http://en.wikipedia.org/wiki/Invisible_Pink_Unicorn'>I want to believe</a>").should == "<a href='http://en.wikipedia.org/wiki/Invisible_Pink_Unicorn'>I want to believe</a>"
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'allows for optional trailing punctuation' do
|
25
|
+
unbreak('I, Clau-Clau-Claudius').should == 'I, Clau-Clau-Claudius'
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'unbreaks bodies and titles' do
|
29
|
+
unbroken = Plugins::UnbreakMyArt.new.handle mock Item, title: 'about a ninja', body: 'and a pirate'
|
30
|
+
unbroken.title.should == 'about a ninja'
|
31
|
+
unbroken.body.should == 'and a pirate'
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
end end
|
@@ -0,0 +1,155 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
module Tributary describe Stream do
|
4
|
+
|
5
|
+
before :all do
|
6
|
+
@about = Item.new 'spec/site/pages/about.md'
|
7
|
+
@battle = Item.new 'spec/site/articles/600.md'
|
8
|
+
@btl_en = Item.new 'spec/site/articles/600.en.md'
|
9
|
+
@bi_en = Item.new 'spec/site/articles/bilingual.en.md'
|
10
|
+
@bi_pl = Item.new 'spec/site/articles/bilingual.pl.md'
|
11
|
+
@dated = Item.new 'spec/site/beeps/dated.md'
|
12
|
+
@english = Item.new 'spec/site/beeps/english.en.md'
|
13
|
+
@polish = Item.new 'spec/site/beeps/polish.pl.md'
|
14
|
+
@unix = Item.new 'spec/site/articles/unix-millennium-bug.en.md'
|
15
|
+
@welcome = Item.new 'spec/site/articles/welcome.md'
|
16
|
+
end
|
17
|
+
|
18
|
+
before :each do
|
19
|
+
App.configure { |config| config.set :root, 'spec/site' }
|
20
|
+
@stream = Stream.new
|
21
|
+
end
|
22
|
+
|
23
|
+
context '#initialize' do
|
24
|
+
|
25
|
+
it 'filters the Items through the provided Plugins' do
|
26
|
+
App.plugins = [Plugins::Mnml.new]
|
27
|
+
plugged = Stream.new
|
28
|
+
@stream.recent.map(&:title).should == ['ten…', 'this…', '600th anniversary (intl.)', 'bilinguality', 'a…', 'welcome to tributary']
|
29
|
+
plugged.recent.map(&:title).should == ['tn…', 'ths…', '600th nnvrsr (ntl.)', 'blnglt', '…', 'wlcm t trbtr']
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
context '#langs' do
|
35
|
+
|
36
|
+
it 'returns an Array of langs used in the Items' do
|
37
|
+
@stream.langs.should == ['en', 'pl']
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
context '#pick_item' do
|
43
|
+
|
44
|
+
it 'returns the relevant Item based on the provided path' do
|
45
|
+
@stream.pick_item('about').should == @about
|
46
|
+
@stream.pick_item('welcome').should == @welcome
|
47
|
+
@stream.pick_item('bilingual.en').should == @bi_en
|
48
|
+
@stream.pick_item('bilingual.pl').should == @bi_pl
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'returns the first language version of an Item (if no Items match App.locale)' do
|
52
|
+
@stream.pick_item('bilingual').should == @bi_en
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'returns an Item even if it’s outside of current App.lang_limit' do
|
56
|
+
App.lang_limit = ['pl']
|
57
|
+
@stream.pick_item('unix-millennium-bug').should == @unix
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'returns the relevant language version of an Item' do
|
61
|
+
App.set :locale, 'en'
|
62
|
+
@stream.pick_item('bilingual').should == @bi_en
|
63
|
+
@stream.pick_item('about').should == @about
|
64
|
+
App.set :locale, 'pl'
|
65
|
+
@stream.pick_item('bilingual').should == @bi_pl
|
66
|
+
@stream.pick_item('about').should == @about
|
67
|
+
App.set :locale, nil
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
|
72
|
+
context '#previous' do
|
73
|
+
|
74
|
+
it 'returns an Item previous to the given Item' do
|
75
|
+
@stream.previous(@battle).should == @bi_en
|
76
|
+
@stream.previous(@welcome).should == nil
|
77
|
+
@stream.previous(@about).should == nil
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'returns an Item previous to the Item with the same path (if the given Item’s lang != App.locale)' do
|
81
|
+
@stream.previous(@bi_en).should == @dated
|
82
|
+
@stream.previous(@bi_pl).should == @dated
|
83
|
+
end
|
84
|
+
|
85
|
+
it 'returns an Item previous to the given Item with the given type' do
|
86
|
+
@stream.previous(@bi_en).should == @dated
|
87
|
+
@stream.previous(@bi_en, type: :articles).should == @welcome
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
91
|
+
|
92
|
+
context '#recent' do
|
93
|
+
|
94
|
+
it 'returns published Items, newest-first' do
|
95
|
+
@stream.recent.should == [@polish, @english, @battle, @bi_en, @dated, @welcome]
|
96
|
+
end
|
97
|
+
|
98
|
+
it 'returns properly localised Items (if available)' do
|
99
|
+
App.locale = 'pl'
|
100
|
+
@stream.recent.should == [@polish, @english, @battle, @bi_pl, @dated, @welcome]
|
101
|
+
App.locale = 'en'
|
102
|
+
@stream.recent.should == [@polish, @english, @btl_en, @bi_en, @dated, @welcome]
|
103
|
+
App.locale = nil
|
104
|
+
@stream.recent.should == [@polish, @english, @battle, @bi_en, @dated, @welcome]
|
105
|
+
end
|
106
|
+
|
107
|
+
it 'returns lang_limited Items (if requested)' do
|
108
|
+
App.lang_limit = ['en']
|
109
|
+
@stream.recent.should == [@english, @battle, @bi_en, @dated, @welcome]
|
110
|
+
App.lang_limit = ['pl']
|
111
|
+
@stream.recent.should == [@polish, @battle, @bi_pl, @dated, @welcome]
|
112
|
+
App.lang_limit = []
|
113
|
+
@stream.recent.should == [@polish, @english, @battle, @bi_en, @dated, @welcome]
|
114
|
+
end
|
115
|
+
|
116
|
+
it 'returns a limited number of newest Items' do
|
117
|
+
@stream.recent(1).should == [@polish]
|
118
|
+
end
|
119
|
+
|
120
|
+
it 'returns a list of Items with a given type' do
|
121
|
+
@stream.recent(nil, type: :articles).should == [@battle, @bi_en, @welcome]
|
122
|
+
@stream.recent(2, type: :articles).should == [@battle, @bi_en]
|
123
|
+
end
|
124
|
+
|
125
|
+
end
|
126
|
+
|
127
|
+
context '#subsequent' do
|
128
|
+
|
129
|
+
it 'returns an Item subsequent to the given Item' do
|
130
|
+
@stream.subsequent(@welcome).should == @dated
|
131
|
+
@stream.subsequent(@polish).should == nil
|
132
|
+
@stream.subsequent(@about).should == nil
|
133
|
+
end
|
134
|
+
|
135
|
+
it 'returns an Item subsequent to the Item with the same path (if the given Item’s lang != App.locale)' do
|
136
|
+
@stream.subsequent(@bi_en).should == @battle
|
137
|
+
@stream.subsequent(@bi_pl).should == @battle
|
138
|
+
end
|
139
|
+
|
140
|
+
it 'returns an Item subsequent to the given Item with the given type' do
|
141
|
+
@stream.subsequent(@welcome).should == @dated
|
142
|
+
@stream.subsequent(@welcome, type: :articles).should == @bi_en
|
143
|
+
end
|
144
|
+
|
145
|
+
end
|
146
|
+
|
147
|
+
context '#types' do
|
148
|
+
|
149
|
+
it 'returns an Array of the Items’ types' do
|
150
|
+
@stream.types.should == [:articles, :beeps, :pages]
|
151
|
+
end
|
152
|
+
|
153
|
+
end
|
154
|
+
|
155
|
+
end end
|
data/tributary.gemspec
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
Gem::Specification.new do |gem|
|
2
|
+
gem.name = 'tributary'
|
3
|
+
gem.version = '0.0.1'
|
4
|
+
gem.summary = 'tributary: a tiny, toto-inspired blogging engine'
|
5
|
+
gem.homepage = 'http://github.com/chastell/tributary'
|
6
|
+
gem.author = 'Piotr Szotkowski'
|
7
|
+
gem.email = 'chastell@chastell.net'
|
8
|
+
|
9
|
+
gem.files = `git ls-files -z`.split "\0"
|
10
|
+
gem.test_files = Dir['spec/**/*.rb']
|
11
|
+
|
12
|
+
gem.add_dependency 'haml'
|
13
|
+
gem.add_dependency 'kramdown'
|
14
|
+
gem.add_dependency 'sinatra', '>= 1.1'
|
15
|
+
gem.add_dependency 'sinatra-r18n'
|
16
|
+
gem.add_development_dependency 'rack-test'
|
17
|
+
gem.add_development_dependency 'rspec', '>= 2'
|
18
|
+
end
|
metadata
ADDED
@@ -0,0 +1,204 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: tributary
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
version: 0.0.1
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Piotr Szotkowski
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2010-10-31 01:00:00 +02:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: haml
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
segments:
|
29
|
+
- 0
|
30
|
+
version: "0"
|
31
|
+
type: :runtime
|
32
|
+
version_requirements: *id001
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: kramdown
|
35
|
+
prerelease: false
|
36
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
37
|
+
none: false
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
segments:
|
42
|
+
- 0
|
43
|
+
version: "0"
|
44
|
+
type: :runtime
|
45
|
+
version_requirements: *id002
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: sinatra
|
48
|
+
prerelease: false
|
49
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
segments:
|
55
|
+
- 1
|
56
|
+
- 1
|
57
|
+
version: "1.1"
|
58
|
+
type: :runtime
|
59
|
+
version_requirements: *id003
|
60
|
+
- !ruby/object:Gem::Dependency
|
61
|
+
name: sinatra-r18n
|
62
|
+
prerelease: false
|
63
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
64
|
+
none: false
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
segments:
|
69
|
+
- 0
|
70
|
+
version: "0"
|
71
|
+
type: :runtime
|
72
|
+
version_requirements: *id004
|
73
|
+
- !ruby/object:Gem::Dependency
|
74
|
+
name: rack-test
|
75
|
+
prerelease: false
|
76
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
77
|
+
none: false
|
78
|
+
requirements:
|
79
|
+
- - ">="
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
segments:
|
82
|
+
- 0
|
83
|
+
version: "0"
|
84
|
+
type: :development
|
85
|
+
version_requirements: *id005
|
86
|
+
- !ruby/object:Gem::Dependency
|
87
|
+
name: rspec
|
88
|
+
prerelease: false
|
89
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
segments:
|
95
|
+
- 2
|
96
|
+
version: "2"
|
97
|
+
type: :development
|
98
|
+
version_requirements: *id006
|
99
|
+
description:
|
100
|
+
email: chastell@chastell.net
|
101
|
+
executables: []
|
102
|
+
|
103
|
+
extensions: []
|
104
|
+
|
105
|
+
extra_rdoc_files: []
|
106
|
+
|
107
|
+
files:
|
108
|
+
- .gitignore
|
109
|
+
- .rspec
|
110
|
+
- LICENCE
|
111
|
+
- README.md
|
112
|
+
- Rakefile
|
113
|
+
- config.ru
|
114
|
+
- lib/tributary.rb
|
115
|
+
- lib/tributary/app.rb
|
116
|
+
- lib/tributary/item.rb
|
117
|
+
- lib/tributary/plugins/dummy.rb
|
118
|
+
- lib/tributary/plugins/mnml.rb
|
119
|
+
- lib/tributary/plugins/unbreak_my_art.rb
|
120
|
+
- lib/tributary/stream.rb
|
121
|
+
- spec/fixtures/index.en.en+pl.xml
|
122
|
+
- spec/fixtures/index.en.en.xml
|
123
|
+
- spec/fixtures/index.en.xml
|
124
|
+
- spec/fixtures/index.pl.pl.xml
|
125
|
+
- spec/fixtures/index.pl.xml
|
126
|
+
- spec/fixtures/index.xml
|
127
|
+
- spec/fixtures/layout.css
|
128
|
+
- spec/fixtures/pages.css
|
129
|
+
- spec/site/articles/600.en.md
|
130
|
+
- spec/site/articles/600.md
|
131
|
+
- spec/site/articles/bilingual.en.md
|
132
|
+
- spec/site/articles/bilingual.pl.md
|
133
|
+
- spec/site/articles/unix-millennium-bug.en.md
|
134
|
+
- spec/site/articles/welcome.md
|
135
|
+
- spec/site/beeps/beep.md
|
136
|
+
- spec/site/beeps/dated.md
|
137
|
+
- spec/site/beeps/english.en.md
|
138
|
+
- spec/site/beeps/link.md
|
139
|
+
- spec/site/beeps/polish.pl.md
|
140
|
+
- spec/site/beeps/quote.md
|
141
|
+
- spec/site/i18n/en.yml
|
142
|
+
- spec/site/i18n/pl.yml
|
143
|
+
- spec/site/pages/about.md
|
144
|
+
- spec/site/views/articles.haml
|
145
|
+
- spec/site/views/articles.index.haml
|
146
|
+
- spec/site/views/articles.index.sass
|
147
|
+
- spec/site/views/articles.sass
|
148
|
+
- spec/site/views/beeps.haml
|
149
|
+
- spec/site/views/beeps.sass
|
150
|
+
- spec/site/views/error.haml
|
151
|
+
- spec/site/views/error.sass
|
152
|
+
- spec/site/views/index.haml
|
153
|
+
- spec/site/views/index.sass
|
154
|
+
- spec/site/views/index.xml.haml
|
155
|
+
- spec/site/views/layout.haml
|
156
|
+
- spec/site/views/layout.sass
|
157
|
+
- spec/site/views/pages.haml
|
158
|
+
- spec/site/views/pages.sass
|
159
|
+
- spec/tributary/app_spec.rb
|
160
|
+
- spec/tributary/item_spec.rb
|
161
|
+
- spec/tributary/plugins/dummy_spec.rb
|
162
|
+
- spec/tributary/plugins/mnml_spec.rb
|
163
|
+
- spec/tributary/plugins/unbreak_my_art_spec.rb
|
164
|
+
- spec/tributary/stream_spec.rb
|
165
|
+
- tributary.gemspec
|
166
|
+
has_rdoc: true
|
167
|
+
homepage: http://github.com/chastell/tributary
|
168
|
+
licenses: []
|
169
|
+
|
170
|
+
post_install_message:
|
171
|
+
rdoc_options: []
|
172
|
+
|
173
|
+
require_paths:
|
174
|
+
- lib
|
175
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
176
|
+
none: false
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
segments:
|
181
|
+
- 0
|
182
|
+
version: "0"
|
183
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
184
|
+
none: false
|
185
|
+
requirements:
|
186
|
+
- - ">="
|
187
|
+
- !ruby/object:Gem::Version
|
188
|
+
segments:
|
189
|
+
- 0
|
190
|
+
version: "0"
|
191
|
+
requirements: []
|
192
|
+
|
193
|
+
rubyforge_project:
|
194
|
+
rubygems_version: 1.3.7
|
195
|
+
signing_key:
|
196
|
+
specification_version: 3
|
197
|
+
summary: "tributary: a tiny, toto-inspired blogging engine"
|
198
|
+
test_files:
|
199
|
+
- spec/tributary/app_spec.rb
|
200
|
+
- spec/tributary/stream_spec.rb
|
201
|
+
- spec/tributary/item_spec.rb
|
202
|
+
- spec/tributary/plugins/dummy_spec.rb
|
203
|
+
- spec/tributary/plugins/unbreak_my_art_spec.rb
|
204
|
+
- spec/tributary/plugins/mnml_spec.rb
|