예제 #1
0
        /// <summary>
        /// Пишет синтаксические правила использования именованных аргументов.
        /// </summary>
        void WriteNamedArgumentsSyntax()
        {
            if (context.NamedProperties == null)
            {
                return;
            }
            context.EnsureNamedArgsInfoDefined();
            var arg = context.NamedArgsInfo;

            foreach (var property in context.NamedProperties)
            {
                var spec = property.Specification;
                writer.Write(" ");
                var text = arg.Prefix + spec.Key.Name;
                if (spec.IsSwitch && spec.Key.HasAlias)
                {
                    text += "|" + arg.Prefix + spec.Key.Alias;
                }
                if (!spec.IsSwitch)
                {
                    text += arg.Separator + (spec.IsCollection ? GetCollectionSpec(property) : "VALUE");
                }
                context.WriteQuoted(text, property.IsRequired);
            }
        }
예제 #2
0
        /// <summary>
        /// Пишет описание именованных аргументов.
        /// </summary>
        void WriteNamedArgumentsInfo()
        {
            if (context.NamedProperties == null)
            {
                return;
            }
            context.EnsureNamedArgsInfoDefined();
            var arg = context.NamedArgsInfo;

            foreach (var property in context.NamedProperties)
            {
                var spec = property.Specification;
                writer.Write(arg.Prefix);
                writer.Write(spec.Key.Name);
                if (spec.Key.HasAlias)
                {
                    writer.Write(", ");
                    writer.Write(arg.Prefix);
                    writer.Write(spec.Key.Alias);
                }
                writer.Write(spec.IsSwitch ? "\t(Switch" : "\t(Named");
                writer.Write(property.IsRequired ? ", required" : ", optional");
                writer.WriteLine(")");
                WriteDescription(property);
            }
        }