Open-Typer
Open source typewriting tutor program
Loading...
Searching...
No Matches
ConfigParser Class Reference

The ConfigParser class provides functions for the pack file format. More...

#include "framework/lessonpack/internal/ConfigParser.h"

Inheritance diagram for ConfigParser:
Collaboration diagram for ConfigParser:

Public Member Functions

 ConfigParser (QObject *parent=nullptr)
 
std::shared_ptr< IConfigParsercreateInstance () const override
 
Q_INVOKABLE bool open (const QString fileName) override
 
Q_INVOKABLE void loadToBuffer (const QByteArray content) override
 
Q_INVOKABLE QByteArray data (void) override
 
Q_INVOKABLE bool bufferOpened (void) override
 
Q_INVOKABLE void close (void) override
 
QString fileName (void) override
 
Q_INVOKABLE int lessonCount (void) override
 
Q_INVOKABLE int sublessonCount (int lesson) override
 
Q_INVOKABLE int exerciseCount (int lesson, int sublesson) override
 
Q_INVOKABLE int exerciseLine (int lesson, int sublesson, int exercise) override
 
Q_INVOKABLE bool exerciseRepeatBool (int lesson, int sublesson, int exercise) override
 
Q_INVOKABLE QString exerciseRepeatType (int lesson, int sublesson, int exercise) override
 
Q_INVOKABLE int exerciseRepeatLimit (int lesson, int sublesson, int exercise) override
 
Q_INVOKABLE int exerciseLineLength (int lesson, int sublesson, int exercise) override
 
Q_INVOKABLE QString lessonDesc (int lesson) override
 
Q_INVOKABLE QString parseDesc (QString desc) override
 
Q_INVOKABLE QString sublessonName (int id) override
 
Q_INVOKABLE QString lessonTr (int id) override
 
Q_INVOKABLE QString sublessonTr (int id) override
 
Q_INVOKABLE QString exerciseTr (int id) override
 
Q_INVOKABLE QString exerciseRawText (int lesson, int sublesson, int exercise) override
 
Q_INVOKABLE QString exerciseText (int lesson, int sublesson, int exercise) override
 
Q_INVOKABLE QString initExercise (QString exercise, int lineLength) override
 
Q_INVOKABLE QString initExercise (QString exercise, int lineLength, bool lineCountLimit, int currentLine) override
 
Q_INVOKABLE QString initText (QString rawText) override
 
Q_INVOKABLE bool addExercise (int lesson, int sublesson, int exercise, bool repeat, QString repeatType, int repeatLimit, int lineLength, QString desc, QString rawText) override
 
Q_INVOKABLE int defaultRepeatLimit (void) override
 
Q_INVOKABLE int defaultLineLength (void) override
 
Q_INVOKABLE void setCurrentLesson (int value) override
 
Q_INVOKABLE int currentLesson (void) override
 
Q_INVOKABLE void setCurrentSublesson (int value) override
 
Q_INVOKABLE int currentSublesson (void) override
 
Q_INVOKABLE void setCurrentExercise (int value) override
 
Q_INVOKABLE int currentExercise (void) override
 

Static Public Member Functions

static std::shared_ptr< ConfigParserinstance ()
 

Private Member Functions

bool reopen (QIODevice::OpenMode mode)
 
int exerciseID (const QString line, const int part)
 
QString lineOf (int lesson, int sublesson, int exercise)
 
bool exerciseRepeatBool (const QString config)
 
QString exerciseRepeatType (const QString config)
 
QString exerciseRepeatConfig (const QString line)
 
QString exerciseAttribute (const QString config, const int id)
 
QString exerciseAttributes (const QString line)
 
QString exerciseRawText (const QString line)
 

Static Private Member Functions

static QString generateText (QString rawText, bool repeat, QString repeatType, int repeatLimit)
 

Private Attributes

QFile configFile
 
QBuffer configBuffer
 
QIODevice * currentDevice
 

Static Private Attributes

static std::shared_ptr< ConfigParserm_instance = std::make_shared<ConfigParser>()
 
static const int m_defaultRepeatLimit = 128
 
static const int m_defaultLineLength = 100
 

Detailed Description

The ConfigParser class provides functions for the pack file format.

Example usage:

