drift 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/app/models/drift/blog_post.rb +1 -37
- data/app/models/drift/blog_post_base.rb +51 -0
- data/{lib → app/models}/drift/static_model.rb +0 -1
- data/lib/drift.rb +1 -2
- data/lib/drift/version.rb +1 -1
- data/lib/generators/drift/blog_post/USAGE +8 -0
- data/lib/generators/drift/blog_post/blog_post_generator.rb +33 -0
- data/lib/generators/drift/blog_post/templates/blog_post.erb +12 -0
- metadata +10 -6
@@ -1,41 +1,5 @@
|
|
1
1
|
module Drift
|
2
|
-
class BlogPost < Drift::
|
3
|
-
self.source = 'db/static/blog_posts'
|
4
|
-
|
5
|
-
attr_accessor :title, :date, :content, :slug, :author
|
6
|
-
|
7
|
-
def self.find_by_slug(slug)
|
8
|
-
file = self.all_files.detect do |f|
|
9
|
-
slug == parse_slug_from_file(f)
|
10
|
-
end
|
11
|
-
|
12
|
-
find_by_file(file)
|
13
|
-
end
|
14
|
-
|
15
|
-
def initialize(args)
|
16
|
-
super
|
17
|
-
set_attributes_from_file args[:file]
|
18
|
-
end
|
19
|
-
|
20
|
-
def content
|
21
|
-
markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML, :autolink => true, :space_after_headers => true)
|
22
|
-
markdown.render(@content)
|
23
|
-
end
|
24
|
-
|
25
|
-
private
|
26
|
-
|
27
|
-
def self.parse_date_from_file(file)
|
28
|
-
Date.parse file.split(/[_|\.]/)[0]
|
29
|
-
end
|
30
|
-
|
31
|
-
def self.parse_slug_from_file(file)
|
32
|
-
file.split(/[_|\.]/)[1]
|
33
|
-
end
|
34
|
-
|
35
|
-
def set_attributes_from_file(file)
|
36
|
-
self.date = self.class.parse_date_from_file(file)
|
37
|
-
self.slug = self.class.parse_slug_from_file(file)
|
38
|
-
end
|
2
|
+
class BlogPost < Drift::BlogPostBase
|
39
3
|
|
40
4
|
end
|
41
5
|
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module Drift
|
2
|
+
class BlogPostBase < Drift::StaticModel
|
3
|
+
class << self
|
4
|
+
attr_accessor :markup_ext
|
5
|
+
|
6
|
+
def source
|
7
|
+
@source || 'db/static/blog_posts'
|
8
|
+
end
|
9
|
+
|
10
|
+
def markup_ext
|
11
|
+
@markup_ext || 'md'
|
12
|
+
end
|
13
|
+
|
14
|
+
def find_by_slug(slug)
|
15
|
+
file = all_files.detect do |f|
|
16
|
+
slug == parse_slug_from_filename(f)
|
17
|
+
end
|
18
|
+
|
19
|
+
find_by_file(file)
|
20
|
+
end
|
21
|
+
|
22
|
+
def parse_datetime_from_filename(filename)
|
23
|
+
date = filename.split(/[_|\.]/)[0]
|
24
|
+
time = filename.split(/[_|\.]/)[1]
|
25
|
+
DateTime.parse "#{date} #{time[0..1]}:#{time[2..3]}:#{time[4..5]}"
|
26
|
+
end
|
27
|
+
|
28
|
+
def parse_slug_from_filename(filename)
|
29
|
+
filename.split(/[_|\.]/)[2]
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
attr_accessor :created_at, :slug, :content, :title, :author, :version
|
34
|
+
|
35
|
+
def initialize(args)
|
36
|
+
super
|
37
|
+
set_attributes_from_filename args[:file]
|
38
|
+
end
|
39
|
+
|
40
|
+
def content
|
41
|
+
GitHub::Markup.render(@file, @content)
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
def set_attributes_from_filename(filename)
|
47
|
+
self.created_at = self.class.parse_datetime_from_filename(filename)
|
48
|
+
self.slug = self.class.parse_slug_from_filename(filename)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
data/lib/drift.rb
CHANGED
data/lib/drift/version.rb
CHANGED
@@ -0,0 +1,33 @@
|
|
1
|
+
module Drift
|
2
|
+
class BlogPostGenerator < Rails::Generators::Base
|
3
|
+
desc "Creates blog post file: #{Drift::BlogPost.source}/YEAR-MONTH-DAY_TIME_TITLE.#{Drift::BlogPost.markup_ext}"
|
4
|
+
|
5
|
+
source_root File.expand_path('../templates', __FILE__)
|
6
|
+
|
7
|
+
argument :title, :type => :string
|
8
|
+
argument :markup_ext, :type => :string, :default => Drift::BlogPost.markup_ext
|
9
|
+
|
10
|
+
def generate_blog_post
|
11
|
+
template 'blog_post.erb', "#{source}/#{filename}"
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def filename
|
17
|
+
"#{date}_#{time}_#{title.parameterize}.#{markup_ext}"
|
18
|
+
end
|
19
|
+
|
20
|
+
def date
|
21
|
+
Time.now.strftime('%Y-%m-%d')
|
22
|
+
end
|
23
|
+
|
24
|
+
def time
|
25
|
+
Time.now.strftime('%H%M%S')
|
26
|
+
end
|
27
|
+
|
28
|
+
def source
|
29
|
+
Drift::BlogPost.source
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
title: Title
|
2
|
+
author: Author
|
3
|
+
version: 1
|
4
|
+
|
5
|
+
|
6
|
+
Blog content starts here. Keep two blank lines between the attributes and the content.
|
7
|
+
|
8
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam nisi dolor, aliquam eu condimentum quis, fermentum non augue. Donec quis leo volutpat, convallis arcu at, sollicitudin purus. Interdum et malesuada fames ac ante ipsum primis in faucibus. Etiam placerat tempus sapien, porttitor ornare augue suscipit in. Sed auctor neque sed mauris ornare, sit amet ullamcorper ipsum commodo. Praesent et vehicula nisl. Vivamus egestas dui a tortor elementum, et lacinia mauris fringilla. Mauris vestibulum felis in libero elementum, at fermentum odio ultrices. Vivamus tempor arcu a ligula congue, sit amet venenatis elit sodales. Nam eget sem vehicula, scelerisque nisi nec, convallis nulla. Suspendisse potenti. Aenean ornare, purus a viverra pharetra, lacus velit placerat metus, vel gravida tortor leo eget urna. Nullam scelerisque auctor ante.
|
9
|
+
|
10
|
+
Sed pharetra enim tortor, rhoncus egestas eros aliquam et. Pellentesque porta est arcu, ac scelerisque tellus sodales ut. Suspendisse ullamcorper, metus a vulputate mollis, felis quam hendrerit sapien, porta interdum orci nunc nec ipsum. Nulla pulvinar ac lacus at condimentum. Curabitur a diam tristique, rhoncus magna at, adipiscing nibh. Aliquam erat volutpat. In tempor euismod metus, ac lobortis quam ullamcorper euismod. Morbi in neque facilisis, egestas nibh auctor, pretium risus.
|
11
|
+
|
12
|
+
Sed vulputate condimentum lorem, elementum venenatis massa imperdiet ut. Nulla ultricies metus in aliquet malesuada. Maecenas nisi quam, cursus sed tellus ut, posuere ultricies mauris. Morbi aliquam dignissim nisi ac euismod. Quisque vestibulum neque arcu, ac venenatis dolor tincidunt quis. Suspendisse at dolor libero. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla posuere non lorem sit amet dignissim. Nam eget justo eget mi consectetur dapibus vitae vitae mauris. Nulla vitae ullamcorper magna. In in fermentum est. In lacinia venenatis turpis, a rutrum metus laoreet a. Vivamus adipiscing vel enim eu scelerisque.
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: drift
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-06-
|
12
|
+
date: 2013-06-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -28,13 +28,13 @@ dependencies:
|
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: 3.2.0
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
|
-
name:
|
31
|
+
name: github-markup
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
33
33
|
none: false
|
34
34
|
requirements:
|
35
35
|
- - ~>
|
36
36
|
- !ruby/object:Gem::Version
|
37
|
-
version:
|
37
|
+
version: 0.7.5
|
38
38
|
type: :runtime
|
39
39
|
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -42,7 +42,7 @@ dependencies:
|
|
42
42
|
requirements:
|
43
43
|
- - ~>
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version:
|
45
|
+
version: 0.7.5
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
47
|
name: rspec-rails
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -83,9 +83,13 @@ extensions: []
|
|
83
83
|
extra_rdoc_files: []
|
84
84
|
files:
|
85
85
|
- app/models/drift/blog_post.rb
|
86
|
-
-
|
86
|
+
- app/models/drift/blog_post_base.rb
|
87
|
+
- app/models/drift/static_model.rb
|
87
88
|
- lib/drift/version.rb
|
88
89
|
- lib/drift.rb
|
90
|
+
- lib/generators/drift/blog_post/blog_post_generator.rb
|
91
|
+
- lib/generators/drift/blog_post/templates/blog_post.erb
|
92
|
+
- lib/generators/drift/blog_post/USAGE
|
89
93
|
- lib/tasks/drift_tasks.rake
|
90
94
|
- MIT-LICENSE
|
91
95
|
- Rakefile
|