public AffixEntryGroup <TEntry> GetByFlag(FlagValue flag) { AffixEntryGroup <TEntry> result; affixesByFlag.TryGetValue(flag, out result); return(result); }
private bool TryParseFlag(StringSlice text, out FlagValue value) { var flagMode = Builder.FlagMode; return(flagMode == FlagMode.Uni ? FlagValue.TryParseFlag(ReDecodeConvertedStringAsUtf8(text), FlagMode.Char, out value) : FlagValue.TryParseFlag(text, flagMode, out value)); }
private FlagValue[] ParseFlagsInOrder(StringSlice text) { var flagMode = Builder.FlagMode; if (flagMode == FlagMode.Uni) { text = ReDecodeConvertedStringAsUtf8(text); flagMode = FlagMode.Char; } return(FlagValue.ParseFlagsInOrder(text, flagMode)); }
private bool TryParseFlag(string text, out FlagValue value) { var flagMode = Builder.FlagMode; if (flagMode == FlagMode.Uni) { text = ReDecodeConvertedStringAsUtf8(text); flagMode = FlagMode.Char; } return(FlagValue.TryParseFlag(text, flagMode, out value)); }
private FlagValue TryParseFlag(string text) { var flagMode = Builder.FlagMode; if (Builder.FlagMode == FlagMode.Uni) { text = ReDecodeConvertedStringAsUtf8(text); flagMode = FlagMode.Char; } FlagValue value; return(FlagValue.TryParseFlag(text, flagMode, out value) ? value : default(FlagValue)); }
public bool ContainsAnyContClass(FlagValue a, FlagValue b) => AffixEntry.ContainsAnyContClass(a, b);
public bool ContainsContClass(FlagValue value) => AffixEntry.ContainsContClass(value);
private bool ParseLine(string line) { if (string.IsNullOrEmpty(line)) { return(true); } if (!hasInitialized && AttemptToProcessInitializationLine(line)) { return(true); } if (Builder.EntriesByRoot == null) { Builder.InitializeEntriesByRoot(-1); } var parsed = ParsedWordLine.Parse(line); if (string.IsNullOrEmpty(parsed.Word)) { return(false); } FlagSet flags; if (!string.IsNullOrEmpty(parsed.Flags)) { if (Affix.IsAliasF) { int flagAliasNumber; FlagSet aliasedFlags; if (IntEx.TryParseInvariant(parsed.Flags, out flagAliasNumber) && Affix.TryGetAliasF(flagAliasNumber, out aliasedFlags)) { flags = aliasedFlags; } else { // TODO: warn return(false); } } else if (Affix.FlagMode == FlagMode.Uni) { var encodedBytes = Affix.Encoding.GetBytes(parsed.Flags); var utf8Flags = Encoding.UTF8.GetString(encodedBytes, 0, encodedBytes.Length); flags = Builder.Dedup(FlagValue.ParseFlags(utf8Flags, FlagMode.Char)); } else { flags = Builder.Dedup(FlagValue.ParseFlags(parsed.Flags, Affix.FlagMode)); } } else { flags = FlagSet.Empty; } MorphSet morphs; if (parsed.Morphs != null && parsed.Morphs.Length != 0) { var morphValues = new string[parsed.Morphs.Length]; for (int i = 0; i < parsed.Morphs.Length; i++) { morphValues[i] = parsed.Morphs[i]; } morphs = Builder.Dedup(MorphSet.TakeArray(morphValues)); } else { morphs = MorphSet.Empty; } return(AddWord(parsed.Word, flags, morphs)); }
public AffixEntryGroup(FlagValue aFlag, AffixEntryOptions options, AffixEntryCollection <TEntry> entries) { AFlag = aFlag; Options = options; Entries = entries; }
public bool ContainsAnyContClass(FlagValue a, FlagValue b, FlagValue c) => ContClass.ContainsAny(a, b, c);
public bool ContainsAnyContClass(FlagValue a, FlagValue b) => ContClass.ContainsAny(a, b);
public bool ContainsContClass(FlagValue flag) => flag.HasValue && ContClass.Contains(flag);