Ejemplo n.º 1
0
        public IBlock Write(BlockWritingContext context)
        {
            var type     = context.Token.Accessor.OwnerType;
            var settings = context.Registry.SettingsFor(type);
            var name     = settings.Collection(type, context.Token.Value);

            var collectionName = context.Registry.NameFor(new BlockToken(name));

            IEnumerable <object> items = new object[0];

            var rawValue = context.RawValue as IEnumerable;

            if (rawValue != null)
            {
                items = rawValue.Cast <object>();
            }

            return(new CollectionBlock(collectionName)
            {
                Blocks = items
                         .Select(value =>
                {
                    context.StartObject(value);
                    var block = context.Writer.BlockFor(value, context, context.Token.Value);

                    context.FinishObject();

                    return block;
                })
                         .ToList()
            });
        }