1. Pascal / Говнокод #19250

    −50

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    function explodeParams(str: string; objDel: char; paramDel: char): ISuperObject;
    var
      i: Integer;
      obj: ISuperObject;
      field: string;
      value: string;
      cuts: string;
      newstr: string;
    begin
      cuts := '';
      newstr := '';
      for i := 1 to Length(str) do
      begin
        if str[i] <> objDel then
        begin
          if str[i] <> paramDel then
          begin
            cuts := cuts + str[i];
          end
          else
          begin
            field := cuts;
            cuts := '';
          end;
        end
        else
        begin
          value := cuts;
          if value = '' then
          begin
            exit;
          end;
          if field = '' then
          begin
            exit;
          end;
          obj := so(['name', field, 'value', StrToInt(value)]);
          newstr := newstr + obj.AsString + ',';
          cuts := '';
        end;
      end;
      if cuts <> '' then
      begin
        obj := so(['name', field, 'value', StrToInt(cuts)]);
        newstr := newstr + obj.AsString + ',';
      end;
      newstr := Copy(newstr, 1, Length(newstr) - 1);
      Result := so('[' + newstr + ']');
    end;

    Отборное г...

    Запостил: Cynicrus, 26 Декабря 2015

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

    • Почему всё шиворот-на-выворот?
      И вот это круто:
      if ... then
      begin
        exit;
      end;
      Ответить
      • Наверное, code style требует ставить скобочки даже если один оператор ;)
        Ответить
        • лиспер пишет на паскале?
          P.S. lisp с begin/end -- надо подкинуть идею Сатане, вполне годится для наказания грешников
          Ответить
          • Да там и своего progn'а хватает...
            Ответить
            • не, я имею в виду заменить все скобочки на begin/end

              begin let* begin begin a begin b end end end begin a end end
              Ответить
          • Для наказания грешников у него уже есть XSLT.
            Ответить
    • > obj := so(['name', field, 'value', StrToInt(cuts)]);
      > Result := so('[' + newstr + ']');
      Интересно, а ISuperObject и правда настолько убогий, что может конструироваться только из строки?
      Ответить
      • Неа, ISuperOBject - один из самых удобных json Парсеров для Delphi/FPC в котором есть всё.
        Ответить

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