lib/everything/piece/content.rb
require 'fileutils'
module Everything
class Piece
class Content
def initialize(piece_path)
@piece_path = piece_path
end
def absolute_dir
@absolute_dir ||= Everything.path.join(dir)
end
def absolute_path
@absolute_path ||= absolute_dir.join(file_name)
end
def dir
@dir ||= calculated_dir
end
def file_name
'index.md'
end
def file_path
# TODO: Could try a deprecation approach like http://seejohncode.com/2012/01/09/deprecating-methods-in-ruby/
deprecation_message = "Piece Content's #file_path is deprecated and will be removed soon. Use #absolute_path instead."
warn deprecation_message
@file_path ||= File.join(piece_path, file_name)
end
def title
partitioned_text.first.sub('# ', '')
end
def body
partitioned_text.last
end
def path
@path ||= dir.join(file_name)
end
def raw_markdown
@raw_markdown ||= absolute_path.read
end
def raw_markdown=(value)
@raw_markdown = value
end
def save
FileUtils.mkdir_p(piece_path)
absolute_path.write(@raw_markdown)
end
private
attr_reader :piece_path
def partitioned_text
@partitioned_text ||= raw_markdown.partition("\n\n")
end
def calculated_dir
full_pathname = Pathname.new(piece_path)
_relative_pathname = full_pathname.relative_path_from(Everything.path)
end
end
end
end