lib/scrivito/widget_collection.rb in scrivito_sdk-0.50.1 vs lib/scrivito/widget_collection.rb in scrivito_sdk-0.60.0.rc1
- old
+ new
@@ -1,19 +1,34 @@
module Scrivito
# @api public
# The +WidgetCollection+ represents all {Scrivito::BasicWidget Widgets} referenced by an
# {Scrivito::BasicObj Obj} or its subwidgets.
class WidgetCollection
+ include Enumerable
+
def initialize(obj)
@obj = obj
end
# @api public
# Access a {Scrivito::BasicWidget Widget} by its +id+
# @param [String] widget_id the id of the widget
# @return [Scrivito::BasicWidget, nil] the Widget with the given +widget_id+ or nil
def [](widget_id)
obj.widget_from_pool(widget_id)
+ end
+
+ # @api public
+ #
+ # Enables you to iterate the {Scrivito::BasicWidget Widgets} of an {Scrivito::BasicObj Obj}.
+ # Includes the {http://ruby-doc.org/core-2.1.0/Enumerable.html Enumerable} mixin
+ # and thereby provides methods like +map+ or +select+.
+ # @yield [Scrivito::BasicWidget] the {Scrivito::BasicWidget Widgets} of an {Scrivito::BasicObj Obj}
+ #
+ # @example Array of all widget ids
+ # obj.widgets.map { |widget| widget.id }
+ def each(&block)
+ obj.all_widgets_from_pool.each(&block)
end
private
attr_reader :obj