class GitDS::ModelItemList

A generic list of ModelItem objects.

This associates a ModelItem class with a model and a base path in that model. All elements in this list are subdirectories of the base path, and will be instantiated/created/listed using methods in the ModelItem class.

This is used for ModelItem children of a ModelItem object (NOT Property children).

Public Class Methods

new(cls, model, path) click to toggle source
# File lib/git-ds/model/item_list.rb, line 23
def initialize(cls, model, path)
  @item_class = cls
  @model = model
  @base_path = path
end

Public Instance Methods

[](ident) click to toggle source

Return instance of ModelItem class for ‘ident’.

# File lib/git-ds/model/item_list.rb, line 71
def [](ident)
  @item_class.new(@model, @item_class.instance_path(@base_path, ident))
end
add(parent, args) click to toggle source

Add an instance of ModelItem class to ‘parent’ based on ‘args’.

Note: This calls ModelItemClass.create, so args must be a suitable Hash. When a ProxyModelItemClass is used as the item class, the args will be passed to ProxyModelItemClass.create.

# File lib/git-ds/model/item_list.rb, line 82
def add(parent, args)
  @item_class.create(parent, args)
end
count() click to toggle source

Return number of items in list.

# File lib/git-ds/model/item_list.rb, line 41
def count
  keys.count
end
delete(ident) click to toggle source

Delete instance of ModelItem from list.

Note: this has the same effect as just calling item#delete.

# File lib/git-ds/model/item_list.rb, line 91
def delete(ident)
  item = self[ident]
  item.delete if item
end
each() { |key| ... } click to toggle source

Yield each ident in list.

See keys.

# File lib/git-ds/model/item_list.rb, line 64
def each
  keys.each { |key| yield key }
end
first() click to toggle source

Return first item list.

# File lib/git-ds/model/item_list.rb, line 48
def first
  keys.first 
end
keys() click to toggle source

List ModelItem class instances contained in this list.

Note: This always returns a sorted list.

# File lib/git-ds/model/item_list.rb, line 34
def keys
  @item_class.list_in_path(@model, @base_path)
end
last() click to toggle source

Return last item list.

# File lib/git-ds/model/item_list.rb, line 55
def last
  keys.last
end