module Sashite::CGN::Ability

Constants

PATTERN

Public Class Methods

dump(io) click to toggle source
# File lib/sashite/cgn/ability.rb, line 36
def self.dump io
  raise ArgumentError unless dumpable? io

  Subject.dump(io.fetch(:subject)) + '^' +
  Verb.dump(io.fetch(:verb)) + '=' +
  Object.dump(io.fetch(:object))
end
dumpable?(io) click to toggle source
# File lib/sashite/cgn/ability.rb, line 28
def self.dumpable? io
  io.is_a?(Hash) &&
  io.keys.sort == %i(object subject verb) &&
  Subject.dumpable?(io.fetch(:subject)) &&
  Verb.dumpable?(io.fetch(:verb)) &&
  Object.dumpable?(io.fetch(:object))
end
load(io) click to toggle source
# File lib/sashite/cgn/ability.rb, line 14
def self.load io
  raise ArgumentError unless loadable? io

  subject = Subject.load io.split('^').fetch 0
  verb    = Verb.load io.split('^').fetch(1).split('=').fetch 0
  object  = Object.load io.split('=').fetch 1

  {
    subject: subject,
    verb: verb,
    object: object
  }
end
loadable?(io) click to toggle source
# File lib/sashite/cgn/ability.rb, line 10
def self.loadable? io
  !!io.match("^#{PATTERN}$")
end