При отсутствии описания на кнопке лексической ошибки выдается {$a} вместо текста лексемы в кавычках

Issue #459 resolved
Oleg Sychev repo owner created an issue

При отсутствии описания на кнопке лексической ошибки выдается {$a} вместо текста лексемы в кавычках

Причина этого связана со строкой 458 в cw_hints $this->token = $this->mistake->token_descriptions_as_mistake();

token_descriptions_as_mistake в свою очередь вызывает qtype_correctwriting_response_mistake::token_descriptions которая пропускает токены без описаний т.к. предназначена для других целей (например для what is подсказки).

Нам нужно содержание токенов из строки студента (reponse), поэтому просто вызвать qtype_correctwriting_response_mistake::token_description не годится т.к. он без описания дефолтит к значению из правильной строки (хорошо ли это? надо проверять).

Подклассы sequence_mistake обходят это используя response_description() но для lexical_mistake такой функции нет, возможно надо "повысить" response_description() до response_mistake (если ее код универсализируем). Или написать аналог для lexical_mistake.

Comments (3)

  1. Oleg Sychev reporter

    Сейчас попробую написать сюда правила для сообщений и надписей на кнопках.

  2. Oleg Sychev reporter

    Принимаем за правильное генерацию сообщений об ошибке. Этим ведает tokens_pair::mesage()

    Предлагаю слегка отрефакторить tokens_pair::mesage() так, чтобы помимо самого сообщения она сохраняла в добавочное поле его часть, связанную с перечнем участвующих токенов. Тогда все подсказки и прочее смогут пользоваться этой частью.

  3. Log in to comment