Class: StaticCms::Article

Inherits:
Object
  • Object
show all
Extended by:
RubyPatch::AutoLoad
Defined in:
lib/static_cms/article.rb

Constant Summary collapse

PARAMS_DEFAULT =
{
  'title' => '',
}

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name) ⇒ Article

Returns a new instance of Article.



18
19
20
21
22
23
24
25
26
# File 'lib/static_cms/article.rb', line 18

def initialize(name)
  @pages = []
  @name = name
  @file = File.join('articles', name) + '.html.yhaml'
  yaml, @data = File.read(@file).split(/^\.\.\.$/, 2)
  params = PARAMS_DEFAULT.merge(YAML.load(yaml))
  params.each{|k, v| instance_variable_set("@#{k}", v)}
  self.class.alist[@name] = self
end

Instance Attribute Details

#dataObject

Returns the value of attribute data.



15
16
17
# File 'lib/static_cms/article.rb', line 15

def data
  @data
end

#fileObject

Returns the value of attribute file.



15
16
17
# File 'lib/static_cms/article.rb', line 15

def file
  @file
end

#nameObject

Returns the value of attribute name.



15
16
17
# File 'lib/static_cms/article.rb', line 15

def name
  @name
end

#pagesObject

Returns the value of attribute pages.



15
16
17
# File 'lib/static_cms/article.rb', line 15

def pages
  @pages
end

Class Method Details

.alistObject



7
8
9
# File 'lib/static_cms/article.rb', line 7

def self.alist
  @alist
end

.loadObject



28
29
30
31
32
33
34
# File 'lib/static_cms/article.rb', line 28

def self.load
  `git ls-files articles`.split\
    .select{|f| f =~ /\.html\.yhaml\z/}\
    .map{|f| f.sub(/\Aarticles\//, '')}\
    .map{|f| File.basename(f, '.html.yhaml')}\
    .each{|name| self.new(name)}
end

.use(page, name) ⇒ Object

Raises:

  • (ArgumentError)


36
37
38
39
40
41
42
43
# File 'lib/static_cms/article.rb', line 36

def self.use(page, name)
  self.load unless self.alist.has_key?(name)
  raise ArgumentError, name unless self.alist.has_key?(name)

  article = self.alist[name]
  article.pages << page
  article
end