module Sashite::CGN::Verb

Constants

PATTERN

Public Class Methods

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

  Name.dump(io.fetch(:name)) + '[' +
  Direction.dump(io.fetch(:vector).fetch(:direction)) + ']' +
  MaximumMagnitude.dump(io.fetch(:vector).fetch(:'...maximum_magnitude'))
end
dumpable?(io) click to toggle source
# File lib/sashite/cgn/verb.rb, line 30
def self.dumpable? io
  io.is_a?(Hash) &&
  io.keys.sort == %i(name vector) &&
  io.fetch(:vector).is_a?(Hash) &&
  io.fetch(:vector).keys.sort == %i(...maximum_magnitude direction) &&
  MaximumMagnitude.dumpable?(io.fetch(:vector).fetch(:"...maximum_magnitude")) &&
  Direction.dumpable?(io.fetch(:vector).fetch(:direction))
end
load(io) click to toggle source
# File lib/sashite/cgn/verb.rb, line 14
def self.load io
  raise ArgumentError unless loadable? io

  name = Name.load io.split('[').fetch 0
  direction = Direction.load io.split('[').fetch(1).split(']').fetch 0
  maximum_magnitude = MaximumMagnitude.load io.split(']').fetch(1).split('/').fetch 0

  {
    name: name,
    vector: {
      :"...maximum_magnitude" => maximum_magnitude,
      direction: direction
    }
  }
end
loadable?(io) click to toggle source
# File lib/sashite/cgn/verb.rb, line 10
def self.loadable? io
  !!io.match("^#{PATTERN}$")
end