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
# 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
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 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
Return number of items in list.
# File lib/git-ds/model/item_list.rb, line 41 def count keys.count end
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
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
Return first item list.
# File lib/git-ds/model/item_list.rb, line 48 def first keys.first end
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
Return last item list.
# File lib/git-ds/model/item_list.rb, line 55 def last keys.last end