lib/contentful_middleman/mappers/base.rb in contentful_middleman-1.1.0 vs lib/contentful_middleman/mappers/base.rb in contentful_middleman-1.1.1

- old
+ new

@@ -5,15 +5,23 @@ class Base attr_reader :entries def initialize(entries) @entries = entries + @children = {} end def map(context, entry) - context.id = entry.id - entry.fields.each {|k, v| map_field context, k, v} + @children = { + :queue => [{ :context => context, :entry => entry }], + :discovered => [entry.id] } + while !@children[:queue].first.nil? do + nxt = @children[:queue].pop + context = nxt[:context] + entry = nxt[:entry] + map_entry_full(entry, context) + end end private def map_field(context, field_name, field_value) @@ -44,14 +52,21 @@ context.url = asset.file.url context end - def map_entry(entry) - context = Context.new + def map_entry_full(entry, context) context.id = entry.id entry.fields.each {|k, v| map_field context, k, v} + end + def map_entry(entry) + context = Context.new + context.id = entry.id + if !@children[:discovered].include?(entry.id) + @children[:queue].push({ :context => context, :entry => entry}) + @children[:discovered].push(entry.id) + end context end def map_location(location) location.properties