Generic.IEnumerable<Html.Dom.Node> GetHelp(string prefix, Method method) { string name = prefix + method.Name; yield return new Html.Dom.DefinitionTerm(method.Parameters.Map(p => (Html.Dom.Node)new Html.Dom.Span(p.Name) { Class = "parameter" }).Prepend(name)) { Identifier = name }; if (method.Parameters.NotEmpty()) { Html.Dom.Element parameters = new Html.Dom.DefinitionData() { Class = "parameters" }; Html.Dom.DefinitionList parametersList = new Html.Dom.DefinitionList(); foreach (Parameter.Abstract parameter in method.Parameters) if (parameter.Usage.NotEmpty() || parameter.Description.NotEmpty()) { parametersList.Add(new Html.Dom.DefinitionTerm(parameter.Name)); if (parameter.Usage.NotEmpty()) parametersList.Add(new Html.Dom.DefinitionData(parameter.Usage) { Class = "usage" }); if (parameter.Description.NotEmpty()) parametersList.Add(new Html.Dom.DefinitionData(parameter.Description) { Class = "description" }); } parameters.Add(parametersList); yield return parameters; } if (method.Usage.NotEmpty()) yield return new Html.Dom.DefinitionData(method.Usage) { Identifier = name + "_usage", Class = "usage" }; if (method.Example.NotEmpty()) yield return new Html.Dom.DefinitionData(name + " " + method.Example) { Identifier = name + "_example", Class = "example" }; if (method.Default.NotEmpty()) yield return new Html.Dom.DefinitionData(method.Default) { Identifier = name + "_default", Class = "default" }; }
Generic.IEnumerable<Html.Dom.Node> GetHelp(string prefix, Object @object) { Collection.IReadOnlyVector<Property> properties = @object.Properties; Collection.IReadOnlyVector<Method> methods = @object.Methods; string name = (prefix.NotEmpty() ? prefix : "") + @object.Name ; if (name.NotEmpty()) prefix = name + "."; if (properties.Count > 0 || methods.Count > 0) yield return new Html.Dom.Heading1(name.NotEmpty() ? name : "<root>") { Identifier = name, Class = "object" }; if (properties.Count > 0) { yield return new Html.Dom.Heading2("Properties") { Identifier = name + "_properties", Class = "properties" }; Html.Dom.DefinitionList list = new Html.Dom.DefinitionList() { Class = "properties" }; properties.Apply(p => this.GetHelp(prefix, p).Apply(n => list.Add(n))); yield return list; } if (methods.Count > 0) { yield return new Html.Dom.Heading2("Methods") { Identifier = name + "_methods", Class = "methods" }; Html.Dom.DefinitionList list = new Html.Dom.DefinitionList() { Class = "methods" }; methods.Apply(m => this.GetHelp(prefix, m).Apply(n => list.Add(n))); yield return list; } Collection.IReadOnlyVector<Object> objects = @object.Objects; foreach (var o in objects) foreach (var node in this.GetHelp(prefix, o)) yield return node; }