[apps/*expression_model*] unknownSymbol is replaced in ExpressionModel

This commit is contained in:
Ruben Dashyan
2019-07-09 11:30:43 +02:00
committed by Léa Saviot
parent 7859308053
commit b1b309c0c4
6 changed files with 6 additions and 19 deletions

View File

@@ -104,8 +104,6 @@ void ListController::editExpression(int sequenceDefinition, Ion::Events::Event e
break;
}
initialText = initialTextContent;
// Replace UCodePointUnknownN with 'n'
replaceUnknownSymbolWithReadableSymbol(initialText);
}
InputViewController * inputController = Shared::FunctionApp::app()->inputViewController();
// Invalidate the sequences context cache

View File

@@ -20,11 +20,14 @@ ExpressionModel::ExpressionModel() :
{
}
void ExpressionModel::text(const Storage::Record * record, char * buffer, size_t bufferSize) const {
void ExpressionModel::text(const Storage::Record * record, char * buffer, size_t bufferSize, CodePoint symbol, CodePoint unknownSymbol) const {
Expression e = expressionClone(record);
if (e.isUninitialized() && bufferSize > 0) {
buffer[0] = 0;
} else {
if (symbol != 0 && !e.isUninitialized()) {
e = e.replaceUnknown(Symbol::Builder(unknownSymbol), Symbol::Builder(symbol));
}
e.serialize(buffer, bufferSize);
}
}

View File

@@ -12,7 +12,7 @@ public:
ExpressionModel();
// Getters
void text(const Ion::Storage::Record * record, char * buffer, size_t bufferSize) const;
void text(const Ion::Storage::Record * record, char * buffer, size_t bufferSize, CodePoint symbol = 0, CodePoint unknownSymbol = 0) const;
Poincare::Expression expressionReduced(const Ion::Storage::Record * record, Poincare::Context * context) const;
Poincare::Expression expressionClone(const Ion::Storage::Record * record) const;
Poincare::Layout layout(const Ion::Storage::Record * record) const;

View File

@@ -14,7 +14,7 @@ public:
virtual CodePoint unknownSymbol() const { return 0; }
// Property
void text(char * buffer, size_t bufferSize) const { return model()->text(this, buffer, bufferSize); }
void text(char * buffer, size_t bufferSize) const { return model()->text(this, buffer, bufferSize, symbol(), unknownSymbol()); }
Poincare::Expression expressionReduced(Poincare::Context * context) const { return model()->expressionReduced(this, context); }
Poincare::Expression expressionClone() const { return model()->expressionClone(this); }
Poincare::Layout layout() { return model()->layout(this); }

View File

@@ -219,17 +219,6 @@ void ExpressionModelListController::reinitSelectedExpression(ExpiringPointer<Exp
selectableTableView()->reloadData();
}
void ExpressionModelListController::replaceUnknownSymbolWithReadableSymbol(char * text) {
size_t textLength = strlen(text);
char unknownSymb = modelStore()->unknownSymbol();
char symb = modelStore()->symbol();
for (size_t i = 0; i < textLength; i++) {
if (unknownSymb != 0 && text[i] == unknownSymb) {
text[i] = symb;
}
}
}
void ExpressionModelListController::editExpression(Ion::Events::Event event) {
char * initialText = nullptr;
constexpr int initialTextContentMaxSize = Constant::MaxSerializedExpressionSize;
@@ -239,8 +228,6 @@ void ExpressionModelListController::editExpression(Ion::Events::Event event) {
ExpiringPointer<ExpressionModelHandle> model = modelStore()->modelForRecord(record);
model->text(initialTextContent, initialTextContentMaxSize);
initialText = initialTextContent;
// Replace UCodePointUnknownX with 'x'
replaceUnknownSymbolWithReadableSymbol(initialTextContent);
}
inputController()->edit(this, event, this, initialText,
[](void * context, void * sender){

View File

@@ -27,7 +27,6 @@ protected:
virtual void didChangeModelsList() { resetMemoization(); }
virtual void reinitSelectedExpression(ExpiringPointer<ExpressionModelHandle> model);
virtual void editExpression(Ion::Events::Event event);
void replaceUnknownSymbolWithReadableSymbol(char * initialText);
virtual bool editSelectedRecordWithText(const char * text);
virtual bool removeModelRow(Ion::Storage::Record record);
virtual int modelIndexForRow(int j) { return j; }