Example #1
0
        public IEnumerable <dynamic> TransformWith(string transformer, dynamic maybeItems)
        {
            if (CurrentTransformationScope.Current == null)
            {
                throw new InvalidOperationException("TransformWith was accessed without CurrentTransformationScope.Current being set");
            }

            if (CurrentTransformationScope.Current.Nested.Add(transformer) == false)
            {
                throw new InvalidOperationException("Cannot call transformer " + transformer + " because it was already called, recursive transformers are not allowed. Current transformers are: " + string.Join(", ", CurrentTransformationScope.Current.Nested));
            }
            try
            {
                var storedTransformer = CurrentTransformationScope.Current.Database.IndexDefinitionStorage.GetTransformer(transformer);
                if (storedTransformer == null)
                {
                    throw new InvalidOperationException("No transformer with the name: " + transformer);
                }

                var enumerable = maybeItems as IEnumerable;
                var objects    = enumerable != null && AnonymousObjectToLuceneDocumentConverter.ShouldTreatAsEnumerable(enumerable) ?
                                 enumerable.Cast <dynamic>() : new[] { maybeItems };

                foreach (var result in AllowAccessToResultsEvenIfTheyAreStupidInternalAnonymousTypes(storedTransformer.TransformResultsDefinition(objects)))
                {
                    yield return(result);
                }
            }
            finally
            {
                CurrentTransformationScope.Current.Nested.Remove(transformer);
            }
        }
Example #2
0
        public IEnumerable <object> Execute()
        {
            if (item == null)
            {
                return(new DynamicList(Enumerable.Empty <object>()));
            }

            var current = NullIfEmptyEnumerable(func(item));

            if (current == null)
            {
                return(new DynamicList(new[] { item }));
            }

            queue.Enqueue(item);
            while (queue.Count > 0)
            {
                current = queue.Dequeue();

                var list = current as IEnumerable <object>;
                if (list != null && AnonymousObjectToLuceneDocumentConverter.ShouldTreatAsEnumerable(current))
                {
                    foreach (var o in list)
                    {
                        AddItem(o);
                    }
                }
                else
                {
                    AddItem(current);
                }
            }

            return(new DynamicList(resultsOrdered.ToArray()));
        }
        protected IEnumerable <AbstractField> CreateField(string name, object value, bool stored = false, bool indexed = true)
        {
            var indexDefinition = new IndexDefinition();

            indexDefinition.Indexes[name] = indexed ? FieldIndexing.Analyzed : FieldIndexing.NotAnalyzed;
            var anonymousObjectToLuceneDocumentConverter = new AnonymousObjectToLuceneDocumentConverter(indexDefinition);

            return(anonymousObjectToLuceneDocumentConverter.CreateFields(name, value, stored ? Field.Store.YES : Field.Store.NO));
        }
Example #4
0
        private static object NullIfEmptyEnumerable(object item)
        {
            var enumerable = item as IEnumerable <object>;

            if (enumerable == null ||
                AnonymousObjectToLuceneDocumentConverter.ShouldTreatAsEnumerable(item) == false)
            {
                return(item);
            }

            var enumerator = enumerable.GetEnumerator();

            return(enumerator.MoveNext() == false ? null : new DynamicList(Yield(enumerator)));
        }
Example #5
0
        public IEnumerable <dynamic> TransfromWith(string transformer, dynamic maybeItems)
        {
            if (CurrentTransformationScope.Current == null)
            {
                throw new InvalidOperationException("TransfromWith was accessed without CurrentTransformationScope.Current being set");
            }

            var storedTransformer = CurrentTransformationScope.Current.Database.IndexDefinitionStorage.GetTransformer(transformer);

            if (storedTransformer == null)
            {
                throw new InvalidOperationException("No transformer with the name: " + transformer);
            }

            var enumerable = maybeItems as IEnumerable;

            if (enumerable != null && AnonymousObjectToLuceneDocumentConverter.ShouldTreatAsEnumerable(enumerable))
            {
                return(AllowAccessToResultsEvenIfTheyAreStupidInternalAnonymousTypes(storedTransformer.TransformResultsDefinition(enumerable.Cast <dynamic>())));
            }

            return(AllowAccessToResultsEvenIfTheyAreStupidInternalAnonymousTypes(storedTransformer.TransformResultsDefinition(new[] { maybeItems })));
        }