blog_logic 1.2.1 → 1.2.2
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/VERSION +1 -1
- data/app/models/blog.rb +16 -11
- data/app/models/post.rb +17 -23
- data/app/views/admin/blogs/_form.html.erb +1 -1
- data/blog_logic.gemspec +1 -3
- data/features/browse_blog.feature +6 -6
- data/features/manage_blog.feature +2 -4
- data/features/post_to_blog.feature +7 -6
- data/features/step_definitions/blog_steps.rb +10 -4
- data/features/support/env.rb +1 -0
- data/lib/blog_logic.rb +2 -7
- data/lib/blog_logic/import.rb +6 -14
- data/lib/blog_logic/railtie.rb +0 -2
- data/spec/blueprints.rb +7 -11
- data/spec/controllers/admin/posts_controller_spec.rb +4 -4
- data/spec/models/blog_spec.rb +4 -4
- data/spec/models/post_spec.rb +7 -11
- metadata +3 -5
- data/lib/blog_logic/base.rb +0 -41
- data/lib/blog_logic/engine.rb +0 -7
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.2.
|
1
|
+
1.2.2
|
data/app/models/blog.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
class Blog
|
2
|
-
include
|
2
|
+
include LuckySneaks::StringExtensions
|
3
3
|
include Mongoid::Document
|
4
4
|
include Mongoid::Timestamps
|
5
5
|
|
@@ -14,15 +14,14 @@ class Blog
|
|
14
14
|
field :posts_per_page, :type => Integer
|
15
15
|
field :rss_enabled, :type => Boolean
|
16
16
|
field :has_topics, :type => Boolean, :default => false
|
17
|
+
index :slug
|
17
18
|
has_many :blog_categories
|
18
|
-
has_many :posts
|
19
|
+
has_many :posts, :dependent => :destroy
|
19
20
|
|
20
21
|
# Behavior =======================================================================================
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
# Validations ====================================================================================
|
25
|
-
validates_presence_of :title, :description, :desired_slug
|
22
|
+
before_save :set_slug
|
23
|
+
validates_presence_of :description, :title
|
24
|
+
validates_uniqueness_of :slug
|
26
25
|
|
27
26
|
# Instance methods ===============================================================================
|
28
27
|
def copy_posts
|
@@ -44,13 +43,13 @@ class Blog
|
|
44
43
|
end
|
45
44
|
|
46
45
|
def path
|
47
|
-
"/#{self.slug}
|
46
|
+
"/#{self.slug}"
|
48
47
|
end
|
49
48
|
|
50
49
|
def posts_by_month
|
51
50
|
dates = {}
|
52
51
|
self.posts.published.each do |p|
|
53
|
-
date = p.publication_date.to_s
|
52
|
+
date = p.publication_date.to_s :year_month
|
54
53
|
dates[date] ||= {}
|
55
54
|
dates[date][:full_date] ||= p.publication_date.to_s(:month_year)
|
56
55
|
dates[date][:posts] ||= []
|
@@ -60,6 +59,12 @@ class Blog
|
|
60
59
|
end
|
61
60
|
|
62
61
|
def search(keyword)
|
63
|
-
self.posts.published.where
|
62
|
+
self.posts.published.where :content => /#{keyword}/i
|
63
|
+
end
|
64
|
+
|
65
|
+
private
|
66
|
+
|
67
|
+
def set_slug
|
68
|
+
self.slug = self.title.to_s.to_url if self.slug.blank?
|
64
69
|
end
|
65
|
-
end
|
70
|
+
end
|
data/app/models/post.rb
CHANGED
@@ -23,15 +23,14 @@ class Post
|
|
23
23
|
field :state
|
24
24
|
field :publication_date, :type => DateTime
|
25
25
|
field :summary
|
26
|
-
|
27
|
-
index :slug, :unique => false
|
26
|
+
index :slug
|
28
27
|
index :state, :unique => false
|
29
|
-
|
30
28
|
belongs_to :blog
|
31
29
|
has_and_belongs_to_many :blog_categories
|
32
30
|
|
33
31
|
# Behavior =======================================================================================
|
34
|
-
|
32
|
+
before_save :set_slug
|
33
|
+
validates_uniqueness_of :slug
|
35
34
|
|
36
35
|
# Tanker =========================================================================================
|
37
36
|
tankit 'idx' do
|
@@ -46,18 +45,12 @@ class Post
|
|
46
45
|
after_save :update_tank_indexes
|
47
46
|
|
48
47
|
# Validations ====================================================================================
|
49
|
-
|
50
|
-
|
51
|
-
#
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
# end
|
56
|
-
# end
|
57
|
-
|
58
|
-
# validates :desired_slug, :desired_slug_presence_and_uniqueness => true
|
59
|
-
validates_presence_of :title
|
60
|
-
validates_presence_of :content
|
48
|
+
validates_presence_of :content, :title
|
49
|
+
|
50
|
+
# Instance methods: Overrides ====================================================================
|
51
|
+
def publication_date
|
52
|
+
self[:publication_date] || self.published_at
|
53
|
+
end
|
61
54
|
|
62
55
|
# Instance methods ===============================================================================
|
63
56
|
def draft?
|
@@ -76,7 +69,7 @@ class Post
|
|
76
69
|
end
|
77
70
|
|
78
71
|
def humanize_path
|
79
|
-
|
72
|
+
self.path
|
80
73
|
end
|
81
74
|
|
82
75
|
def my_index
|
@@ -90,7 +83,7 @@ class Post
|
|
90
83
|
end
|
91
84
|
|
92
85
|
def path
|
93
|
-
"#{self.blog.
|
86
|
+
"#{self.blog.path}/#{self.slug}".gsub('//', '/')
|
94
87
|
end
|
95
88
|
|
96
89
|
def previous_post
|
@@ -115,11 +108,6 @@ class Post
|
|
115
108
|
self.title
|
116
109
|
end
|
117
110
|
|
118
|
-
# Sets the slug for this locale. Slugs from the locale tree are used to build this locale's URL.
|
119
|
-
def set_slug
|
120
|
-
self.slug = self.title.to_s.to_url
|
121
|
-
end
|
122
|
-
|
123
111
|
def unpublish!
|
124
112
|
self.update_attributes :state => 'draft'
|
125
113
|
end
|
@@ -131,4 +119,10 @@ class Post
|
|
131
119
|
def status
|
132
120
|
self.state ? self.state.capitalize : 'Draft'
|
133
121
|
end
|
122
|
+
|
123
|
+
private
|
124
|
+
|
125
|
+
def set_slug
|
126
|
+
self.slug = self.title.to_s.to_url if self.slug.blank?
|
127
|
+
end
|
134
128
|
end
|
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
<div class="form_column">
|
20
20
|
<%= f.text_field :title, :label => 'Blog Title' -%>
|
21
|
-
<%= f.text_field :
|
21
|
+
<%= f.text_field :slug, :value => @blog.slug -%>
|
22
22
|
<%= f.select :posts_per_page, %w{10 20 30 50} -%>
|
23
23
|
</div>
|
24
24
|
<div class="form_column">
|
data/blog_logic.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "blog_logic"
|
8
|
-
s.version = "1.2.
|
8
|
+
s.version = "1.2.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Bantik"]
|
@@ -90,8 +90,6 @@ Gem::Specification.new do |s|
|
|
90
90
|
"features/support/paths.rb",
|
91
91
|
"init.rb",
|
92
92
|
"lib/blog_logic.rb",
|
93
|
-
"lib/blog_logic/base.rb",
|
94
|
-
"lib/blog_logic/engine.rb",
|
95
93
|
"lib/blog_logic/import.rb",
|
96
94
|
"lib/blog_logic/railtie.rb",
|
97
95
|
"lib/tasks/.gitkeep",
|
@@ -7,20 +7,20 @@ Feature: Browse blog
|
|
7
7
|
I want to browse the blog
|
8
8
|
|
9
9
|
Scenario: Access the blog page
|
10
|
-
Given I have a blog
|
10
|
+
Given I have a blog "My Blog"
|
11
11
|
Given the following blog posts exist:
|
12
12
|
| title | content | summary | state |
|
13
13
|
| Foo | Foo is foo. | First | published |
|
14
14
|
| Bar | Bar is bar. | Second | draft |
|
15
15
|
When I visit the blog page
|
16
|
-
Then I should see "
|
16
|
+
Then I should see "My Blog"
|
17
17
|
And I should see "My blog description"
|
18
18
|
And I should see "Foo"
|
19
19
|
And I should see "First"
|
20
20
|
And I should not see "Bar"
|
21
21
|
|
22
22
|
Scenario: View published blog post
|
23
|
-
Given I have a blog
|
23
|
+
Given I have a blog "My Blog"
|
24
24
|
Given the following blog posts exist:
|
25
25
|
| title | content | summary | state |
|
26
26
|
| Foo | Foo is foo. | First | published |
|
@@ -29,7 +29,7 @@ Feature: Browse blog
|
|
29
29
|
Then I should see "Foo"
|
30
30
|
|
31
31
|
Scenario: Search for blog posts
|
32
|
-
Given I have a blog
|
32
|
+
Given I have a blog "My Blog"
|
33
33
|
Given the following blog posts exist:
|
34
34
|
| title | content | summary | state |
|
35
35
|
| Foo | Foo is foo. | First | published |
|
@@ -41,7 +41,7 @@ Feature: Browse blog
|
|
41
41
|
And I should see "First"
|
42
42
|
|
43
43
|
Scenario: Access the archive
|
44
|
-
Given I have a blog
|
44
|
+
Given I have a blog "My Blog"
|
45
45
|
Given the following blog posts exist:
|
46
46
|
| title | content | summary | state | publication_date |
|
47
47
|
| Foo | Foo is foo. | First | published | 2011-03-22 |
|
@@ -50,7 +50,7 @@ Feature: Browse blog
|
|
50
50
|
And I should see "Foo"
|
51
51
|
|
52
52
|
Scenario: Access the RSS feed
|
53
|
-
Given I have a blog
|
53
|
+
Given I have a blog "My Blog"
|
54
54
|
Given the following blog posts exist:
|
55
55
|
| title | content | summary | state | publication_date |
|
56
56
|
| Foo | Foo is foo. | First | published | 2011-03-22 |
|
@@ -9,7 +9,6 @@ Feature: Manage Blog
|
|
9
9
|
When go to the admin_blogs page
|
10
10
|
And I follow "Set Up Blog"
|
11
11
|
And I fill in "Blog Title" with "Adventures at 7-11"
|
12
|
-
And I fill in "URL" with "7-11-adventures"
|
13
12
|
And I fill in "Description" with "An epic tale of strange stuff that happens at my local convenience store."
|
14
13
|
And I select "10" from "Posts Per Page"
|
15
14
|
And I press "Save"
|
@@ -19,7 +18,7 @@ Feature: Manage Blog
|
|
19
18
|
And I should see "10"
|
20
19
|
|
21
20
|
Scenario: Edit a blog
|
22
|
-
Given I have a blog
|
21
|
+
Given I have a blog "My Blog"
|
23
22
|
When go to the admin_blogs page
|
24
23
|
And I follow "Blog Configuration"
|
25
24
|
Then I should see "Blog Details"
|
@@ -27,5 +26,4 @@ Feature: Manage Blog
|
|
27
26
|
And I fill in "Blog Title" with "Adventures at Circle K"
|
28
27
|
And I press "Save"
|
29
28
|
Then I should see "Successfully modified the blog."
|
30
|
-
And I should see "Adventures at Circle K"
|
31
|
-
|
29
|
+
And I should see "Adventures at Circle K"
|
@@ -4,14 +4,14 @@ Feature: Post to blog
|
|
4
4
|
I want to create and manage blog posts
|
5
5
|
|
6
6
|
Scenario: View empty list of blog posts
|
7
|
-
Given I have a blog
|
7
|
+
Given I have a blog "My Blog"
|
8
8
|
When go to the admin_blogs page
|
9
9
|
And I follow "Manage Posts"
|
10
10
|
Then I should see "Blog Posts"
|
11
11
|
And I should see "No posts have been written yet."
|
12
12
|
|
13
13
|
Scenario: View populated list of blog posts
|
14
|
-
Given I have a blog
|
14
|
+
Given I have a blog "My Blog"
|
15
15
|
Given the following blog posts exist:
|
16
16
|
| title | content | state |
|
17
17
|
| Foo | Foo is foo. | draft |
|
@@ -23,7 +23,7 @@ Feature: Post to blog
|
|
23
23
|
And I should see "Bar"
|
24
24
|
|
25
25
|
Scenario: Create a draft blog post
|
26
|
-
Given I have a blog
|
26
|
+
Given I have a blog "My Blog"
|
27
27
|
When go to the admin_blogs page
|
28
28
|
And I follow "Manage Posts"
|
29
29
|
And I follow "New Post..."
|
@@ -34,11 +34,12 @@ Feature: Post to blog
|
|
34
34
|
And I press "Save"
|
35
35
|
Then I should see "About This Post"
|
36
36
|
And I should see "My First Post"
|
37
|
+
And post slug should be "my-first-post"
|
37
38
|
|
38
39
|
Scenario: Attach an image to a blog post
|
39
40
|
|
40
41
|
Scenario: Edit a blog post
|
41
|
-
Given I have a blog
|
42
|
+
Given I have a blog "My Blog"
|
42
43
|
Given the following blog posts exist:
|
43
44
|
| title | content | state |
|
44
45
|
| Foo | Foo is foo. | draft |
|
@@ -52,7 +53,7 @@ Feature: Post to blog
|
|
52
53
|
And I should see "My Earliest Post"
|
53
54
|
|
54
55
|
Scenario: Publish a blog post
|
55
|
-
Given I have a blog
|
56
|
+
Given I have a blog "My Blog"
|
56
57
|
Given the following blog posts exist:
|
57
58
|
| title | content | state |
|
58
59
|
| Foo | Foo is foo. | draft |
|
@@ -64,7 +65,7 @@ Feature: Post to blog
|
|
64
65
|
And I should see "Published"
|
65
66
|
|
66
67
|
Scenario: Delete a blog post
|
67
|
-
Given I have a blog
|
68
|
+
Given I have a blog "My Blog"
|
68
69
|
Given the following blog posts exist:
|
69
70
|
| title | content | state |
|
70
71
|
| Foo | Foo is foo. | draft |
|
@@ -14,9 +14,10 @@ When /^I visit the blog RSS feed$/ do
|
|
14
14
|
visit Blog.first.feed_address
|
15
15
|
end
|
16
16
|
|
17
|
-
Given /^I have a blog$/ do
|
18
|
-
Blog.
|
19
|
-
|
17
|
+
Given /^I have a blog "([^"]*)"$/ do |title|
|
18
|
+
Blog.delete_all
|
19
|
+
Post.delete_all
|
20
|
+
Blog.make :title => title
|
20
21
|
end
|
21
22
|
|
22
23
|
Given /the following blog posts exist:/ do |table|
|
@@ -24,5 +25,10 @@ Given /the following blog posts exist:/ do |table|
|
|
24
25
|
end
|
25
26
|
|
26
27
|
Given /^no blogs exist$/ do
|
27
|
-
Blog.
|
28
|
+
Blog.delete_all
|
29
|
+
Post.delete_all
|
28
30
|
end
|
31
|
+
|
32
|
+
Then /^post slug should be "([^"]*)"$/ do |slug|
|
33
|
+
Blog.first.posts.last.slug.should == slug
|
34
|
+
end
|
data/features/support/env.rb
CHANGED
@@ -6,6 +6,7 @@
|
|
6
6
|
|
7
7
|
ENV["RAILS_ENV"] ||= "test"
|
8
8
|
require File.expand_path(File.dirname(__FILE__) + '/../../config/environment')
|
9
|
+
require File.expand_path(File.dirname(__FILE__) + "/../../spec/blueprints")
|
9
10
|
|
10
11
|
require 'cucumber/formatter/unicode' # Remove this line if you don't want Cucumber Unicode support
|
11
12
|
require 'cucumber/rails/rspec'
|
data/lib/blog_logic.rb
CHANGED
@@ -1,13 +1,8 @@
|
|
1
1
|
module BlogLogic
|
2
|
-
|
3
|
-
require 'mongoid'
|
4
|
-
require 'blog_logic/engine' if defined?(Rails)
|
5
|
-
require 'blog_logic/railtie' if defined?(Rails)
|
6
|
-
require 'blog_logic/base'
|
7
2
|
require 'blog_logic/import'
|
3
|
+
require 'blog_logic/railtie'
|
8
4
|
|
9
5
|
def self.setup
|
10
6
|
yield self
|
11
7
|
end
|
12
|
-
|
13
|
-
end
|
8
|
+
end
|
data/lib/blog_logic/import.rb
CHANGED
@@ -1,11 +1,7 @@
|
|
1
1
|
# NOTE: search-and-replace content> with contents> before importing
|
2
|
-
|
3
2
|
module BlogLogic
|
4
|
-
|
5
3
|
module Import
|
6
|
-
|
7
4
|
class WordPress
|
8
|
-
|
9
5
|
attr_accessor :source_file
|
10
6
|
|
11
7
|
def initialize(file)
|
@@ -20,8 +16,7 @@ module BlogLogic
|
|
20
16
|
:publication_date => post.publication_date,
|
21
17
|
:content => post.content,
|
22
18
|
:summary => post.content.truncate(255),
|
23
|
-
:state =>
|
24
|
-
:desired_slug => "#{post.title.to_s}"
|
19
|
+
:state => 'published'
|
25
20
|
)
|
26
21
|
end
|
27
22
|
end
|
@@ -31,10 +26,10 @@ module BlogLogic
|
|
31
26
|
if @posts.empty?
|
32
27
|
raw_posts.each do |item|
|
33
28
|
@posts << Post.new(
|
34
|
-
:title => item.xpath(
|
35
|
-
:date => item.xpath(
|
36
|
-
:content => item.xpath(
|
37
|
-
:summary => item.xpath(
|
29
|
+
:title => item.xpath('.//title').first.content,
|
30
|
+
:date => item.xpath('.//pubDate').first.content,
|
31
|
+
:content => item.xpath('.//contents').children.first.content,
|
32
|
+
:summary => item.xpath('.//excerpt').first.try(:content)
|
38
33
|
)
|
39
34
|
end
|
40
35
|
end
|
@@ -46,7 +41,7 @@ module BlogLogic
|
|
46
41
|
end
|
47
42
|
|
48
43
|
def raw_posts
|
49
|
-
self.source.xpath(
|
44
|
+
self.source.xpath('//item')
|
50
45
|
end
|
51
46
|
|
52
47
|
class Post
|
@@ -58,9 +53,6 @@ module BlogLogic
|
|
58
53
|
DateTime.parse(self.date)
|
59
54
|
end
|
60
55
|
end
|
61
|
-
|
62
56
|
end
|
63
|
-
|
64
57
|
end
|
65
|
-
|
66
58
|
end
|
data/lib/blog_logic/railtie.rb
CHANGED
data/spec/blueprints.rb
CHANGED
@@ -1,18 +1,14 @@
|
|
1
|
-
require 'machinist/mongoid'
|
2
|
-
require 'sham'
|
3
1
|
require 'faker'
|
2
|
+
require 'machinist/mongoid'
|
4
3
|
|
5
4
|
Blog.blueprint do
|
6
|
-
title { Faker::Lorem.words(5) *
|
7
|
-
|
8
|
-
description { "My incredibly insightful blog" }
|
5
|
+
title { Faker::Lorem.words(5) * ' ' }
|
6
|
+
description { 'My blog description' }
|
9
7
|
end
|
10
8
|
|
11
9
|
Post.blueprint do
|
12
|
-
title
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
publication_date { Time.zone.now }
|
17
|
-
state { 'published' }
|
10
|
+
title { Faker::Lorem.words(5) * ' ' }
|
11
|
+
content { Faker::Lorem.words(5) * ' ' }
|
12
|
+
publication_date { Time.zone.now }
|
13
|
+
state { 'published' }
|
18
14
|
end
|
@@ -2,11 +2,11 @@ require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
2
|
|
3
3
|
describe Admin::PostsController do
|
4
4
|
before :each do
|
5
|
-
Blog.
|
5
|
+
Blog.delete_all
|
6
|
+
Post.delete_all
|
6
7
|
@blog = Blog.make
|
7
|
-
@
|
8
|
-
@blog.posts
|
9
|
-
@blog.save
|
8
|
+
@blog.posts.create Post.plan
|
9
|
+
@post = @blog.posts.first
|
10
10
|
end
|
11
11
|
|
12
12
|
it 'gets index action' do
|
data/spec/models/blog_spec.rb
CHANGED
@@ -6,12 +6,12 @@ describe Blog do
|
|
6
6
|
@blog = Blog.make
|
7
7
|
end
|
8
8
|
|
9
|
-
it "returns its
|
10
|
-
@blog.
|
9
|
+
it "returns its path" do
|
10
|
+
@blog.humanize_path.should == "/#{@blog.title.to_url}"
|
11
11
|
end
|
12
12
|
|
13
|
-
it "returns its
|
14
|
-
@blog.
|
13
|
+
it "returns its feed address" do
|
14
|
+
@blog.feed_address.should == "/#{@blog.title.to_url}/feed.rss"
|
15
15
|
end
|
16
16
|
|
17
17
|
it "retrieves posts by month" do
|
data/spec/models/post_spec.rb
CHANGED
@@ -2,6 +2,7 @@ require File.dirname(__FILE__) + '/../spec_helper'
|
|
2
2
|
|
3
3
|
describe Post do
|
4
4
|
before :all do
|
5
|
+
Post.delete_all
|
5
6
|
@blog = Blog.make
|
6
7
|
end
|
7
8
|
|
@@ -9,19 +10,15 @@ describe Post do
|
|
9
10
|
@blog.posts.new.draft?.should be_true
|
10
11
|
end
|
11
12
|
|
12
|
-
it 'returns its
|
13
|
-
@blog.posts.new(:slug => 'foo').
|
14
|
-
end
|
15
|
-
|
16
|
-
it 'returns its formatted slug' do
|
17
|
-
@blog.posts.new(:slug => 'foo').humanize_path.should == '/foo'
|
13
|
+
it 'returns its path' do
|
14
|
+
@blog.posts.new(:slug => 'foo').path.should == "/#{@blog.title.to_url}/foo"
|
18
15
|
end
|
19
16
|
|
20
17
|
it 'publishes, setting its publication date' do
|
21
18
|
post = @blog.posts.create(Post.make.attributes)
|
22
19
|
post.publish!
|
23
20
|
post.status.should == 'Published'
|
24
|
-
post.
|
21
|
+
post.published_at.to_s(:concise).should == Time.now.to_s(:concise)
|
25
22
|
end
|
26
23
|
|
27
24
|
it 'unpublishes, clearing its publication date' do
|
@@ -31,13 +28,12 @@ describe Post do
|
|
31
28
|
post.status.should == 'Draft'
|
32
29
|
end
|
33
30
|
|
34
|
-
it 'defaults
|
31
|
+
it 'defaults slug to its title' do
|
35
32
|
post = @blog.posts.new(
|
36
33
|
:title => 'Test Post',
|
37
|
-
:summary => 'Foo',
|
38
34
|
:content => 'Bar'
|
39
35
|
)
|
40
|
-
post.save
|
36
|
+
post.save
|
41
37
|
post.slug.should == 'test-post'
|
42
38
|
end
|
43
|
-
end
|
39
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blog_logic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 1.2.
|
9
|
+
- 2
|
10
|
+
version: 1.2.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Bantik
|
@@ -288,8 +288,6 @@ files:
|
|
288
288
|
- features/support/paths.rb
|
289
289
|
- init.rb
|
290
290
|
- lib/blog_logic.rb
|
291
|
-
- lib/blog_logic/base.rb
|
292
|
-
- lib/blog_logic/engine.rb
|
293
291
|
- lib/blog_logic/import.rb
|
294
292
|
- lib/blog_logic/railtie.rb
|
295
293
|
- lib/tasks/.gitkeep
|
data/lib/blog_logic/base.rb
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
module BlogLogic
|
2
|
-
|
3
|
-
module Base
|
4
|
-
|
5
|
-
@@sluggable_attribute = nil
|
6
|
-
|
7
|
-
module ClassMethods
|
8
|
-
def has_slug(attr)
|
9
|
-
self.send(:set_callback, :save, :before, Proc.new{|doc| doc.make_slug})
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
def self.included(base)
|
14
|
-
base.extend(ClassMethods)
|
15
|
-
end
|
16
|
-
|
17
|
-
def make_slug
|
18
|
-
if self.desired_slug && ! self.desired_slug.blank?
|
19
|
-
text = self.desired_slug
|
20
|
-
elsif self.slug
|
21
|
-
text = self.slug
|
22
|
-
elsif self.respond_to?(:page_title)
|
23
|
-
text = self.page_title.to_s.downcase
|
24
|
-
elsif self.respond_to?(:name)
|
25
|
-
text = self.name.to_s.downcase
|
26
|
-
end
|
27
|
-
|
28
|
-
# Translation borrowed from permalink_fu
|
29
|
-
text = text.to_s
|
30
|
-
text.gsub!(/[^\x00-\x7F]+/, '-') # Remove anything non-ASCII entirely (e.g. diacritics).
|
31
|
-
text.gsub!(/[^\/\w_ \-]+/i, '-') # Remove unwanted chars.
|
32
|
-
text.gsub!(/[ \-]+/i, '-') # No more than one of the separator in a row.
|
33
|
-
text.gsub!(/^\-|\-$/i, '') # Remove leading/trailing separator.
|
34
|
-
text.downcase!
|
35
|
-
self.slug = text
|
36
|
-
|
37
|
-
end
|
38
|
-
|
39
|
-
end
|
40
|
-
|
41
|
-
end
|