class Jfm::Post

Attributes

filename[R]

Public Class Methods

new(filename) click to toggle source
# File lib/jfm.rb, line 28
def initialize(filename)
  @filename = filename
end

Public Instance Methods

frontmatter() click to toggle source
# File lib/jfm.rb, line 32
def frontmatter
  @frontmatter ||= YAML.load(raw_frontmatter)
end
frontmatter=(new_frontmatter) click to toggle source
# File lib/jfm.rb, line 36
def frontmatter=(new_frontmatter)
  @frontmatter = new_frontmatter
end
match?(query) click to toggle source
# File lib/jfm.rb, line 40
def match?(query)
  case query
  when /(.+?):\s*~(.+)/
    frontmatter[$1] != $2
  when /(.+?):\s*(.+)/
    frontmatter[$1] == $2
  else
    frontmatter.has_key?(query)
  end
end
save() click to toggle source
# File lib/jfm.rb, line 51
def save
  backmatter = content.lines.drop_while { |l| l.chomp == "---" }.drop_while { |l| l.chomp != "---" }.drop(1).join
  File.open(filename, "w") do |file|
    file.write YAML::dump(frontmatter)
    file.puts "---"
    file.write backmatter
  end
end

Private Instance Methods

content() click to toggle source
# File lib/jfm.rb, line 62
def content
  @content ||= File.read(filename)
end
raw_frontmatter() click to toggle source
# File lib/jfm.rb, line 66
def raw_frontmatter
  content.lines.drop_while { |l| l.chomp == "---" }.take_while { |l| l.chomp != "---" }.join
end