diff options
Diffstat (limited to 'app/models/help_page.rb')
| -rw-r--r-- | app/models/help_page.rb | 46 | 
1 files changed, 46 insertions, 0 deletions
| diff --git a/app/models/help_page.rb b/app/models/help_page.rb new file mode 100644 index 000000000..1207c5198 --- /dev/null +++ b/app/models/help_page.rb @@ -0,0 +1,46 @@ +class HelpPage + +  attr_accessor :slug, :content, :data + +  def initialize(slug) +    @slug = slug +    @data = {}.with_indifferent_access +  end + +  def filename +    "#{Rails.root}/app/views/help/#{slug}.textile" +  end + +  def exists? +    File.exists? filename +  end + +  def load +    self.content = File.read(filename) +    self.data ||= {} + +    if self.content =~ /^(---\s*\n.*?\n?)^(---\s*$\n?)/m +      self.content = $POSTMATCH +      self.data.merge! YAML.load($1) +    end +  end + +  def method_missing(method, *arguments) +    if arguments.empty? and data.has_key?(method) +      data[method] +    else +      super +    end +  end + +  def self.find(slug) +    new(slug).tap do |page| +      if page.exists? +        page.load +      else +        raise ActiveRecord::RecordNotFound  +      end +    end +  end + +end | 
