rollin 0.0.4 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 483998e6bd211713930ebc375b13ad51d3b90ff0
4
- data.tar.gz: 87265f659a7e31021c9721af9ea5ffa5032d13fc
3
+ metadata.gz: 669c21a394800ac2d402f09a9278d9c1811b41b2
4
+ data.tar.gz: 46c24726c6082ba0cda292028db3c4d543ab5dd1
5
5
  SHA512:
6
- metadata.gz: 6f4309a0ba1e0945b4c4437c47dd9002a896c5745211e4ea7431feef94d0a983755a2b914fd7b8a1b2feeef7a40a4bed351b49c6182fd8ce41bdead6875aa41e
7
- data.tar.gz: a846528bd549d3412bad53bb6f1c188764b4862afdde1f4ee37d13d6ae3508190005dcc583457449101e659d7f3b4fb28194b6f39f5769907b41a6cf5937e29b
6
+ metadata.gz: ecb874bfc15b5cecbc3ee9f3881985dfce80c5febde3ec5f3131475c1a3da005fa775ceecadec9e791eff8c62aaef9fb19a4bcd779d49e399c5c422565d18124
7
+ data.tar.gz: f9dbbf12c76357efe510d72a9eca3cb85059f7970850d7c74696f8b1d39d07e0ff8b8fc665c91468d9ba8b6faae2ed2a121cb330981a15143fa6fb356c1c15e1
data/Rakefile CHANGED
@@ -1 +1,8 @@
1
1
  require "bundler/gem_tasks"
2
+ require 'rake/version_task'
3
+ require 'rspec/core/rake_task'
4
+
5
+ Rake::VersionTask.new
6
+ RSpec::Core::RakeTask.new(:spec)
7
+
8
+ task :default => :spec
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.6
@@ -0,0 +1,23 @@
1
+ class Rollin::Article
2
+ attr_reader :year, :month, :day
3
+
4
+ def initialize(source_file)
5
+ @source_file = source_file
6
+ filename = File.basename(@source_file)
7
+ @year = filename[0, 4].to_i
8
+ @month = filename[5, 2].to_i
9
+ @day = filename[8, 2].to_i
10
+ end
11
+
12
+ def date
13
+ Date.new(@year, @month, @day)
14
+ end
15
+
16
+ def body
17
+ redcarpet = Redcarpet::Markdown.new(Redcarpet::Render::HTML,
18
+ autolink: true,
19
+ space_after_headers: true,
20
+ hard_wrap: true)
21
+ redcarpet.render(File.read(@source_file))
22
+ end
23
+ end
data/lib/rollin/blog.rb CHANGED
@@ -1,21 +1,35 @@
1
1
  class Rollin::Blog
2
- def articles
3
- Dir['articles/**/*.mk'].map do |article_source|
4
- Article.new(article_source)
5
- end
2
+ def initialize(options = {})
3
+ @articles_folder = options[:articles_folder] || 'articles'
6
4
  end
7
- end
8
5
 
9
- class Article
10
- def initialize(source_file)
11
- @source_file = source_file
6
+ def articles
7
+ Dir["#{@articles_folder}/**/*.mk"].sort.map do |article_source|
8
+ Rollin::Article.new(article_source)
9
+ end
12
10
  end
13
11
 
14
- def body
15
- redcarpet = Redcarpet::Markdown.new(Redcarpet::Render::HTML,
16
- autolink: true,
17
- space_after_headers: true,
18
- hard_wrap: true)
19
- redcarpet.render(File.read(@source_file))
12
+ def monthly_archive
13
+ years = {}
14
+ articles.each do |article|
15
+ if years.has_key?(article.year)
16
+ year = years[article.year]
17
+ if year.has_key?(article.month)
18
+ year[article.month] << article
19
+ else
20
+ year[article.month] = [ article ]
21
+ end
22
+ else
23
+ years[article.year] = { article.month => [ article ] }
24
+ end
25
+ end
26
+ archives_list = []
27
+ years.each do |year, months|
28
+ months.each do |month|
29
+ month_articles = articles.map { |article| article.year == year && article.month == month }
30
+ archives_list << Rollin::MonthArchive.new(year, month, month_articles)
31
+ end
32
+ end
33
+ return archives_list
20
34
  end
21
35
  end
@@ -0,0 +1,7 @@
1
+ class Rollin::MonthArchive
2
+ attr_reader :year, :month, :articles
3
+
4
+ def initialize(year, month, articles)
5
+ @year, @month, @articles = year, month, articles
6
+ end
7
+ end
@@ -1,3 +1,5 @@
1
+ require "version"
2
+
1
3
  module Rollin
2
- VERSION = "0.0.4"
4
+ VERSION = Version.current
3
5
  end
data/lib/rollin.rb CHANGED
@@ -1,7 +1,10 @@
1
1
  require "redcarpet"
