Sha256: 288a24d40e14c13c75d2c3637a8a494004fdbc3812d5b946bf588ba6f4e05c52

Contents?: true

Size: 1.29 KB

Versions: 9

Compression:

Stored size: 1.29 KB

Contents

module Blogo
  class BasePostService
    JUMP_BREAK = '<!--more-->'


    private

    def assign_attributes
      @post.assign_attributes(@post_attrs)
      @post.published_at ||= Time.zone.now
      @post.markup_lang    = Blogo.config.markup_lang
      render_and_set_content!
    end


    def set_tags!(tags_string)
      return unless tags_string.present?

      tag_names = tags_string.split(',').map do |tag_name|
        tag_name.strip.downcase
      end
      tag_names.reject!(&:blank?)

      tag_names.each do |tag_name|
        tag = Blogo::Tag.where(name: tag_name).first_or_create
        @post.tags << tag unless @post.tags.include?(tag)
      end

      @post.tags_string = tag_names.join(", ")
    end

    def clear_tags!
      @post.tags.destroy_all.each do |tag|
        tag.destroy if tag.posts.count.zero?
      end
    end

    def render_and_set_content!
      return unless @post.raw_content

      renderer = Blogo::Renderer.get(Blogo.config.markup_lang)
      overview, rest = @post.raw_content.split(JUMP_BREAK, 2)

      if rest.present?
        @post.html_overview = renderer.render(overview)
        @post.html_content = renderer.render(overview + rest)
      else
        @post.html_overview = nil
        @post.html_content = renderer.render(@post.raw_content)
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
blogo-0.1.4 app/services/blogo/base_post_service.rb
blogo-0.1.3 app/services/blogo/base_post_service.rb
blogo-0.1.2 app/services/blogo/base_post_service.rb
blogo-0.1.1 app/services/blogo/base_post_service.rb
blogo-0.1.0 app/services/blogo/base_post_service.rb
blogo-0.0.10 app/services/blogo/base_post_service.rb
blogo-0.0.9 app/services/blogo/base_post_service.rb
blogo-0.0.8 app/services/blogo/base_post_service.rb
blogo-0.0.7 app/services/blogo/base_post_service.rb