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>"); }
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>"); }