class MyClass {
INJECT(IConfigParser, configParser)
...
configParser()->open("/path/to/pack.typer") override;
printf("There are %d lessons in the opened pack.\n", configParser()->lessonCount()) override;
Definition IConfigParser.h:27

Constructor & Destructor Documentation

◆ ConfigParser()

ConfigParser::ConfigParser ( QObject *  parent = nullptr)
explicit

Constructs ConfigParser.

Member Function Documentation

◆ addExercise()

bool ConfigParser::addExercise ( int  lesson,
int  sublesson,
int  exercise,
bool  repeat,
QString  repeatType,
int  repeatLimit,
int  lineLength,
QString  desc,
QString  rawText 
)
overridevirtual

Adds an exercise to the opened pack file.

Parameters
[in]lessonLesson ID.
[in]sublessonSublesson ID.
[in]exerciseExercise ID.
[in]repeatWhether to enable repeating.
[in]repeatTypeRepeat type string.
[in]repeatLimitMaximum number of characters (if repeating is enabled).
[in]lineLengthMaximum number of characters in one line.
[in]descLesson description. Should be used only in the first exercise of the lesson.
[in]rawTextExercise raw text.

Implements IConfigParser.

◆ bufferOpened()

bool ConfigParser::bufferOpened ( void  )
overridevirtual

Returns true if there's a buffer opened.

Implements IConfigParser.

◆ close()

void ConfigParser::close ( void  )
overridevirtual

Closes the opened pack file or buffer.

Implements IConfigParser.

◆ createInstance()

std::shared_ptr< IConfigParser > ConfigParser::createInstance ( ) const
overridevirtual

Creates a new instance of ConfigParser. This is useful if you need more than one instance of ConfigParser.

Since
Open-Typer 5.2.0

Implements IConfigParser.

◆ currentExercise()

int ConfigParser::currentExercise ( void  )
overridevirtual

Returns selected exercise.

Implements IConfigParser.

◆ currentLesson()

int ConfigParser::currentLesson ( void  )
overridevirtual

Returns selected lesson.

Implements IConfigParser.

◆ currentSublesson()

int ConfigParser::currentSublesson ( void  )
overridevirtual

Returns selected sublesson.

Implements IConfigParser.

◆ data()

QByteArray ConfigParser::data ( void  )
overridevirtual

Returns current data in the opened file or buffer.

Implements IConfigParser.

◆ defaultLineLength()

int ConfigParser::defaultLineLength ( void  )
overridevirtual

Returns default line length.

Implements IConfigParser.

◆ defaultRepeatLimit()

int ConfigParser::defaultRepeatLimit ( void  )
overridevirtual

Returns default repeat limit (text length).

Implements IConfigParser.

◆ exerciseAttribute()

QString ConfigParser::exerciseAttribute ( const QString  config,
const int  id 
)
private

Gets a specific exercise attribute from a config string.

◆ exerciseAttributes()

QString ConfigParser::exerciseAttributes ( const QString  line)
private

Gets a config string from a line.

◆ exerciseCount()

int ConfigParser::exerciseCount ( int  lesson,
int  sublesson 
)
overridevirtual

Returns the number of exercises in a sublesson.

Implements IConfigParser.

◆ exerciseID()

int ConfigParser::exerciseID ( const QString  line,
const int  part 
)
private

Returns a part of the exercise ID (from a line).

Part 1 - lesson ID
Part 2 - sublesson ID
Part 3 - exercise ID

◆ exerciseLine()

int ConfigParser::exerciseLine ( int  lesson,
int  sublesson,
int  exercise 
)
overridevirtual

Returns the line the exercise is located in the pack file or buffer.

Implements IConfigParser.

◆ exerciseLineLength()

int ConfigParser::exerciseLineLength ( int  lesson,
int  sublesson,
int  exercise 
)
overridevirtual

Returns the exercise's maximum number of characters in one line.

Implements IConfigParser.

◆ exerciseRawText() [1/2]

QString ConfigParser::exerciseRawText ( const QString  line)
private

Implementation of exerciseRawText() for a line.

◆ exerciseRawText() [2/2]

QString ConfigParser::exerciseRawText ( int  lesson,
int  sublesson,
int  exercise 
)
overridevirtual

Returns raw text of the exercise (no repeating or line wrapping).

See also
exerciseText()
initExercise()

Implements IConfigParser.

◆ exerciseRepeatBool() [1/2]

bool ConfigParser::exerciseRepeatBool ( const QString  config)
private

Implementation of exerciseRepeatBool() for a config string.

◆ exerciseRepeatBool() [2/2]

bool ConfigParser::exerciseRepeatBool ( int  lesson,
int  sublesson,
int  exercise 
)
overridevirtual

Returns true if repeating is enabled in the exercise.

Implements IConfigParser.

◆ exerciseRepeatConfig()

QString ConfigParser::exerciseRepeatConfig ( const QString  line)
private

Gets config string from a line.

◆ exerciseRepeatLimit()

int ConfigParser::exerciseRepeatLimit ( int  lesson,
int  sublesson,
int  exercise 
)
overridevirtual

Returns the maximum number of characters of the exercise (if repeating is enabled).

Implements IConfigParser.

◆ exerciseRepeatType() [1/2]

QString ConfigParser::exerciseRepeatType ( const QString  config)
private

Implementation of exerciseRepeatType() for a config string.

◆ exerciseRepeatType() [2/2]

QString ConfigParser::exerciseRepeatType ( int  lesson,
int  sublesson,
int  exercise 
)
overridevirtual

Returns repeat configuration of the exercise.

Implements IConfigParser.

◆ exerciseText()

QString ConfigParser::exerciseText ( int  lesson,
int  sublesson,
int  exercise 
)
overridevirtual

Returns exercise text (with repeating and without line wrapping).

See also
exerciseRawText()
initExercise()

Implements IConfigParser.

◆ exerciseTr()

QString ConfigParser::exerciseTr ( int  id)
overridevirtual

Returns translated "Exercise (id)" string.

Implements IConfigParser.

◆ fileName()

QString ConfigParser::fileName ( void  )
overridevirtual

Returns the file name of the opened pack file.

Implements IConfigParser.

◆ generateText()

QString ConfigParser::generateText ( QString  rawText,
bool  repeat,
QString  repeatType,
int  repeatLimit 
)
staticprivate

Adds repeating to a raw text.

See also
exerciseRawText()

◆ initExercise() [1/2]

QString ConfigParser::initExercise ( QString  exercise,
int  lineLength 
)
overridevirtual

Adds line wrapping to exercise text.

See also
exerciseRawText()
exerciseText()

Implements IConfigParser.

◆ initExercise() [2/2]

QString ConfigParser::initExercise ( QString  exercise,
int  lineLength,
bool  lineCountLimit,
int  currentLine 
)
overridevirtual

Adds line wrapping to exercise text and (optionally) limits number of lines.

Parameters
[in]lineCountLimitWhether to limit number of lines.
[in]currentLineThe line the shortened text starts at. Note that lines start by 0 in this function.

Implements IConfigParser.

◆ initText()

QString ConfigParser::initText ( QString  rawText)
overridevirtual

Generates text without line wrapping nor repeating.

Implements IConfigParser.

◆ instance()

std::shared_ptr< ConfigParser > ConfigParser::instance ( )
static

Returns the static instance of ConfigParser.

◆ lessonCount()

int ConfigParser::lessonCount ( void  )
overridevirtual

Returns the number of lessons in the pack file or buffer.

Implements IConfigParser.

◆ lessonDesc()

QString ConfigParser::lessonDesc ( int  lesson)
overridevirtual

Returns the description of a lesson (what new characters are learned in it).

Implements IConfigParser.

◆ lessonTr()

QString ConfigParser::lessonTr ( int  id)
overridevirtual

Returns translated "Lesson (id)" string.

Implements IConfigParser.

◆ lineOf()

QString ConfigParser::lineOf ( int  lesson,
int  sublesson,
int  exercise 
)
private

Returns line string of the exercise.

◆ loadToBuffer()

void ConfigParser::loadToBuffer ( const QByteArray  content)
overridevirtual

Closes opened file and loads pack content to the buffer.

Implements IConfigParser.

◆ open()

bool ConfigParser::open ( const QString  fileName)
overridevirtual

Opens a pack file.
Returns true if successful.

See also
reopen()

Implements IConfigParser.

◆ parseDesc()

QString ConfigParser::parseDesc ( QString  desc)
overridevirtual

Converts a lesson description into a human-readable description.
For example:
dfjk -> {dfjk}
%r -> Revision
%s -> Shift
sl%be -> {sl}{e}

See also
lessonDesc()

Implements IConfigParser.

◆ reopen()

bool ConfigParser::reopen ( QIODevice::OpenMode  mode)
private

ConfigParser provides read and write support. The pack file or buffer is opened for reading by default, so it must be reopened for writing while performing write operations.
This function reopens the opened file or buffer in a new mode.
Returns true if successful.

Parameters
[in]modeOpen mode, like in the QIODevice::open() function.
See also
open()

◆ setCurrentExercise()

void ConfigParser::setCurrentExercise ( int  value)
overridevirtual

Sets selected exercise (should only be used in QML).

Implements IConfigParser.

◆ setCurrentLesson()

void ConfigParser::setCurrentLesson ( int  value)
overridevirtual

Sets selected lesson (should only be used in QML).

Implements IConfigParser.

◆ setCurrentSublesson()

void ConfigParser::setCurrentSublesson ( int  value)
overridevirtual

Sets selected sublesson (should only be used in QML).

Implements IConfigParser.

◆ sublessonCount()

int ConfigParser::sublessonCount ( int  lesson)
overridevirtual

Returns the number of sublessons in a lesson.
Note: Empty sublessons are allowed and will not be counted by this function. The exerciseCount() function can be used to detect an empty sublesson.

Implements IConfigParser.

◆ sublessonName()

QString ConfigParser::sublessonName ( int  id)
overridevirtual

Returns the name of a sublesson.
For example:
1 -> Touch

Implements IConfigParser.

◆ sublessonTr()

QString ConfigParser::sublessonTr ( int  id)
overridevirtual

Returns translated "Sublesson (id)" string.

Implements IConfigParser.


The documentation for this class was generated from the following files: