class DirModel::Import::Dir

Attributes

context[R]
current_dir_model[R]
import_dir_model_class[R]
index[R]
path[R]
previous_dir_model[R]

Public Class Methods

new(source_path, import_dir_model_class, context={}) click to toggle source
# File lib/dir_model/import/dir.rb, line 19
def initialize(source_path, import_dir_model_class, context={})
  @path, @import_dir_model_class, @context = Path.new(source_path), import_dir_model_class, context.to_h.symbolize_keys
  reset
end

Public Instance Methods

each(context={}) { |current_dir_model| ... } click to toggle source
# File lib/dir_model/import/dir.rb, line 30
def each(context={})
  return to_enum(__callee__) unless block_given?

  while self.next(context)
    next if skip?
    yield current_dir_model
  end
end
next(context={}) click to toggle source
# File lib/dir_model/import/dir.rb, line 39
def next(context={})
  return if end?

  run_callbacks :next do
    context = context.to_h.reverse_merge(self.context)
    @previous_dir_model = current_dir_model
    @current_dir_model  = import_dir_model_class.next(path, context, previous_dir_model)
    @index += 1
    @current_dir_model = @index = nil if end?
  end

  current_dir_model
end
reset() click to toggle source
# File lib/dir_model/import/dir.rb, line 24
def reset
  path.reset!
  @index = -1
  @current_dir_model = nil
end

Private Instance Methods

skip?() click to toggle source
# File lib/dir_model/import/dir.rb, line 55
def skip?
  !!current_dir_model.try(:skip?)
end