Class: Schreihals::Post
- Inherits:
-
Object
- Object
- Schreihals::Post
- Includes:
- Mongoid::Document
- Defined in:
- lib/schreihals/post.rb
Instance Method Summary collapse
- #article_post? ⇒ Boolean
- #day ⇒ Object
- #disqus? ⇒ Boolean
- #disqus_identifier ⇒ Object
- #draft? ⇒ Boolean
- #link_post? ⇒ Boolean
- #month ⇒ Object
- #nil_if_blank ⇒ Object
- #page? ⇒ Boolean
- #post? ⇒ Boolean
- #previous_slugs ⇒ Object
- #published? ⇒ Boolean
- #render ⇒ Object
- #set_default_slug ⇒ Object
- #set_published_at ⇒ Object
- #slug ⇒ Object
- #slug=(v) ⇒ Object
- #to_html ⇒ Object
- #to_url ⇒ Object
- #update_body_html ⇒ Object
- #year ⇒ Object
Instance Method Details
#article_post? ⇒ Boolean
132 133 134 |
# File 'lib/schreihals/post.rb', line 132 def article_post? link.nil? end |
#day ⇒ Object
144 145 146 |
# File 'lib/schreihals/post.rb', line 144 def day published_at.day end |
#disqus? ⇒ Boolean
152 153 154 |
# File 'lib/schreihals/post.rb', line 152 def disqus? disqus && published? end |
#disqus_identifier ⇒ Object
54 55 56 |
# File 'lib/schreihals/post.rb', line 54 def disqus_identifier slug end |
#draft? ⇒ Boolean
124 125 126 |
# File 'lib/schreihals/post.rb', line 124 def draft? status == :draft end |
#link_post? ⇒ Boolean
128 129 130 |
# File 'lib/schreihals/post.rb', line 128 def link_post? link.present? end |
#month ⇒ Object
140 141 142 |
# File 'lib/schreihals/post.rb', line 140 def month published_at.month end |
#nil_if_blank ⇒ Object
85 86 87 88 89 90 |
# File 'lib/schreihals/post.rb', line 85 def nil_if_blank attributes.keys.each do |attr| self[attr].strip! if self[attr].is_a?(String) self[attr] = nil if self[attr] == "" end end |
#page? ⇒ Boolean
116 117 118 |
# File 'lib/schreihals/post.rb', line 116 def page? !post? end |
#post? ⇒ Boolean
112 113 114 |
# File 'lib/schreihals/post.rb', line 112 def post? published_at.present? end |
#previous_slugs ⇒ Object
62 63 64 |
# File 'lib/schreihals/post.rb', line 62 def previous_slugs slugs[0..-2] end |
#published? ⇒ Boolean
120 121 122 |
# File 'lib/schreihals/post.rb', line 120 def published? status == :published end |
#render ⇒ Object
105 106 107 108 109 110 |
# File 'lib/schreihals/post.rb', line 105 def render @@markdown ||= Redcarpet::Markdown.new(MarkdownRenderer, autolink: true, space_after_headers: true, fenced_code_blocks: true) @@markdown.render(body) end |
#set_default_slug ⇒ Object
73 74 75 76 77 |
# File 'lib/schreihals/post.rb', line 73 def set_default_slug if slug.blank? self.slug = title.parameterize end end |
#set_published_at ⇒ Object
79 80 81 82 83 |
# File 'lib/schreihals/post.rb', line 79 def set_published_at if published_at.nil? && status_changed? && status == :published self.published_at = Time.now end end |
#slug ⇒ Object
58 59 60 |
# File 'lib/schreihals/post.rb', line 58 def slug slugs.try(:last) end |
#slug=(v) ⇒ Object
66 67 68 69 70 71 |
# File 'lib/schreihals/post.rb', line 66 def slug=(v) unless v.blank? slugs.delete(v) slugs << v end end |
#to_html ⇒ Object
96 97 98 99 100 101 102 103 |
# File 'lib/schreihals/post.rb', line 96 def to_html if body_html.nil? update_body_html save end body_html end |
#to_url ⇒ Object
148 149 150 |
# File 'lib/schreihals/post.rb', line 148 def to_url published_at.present? ? "/#{year}/#{month}/#{day}/#{slug}/" : "/#{slug}/" end |
#update_body_html ⇒ Object
92 93 94 |
# File 'lib/schreihals/post.rb', line 92 def update_body_html self.body_html = render end |
#year ⇒ Object
136 137 138 |
# File 'lib/schreihals/post.rb', line 136 def year published_at.year end |