Инструменты автора: Синтаксическое дерево

Issue #146 closed
Oleg Sychev repo owner created an issue

Originally reported on Google Code with ID 146

Создано для обсуждения проблем в реализации соответствующего инструмента авторинга.

1) По ревизии f5d3f252f642
Функция get_spec_symbol работает с юникод-символами используя стандартные строковые
функции PHP. Это может приводить к сбоям и ошибкам (напишите на нее юнит-тесты, в т.ч.
с юникод-символами). Следует использовать qtype_poasquestion_string и функции этого
класса для безопасной работы с юникод-строками.

2) В этой же функции вместо тупого копирования кода условий можно использовать массив
и цикл. Например ключ - это символ, который надо заменить - а значение - символы, на
которые надо заменить...
И вообще в функции отсутствует комментарий к заголовку.
Да и название не очень понятно - это спец. символ для языка HTML или DOT? Они похожи,
но немного различаются...

3) Все надписи для тултипов и прочего должны идти через get_string, об этом говорилось
неоднократно. Будет прогресс по этой части?

Reported by oasychev on 2012-08-14 12:51:24

Comments (11)

  1. Former user Account Deleted

    ``` После обсуждения с Дмитрием Пахомовым способов решения задачи было принято убрать кучу кода условий, обрабатывающую печатаемые символы юникода. Остались только служебные и непечатаемые сиимволы. Так же в lang файл были добавлены описания для ещё нескольких непечетаемых символов.

    Был добавлен комментарий к заголовку. Вроде бы старался понятно описать суть функции...

    Все надписи для тултипов были перенесены в лэнг файл и теперь работают через get_string.

    Во время решения задачи появился вопрос. Дерево должно как-то отображать непечатаемые символы, но это отображение не должно являться длинным. Например с моей точки зрения замена пробела на слово "space" является корректной, но замена символа с кодом 21 на "negative acknowledgement character (NAK)" является слишком длинной. Замену непечатаемых символов на длинные эквивалентные строки оставить как есть или заменить на более короткие аббревиатуры?

    Так же что следует делать, если, например, в символьном классе идёт подряд несколько непечатаемых символов? Например читать выделенную синим строку "acknowledgment character(ACK)device control 3 (oft. XOFF) character (DC3)end of transmission block character (ETB)", которая является отображением трёх символов соответственно с кодами 6,19 и 23 будет не удобно, да и не совсем понятно, какие именно слова за какой символ отвечают. ```

    Reported by `grvlter` on 2012-08-19 18:22:23

  2. Oleg Sychev reporter

    ``` При ответе на нумерованные части ставьте, пожалуйста, те же номера около строк ответа - так будет понятнее.

    3) tooltip пишется именно так, без всяких е. По надписям - посмотрите, возможно какие-то строки уже есть в lang-файле - тогда используйте их. Строкам лучше делать префикс в виде названия плагина - в данном случае инструмента авторинга - мало ли кому и где еще в этом вопросе понадобятся тултипы например... Да, и изменение кода на get_string и изменение языкового файла логично коммитить вместе, одним коммитом - это взаимосвязанные изменения, по одному они нарушают работу программы. По сути это две части одного изменения в программе.

    По вашему вопросу - обозначим его 4) - подумаю. ```

    Reported by `oasychev` on 2012-08-19 18:45:34

  3. Oleg Sychev reporter

    ``` 4) При длинных названиях символов можно дать в основной надписи начало и многоточие, а в тултипе - полную надпись. Так это не будет мешать дереву.

    Причем лучше написать код сокращения надписи до заданной длины (или использовать готовый, в Moodle была функция - по-моему shorten_text), а не забивать сокращения в языковой файл, т.к. длина строки может меняться в зависимости от языка. ```

    Reported by `oasychev` on 2012-08-23 10:48:55

  4. Former user Account Deleted

    ``` 4) Не понял, зачем добавлять в тултип полную надпись? В синтаксическом дереве тултип служить в роли всплывающей подсказки, т.е. для символьного класса он должен содержать "character class". Полная надпись может содержаться в языковом описании.

    Как будет готово, постараюсь загрузить файлы, показывающие результат... ```

    Reported by `grvlter` on 2012-08-24 12:06:35

  5. Oleg Sychev reporter

    ``` 4) Если полная надпись слишком велика ее обычно показывают тултипом, чтобы человек мог посмотреть если хочет. Можно написать в нем "character class: <надпись>" ```

    Reported by `oasychev` on 2012-08-24 19:14:37

  6. Former user Account Deleted

    ``` 4) Но если полная надпись в символьном классе будет слишком большой, то всплывающая подсказка на пол экрана будет смотреться не очень хорошо... И при нажатии на символьный класс в словесном описании будет выделен соответствующий фрагмент. Хотя словесное описание символьного класса может не точно совпадать с регулярным выражением...

    Тем не менее постараюсь в ближайшее время выложить результат и подумать над другими вариантами решения. ```

    Reported by `grvlter` on 2012-08-24 20:01:19

  7. Oleg Sychev reporter

    ``` 4) всплывающая подсказка на пол экрана никому не мешает, ничего не отодвигает поэтому обычно смотрится нормально. Но надо глянуть на работу shorten_text - она или тултип, или ссылку выдает при нажатии на которую появляется недостающая часть. Можно сделать аналогично... ```

    Reported by `oasychev` on 2012-08-24 20:10:45

  8. Former user Account Deleted

    ``` 4) При решении поставленной задачи было найдены следующие пути оформления символьного класса:

    a) В символьном классе непечатаемые символы отделять запятыми. Плюсы: - удобочитаемость. Минусы: - при наличии в символьном классе символа ',' у пользователя может возникнуть вопрос, откуда взялись лишние запятые.

    b) В символьном классе чередовать цвет описания непечатаемых символов. Плюсы: - нет лишниx появляющихся из ниоткуда символов(кроме пробела, но это белый разделитель и не должен вызвать вопросов т.к. сам пробел заменяется на "space"). Минусы: - дополнительный цвет (может возникнуть вопрос:"А почему одни слова синие, а другие зелёные? Может они несут разный смысл?").

    с) Так же возникла проблема с тултипом. Т.к. там цвета использовать нельзя, то появление лишних символов, таких как ',' или ' ' может вызвать больше вопросов. На данный момент есть идея переноса отдельных частей содержимого символьного класса на новую строку. Вроде бы выглядит нормально... ```

    Reported by `grvlter` on 2012-09-03 19:08:21

    <hr>

  9. Oleg Sychev reporter
    Эта дискуссия еще актуальна или issue можно закрывать?
    

    Reported by oasychev on 2013-08-30 20:11:06

  10. Former user Account Deleted
    Прошу закрыть issue.
    

    Reported by grvlter on 2013-08-31 15:01:39 - Labels removed: f

  11. Oleg Sychev reporter
    По дальнейшей работе над деревом будут создаваться отдельные задачи...
    

    Reported by oasychev on 2013-08-31 16:17:18 - Status changed: Done

  12. Log in to comment