public static IEnumerable <TextData> Test_ReadQuestionFiles(string directory, int limit = 0) { directory = zPath.Combine(XmlConfig.CurrentConfig.GetExplicit("CardDirectory"), directory); //TextDataReader textDataReader = new TextDataReader(QuestionsManager.GetScanFiles(directory, limit)); TextDataReader textDataReader = new TextDataReader(); textDataReader.SetRegexList(CreateQuestionRegexValuesList()); //return textDataReader.Read(QuestionsManager.GetScanFiles(zPath.Combine(directory, @"data\scan"), limit)); int pageNumber = 1; foreach (TextData textData in textDataReader.Read(QuestionsManager.GetScanFiles(zPath.Combine(directory, @"data\scan"), limit))) { yield return(textData); if (textData.Values.ContainsKey("pageNumber")) { pageNumber++; } if (textData.Values.ContainsKey("responses") && pageNumber > 1) { textDataReader.SetRegexList(CreateResponseRegexValuesList()); textDataReader.ContiguousSearch = true; } } }
public static IEnumerable <QuestionData> Test_ReadQuestionFilesAsQuestionData_v2(string directory, int limit = 0) { directory = zPath.Combine(XmlConfig.CurrentConfig.GetExplicit("CardDirectory"), directory); //TextDataReader textDataReader = new TextDataReader(QuestionsManager.GetScanFiles(directory, limit)); TextDataReader textDataReader = new TextDataReader(); textDataReader.SetRegexList(CreateQuestionRegexValuesList()); foreach (QuestionData value in textDataReader.Read(QuestionsManager.GetScanFiles(zPath.Combine(directory, @"data\scan"), limit)).Select(textData => QuestionData.CreateQuestionData(textData))) { if (value.Type == QuestionDataType.Responses) { //Trace.WriteLine("read responses"); textDataReader.SetRegexList(CreateResponseRegexValuesList()); textDataReader.ContiguousSearch = true; } yield return(value); } }
public static IEnumerable <TextData> Test_Anki_01(string directory, int limit = 0) { TextDataReader textDataReader = new TextDataReader(CreateAnkiRegexValuesList(), GetScanFiles(directory, limit)); return(textDataReader.Read()); }
public IEnumerable <QuestionResponse_v2> Read(IEnumerable <string> files, string baseDirectory = null) { _lastValueType = null; _dontSetLastValueType = false; _emptyLineCount = 0; _questionYear = null; _questionType = QuestionType.None; _question = null; _questionTmp = null; _associationQuestion = null; _sendCurrentQuestion = false; _responseYears = null; _responseQuestions = null; _responseCategory = null; _responseQuestionBlock = false; _responseQuestion = null; _responseEnd = false; _baseDirectory = baseDirectory; TextDataReader textDataReader = new TextDataReader(); textDataReader.SetRegexList(_questionRegexValuesList); bool readResponse = false; //int emptyLineCount = 0; int pageNumber = 1; foreach (QuestionData value in textDataReader.Read(files).Select(textData => QuestionData.CreateQuestionData(textData))) { if (value.Type != QuestionDataType.EmptyLine) { _emptyLineCount = 0; } else { _emptyLineCount++; } _sendCurrentQuestion = false; _dontSetLastValueType = false; switch (value.Type) { case QuestionDataType.Responses: if (pageNumber >= _minPageForResponses) { if (_trace) { Trace.WriteLine($"start read response (line {value.LineNumber} \"{value.Filename}\")"); } textDataReader.SetRegexList(_responseRegexValuesList); textDataReader.ContiguousSearch = true; _sendCurrentQuestion = true; readResponse = true; _responseYears = new List <ResponseReader.ResponseYear>(); _responseQuestions = new List <ResponseReader.ResponseQuestion>(); _responseQuestionBlock = false; } break; case QuestionDataType.PageNumber: pageNumber++; _sendCurrentQuestion = true; break; default: //throw new PBFileException($"unknow value type {value.Type} line {value.LineNumber} file \"{value.Filename}\"", value.File, value.LineNumber); if (!readResponse) { ReadQuestion(value); } else { QuestionResponse_v2 response = ReadResponse(value); if (response != null) { yield return(response); } } break; } if (_sendCurrentQuestion) { if (_question != null) { yield return(GetQuestion()); } _question = _questionTmp; _questionTmp = null; } //if (readResponse) // break; if (!_dontSetLastValueType) { _lastValueType = value.Type; } if (_responseEnd) { break; } } if (_question != null) { yield return(GetQuestion()); } ControlRemindResponseQuestions(); }