class Tiss::Model::Base

Constants

DEFINED_ATTRIBUTES

Attributes

attributes[R]

Public Class Methods

attr_accessor(*vars) click to toggle source
Calls superclass method
# File lib/tiss/model.rb, line 9
def attr_accessor(*vars)
  @attributes ||= []
  @attributes.concat vars
  super(*vars)
end
attribute_config(name, **opts) click to toggle source
# File lib/tiss/model.rb, line 17
def attribute_config(name, **opts)
  DEFINED_ATTRIBUTES[self.name] << { name: name, options: opts }
end

Public Instance Methods

attribute_configs() click to toggle source
# File lib/tiss/model.rb, line 61
def attribute_configs
  DEFINED_ATTRIBUTES[self.class.name]
end
attributes() click to toggle source
# File lib/tiss/model.rb, line 22
def attributes
  (self.class.ancestors&.second&.attributes || []) + self.class.attributes
end
attributes_by(version) click to toggle source
# File lib/tiss/model.rb, line 26
def attributes_by(version)
  version = version.gsub('.', '_')

  attributes.map do |key|
    config = attribute_configs.find { |i| i[:name] == key }

    unless_versions = []
    only_versions = []

    if config
      unless_versions = config[:options] && config[:options].fetch(:unless, [])
    end
    if config
      only_versions = config[:options] && config[:options].fetch(:only, [])
    end

    if unless_versions.any? || only_versions.any?
      if (unless_versions.any? && unless_versions.include?(version)) ||
         (only_versions.any? && !only_versions.include?(version))
        nil
      else
        [key, send(key)]
      end
    else
      [key, send(key)]
    end
  end.compact.to_h
end
attributes_with_values() click to toggle source
# File lib/tiss/model.rb, line 55
def attributes_with_values
  attributes.map do |attr|
    [attr, send(attr)]
  end.to_h
end