lib/nanoc/base/entities/rule_memory.rb in nanoc-4.2.0 vs lib/nanoc/base/entities/rule_memory.rb in nanoc-4.2.1

- old
+ new

@@ -1,48 +1,62 @@ module Nanoc::Int class RuleMemory + include Nanoc::Int::ContractsSupport include Enumerable def initialize(item_rep) @item_rep = item_rep @actions = [] end + contract C::None => Numeric def size @actions.size end + contract Numeric => C::Maybe[Nanoc::Int::RuleMemoryAction] def [](idx) @actions[idx] end + contract Symbol, Hash => self def add_filter(filter_name, params) @actions << Nanoc::Int::RuleMemoryActions::Filter.new(filter_name, params) + self end + contract String, C::Maybe[Hash] => self def add_layout(layout_identifier, params) @actions << Nanoc::Int::RuleMemoryActions::Layout.new(layout_identifier, params) + self end + contract Symbol, C::Bool, C::Maybe[String] => self def add_snapshot(snapshot_name, final, path) will_add_snapshot(snapshot_name) if final @actions << Nanoc::Int::RuleMemoryActions::Snapshot.new(snapshot_name, final, path) + self end + contract C::None => C::ArrayOf[Nanoc::Int::RuleMemoryAction] def snapshot_actions @actions.select { |a| a.is_a?(Nanoc::Int::RuleMemoryActions::Snapshot) } end + contract C::None => C::Bool def any_layouts? @actions.any? { |a| a.is_a?(Nanoc::Int::RuleMemoryActions::Layout) } end + # TODO: Add contract def serialize map(&:serialize) end + contract C::Func[Nanoc::Int::RuleMemoryAction => C::Any] => self def each @actions.each { |a| yield(a) } + self end private def will_add_snapshot(name)