public void Migrate(string code) { string jsonFilePath = Path.Combine(Configuration.DictionariesDirectoryPath, $"{code}"); var jsonDictionary = ReadJsonObject <JsonDictionary>(jsonFilePath + ".json"); var jsonDictionaryMeta = ReadJsonObject <DictionaryMeta>(jsonFilePath + "-meta.json"); WriteDictionary(code, jsonDictionary.Name, jsonDictionaryMeta.Copyright); int index = 0; foreach (var entry in jsonDictionary.Entries) { index++; string root = ArabicHelper.Substitute(entry.Name); string rootLetterNames = ArabicHelper.ArabicToLetterNames(root); string html = entry.Text; html = HeaderRegex.Replace(entry.Text, ""); html = EmptyElementRegex.Replace(html, m => m.Groups[1].Value + m.Groups[2].Value); html = html.Replace("\r\n", " ").Replace("\r", " ").Replace("\n", " "); if (jsonDictionaryMeta.RemoveNewLines) { html = NewLineRegex.Replace(html, " "); } else { html = NewLineRegex.Replace(html, "\r"); } //TODO: Not until we know we are not already inside a html element //html = ArabicRegex.Replace(html, m => $"<span class=\"arabic\">{m.Value}</span>"); string[] htmlLines = html.Split('\r'); var dictionaryEntry = new DictionaryEntry( dictionaryCode: code, word: root, entryIndex: index, html: htmlLines); DictionaryEntryWriteRepository.Write(dictionaryEntry); if (index % 100 == 0) { Logger.Debug($"{code} {rootLetterNames}"); } } }
static void SanitizeQueryString(ref string queryString) { if (string.IsNullOrEmpty(queryString)) { return; } queryString = ArabicHelper.Substitute(queryString); string[] specialCharacters = new string[] { "&", "|", "!", "(", ")", "{", "}", "[", "]", "^", "\"", "~", "?", ":", "\\" }; foreach (string s in specialCharacters) { queryString = queryString.Replace(s, @"\" + s); } queryString = "+(" + queryString + ")"; }
public ActionResult Index(string dictionaryCode, string word) { Dictionary dictionary = DictionaryRepository.Get(dictionaryCode); if (dictionary == null) { return(HttpNotFound()); } string indexValue = ArabicHelper.Substitute(word); IEnumerable <DictionaryEntry> entries = DictionaryEntryRepository.Get( dictionaryCode: dictionaryCode, word: indexValue); if (!entries.Any()) { return(HttpNotFound()); } var viewModel = new ViewModel(word, dictionary, entries); return(View("DictionaryEntry", viewModel)); }