private static void ParseLicenseAsExpression(string value, PackageJsonLicense result) { if (value.IsNullOrEmpty() || Unlicensed.EqualsIgnoreCase(value)) { return; } if (value.StartsWithIgnoreCase(FileLicense)) { value = value.Substring(FileLicense.Length).Trim(); result.Type = "file"; } result.Value = value; }
public PackageJsonLicense GetLicense() { var result = new PackageJsonLicense { Type = "expression" }; var node = Content.GetValue("license"); if (node != null) { if (node is JObject obj) { node = obj.GetValue("type"); } if (node is JValue value) { ParseLicenseAsExpression(value.Value as string, result); } return(result); } if (Content.GetValue("licenses") is JArray nodes) { var codes = nodes .OfType <JObject>() .Select(i => (i.GetValue("type") as JValue)?.Value as string) .Where(i => !i.IsNullOrEmpty()) .Distinct(StringComparer.OrdinalIgnoreCase) .ToList(); if (codes.Count == 1) { result.Value = codes[0]; } else if (codes.Count > 1) { result.Value = "(" + string.Join(" OR ", codes) + ")"; } } return(result); }