module Ars::Familiar::Scribe

Public Class Methods

commit() click to toggle source
# File lib/ars/familiar/scribe.rb, line 53
def self.commit
  register.each do |entry|
    dump = Marshal.dump(entry.to_class.scribe)

    filename = File.join(Ars::Medium.configuration.root, 'lib/portable_models', model.to_filename)
    dirname = File.dirname filename
    FileUtils.mkdir_p dirname
    File.open(filename, 'w') do |file|
      file << dump
    end

  end
end
included(subclass) click to toggle source
# File lib/ars/familiar/scribe.rb, line 80
def self.included(subclass)
  subclass.extend Scribable
end
read_for(model) click to toggle source
# File lib/ars/familiar/scribe.rb, line 67
def self.read_for(model)
  model = Entry.new(model.class.name)

  filename = File.join(Ars::Medium.configuration.root, 'lib/portable_models', model.to_filename)
  dirname = File.dirname filename
  FileUtils.mkdir_p dirname
  if File.exist? filename
    File.open(filename, 'r') do |file|
      model.scribe Marshal.load(file)
    end
  end
end
register(class_name = nil) click to toggle source
# File lib/ars/familiar/scribe.rb, line 44
def self.register(class_name = nil)
  return @register # bypass
  return @register unless class_name
  return @register if @register.member?(class_name)
  return @register unless class_name.builder.respond_to? :scribe
  @register << Entry.new(class_name)
  @register
end