Четвърта задача

  1. "Валидно име на домейн или поддомейн: ... следват до 62 цифри, малки или големи букви или тире ... общата дължина трябва да е между 1 и 62 символа"

    Това означава ли, че домейн и поддомейн заедно не надвишават 62 символа и, ако да, то точката между тях влиза ли в бройката?

  2. Валидно име на домейн ИЛИ поддомейн:
     - започва с цифра, малка или главна буква
     - следват до 62 цифри, малки или големи букви или тире
     - последният символ не може да е тире
     - общата дължина трябва да е между 1 и 62 символа
    

    Как аз го виждам:
    дължината на домейна е до 62 символа; дължината на поддомейна е до 62 символа, също.

  3. Как се интерпретира текстът: 009-123456.+359123456@0123456.bg?

    1. [PHONE].[PHONE]@[PHONE].bg

    2. [PHONE].+[EMAIL]

    3. [EMAIL]

    В условието е споменато само, че всеки валиден email и phone трябва да се заместят. Това означава ли, че и трите интерпретации ще бъдат приети като верен отговор?

  4. @Красимир, валиден въпрос. Процедирайте така: първо замествате валидните email адреси и след това валидните телефонни номера. Ще обновя условието, благодаря.

    @Елена и @Милан, не е половината. Само първите три символа се запазват. Благодаря за въпроса, пропуснал съм да го уточня. Добавям и това в условието.

  5. Процедирайте така: първо замествате валидните email адреси и
    след това валидните телефонни номера.
    

    Горното обаче не решава напълно въпроса с нееднозначността: foo@bar.baz.qux@fmi.net всъщност е [EMAIL].[EMAIL] или [EMAIL]@fmi.net, или нещо друго?

    И по-специално, дали в тестовите примери отделните текстови данни за валидиране/филтриране ще са разделени с някакъв delimeter, защото ако не са, доста двусмислици като горната могат да се получат.

    P.S. Очевидно за Markdown e [EMAIL]@fmi.net :smile:

  6. А как се разбира колко дълъг е международният код. Например в условието има

    filter = PrivacyFilter.new 'Phone: +35925551212'
    filter.preserve_phone_country_code = true
    filter.filtered # => 'Phone: +359 [FILTERED]'
    

    Как се разбира, че кода е три сомвола?

  7. @Пламен Тотев - и аз това се чудя, трябва ли да си запиша някъде кътри кодовете?

    Въпрос: - 0001-02-02 валидна дата ли е?

    Под дата ще разбираме следната последователност от символи: четири цифри, от 0 до 9 за година

    Според условието това не се забранява?

  8. @Мирослав Крамолински - Според условието всеки четири чифри за година са валидни. Вклzчително 0000. Между другото според моите разбирания това наистина е валидна дата според календара. 0001 със сигурност е валидна - първа година след новата ера.

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

  9. Не съм сигурен дали въпросът ми не е тъп, но доколкото си спомням имаше някво искане да има домейни и/или TLD на кирилица, което даже май и го приеха... Та само с латински букви ли ще тествате и ако не, какво трябва да е поведението с друга азбука?

  10. @Емил, и в условието на задачата е уточнено, че описаните типове данни не се припокриват с действителността до голяма степен. Не, няма да има тестове с TLD на кирилица или друга не-латинска азбука.

  11. "опционално, между всяка цифра може да има максимум до два разделителя от следните: интервал, -, ( и )"

    Това "и" межу скобите значи ли, че ако има отваряща трябва да има и затваряща? Защото ако не, тогава това валидни телефони ли са: 0899(999999 0899()999999 0899-(999999 0899((9))99999

  12. Някой може ли да ми каже,защо като се опитам да пусна примера от лекцията 'Регулярни изрази': /\s\p{Cyrillic}\p{Cyrillic}\p{Cyrillic}/.match 'Ние сме на всеки километър!'

    Като го изпълня това и не ми дава :# #<MatchData " сме"> а ми дава грешка : Invalid character property name {Cyrillic}:/\s\p{Cyrillic}\p{Cyrillic}\p{Cyrillic}/.match 'Ние сме на всеки километър!'

    CNumbers.rb:1 invalid mulibyte char CNumbers.rb:1 invalid mulibyte char

    п.п. Също искам да попитам по условието: filter=PrivacyFilter.new(text) - Тук текст доколкото разбрах е някакъв текст,който съдържа 1 или повече имейл адреса и 1 или повече телефонни номера,но как примерно като го прочитам този text да разбирам къде свършва примерно имейлът и къде почва дргуят имейл(Ако може да стоят веднага един след друг 2 имейла) something@otherthing.comoreemail@otherother.bb тук примерно единият може да е something@otherthing.com ма другият moreemail@otherother.bb,но може да е и oreemail@otherother.bb

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

    някакви такива неща.

  13. "Дата и час

    Под "дата и час" ще разбираме горните два формата, събрани заедно с разделител или интервал, или главна латинска буква T. Например:

    2012-11-19 19:15:00"

    Какъв символ може да е разделителят?

    Вярно ли е, че : - "Contact : -invalid@email.com" се филтрира до "Contact : -invalid@email.com" ? -"Contact-valid@email.com" се филтрира до "Contact-[EMAIL]" ?

    ".42" , "001" , "-0" валидни числа ли са?

  14. Аз интерпретирам условието така Числата могат да започват опционално с - Това е ясно. => -0 е валидно. може да следва една 0 или цифра от 1 до 9, последвана от неограничен брой други цифри от 0 до 9

    Това го разбирам така - може да следва или само 0, или цифра от 1 до 9, която цифра може да бъде последвана от неограничен брой други цифри от 0 до 9. => 001 не е валидно.

    И тъй като след опционалния -, "може да следва една 0 или цифра от 1 до 9 и т.н.", според мен не може да следва точка. => .42 e невалидно.

    А разделителя на "дата и час" го разбирам като "или интервал, или главна латинска буква T".

  15. Когато филтрираме телефон запазвайки международния код и има някакви разделители след него, те в международния код ли влизат или филтрираната част? Ако са към филтрираната, от примера следва, че трябва да връщаме "<кода><шпация>[FILTERED]"?

    Edited: https://github.com/fmi/ruby-homework/blob/master/04/sample_spec.rb - Отговорих си :)

  16. И аз съм на същото мнение като Георги за числата и "дата и час".

    @Нели Да, за "Contact : -invalid@email.com", но "Contact-valid@email.com" би трябвало да се филтрира до "[EMAIL]". В усовето пише, че може да започва с главна буква.

    EDITED: Всъщност "Contact : -invalid@email.com" май трябва да се филтрира до "Contact : -[MAIL]"

  17. Предполагам,че въпросът ми е глупав ,но наистина искам да разбера ,какво е text ,смисъл някаква съвкупност от телефонни номера и имейли ли е това?Какъв би бил един примерен аргумент на PrivacyFilter.new(text)?На мен ми е ясно,че text Представлява номера и имейли,но има ли някаква наредба,определен брой и т.н. или са просто хаотично записани. PrivacyFilter.new('something@somewhere.bg +359876981178 023451511 otherthing@otherplace.com')??Нещо такова ли трябва да е и изобщо има ли някакви разделители или всичко е слято?

  18. Произволен стринг. Няма наредба, няма определени бройки. Не е задължително да има разделители. Дори не е задължително да има телефонни номера и имейли.

    Един въпрос от мен: Префикс в интернационален формат може ли да бъде предшестван от "друга цифра, буква или символ +", или това важи само за префикс в локален формат?

  19. Валидно име на домейн или поддомейн:

    • започва с цифра, малка или главна буква
    • следват до 62 цифри, малки или големи букви или тире
    • последният символ не може да е тире
    • общата дължина трябва да е между 1 и 62 символа

    Тук го разбирам като: всеки поддомейн <= 62 символа и всички взети заедно също да са <= 62, но когато са взети заедно броим ли точките между тях?

    Смятам да приемам за вярно така, както са го разбрали колегите на горе т.е. точката не се брои :?

  20. Аз също имам проблем с това условие. започва с цифра,малка или главна буква - тоест задължително имаме вече 1 символ

    следват до 62 цифри,малки/големи букви или тире - ако след първият имаме още 62,което дотук изглежда ,че е в рамките на условието 1+62=63 символа,което противоречи на следващото - общата дължина трябва да е между 1-62 символа.

    Според мен точката не може да се счита като част от името на домейн/поддомейн.Най-малкото,което е - тя не е измежду посочените възможни стойности.

  21. @Мирослав, не, от вас не се иска да следите отварящи и затварящи скоби за съответствие.

    @Кристиан, относно въпроса ти за "Ние сме на всеки километър!", ако не го тестваш в irb, а в .rb файл, увери се, че в началото на файла (в първите 1-2 реда), имаш следния коментар: # encoding: utf-8 и че файлът ти е кодиран с UTF-8.

    А относно примера със залепените мейли, които си дал — няма да има такива тестове.

    @Нели и @Пламен, вижте анализа на @Георги, той е правилен.

    @Йордан е прав за това какво е "текст". Няма да има залепени и толкова двусмислени телефонни номера или e-mail адреси.

    А по отношение на това какво може да предшества код на телефон в интернационален формат — очевидно, преди 00 не може да има други цифри. Не може да има и букви. Направил съм уточнение в условието.

    @Никола, @Кристиан и всички останали, коригирах един пункт в условието за hostname. Общата дължина на името на домейн или поддомейн трябва да е между 1 и 63 символа. А точката не се брои в името, тя е разделител между име и TLD, или между име и друго име.

    Направил съм уточняващи промени в условието, може да видите diff в GitHub.

  22. За Validation, мисля че трябва да мачват целия стринг.

    Но във филтър не мога да разбера как трябва да става заместването. Примерно този въпрос за мейлите, дискутиран по-горе. Как трябва да се филтрира -mailmail@mail.com?

    До -[EMAIL], защото има валиден подстринг?

    Или да не се филтрира, защото "цялата дума" не е валиден email?

  23. Валидно TLD: две или три букви, малки или главни опционално, символ . и още две малки или главни букви

    Примерен hostname:

    foo.bar.baz

    Това не значи ли, че примерното TLD не е валидно ? Завършва с три символа, не с два ?

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