module Data2ruby

Constants

VERSION

Public Class Methods

included(klass) click to toggle source
# File lib/data2ruby.rb, line 69
def self.included(klass)
  klass.extend(ClassMethods)
end

Public Instance Methods

data() click to toggle source
# File lib/data2ruby.rb, line 73
def data
  raise NotImplementedError, 'Implement in the including class'
end
each(&block) click to toggle source
# File lib/data2ruby.rb, line 77
def each(&block)
  self.class.associations.each do |assoc_name|
    object = public_send(assoc_name)
    object.is_a?(Array) ? object.each(&block) : block.yield(object)
  end
end
invalid_items() click to toggle source
# File lib/data2ruby.rb, line 84
def invalid_items
  reduce(select { |item| item.errors.any? }) do |sum, item|
    sum + item.invalid_items
  end
end
valid_structure?() click to toggle source
# File lib/data2ruby.rb, line 90
def valid_structure?
  reduce(respond_to?(:valid?) ? valid? : true) do |sum, item|
    item.valid_structure? && sum # forces to evaluate validity for all the nodes
  end
end

Private Instance Methods

memoize(var_name, &block) click to toggle source
# File lib/data2ruby.rb, line 98
def memoize(var_name, &block)
  if instance_variable_defined?(var_name)
    instance_variable_get(var_name)
  else
    instance_variable_set(
      var_name,
      instance_exec(&block)
    )
  end
end