Module: Shared::Containable
- Extended by:
- ActiveSupport::Concern
- Included in:
- CollectionObject, Container, Extract
- Defined in:
- app/models/concerns/shared/containable.rb
Overview
Shared code for objects that maybe be placed in Container(s).
Instance Method Summary collapse
-
#contain ⇒ Object
What has been put in contained_in might be a container, or the id of a container: convert an id to a container, and put self into that container.
-
#containable? ⇒ True
This instance is containable.
-
#contained? ⇒ Boolean
return [Boolean] whether this item is contained in something else.
-
#contained_by?(kontainer) ⇒ Boolean
return [Boolean] whether this object is contained by the passed container.
-
#contained_siblings ⇒ Object
Array.
-
#enclosing_containers ⇒ Array
Return all Containers containing this container.
-
#put_in_container(kontainer) ⇒ Boolean
True if item is placed in container, false if not.
Instance Method Details
#contain ⇒ Object
What has been put in contained_in might be a container, or the id of a container: convert an id to a container, and put self into that container
21 22 23 24 25 26 27 28 29 30 |
# File 'app/models/concerns/shared/containable.rb', line 21 def contain c = nil if contained_in.is_a?(Container) c = contained_in else c = Container.find(contained_in) end put_in_container(c) end |
#containable? ⇒ True
Returns this instance is containable.
53 54 55 |
# File 'app/models/concerns/shared/containable.rb', line 53 def containable? true end |
#contained? ⇒ Boolean
return [Boolean]
whether this item is contained in something else
59 60 61 |
# File 'app/models/concerns/shared/containable.rb', line 59 def contained? !container.nil? end |
#contained_by?(kontainer) ⇒ Boolean
return [Boolean]
whether this object is contained by the passed container
65 66 67 |
# File 'app/models/concerns/shared/containable.rb', line 65 def contained_by?(kontainer) enclosing_containers.include?(kontainer) end |
#contained_siblings ⇒ Object
Returns Array.
33 34 35 |
# File 'app/models/concerns/shared/containable.rb', line 33 def contained_siblings reload_container_item&.siblings&.map(&:contained_object) || [] end |
#enclosing_containers ⇒ Array
Return all Containers containing this container
46 47 48 49 |
# File 'app/models/concerns/shared/containable.rb', line 46 def enclosing_containers return [] if !contained? container_item.ancestors.map(&:contained_object) end |
#put_in_container(kontainer) ⇒ Boolean
Returns true if item is placed in container, false if not.
39 40 41 42 |
# File 'app/models/concerns/shared/containable.rb', line 39 def put_in_container(kontainer) return false if self.new_record? || kontainer.new_record? kontainer.add_container_items([self]) end |