Пета задача

  1. За всеобща радост на народа, тестове има и като минат качествен контрол, ще бъдат публикувани (разбирай днес по някое време). Много е вероятно по същото време да станат публично достояние и безсрамно жестоките изисквания, които skeptic ще налага.

    :)

  2. Като каза пълен член, се сетих, как не оставихте на лекцията господин Кънев да си каже аргументите против него. Много щеше да е интересно.

    За да не е офтопик прилагам Rake файл към 5 задача:

    desc 'Checks everything'
    task :check do
      system("skeptic --no-semicolons --line-length 90 --max-nesting-depth 2 --methods-per-class 10 --lines-per-method 8 solution.rb") or exit(1)
      system("rspec --require ./solution.rb --color --fail-fast ./sample_spec.rb") or exit(1) 
    end
    
    desc 'Starts watchr'
    task :watch do
      system 'watchr watchr.rb'
    end
    

    И watchr.rb:

    watch('solution.rb') do 
      system "clear"
      system "rake check"
    end
    

    Само трябва да си сложите solution.rb, sample_spec.rb и watchr.rb в една директория.

    Пуска се със: rake check

  3. Може да съм в грешка, но не ти ли е излишен Rakefile-a и по-скоро да се пуска с watchr watchr.rb, където в watchr.rb имаш

    watch('solution.rb') do
      system "clear"
      system("skeptic --no-semicolons --line-length 90 --max-nesting-depth 2 --methods-per-class 10 --lines-per-method 8 solution.rb") or exit(1)
      system("rspec --require ./solution.rb --color --fail-fast ./sample_spec.rb") or exit(1) 
    end

    ?

    Извикваш rake check в watch.rb и watch.rb в rakefile-a... Има ли нужда от това?

  4. В публикувания примерен тест са изпуснати няколко spec-а, които ще ги има, когато ви проверяваме задачата. За някои от липсващите проверки можете да се сетите, като разгледате внимателно наличните spec-ове. За други просто трябва да внимавате в условието и да видите кое не е spec-нато добре/пълно.

    С други думи, не си мислете, че някой ви е свършил цялата работа по тестването и вие нямате да правите нищо :)

    Ако имате някакви въпроси или проблеми с условието или теста, питайте.

  5. Ред, на който има само whitespace, счита ли се за празен? Тоест: Some text

    Other text
    

    Ще продуцира

    Some text

    Other text</p>
    

    или ще продуцира?

    Some text

    <p>Other text</p>
    

    Има интервал на разделящия ред.

    Предполагам, че прилагаме правилото:

    Whitespace в началото или в края на ред трябва да бъде премахван, освен ако в някоя от по-горните секции не е указано друго.

    и става второто.

  6. В блоковете от код не се прилага никакво друго форматиране.

    Това не значи ли, че и в блокове с код не трябва да се екранират специалните символи (например &)?

    Според примерния тест трябва, което ме навежда на извода, че аз не разбирам горния цитат (екранирането не се води форматиране) или той е неточно формулиран, или има грешка в тестовете.

  7. Предполагам, че ми става навик да си питам разни неща, но имам още един въпрос (искам още едно потвърждение).

    [Ползвайте _Google_](http://google.com/). 
    

    Ще продуцира

    <a href="http://google.com/">Ползвайте <em>Google</em></a>
    

    П.С: Видях в условието къде го пише, но оставям въпроса, ако някой друг не го е забелязал.

  8. @Ивайло Петров,

    1. Относно въпроса ти за whitespace, си интерпретирал условието правилно. Тоест, резултатът от примера, който си дал, е точно "второто".
    2. В блоковете с код не се приглага никакво форматиране, освен екраниране на специални символи. Не е споменато изрично нито в секцията за блокове с код, нито в секцията за специални символи и е объркващо. Затова ще го променя. Тестът е правилен.
    3. Относно форматирането в текста на линкове — да, почти си прав.

    Правя единствено следното малко уточнение:

    [Ползвайте _Google_](някакъв-адрес). 
    

    Ще продуцира:

    <a href="някакъв-адрес">Ползвайте <em>Google</em></a>.
    

    (Изпуснал си една точка в края :))

  9. аз също имах подобен въпрос ... тоест: # header with a space before '#' #header without space after '#' 1.long first element ........................................ this is still element 1. but with enter at the end for better reading 2.second element

    в случай имаме странни whitespace-ове преди и след форматиращите символи и елемнт на лист който е разделен на три реда със \n за да се чете по лесно - какъв е очаквания изход ?

  10. @Тони Ризов, в твоя случай трябва да си изведе header, по правилото, че щом редът не започва с поне четири интервала, значи не е ред от блок с код, следователно, тъй като няма друго изрично правило, важи правилото:

    Whitespace в началото или в края на ред трябва да бъде премахван, освен ако в някоя от по-горните секции не е указано друго.

    След като се премахне този whitespace, форматирането на header си е по правилата.

    @Михаил Стойков, не може да разделиш един li-елемент на няколко нови реда по този начин. Това би означавало, че новият ред, незапочващ с "1. нещо си", ще се брои като начало на параграф. Между другото, списъчните ти елементи не са валидни (нямат интервал след точката).

  11. Един тъп въпрос, но когато имаме подреден списък - следим ли дали му е правилна номерацията (и имаме ли изобщо начин да направим толкова умни шаблони или става по 'тъпия начин')?

    Например 1. Първи елемент 1. Втори първи елемент 5. Пети елемент от космоса

    Това би се хванало от идеята '\d+.\s.+', но реалноне е валиден списък.

  12. Следващ тъп въпрос:) Гърми ми проверката за правене на множество параграфи. Понеже съм си го пробвал при мен, реших да погледна какво се случва и виждам следното :

    [359] pry(main)> plain = <<-END
    [359] pry(main)* First line
    [359] pry(main)*
    [359] pry(main)* Second line
    [359] pry(main)*
    [359] pry(main)* Third line
    [359] pry(main)* END
    => "First line\nSecond line\nThird line\n"
    [360] pry(main)> puts plain
    First line
    Second line
    Third line
    

    Въпроса ми е следния - аз ли бъркам нещо, или въведен по този начин входния String всъщност са 3 реда, без празен между тях и не са 3 различни параграфа?

    ПС Копирал съм 1:1 от sample_spec.rb

    Понеже ми изглежда грозно да пусна 2 поредни поста - редактирам този. Реших си горния проблем, но сега имам друг expected: "

    First line

    \n\n

    Second line

    \n\n

    Third line

    " got: "

    First line

    \n\n

    Second line

    \n\n

    Third line

    \n"

    Тук поразгледах внимателно и виждам, че във входния String има нов ред на края. Очаква ли се от нас в крайна сметка да игнорираме такъв нов ред?

  13. Отново се сетих за нещо, което не съм сигурен. Следното вярно ли е? "test\n \nother" => "

    test

    \n\n

    other

    "

    Позовавам се на правилото:

    Whitespace в началото или в края на ред трябва да бъде премахван, освен ако в някоя от по-горните секции не е указано друго.

  14. Здравейте!

    Как решавате проблема с кирилицата. Почти съм готов, но не ми мачва кирилски букви, не ми дава да ги присвоявам даже. Файла е UTF-8 кодиран, а това the_text = <<INPUT_TEXT # асдасдасдас INPUT_TEXT дава

    solution.rb:101: invalid multibyte char (US-ASCII)

Трябва да сте влезли в системата, за да може да отговаряте на теми.