Esempio n. 1
0
        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;
                }
            }
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
        public static IEnumerable <TextData> Test_Anki_01(string directory, int limit = 0)
        {
            TextDataReader textDataReader = new TextDataReader(CreateAnkiRegexValuesList(), GetScanFiles(directory, limit));

            return(textDataReader.Read());
        }
Esempio n. 4
0
        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();
        }