43 lines
871 B
Ruby
43 lines
871 B
Ruby
module AutoBlog
|
|
|
|
class Post
|
|
MATCHER = /^(\d+-\d+-\d+)-(.*)\.([^.]+)$/
|
|
|
|
def self.valid?(name)
|
|
name =~ MATCHER
|
|
end
|
|
|
|
attr_accessor :date, :slug, :ext
|
|
attr_accessor :data, :contents
|
|
|
|
def initialize(base, name)
|
|
@base = base
|
|
@name = name
|
|
|
|
self.process(name)
|
|
self.read_yaml(base, name)
|
|
end
|
|
|
|
def process(name)
|
|
m, date, slug, ext = *name.match(MATCHER)
|
|
self.date = Time.parse(date)
|
|
self.slug = slug
|
|
self.ext = ext
|
|
end
|
|
|
|
def url
|
|
self.date.strftime("/%Y/%m/%d/") + self.slug
|
|
end
|
|
|
|
def read_yaml(base, name)
|
|
self.contents = File.read(File.join(base, name))
|
|
|
|
if self.contents =~ /^(---\n.*?)\n---\n/
|
|
self.contents = self.contents[($1.size + 5)..-1]
|
|
|
|
self.data = YAML.load($1)
|
|
end
|
|
end
|
|
end
|
|
|
|
end |