Sha256: c5adaf42225e5b41b462f32aac605dcbe27e3e7cb48dd3648fcd5adeda51d8e9
Contents?: true
Size: 1.35 KB
Versions: 1
Compression:
Stored size: 1.35 KB
Contents
# Nested Iterators ## Introduction A `Nested Iterator` occurs when a block contains another block. ## Example Given ```Ruby class Duck class << self def duck_names %i!tick trick track!.each do |surname| %i!duck!.each do |last_name| puts "full name is #{surname} #{last_name}" end end end end end ``` `reek` would report the following warning: ``` test.rb -- 1 warning: [5]:Duck#duck_names contains iterators nested 2 deep (NestedIterators) ``` ## Current Support in Reek Nested Iterators reports failing methods only once. `Object#tap` is ignored by default and thus does not count as iterator. Furthermore iterators without block arguments are not counted, e.g.: ```Ruby def foo before do item.each do |part| puts part end end end ``` would not smell of NestedIterators (given a maximum allowed nesting of 1) since the `before` would not be counted (because it doesn't pass any arguments to the block). ## Configuration `Nested Iterators` offers the [Basic Smell Options](Basic-Smell-Options.md), plus: | Option | Value | Effect | | ---------------|-------------|---------| | max_allowed_nesting | integer | The maximum depth of nested iterators. Defaults to 1 | | ignore_iterators | Array | List of iterators to be excluded from the smell check. Includes only `tap` at the moment|
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
reek-3.5.0 | docs/Nested-Iterators.md |