drift 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,41 +1,5 @@
1
1
  module Drift
2
- class BlogPost < Drift::StaticModel
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
@@ -57,7 +57,6 @@ module Drift
57
57
 
58
58
  attributes[:content] = raw_model_data.partition(yaml_attributes[0][0]).last
59
59
  attributes[:file] = file
60
- attributes[:template_engine] = file.split('.')[-2]
61
60
 
62
61
  new(attributes)
63
62
  end
data/lib/drift.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  module Drift
2
2
  require "drift/version"
3
- require "drift/static_model"
4
- require "redcarpet"
3
+ require "github/markup"
5
4
  end
data/lib/drift/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Drift
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -0,0 +1,8 @@
1
+ Description:
2
+ Explain the generator
3
+
4
+ Example:
5
+ rails generate blog_post Thing
6
+
7
+ This will create:
8
+ what/will/it/create
@@ -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.1.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-13 00:00:00.000000000 Z
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: redcarpet
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: 2.3.0
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: 2.3.0
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
- - lib/drift/static_model.rb
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