public ImageFile(string fileName, string rootPath, string setCode = null, string artist = null, bool isArt = false) { var fileNameWithoutExtension = Path.GetFileNameWithoutExtension(fileName); if (fileNameWithoutExtension == null) { throw new ArgumentException(@"fileName is null", nameof(fileName)); } string directoryName = Path.GetDirectoryName(fileName); if (directoryName == null) { throw new ArgumentException(@"directoryName is null", nameof(fileName)); } FullPath = fileName; string[] parts = fileNameWithoutExtension.Split(Array.From('.'), StringSplitOptions.None); var lastNamePart = Enumerable.Range(0, parts.Length) .Last(i => i == 0 || // Richard Garfield, Ph.D..xlhq.jpg // S.N.O.T..xlhq.jpg // Our Market Research....xlhq.jpg parts[i].Length <= 1 || // Sarpadian Empires, Vol. VII.xlhq.jpg // Но Thoughtseize.[Size 16x20].jpg !(parts[i].StartsWith("[") && parts[i].EndsWith("]")) && parts[i].Contains(' ')); Type = string.Join(".", parts.Skip(1 + lastNamePart)); var imageName = string.Join(".", parts.Take(1 + lastNamePart)) .Replace(" - ", string.Empty); ImageName = string.Intern(ImageNamePatcher.PatchFileName(imageName)); var nameParts = ImageName.SplitTalingNumber(); Name = string.Intern(nameParts.Item1); VariantNumber = nameParts.Item2; rootPath = rootPath.ToAppRootedPath(); if (!rootPath.EndsWith("\\")) { rootPath = rootPath + "\\"; } if (!directoryName.EndsWith("\\")) { directoryName = directoryName + "\\"; } if (setCode != null) { SetCode = string.Intern(setCode); SetCodeIsFromAttribute = true; } else { var setCodeMatch = _setCodeRegex.Match(directoryName.Substring(rootPath.Length)); if (setCodeMatch.Success) { SetCode = string.Intern(setCodeMatch.Value.ToUpperInvariant()); } else { SetCode = string.Empty; } } Quality = getQuality(); if (artist != null) { Artist = string.Intern(artist); } IsArt = isArt; IsToken = directoryName.IndexOf("Tokens", Str.Comparison) >= 0; }
private void preProcessCard(Card card) { card.NameNormalized = string.Intern(card.NameEn.RemoveDiacritics()); ImageNamePatcher.Patch(card); if (_patch.Cards.TryGetValue(card.SetCode, out var patch)) { card.PatchCard(patch); } if (_patch.Cards.TryGetValue(card.NameEn, out patch)) { card.PatchCard(patch); } if (_patch.Cards.TryGetValue(card.Id, out patch)) { card.PatchCard(patch); } if (card.SubtypesArr != null) { card.Subtypes = string.Intern(string.Join(" ", card.SubtypesArr)); } else { card.Subtypes = string.Empty; } if (card.TypesArr != null) { card.Types = string.Intern(string.Join(" ", card.TypesArr)); } else { card.Types = string.Empty; } if (card.SupertypesArr != null) { card.Supertypes = string.Intern(string.Join(" ", card.SupertypesArr)); } else { card.Supertypes = string.Empty; } card.PowerNum = getPower(card.Power); card.ToughnessNum = getPower(card.Toughness); card.LoyaltyNum = getLoyalty(card.Loyalty); card.TextEn = card.TextEn?.Invoke(LocalizationRepository.IncompleteChaosPattern.Replace, "{CHAOS}"); card.FlavorEn = card.FlavorEn?.Invoke(LocalizationRepository.IncompleteChaosPattern.Replace, "{CHAOS}"); if (card.MciNumber == null) { card.MciNumber = card.Number; } else if (card.MciNumber.EndsWith(".html")) { card.MciNumber = _mciNumberRegex.Match(card.MciNumber).Groups["id"].Value; } card.Color = card.ColorsArr != null && card.ColorsArr.Count > 0 ? string.Join(" ", card.ColorsArr) : "Colorless"; if (!string.IsNullOrEmpty(card.OriginalText) && Str.Equals(card.OriginalText, card.TextEn)) { card.OriginalText = null; } if (!string.IsNullOrEmpty(card.OriginalType) && Str.Equals(card.OriginalType, card.TypeEn)) { card.OriginalType = null; } if (Str.Equals(card.SetCode, "BBD")) { if (card.Number.EndsWith("b", Str.Comparison)) { card.Remove = true; } else if (card.Number.EndsWith("a", Str.Comparison)) { card.Number = card.Number.Substring(0, card.Number.Length - 1); card.Names = null; if (Str.Equals(card.ImageName, "will kenrith4")) { card.ImageName = "will kenrith2"; } else if (Str.Equals(card.ImageName, "rowan kenrith2")) { card.ImageName = "rowan kenrith1"; } else if (Str.Equals(card.ImageName, "rowan kenrith1")) { card.ImageName = "rowan kenrith2"; } if (Str.Equals(card.Layout, "flip")) { card.Layout = "normal"; } } } }