private void GetDocumentation()
 {
     category = (string)Context.Items["commandcategory"];
     name = (string)Context.Items["commandname"];
     if (category != null && name != null)
     {
         KeyValuePair<ICommandProperties, CommandDocumentation> pair = Commands.Instance.GetCommandDocumentation(category, name);
         metadata = pair.Key;
         doc = pair.Value;
     }
 }
Пример #2
0
 protected BaseCommand(MethodBase method, ICommandProperties properties)
 {
     this.Method     = method;
     this.Properties = properties;
 }
Пример #3
0
        public void DrawParameter(ICommandProperties command, IReadOnlyList <IParameterProperties> parameters)
        {
            this._sb.AppendLine("Usage:");
            this._sb.Append(' ', IndentCell * 1).AppendLine($"Parameters of Commands <{command.Names[0]}>:");

            foreach (var parameter in parameters)
            {
                if (parameter.IsResolveByEngine)
                {
                    continue;
                }

                // content
                this._sb.Append(' ', IndentCell * 2);
                this._sb.Append(parameter.IsOptional ? "(optional)" : "(required)");

                this._sb.Append(' ');
                this._sb.Append(parameter.Names[0]);
                this._sb.Append(" : ");

                if (parameter.IsArray)
                {
                    this._sb.Append('[');
                    // ReSharper disable once PossibleNullReferenceException
                    this._sb.Append(parameter.ArrayElementType.Name);
                    this._sb.Append(", ...]");
                }
                else
                {
                    this._sb.Append(parameter.ParameterInfo.ParameterType.Name);

                    if (parameter.ParameterInfo.HasDefaultValue)
                    {
                        this._sb.Append(" = ");
                        this._sb.Append(parameter.ParameterInfo.DefaultValue?.ToString() ?? "null");
                    }

                    if (parameter.ParameterInfo.ParameterType.GetTypeInfo().IsEnum)
                    {
                        this._sb.Append(" (");
                        this._sb.Append(string.Join("|", Enum.GetNames(parameter.ParameterInfo.ParameterType)));
                        this._sb.Append(")");
                    }
                }

                if (parameter.Names.Count > 1)
                {
                    this._sb.Append("   ");
                    this._sb.Append($"(Alias: {string.Join(" / ", parameter.Names.Skip(1))})");
                }

                var cond = parameter.Conditions;
                if (cond.Count > 0)
                {
                    this._sb.AppendLine().Append(' ', IndentCell * 3);
                    this._sb.Append($" require( {string.Join(" , ", cond)} )");
                }

                // desc
                this.AppendDescription(parameter);

                // end
                this._sb.AppendLine();
            }

            this._outputer.WriteLine(OutputLevel.Usage, this._sb.ToString());
        }