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