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); }
public dynamic GetAsDynamic() { var data = new CaseInsensitiveExpando(); data["Documents"] = this.Documents; data["Pagination"] = this.Pagination; return(data); }
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]); }
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); }
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)); }
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); }
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; }
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); }
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); }
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(); }
public void Test_CloneDynamic() { var x = new CaseInsensitiveExpando().Set("foo", 1).Set("bar", "2"); //var y = CaseInsensitiveExpando.TryClone(x); }