diff options
| author | Alban Peignier | 2012-04-16 14:56:38 +0200 |
|---|---|---|
| committer | Alban Peignier | 2012-04-16 14:56:38 +0200 |
| commit | cda5d74c245e03c194996a3cfe5221785474d12b (patch) | |
| tree | f43323e16d0d60c54e645db1ae1c63e1b4f611b1 /app/models/help_page.rb | |
| parent | a3b6f1c459e409023a1ef531e4f6f8084731a8f9 (diff) | |
| download | chouette-core-cda5d74c245e03c194996a3cfe5221785474d12b.tar.bz2 | |
Manage help texts with a dedicated HelpController. Refs #12
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 |
