Для перехода с PHP на Rails нужна помощь в переводе сокращенного URL - PullRequest
2 голосов
/ 26 апреля 2011

Предыдущие разработчики использовали исходный код этого веб-сайта для создания укороченного URL. Передо мной стоит задача перевести этот фрагмент кода на ruby:

function getIDFromShortenedURL1 ($string, $base = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')
{
    $length = strlen($base);
    $size = strlen($string) - 1;
    $string = str_split($string);

    $out = strpos($base, array_pop($string));

    foreach($string as $i => $char)
    {
        $out += strpos($base, $char) * pow($length, $size - $i);
    }
    return $out;
}

Я новичок в ruby, и любая помощь будет высоко ценится:)

1 Ответ

3 голосов
/ 26 апреля 2011

Вот то, что в основном составляет прямой порт кода PHP.

def getIDFromShortenedURL1(string, base = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')
  length = base.length         # $length = strlen($base);
  size   = string.length - 1   # $size   = strlen($string) - 1;
  string = string.split ''     # $string = str_split($string);

  out = base.index string.pop  # $out = strpos($base, array_pop($string));

  string.each_with_index do |char, i|  # foreach($string as $i => $char);
    # $out += strpos($base, $char) * pow($length, $size - $i);
    out << base.index(char) * (length ** (size - i))
  end
  out # return $out;
end

Код и результаты очень простого теста (чтобы убедиться, что функциональность одинакова) можно найти на https://gist.github.com/941152.

...