public void Add(Field field) { if (field == null || FieldTrackingIds.Contains(field.TrackingId)) { return; } _passwordFields = _usernameFields = null; FieldTrackingIds.Add(field.TrackingId); Fields.Add(field); AutofillIds.Add(field.AutofillId); if (field.Hints != null) { foreach (var hint in field.Hints) { Hints.Add(hint); if (field.Focused) { FocusedHints.Add(hint); } if (!HintToFieldsMap.ContainsKey(hint)) { HintToFieldsMap.Add(hint, new List <Field>()); } HintToFieldsMap[hint].Add(field); } } }
private static void InitHintsOffsets() { // Нужно растянуть подсказки так, чтобы за час, или даже четыре, их было нереально докачать. // Соответственно, последняя подсказка должна быть дальше, чем: // DownloadSpeedBytesPerSecond * 3600 * 3 (bytes) // В соответствии с задумкой располагать данные через увеличивающиеся промежутки трэша, то есть: +-+--+----+--------+... // получаем, что нужно найти степень двойки >= чем наш последний оффсет: const long minimumLastOffset = DownloadSpeedBytesPerSecond * 3600 * 5; log.Debug(string.Format("minimumLastOffset: {0}", minimumLastOffset)); var numberOfOffsets = (int)Math.Ceiling(Math.Log(minimumLastOffset) / Math.Log(2)); var spacing = Encoding.UTF8.GetBytes(FirstHints[0]).Length; var rand = new Random(); HintOffsets.Add(0); for (var i = 0; i < numberOfOffsets - 1; i++) { var nextOffset = (long)(spacing * 2 * (Math.Pow(2, i) + 1)); HintOffsets.Add(nextOffset); var nextHint = i < 4 ? FirstHints[i] : HintsPool[rand.Next(HintsPool.Length)]; Hints.Add(string.Format(nextHint, nextOffset)); log.Info(i + ": " + Hints[i]); } Hints.Add(Flag); TotalFileLength = HintOffsets[numberOfOffsets - 1] + Encoding.UTF8.GetBytes(Hints[numberOfOffsets - 1]).Length; }
private void AddHint(object obj) { if (!Guard.IsNullOrEmpty(CurrentHint)) { Hints.Add(CurrentHint.Trim()); } }
public void GetUsers() { var users = _getUsersFunc.Invoke(); Hints.Clear(); foreach (var user in users) { Hints.Add(user); } }
public void SetParameters(EmojiSuggestionParams parameters) { Parameters = parameters; Hints.Clear(); if (Parameters != null && Parameters.Results != null) { int maxCount = 5; for (int index = 0; index < parameters.Results.Length && index < maxCount; index++) { var result = parameters.Results[index]; Hints.Add(result); } } }
private void SearchHints() { _itemsController.ResetHints(); IEnumerable <Dictionary.WordList> dictLists = GetDictionaryListsByLanguage(LanguageFrom.Code); foreach (Dictionary.WordList dictList in dictLists) { var resultList = dictList.WildSearch(SearchQuery, _hintsMaxCount); if (resultList.Items.Count == 0) { //Здесь должен быть поиск с морфологией } if (resultList.Items.Count == 0) { resultList = dictList.SpellingSearch(SearchQuery);//Поиск с опечатками } if (resultList.Items.Count > 0) { foreach (Dictionary.ListItem item in resultList.Items) { if (_itemsController.CanAddHint()) { if (!_articleService.IsEqualsStrings(item.ShowVariants[Dictionary.ShowVariantsTypes.Show], SearchQuery)) { Hints.Add(new DictionaryItem(item)); } } else { return; } } } } }
private string Sanitize(Variant value) { string final = null; if (value.GetVariantType() == Variant.VariantType.ByteString) { try { final = encoding.GetString((byte[])value); } catch (DecoderFallbackException) { throw new PeachException("Error, " + debugName + " value contains invalid " + stringType + " bytes."); } } if (value.GetVariantType() == Variant.VariantType.BitStream) { try { var rdr = new BitReader((BitwiseStream)value); rdr.BaseStream.Seek(0, System.IO.SeekOrigin.Begin); final = rdr.ReadString(encoding); } catch (DecoderFallbackException) { throw new PeachException("Error, " + debugName + " value contains invalid " + stringType + " bytes."); } } else { try { encoding.GetBytes((string)value); } catch { throw new PeachException("Error, " + debugName + " value contains invalid " + stringType + " characters."); } final = (string)value; } if (_hasLength) { var lenType = lengthType; var len = length; if (lenType == LengthType.Chars) { if (NeedsExpand(final.Length, len, nullTerminated, final)) { if (nullTerminated) { len -= 1; } final += MakePad((int)len - final.Length); } } else { if (lenType == LengthType.Bits) { if ((len % 8) != 0) { throw new PeachException("Error, " + debugName + " has invalid length of " + len + " bits."); } len = len / 8; lenType = LengthType.Bytes; } System.Diagnostics.Debug.Assert(lenType == LengthType.Bytes); int actual = encoding.GetByteCount(final); if (NeedsExpand(actual, len, nullTerminated, final)) { int nullLen = encoding.GetByteCount("\0"); int padLen = encoding.GetByteCount(new char[1] { padCharacter }); int grow = (int)len - actual; if (nullTerminated) { grow -= nullLen; } if (grow < 0 || (grow % padLen) != 0) { throw new PeachException(string.Format("Error, can not satisfy length requirement of {1} {2} when padding {3} {0}.", debugName, lengthType == LengthType.Bits ? len * 8 : len, lengthType.ToString().ToLower(), stringType)); } final += MakePad(grow / padLen); } } } int test; if (int.TryParse(final, out test)) { if (!Hints.ContainsKey("NumericalString")) { Hints.Add("NumericalString", new Hint("NumericalString", "true")); } } else { if (Hints.ContainsKey("NumericalString")) { Hints.Remove("NumericalString"); } } return(final); }