2
+ require "date"
2
3
 
3
4
  require "rollin/version"
4
5
  require "rollin/blog"
6
+ require "rollin/article"
7
+ require "rollin/month_archive"
5
8
 
6
9
  module Rollin
7
10
  end
data/rollin.gemspec CHANGED
@@ -20,6 +20,8 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.3"
22
22
  spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "rspec"
23
24
 
25
+ spec.add_dependency "version"
24
26
  spec.add_dependency "redcarpet"
25
27
  end
@@ -0,0 +1,25 @@
1
+ require './spec/spec_helper'
2
+
3
+ describe Rollin::Article do
4
+ subject (:article) { Rollin::Article.new('spec/fixtures/articles/2013_05_01_My_first_post.mk') }
5
+
6
+ it 'compiles article body to html' do
7
+ article.body.should == "<h2>This is my first post</h2>\n\n<p>And here we go!</p>\n"
8
+ end
9
+
10
+ it 'tells article year' do
11
+ article.year == 2013
12
+ end
13
+
14
+ it 'tells article month' do
15
+ article.month == 5
16
+ end
17
+
18
+ it 'tells article day' do
19
+ article.day == 1
20
+ end
21
+
22
+ it 'tells article date' do
23
+ article.date.should == Date.new(2013, 5, 1)
24
+ end
25
+ end
data/spec/blog_spec.rb ADDED
@@ -0,0 +1,15 @@
1
+ require './spec/spec_helper'
2
+
3
+ describe Rollin::Blog do
4
+ context 'reading articles from articles folder' do
5
+ subject (:blog) { Rollin::Blog.new(articles_folder: 'spec/fixtures/articles') }
6
+
7
+ it 'has the right amount of articles' do
8
+ blog.articles.size.should == 3
9
+ end
10
+
11
+ it 'has the right amount of monthly archives' do
12
+ blog.monthly_archive.size.should == 2
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,3 @@
1
+ ## This is my first post
2
+
3
+ And here we go!
@@ -0,0 +1,3 @@
1
+ ## This is my second post
2
+
3
+ Really awesome!!
@@ -0,0 +1,3 @@
1
+ ## This is my second post
2
+
3
+ Really awesome!!
@@ -0,0 +1,16 @@
1
+ describe Rollin::MonthArchive do
2
+ let (:article) { Rollin::Article.new('spec/fixtures/2013_05_01_My_first_post.mk') }
3
+ subject (:month_archive) { Rollin::MonthArchive.new(2013, 05, [ article ]) }
4
+
5
+ it 'tells the year' do
6
+ month_archive.year.should == 2013
7
+ end
8
+
9
+ it 'tells the month' do
10
+ month_archive.month.should == 5
11
+ end
12
+
13
+ it 'has a list of articles' do
14
+ month_archive.articles.first.should == article
15
+ end
16
+ end
@@ -0,0 +1,5 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ Bundler.require :development
4
+
5
+ require './lib/rollin'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rollin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - marano
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-04-30 00:00:00.000000000 Z
11
+ date: 2013-05-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -38,6 +38,34 @@ dependencies:
38
38
  - - '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: version
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: redcarpet
43
71
  requirement: !ruby/object:Gem::Requirement
@@ -65,10 +93,20 @@ files:
65
93
  - LICENSE.txt
66
94
  - README.md
67
95
  - Rakefile
96
+ - VERSION
68
97
  - lib/rollin.rb
98
+ - lib/rollin/article.rb
69
99
  - lib/rollin/blog.rb
100
+ - lib/rollin/month_archive.rb
70
101
  - lib/rollin/version.rb
71
102
  - rollin.gemspec
103
+ - spec/article_spec.rb
104
+ - spec/blog_spec.rb
105
+ - spec/fixtures/articles/2013_05_01_My_first_post.mk
106
+ - spec/fixtures/articles/2013_05_02_My_second_post.mk
107
+ - spec/fixtures/articles/2013_06_01_My_third_post.mk
108
+ - spec/month_archive_spec.rb
109
+ - spec/spec_helper.rb
72
110
  homepage: http://github.com/marano/rollin
73
111
  licenses:
74
112
  - MIT
@@ -93,4 +131,11 @@ rubygems_version: 2.0.3
93
131
  signing_key:
94
132
  specification_version: 4
95
133
  summary: A Ruby minimalistic blog engine ... WATTT!!?!??
96
- test_files: []
134
+ test_files:
135
+ - spec/article_spec.rb
136
+ - spec/blog_spec.rb
137
+ - spec/fixtures/articles/2013_05_01_My_first_post.mk
138
+ - spec/fixtures/articles/2013_05_02_My_second_post.mk
139
+ - spec/fixtures/articles/2013_06_01_My_third_post.mk
140
+ - spec/month_archive_spec.rb
141
+ - spec/spec_helper.rb