aboutsummaryrefslogtreecommitdiffstats
path: root/app/models/help_page.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/help_page.rb')
-rw-r--r--app/models/help_page.rb46
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