
Този параграф как трябва да се интерпретира "ааа _ббб_ ввв _ггг_ ддд", като "ааа ббб ввв ггг ддд" или като "ааа ббб_ ввв _ггг ддд"
Имате да питате нещо по пета задача — тук е мястото.
Този параграф как трябва да се интерпретира "ааа _ббб_ ввв _ггг_ ддд", като "ааа ббб ввв ггг ддд" или като "ааа ббб_ ввв _ггг ддд"
Тъй като в условието пише "език подобен на Markdown", някой може ли да потвърди, дали това (линка от предишният пост) работи по същият начин. До колкото разчитам условието и тествах някои неща, мисля че има разлика в дефинициите за блокове.
По-скоро се придържай към условието на задачата. Не, че е по-вярното, ама такива ще бъдат тестовете =-)
А относно тестовете, интересно ми е как ще се тества еквивалентност на HTML изхода?
В примера най-отдолу на задачата е дадено, че
> > for generatingсе преобразува до един цитат. Според условието не трябва ли това да са три последователни цитата, защото са отделени с празни редове?
Съдържанието на цитата се интерпретира като нормален markup, (разбира се след > като се премахнат водещите > ...)
Кое е празното на един ред, съдържащ ">"?
Да прав си, обърках се нещо из тези тагове.
Този параграф как трябва да се интерпретира "ааа _ббб_ ввв _ггг_ ддд", като "ааа ббб ввв ггг ддд" или като "ааа ббб_ ввв _ггг ддд"
>>> markup(r'ааа _ббб_ ввв _ггг_ ддд')
'<p>ааа <strong>ббб</strong> ввв <strong>ггг</strong> ддд</p>'
Борко пита:
>>> markup(r'_а_това_наблягане_ли_е_')
'<p>_а_това_наблягане_ли_е_</p>'
>>> markup(r'_а тованаблягане ли е_')
'<p><strong>а тованаблягане ли е</strong></p>'
>>> markup(r'`Това не е код, на`ли')
'<p>`Това не е код, на`ли</p>'
Ууу, злобно. Ще има зор.
Голям голям :)
>>> markup(r'_това_не_е_наблегнато_')
'<p>_това_не_е_наблегнато_</p>'
>>> markup(r'_това\_е\_наблегнато_')
'<p><strong>това_е_наблегнато</strong></p>'
Напомням че това е една част от задачата и съответно носи част (неголяма) от точките. Не се силете по нея.
Ще обновя условието с тези примери.
`aaaa`_`aaa`
`aaaa*_*aaa`
`aaaa`b`aaa`
`aaaa*b*aaa`
`aaaa`$`aaa`
`aaaa*$*aaa`
`aaaa *bbb ccc` ddd*
**
`Това код л`и е?`
*Тука кво ще <стане>?*
Тия неща какво дават?
# понеже _ се смята за символ от дума -- re.match(r'\w', '_')
>>> markup(r'`aaaa`_`aaa`')
'<p>`aaaa`_`aaa`</p>'
>>> markup(r'`aaaa*_*aaa`')
'<p><code>aaaa*_*aaa</code></p>'
>>> markup(r'`aaaa`b`aaa`')
'<p>`aaaa`b`aaa`</p>'
>>> markup(r'`aaaa*b*aaa`')
'<p><code>aaaa*b*aaa</code></p>'
>>> markup(r'`aaaa`$`aaa`')
'<p><code>aaaa</code>$<code>aaa</code></p>'
>>> markup(r'`aaaa *bbb ccc` ddd*')
'<p><code>aaaa *bbb ccc</code> ddd*</p>'
>>> markup(r'**')
'<p><em></em></p>'
>>> markup(r'`Това код л`и е?`') # това го оставяме недефинирано и няма да тестваме такъв случай
'<p>`Това код л`и е?`</p>'
>>> markup(r'`Това код л` и е?`')
'<p><code>Това код л</code> и е?`</p>'
>>> markup(r'*Тука кво ще <стане>?*')
'<p><em>Тука кво ще <стане>?</em></p>'
Отново ще обновя условието.
При блоковете код, "консистентността" на отместването се отнася до всички блокове код, или само в рамките на блока? За цитатите до колкото го разбирам е само в рамките на блока?
Само в рамките на блока
Ще трябва ли да обработваме този случай и как?
> asd
qwe
Според този интерпретатор резултата е
<blockquote>
<p>asd
qwe</p>
</blockquote>
Освен това и този код (пред qwe има табулация, а не спейсове)...
> asd
> qwe
...се свежда до...
<blockquote>
<p>asd
qwe</p>
</blockquote>
... което разбива митовете за еднаквите whitespace-ове след >
Update: Цитати се обозаначават със > последван от
whitespace...
whitespace-ите включват и \n
, това значи ли че
може да имаме валиден цитат:
>
qwe
Синтаксисът в задачата е взаимстван от Markdown, но не е същият. Съответно никакви митове не се разбиват. Tова е Markup, а не Markdown :)
Ще трябва ли да обработваме този случай и как?
> asd qwe
Не. Приеми го за невалиден вход с който няма да тестваме. При цитатите в Markdown `>` може да се остави само на първия ред, но не и според условието на тази задача.
Update:
Цитати се обозаначават със > последван от whitespace...
whitespace-ите > включват и\n
, това значи ли че може да имаме валиден цитат:> qwe
По-точно:
Цитати се обозаначават със > последван от whitespace, като на всеки ред от цитата това трябва да е една и съща последователност.
Тук първият ред е:
>
Който е празен. Следващият ред не може да бъде част от цитата понеже не започва със >, но и не е отделен с поне един празен ред от цитата, така че това отново е невалиден вход.
Между блоковете има поне един празен ред. Може да определите вида на блока по началото на първият му ред. Това определя дали е цитат и съответно отместването.
Забележете че това е валиден блок код (вместо интервал използвам .):
..def foo(bar):
......return bar
..x = foo(0)
Където отместването е точно два интервала, а вътре кода си има собствено отместване.
Но това не е валиден блок код:
....x = foo(1)
..def baz(zap):
....return zap / 0
Понеже на първия ред отместването е 4 интервала, а на втория само 2.
Ще обновя условието с тези забележки.
Хоп, вече има и примерно тестче.
И валиден блок започва винаги с четен брой whitespace-ове, нали? Ще има ли тест с нечетен брой и какво трябва да се прави в този случай (параграф предполагам)?
Много зависи от фазата на луната и продължителността на деня.
Какво става в този случай:
'\\*дума*'Ако имаш предвид markup('\\*дума*')
то тогава входа е:
\*дума*
В случая първата звездичка е escape-ната и не е начало на наблягане, затова изходът е:
*дума*
Понеже няма затваряща звездичка.
Не си зададох правилно въпроса, имах предвид
markup(r'\\*дума*')'<p>\<em>дума</em></p>'