MATLAB/Wikiquiz writer (MATLAB)/quizToStringArray.m

From Wikiversity
Jump to navigation Jump to search
function quizarray= wikiquizToStringArray(quizname)
%WIKIQUIZTOSTRINGARRAY converts a quiz to a string array.  The latest
%upgrade removes 
%
% clear;clc; 
%
fid = fopen(quizname, 'r');
tline=fgetl(fid);
raw = {tline};
rawlinecount=0;
while ischar(tline)%count lines in raw wikitest
    tline=fgetl(fid);
rawlinecount=rawlinecount+1;
end
fclose(fid);
fid = fopen(quizname);%reopen raw cell array
raw=cell(rawlinecount,1); 
% Fill cell array raw and replace nolines by whitespaces
% Also count the questions
questioncount=0;
rawlineindex=0;
while rawlineindex<rawlinecount 
    rawlineindex=rawlineindex+1;
    tline=fgetl(fid);
    if numel(tline)==0  %add whitespace
        tline=' ';
    end
    raw{rawlineindex}=tline; 
    if tline(1)=='{'
        questioncount=questioncount+1;
    end
end
fclose(fid);
%
%
quizarray=cell(questioncount,7); %creates empty cell array
questionindex=0;
for rawlineindex=1:rawlinecount
    tline=raw(rawlineindex);        %readsline
    cleanline=char(tline);          %convert to string array
    switch cleanline(1)
        case '{'
            questionindex=questionindex+1;
            answerindex=0;
            question = cleanline;
            quizarray{questionindex,1} = cleanline; 
        case '+'
            answerindex=answerindex+1;
            quizarray{questionindex,2} = answerindex;
            quizarray{questionindex,2+answerindex} = cleanline;               
        case '-'
            answerindex=answerindex+1;
            quizarray{questionindex,2} = answerindex;
            quizarray{questionindex,2+answerindex} = cleanline; 
        case ' ' %do nothing
        case '<' %do nothing  
        case '=' %do nothing
        otherwise
             question=[question ' ' cleanline];
             quizarray{questionindex,1} = question;
    end              
end


% %