Class: Schreihals::Post

Inherits:
Object
  • Object
show all
Includes:
Mongoid::Document
Defined in:
lib/schreihals/post.rb

Instance Method Summary collapse

Instance Method Details

#article_post?Boolean

Returns:

  • (Boolean)


132
133
134
# File 'lib/schreihals/post.rb', line 132

def article_post?
  link.nil?
end

#dayObject



144
145
146
# File 'lib/schreihals/post.rb', line 144

def day
  published_at.day
end

#disqus?Boolean

Returns:

  • (Boolean)


152
153
154
# File 'lib/schreihals/post.rb', line 152

def disqus?
  disqus && published?
end

#disqus_identifierObject



54
55
56
# File 'lib/schreihals/post.rb', line 54

def disqus_identifier
  slug
end

#draft?Boolean

Returns:

  • (Boolean)


124
125
126
# File 'lib/schreihals/post.rb', line 124

def draft?
  status == :draft
end

Returns:

  • (Boolean)


128
129
130
# File 'lib/schreihals/post.rb', line 128

def link_post?
  link.present?
end

#monthObject



140
141
142
# File 'lib/schreihals/post.rb', line 140

def month
  published_at.month
end

#nil_if_blankObject



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

Returns:

  • (Boolean)


116
117
118
# File 'lib/schreihals/post.rb', line 116

def page?
  !post?
end

#post?Boolean

Returns:

  • (Boolean)


112
113
114
# File 'lib/schreihals/post.rb', line 112

def post?
  published_at.present?
end

#previous_slugsObject



62
63
64
# File 'lib/schreihals/post.rb', line 62

def previous_slugs
  slugs[0..-2]
end

#published?Boolean

Returns:

  • (Boolean)


120
121
122
# File 'lib/schreihals/post.rb', line 120

def published?
  status == :published
end

#renderObject



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_slugObject



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_atObject



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

#slugObject



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_htmlObject



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_urlObject



148
149
150
# File 'lib/schreihals/post.rb', line 148

def to_url
  published_at.present? ? "/#{year}/#{month}/#{day}/#{slug}/" : "/#{slug}/"
end

#update_body_htmlObject



92
93
94
# File 'lib/schreihals/post.rb', line 92

def update_body_html
  self.body_html = render
end

#yearObject



136
137
138
# File 'lib/schreihals/post.rb', line 136

def year
  published_at.year
end