module PostModern::Read::ClassMethods
Public Instance Methods
extract_format!(ext)
click to toggle source
# File lib/post-modern/read.rb, line 57 def extract_format!(ext) case ext when "md", "markdown", "mdown", "mkdown" "markdown" else ext end end
glob(path) { |post| ... }
click to toggle source
# File lib/post-modern/read.rb, line 14 def glob(path, &block) Dir[path].collect do |file| next if File.directory?(file) || file =~ /\.$/ post = Post.extract_from_file!(file) yield post if block_given? post end.compact end
read(file, locals = {})
click to toggle source
# File lib/post-modern/read.rb, line 23 def read(file, locals = {}) match, categories, date, slug, ext = *file.gsub("#{root_dir}/", "").match(/^(.+\/)*(?:(\d+-\d+-\d+)-)?(.*)(\.[^.]+)$/) content = IO.read(file) unless locals[:filters].present? locals[:filters] = [:haml, :highlight, :pretty] else locals[:filters] = Array(locals[:filters]) end if content =~ /^(---\s*\n.*?\n?)^(---\s*$\n?)/m data = YAML.load($1).symbolize_keys content = content[($1.size + $2.size)..-1] else data = {} end data[:published_at] ||= date if date.present? data[:format] = extract_format! ext.split(".").last data[:title] ||= slug.titleize if slug.present? data[:tags] = data[:tags].present? ? data[:tags].split(/,\s*/) : [] data[:keywords] = data[:keywords].present? ? data[:keywords].split(/,\s*/) : [] data[:slug] ||= slug data[:file] = file.gsub("#{root_dir}/", "") [:published_at, :edited_at].each do |date| data[date] = Time.parse(data[date].to_s) if data[date].present? end data[:categories] = categories.split("/").select(&:present?) if categories data[:published] = false unless data[:published].present? data[:content] = render(content, data.merge(locals)) data end
root_dir()
click to toggle source
# File lib/post-modern/read.rb, line 6 def root_dir @root_dir ||= Rails.root.join("app/documents") end
root_dir=(value)
click to toggle source
# File lib/post-modern/read.rb, line 10 def root_dir=(value) @root_dir = value end