private static string[] argParse(JArray arr) { var strList = new List <string>(arr.Count); foreach (var item in arr) { if (item is JObject) { bool allow = true; if (item["rules"] is JArray rules) { allow = MRule.CheckOSRequire(rules); } var value = item["value"] ?? item["values"]; if (allow && value != null) { if (value is JArray) { foreach (var str in value) { strList.Add(str.ToString()); } } else { strList.Add(value.ToString()); } } } else { strList.Add(item.ToString()); } } return(strList.ToArray()); }
public static MLibrary[] ParseJsonObject(JObject item) { try { var list = new List <MLibrary>(2); var name = item["name"]?.ToString(); var isRequire = true; // check rules array var rules = item["rules"]; if (CheckOSRules && rules != null) { isRequire = MRule.CheckOSRequire((JArray)rules); } // forge clientreq var req = item["clientreq"]?.ToString(); if (req != null && req.ToLower() != "true") { isRequire = false; } // support TLauncher var artifact = item["artifact"] ?? item["downloads"]?["artifact"]; var classifiers = item["classifies"] ?? item["downloads"]?["classifiers"]; var natives = item["natives"]; // NATIVE library if (natives != null) { var nativeId = natives[MRule.OSName]?.ToString()?.Replace("${arch}", MRule.Arch); if (classifiers != null && nativeId != null) { JObject lObj = (JObject)classifiers[nativeId]; list.Add(createMLibrary(name, nativeId, isRequire, lObj)); } else { list.Add(createMLibrary(name, nativeId, isRequire, new JObject())); } } // COMMON library if (artifact != null) { var obj = createMLibrary(name, "", isRequire, (JObject)artifact); list.Add(obj); } // library if (artifact == null && natives == null) { var obj = createMLibrary(name, "", isRequire, item); list.Add(obj); } return(list.ToArray()); } catch { return(null); } }