Sha256: 5640e642f73ec8849b26601e8eef24a16929daa3d822b4774ce24231bc919115

Contents?: true

Size: 1.1 KB

Versions: 6

Compression:

Stored size: 1.1 KB

Contents

require 'chunks/chunk'

# The category chunk looks for "category: news" on a line by
# itself and parses the terms after the ':' as categories.
# Other classes can search for Category chunks within
# rendered content to find out what categories this page
# should be in.
#
# Category lines can be hidden using ':category: news', for example
class Category < Chunk::Abstract
  def self.pattern() return /^(:)?category\s*:(.*)$/i end

  attr_reader :hidden, :list

  def initialize(match_data, revision)
    super(match_data, revision)
    @hidden = match_data[1]
    @list = match_data[2].split(',').map { |c| c.strip }
  end

  # Mark this chunk's start and end points but allow the terms
  # after the ':' to be marked up.
  def mask(content) pre_mask + list.join(', ') + post_mask end

  # If the chunk is hidden, erase the mask and return this chunk
  # otherwise, surround it with a 'div' block.
  def unmask(content)
    replacement = ( hidden ? '' : '<div class="property">category:\1</div>' )
    self if content.sub!( Regexp.new( pre_mask+'(.*)?'+post_mask ), replacement )
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
Pimki-1.2.092 app/models/chunks/category.rb
Pimki-1.3.092 app/models/chunks/category.rb
Pimki-1.4.092 app/models/chunks/category.rb
Pimki-1.5.092 app/models/chunks/category.rb
Pimki-1.1.092 app/models/chunks/category.rb
Pimki-1.6.092 app/models/chunks/category.rb