Example #1
0
        public dynamic GetAsDynamic(string documentContent = null)
        {
            dynamic data = null;

            if (!String.IsNullOrEmpty(documentContent))
            {
                var expando = new CaseInsensitiveExpando();

                data = expando;

                this.AssignDocumentToExpando(expando, documentContent);
            }
            else
            {
                if (this.Dynamic == null)
                {
                    lock (_lock)
                    {
                        if (this.Dynamic == null)
                        {
                            var expando = new CaseInsensitiveExpando();

                            this.Dynamic = expando;

                            this.AssignDocumentToExpando(expando, null);
                        }
                    }
                }

                data = this.Dynamic;
            }

            return(data);
        }
Example #2
0
        public dynamic GetAsDynamic()
        {
            var data = new CaseInsensitiveExpando();

            data["Documents"]  = this.Documents;
            data["Pagination"] = this.Pagination;

            return(data);
        }
Example #3
0
        public void TestExpando_SetPropertyAsIndex()
        {
            var     property = "prop1";
            dynamic expando  = new CaseInsensitiveExpando();

            expando.Set(property, 42);
            Assert.AreEqual(42, expando[property]);
            expando[property] = 43;
            Assert.AreEqual(43, expando[property]);
        }
Example #4
0
        public dynamic GetAsDynamic(DocumentFile activeDocument)
        {
            var data = new CaseInsensitiveExpando();

            var chapters = this.Chapters.Select(c => c.GetAsDynamic(activeDocument)).ToList();

            data["Id"]       = this.Id;
            data["Chapters"] = chapters;

            return(data);
        }
Example #5
0
        public void Test_DynamicBehaviors()
        {
            object d    = 1;
            var    meta = d.GetDynamicMetaObject();

            Assert.IsNull(meta);

            d    = new CaseInsensitiveExpando();
            meta = d.GetDynamicMetaObject();
            Assert.IsNotNull(meta);
            Assert.AreEqual(d, meta.Value);
        }
        private string RenderContentForExtension(string path, string content, string extension, DocumentFile document, string documentContent, LayoutFile layout)
        {
            var data = new CaseInsensitiveExpando();

            data["Site"]     = this.Site.GetAsDynamic();
            data["Document"] = document.GetAsDynamic(documentContent);
            data["Layout"]   = layout == null ? null : layout.GetAsDynamic();
            data["Books"]    = this.Site.Books == null ? null : this.Site.Books.Select(b => b.GetAsDynamic(document)).ToList();

            var engine = this.Engines[extension];

            return(engine.Render(path, content, data));
        }
Example #7
0
        public dynamic GetAsDynamic()
        {
            var data = new CaseInsensitiveExpando();

            this.Metadata.Assign(data);

            data["Id"]            = this.Id;
            data["Modified"]      = this.Modified;
            data["Path"]          = this.SourcePath;
            data["Name"]          = Path.GetFileName(this.SourcePath);
            data["SourceContent"] = this.SourceContent;

            return(data);
        }
Example #8
0
        public void TestCaseInsensitiveExpando()
        {
            var expando = new CaseInsensitiveExpando();

            expando.Set("OBJECTID", "12345");
            dynamic d        = expando;
            var     objectId = d.ObjectId;
            var     vehicle  = new TestVehicle(d.ObjectId);

            Assert.IsTrue(vehicle.Id == "12345");

            expando.Set("State", 1);
            var state = (Colors)d.State;
        }
Example #9
0
        public virtual dynamic GetAsDynamic(DocumentFile activeDocument)
        {
            var data = new CaseInsensitiveExpando();

            data["Active"]   = (this.Document == activeDocument);
            data["Document"] = this.Document.GetAsDynamic();

            data["Chapter"] = false;
            data["Page"]    = true;

            data["ChildActive"] = false;
            data["Children"]    = null;

            return(data);
        }
Example #10
0
        public dynamic GetAsDynamic()
        {
            var data = new CaseInsensitiveExpando();

            this.Metadata.Assign(data);

            data["Author"]       = this.Author;
            data["Output"]       = this.OutputPath;
            data["Url"]          = this.Url;
            data["RootUrl"]      = this.RootUrl;
            data["FullUrl"]      = this.RootUrl.EnsureEndsWith("/") + this.Url.TrimStart('/');
            data["Parent"]       = this.Parent;
            data["TimeZoneInfo"] = this.TimeZone;

            return(data);
        }
Example #11
0
        private void AssignDocumentToExpando(CaseInsensitiveExpando data, string documentContent)
        {
            var expandNextPrev = String.IsNullOrEmpty(documentContent);

            this.Metadata.Assign(data);

            data["Author"]             = this.Author;
            data["Draft"]              = this.Draft;
            data["Modified"]           = this.Modified;
            data["Id"]                 = this.Id;
            data["Order"]              = this.Order;
            data["OutputPath"]         = this.OutputPath;
            data["RelativePath"]       = this.OutputRelativePath; // TODO: rename "OutputPath" to "RelativeOutputPath".
            data["SourcePath"]         = this.SourcePath;
            data["SourceContent"]      = this.SourceContent;
            data["Url"]                = this.RelativeUrl; // TODO: make the dyanmic object "url" fields match the document fields.
            data["RootUrl"]            = this.RootUrl;
            data["FullUrl"]            = this.Url;
            data["Date"]               = this.Date;
            data["DateUtc"]            = this.Date.ToUniversalTime();
            data["FriendlyDate"]       = this.Date.ToString("D");
            data["StandardUtcDate"]    = this.Date.ToUniversalTime().ToString("yyyy-MM-ddThh:mm:ssZ");
            data["Now"]                = this.Now;
            data["NowUtc"]             = this.Now.ToUniversalTime();
            data["NowFriendlyDate"]    = this.Now.ToString("D");
            data["NowStandardUtcDate"] = this.Now.ToUniversalTime().ToString("yyyy-MM-ddThh:mm:ssZ");
            data["Content"]            = String.IsNullOrEmpty(documentContent) ? this.Content : documentContent;
            data["Summary"]            = this.Summary;

            data["NextDocument"]     = (this.NextDocument != null && expandNextPrev) ? this.NextDocument.GetAsDynamic() : null;
            data["ParentDocument"]   = (this.ParentDocument != null && expandNextPrev) ? this.ParentDocument.GetAsDynamic() : null;
            data["PreviousDocument"] = (this.PreviousDocument != null && expandNextPrev) ? this.PreviousDocument.GetAsDynamic() : null;

            data["Book"]      = this.Book == null ? null : this.Book.GetAsDynamic(this);
            data["Chapter"]   = this.Chapter == null ? null : this.Chapter.GetAsDynamic(this);
            data["Paginator"] = this.Paginator == null ? null : this.Paginator.GetAsDynamic();
        }
Example #12
0
 public void Test_CloneDynamic()
 {
     var x = new CaseInsensitiveExpando().Set("foo", 1).Set("bar", "2");
     //var y = CaseInsensitiveExpando.TryClone(x);
 }