Exemplo n.º 1
0
        private void BoolConditionListItem(ConditionData.BoolVersion b, InstructionTranslator.FunctionDoc doc, InstructionTranslator.FunctionDoc baseDoc)
        {
            sb.Append($"<li><code>{Escape(doc.Name)}(");
            FunctionArguments(doc.Args, doc.OptionalArgs, false);
            sb.AppendLine($")</code>");

            EMEDF.ArgDoc  negateArg  = baseDoc.Args.Find(a => a.Name == doc.ConditionDoc.NegateField);
            EMEDF.EnumDoc negateEnum = doc.NegateEnum;
            List <string> details    = new List <string>();

            string getReq(EMEDF.ArgDoc arg, object val, object val2)
            {
                string showVal(object v) => Escape(arg.GetDisplayValue(v).ToString());

                return($"<code>{Escape(arg.DisplayName)} = {showVal(val)}{(val2 == null ? "" : " or " + showVal(val2))}</code>");
            }

            if (b.Required != null)
            {
                foreach (ConditionData.FieldValue req in b.Required)
                {
                    EMEDF.ArgDoc reqArg = baseDoc.Args.Find(a => a.Name == req.Field);
                    if (reqArg != null)
                    {
                        details.Add(getReq(reqArg, req.Value, null));
                    }
                }
            }
            if (negateArg != null && negateEnum != null)
            {
                if (b.True != null)
                {
                    int trueNum = int.Parse(negateEnum.Values.FirstOrDefault(e => e.Value == b.True).Key);
                    if (b.False == null)
                    {
                        details.Add(getReq(negateArg, trueNum, InstructionTranslator.OppositeOp(doc.ConditionDoc, negateEnum, trueNum)));
                    }
                    else
                    {
                        int falseNum = int.Parse(negateEnum.Values.FirstOrDefault(e => e.Value == b.False).Key);
                        details.Add(getReq(negateArg, trueNum, falseNum));
                    }
                }
                else
                {
                    details.Add($"{Escape(negateArg.DisplayName)} = true or false");
                }
            }
            sb.AppendLine($"<br/><span class=\"conddetails\">Where <code>{string.Join(" and ", details)}</code></span></li>");
        }
Exemplo n.º 2
0
        private void CompareConditionListItem(ConditionData.CompareVersion c, InstructionTranslator.FunctionDoc doc, InstructionTranslator.FunctionDoc baseDoc)
        {
            string ops = Escape("== != > < >= <=");

            if (c.Lhs != null)
            {
                // Prebake rather than showing Op()
                sb.AppendLine($"<li><code>{ops}</code>");
                sb.AppendLine($"<br/><span class=\"conddetails\">Comparing <code>leftHandSide</code> and <code>rightHandSize</code></span>");
                return;
            }
            sb.Append($"<li><code>{doc.Name}(");
            FunctionArguments(doc.Args, doc.OptionalArgs, false);
            sb.AppendLine($") <span class=\"condcomp\">== value</span></code>");

            EMEDF.ArgDoc compareArg = baseDoc.Args.Find(a => a.Name == c.Rhs);
            sb.Append("<br/><span class=\"conddetails\">");
            if (compareArg != null)
            {
                sb.Append($"Comparing <code>{Escape(compareArg.DisplayName)}</code> (<code>{ops}</code>)");
            }
            sb.AppendLine("</span></li>");
        }