public static void Write(this MenuSuiteNode node, CSideWriter writer) { writer.Write("{ "); writer.Write(node.NodeTypeAsString()); writer.Write(";"); writer.Write("[{0}] ", node.ID.ToString("B").ToUpper()); writer.Write(";"); writer.Indent(writer.Column); IEnumerable <Property> properties = null; TypeSwitch.Do( node, TypeSwitch.Case <RootNode>(n => properties = n.Properties), TypeSwitch.Case <MenuNode>(n => properties = n.Properties), TypeSwitch.Case <GroupNode>(n => properties = n.Properties), TypeSwitch.Case <ItemNode>(n => properties = n.Properties), TypeSwitch.Case <DeltaNode>(n => properties = n.Properties) ); var relevantProperties = properties.Where(p => p.HasValue); relevantProperties.Write(PropertiesStyle.Field, writer); writer.Unindent(); writer.WriteLine("}"); }
public static IEnumerable <ParameterBase> ToParameters(this MenuSuiteNode menuSuiteNode) { yield return(new SimpleParameter("ID", menuSuiteNode.ID)); foreach (var parameter in menuSuiteNode.AllProperties.Where(p => p.HasValue).SelectMany(p => p.ToParameters())) { yield return(parameter); } }
public static string NodeTypeAsString(this MenuSuiteNode node) { string result = null; TypeSwitch.Do( node, TypeSwitch.Case <RootNode>(n => result = "Root".PadRight(15)), TypeSwitch.Case <MenuNode>(n => result = "Menu".PadRight(15)), TypeSwitch.Case <GroupNode>(n => result = "MenuGroup".PadRight(15)), TypeSwitch.Case <ItemNode>(n => result = "MenuItem".PadRight(15)), TypeSwitch.Case <DeltaNode>(n => result = string.Empty.PadRight(15)) ); return(result); }
public static Invocation ToInvocation(this MenuSuiteNode menuSuiteNode) { switch (menuSuiteNode) { case RootNode rootNode: return(rootNode.ToInvocation()); case DeltaNode deltaNode: return(deltaNode.ToInvocation()); case MenuNode menuNode: return(menuNode.ToInvocation()); case ItemNode itemNode: return(itemNode.ToInvocation()); case GroupNode groupNode: return(groupNode.ToInvocation()); default: throw new ArgumentOutOfRangeException("menuSuiteNode"); } }