Школоло / Говнокод #219 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
'/**
' * Parser
' * @param String text
' * @param Scripting.Dictionary text
' */
private function Parse(text, data)
    dim RE, EM, MO, res, lastIndex, val
    res = ""
    Set RE = New RegExp
    RE.Pattern = "(\\?)\$(?:(\w+)|\{(\w+)\})"
    RE.IgnoreCase = False
    RE.Global = True
    Set EM = RE.Execute(text)
    if EM.Count > 0 then
        lastIndex = 1
        for each MO in EM
            if Mid(MO.Value,1,2) = "\$" then
                val = Mid(MO.Value,2)
            else
                if Mid(MO.Value,1,2) = "${" then 
                    val = Mid(Mid(MO.Value,1,Len(MO.Value)-1),3) 
                else 
                    val = Mid(MO.Value,2)
                end if
                val = data(val)
            end if
            res = res & Mid(text, lastIndex, MO.FirstIndex-lastIndex+1) & val
            lastIndex = MO.FirstIndex+MO.Length+1
        next
        res = res & Mid(text, lastIndex)
        Parse = res
    else
        Parse = text
    end if
end function

Пример, как функция, которая в других языках описывается одной строкой, реализуется на этом говноязыке

Запостил: guest guest, (Updated )

Комментарии (13) RSS

  • dj Virus:
    Вот так это выглядит на ПХП:
    function str_parse($value, $text) {
        return preg_replace('/(?<!\\\\)\$(?:\{([\w_]+)\}|([\w_]+))/e', '$value["$1$2"]', $text);
    }
    Ответить
      • Оказывается, на "PHP" переводили ещё до того, как это стало главным потоком в 2008 году. И даже просить не надо было.
        Ответить
  • dj Virus:
    вот так на перле:
    sub display_output {
       my($template, $r_namespace) = @_;
       $template =~ s/\$([A-Za-z0-9_]+)/$r_namespace->{$1}/g;
       return $template;
    }
    Ответить
  • CF:
    При всём неуважении к VB, Вы-таки не справедливы. Встроенной поддержки регулярных выражений нет почти ни в каких язаках, а библиотеки для работы с ними, может и для VB есть.
    Ответить
  • xtk:
    угу, стопудово, надо линковаться с либами регекспа
    Ответить
  • dj Virus:
    дык, в этой функции юзаются регэкспы!
    Мало того, этот говнокод я же и писал.
    Я достаточно много писал на этом языке и для меня это было мучение, так как я люблю писать лаконичный и читабельный код, а тут, тужился, крутил, вертел, ну никак не выходило. В итоге плюнул и писал как получалось.
    Ответить
  • Автор, вы невежда. Парсить на VB очень просто. Еще проще на VB.net, но медленней.
    Ответить
    • Плюсадин.
      А
      private function Parse(text, data)
      пишется
      private function Parse(text$, data$) as string

      Аффтар, посамоутверждайся за счёт QBasic-а, он по сравнению с, например, Delphi, точно говно.

      This sucks.
      Ответить
  • Мальчег, а ты после достаточно-много-писания, не в курсе, что Let, Set, неинициализованные, и уж тем-более неттипизированные переменные не используются уже с версии 2001 года и оставлены только для совместимости?
    Ответить
  • Я почесал в затылке, разглядывая друга - загорелый, повзрослевший, меня тянуло к нему непонятной еще силой. Нет я знал, конечно, что есть такие "педики", какие-то грязные мужики, которые сосут у кого попало в общественных сортирах, но меня это не интересовало и ни за что я не мог представить себя на их месте, но что меня так привлекало в фигуре друга, мы ведь уже давно знакомы... раньше я этого не замечал.
    Ответить

Добавить комментарий

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8