93 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
"""
 | 
						|
Question utils functions
 | 
						|
"""
 | 
						|
 | 
						|
import pathlib
 | 
						|
from random import choice
 | 
						|
from typing import List
 | 
						|
 | 
						|
p = pathlib.Path(__file__).parent.parent.joinpath('README.md')
 | 
						|
 | 
						|
 | 
						|
def get_file_list():
 | 
						|
    with open(p, 'rb') as f:
 | 
						|
        file_list = [line.rstrip() for line in f.readlines()]
 | 
						|
    return file_list
 | 
						|
 | 
						|
 | 
						|
def get_question_list(file_list: List[bytes]) -> list:
 | 
						|
 | 
						|
    questions_list = []
 | 
						|
    temp = []
 | 
						|
    after_summary_tag = False
 | 
						|
 | 
						|
    for line in file_list:
 | 
						|
        if line.startswith(b'<details>'):
 | 
						|
            temp.append(line)
 | 
						|
            after_summary_tag = True
 | 
						|
 | 
						|
        elif after_summary_tag and line != b'' and b'</details>' not in line:
 | 
						|
            temp.append(line)
 | 
						|
 | 
						|
        elif after_summary_tag and b'</details>' in line:
 | 
						|
            temp.append(line)
 | 
						|
            after_summary_tag = False
 | 
						|
 | 
						|
            questions_list.append(temp)
 | 
						|
            temp = []
 | 
						|
 | 
						|
    return questions_list
 | 
						|
 | 
						|
 | 
						|
def get_answered_questions(question_list: List[List[bytes]]) -> list:
 | 
						|
    """Dont let the type hint confuse you, problem of not using classes.
 | 
						|
     It needs the result of get_question_list(file_list)
 | 
						|
 | 
						|
     Returns a list of questions that are answered.
 | 
						|
     """
 | 
						|
 | 
						|
    t = []
 | 
						|
 | 
						|
    for q in question_list:
 | 
						|
 | 
						|
        index = 0
 | 
						|
 | 
						|
        for i in q:
 | 
						|
            if b'</summary>' in i:
 | 
						|
                index = q.index(i)
 | 
						|
 | 
						|
        if q[index+1: len(q) - 1]:
 | 
						|
            t.append(q)
 | 
						|
 | 
						|
    return t
 | 
						|
 | 
						|
 | 
						|
def get_challenges_count() -> int:
 | 
						|
    challenges_path = pathlib.Path(__file__).parent.parent.joinpath('challenges').glob('*.md')
 | 
						|
    return len(list(challenges_path))
 | 
						|
 | 
						|
 | 
						|
# WIP WAITING FEEDBACK
 | 
						|
def get_random_question(question_list: List[List[bytes]], with_answer=False):
 | 
						|
    if with_answer:
 | 
						|
        return choice(get_answered_questions(question_list))
 | 
						|
    return choice(question_list)
 | 
						|
 | 
						|
 | 
						|
"""Use this question_list. Unless you have already opened/worked/need the file, then don't or
 | 
						|
you will end up doing the same thing twice.
 | 
						|
 | 
						|
eg:
 | 
						|
 | 
						|
#my_dir/main.py
 | 
						|
 | 
						|
from scripts import question_utils
 | 
						|
 | 
						|
print(question_utils.get_answered_questions(question_utils.question_list)
 | 
						|
 | 
						|
>> 123
 | 
						|
 | 
						|
"""
 | 
						|
 | 
						|
question_list = get_question_list(get_file_list())
 |