Реализация Shellwords.shellescape для Ruby 1.8

Некоторые языки (C, Java 5) позволяют Вам получать доступ к двоичному значению своих плаваний. Таким образом, можно извлечь первые биты N мантиссы (игнорирующий последние несколько битов, которые доставляют неприятности во время, выдерживают сравнение), и вычислите хеш от этого.

5
задан Jonathan Leffler 16 September 2011 в 06:02
поделиться

2 ответа

Я закончил с гемом Escape , который имеет дополнительная функция использования кавычек по умолчанию и только экранирование обратной косой черты, когда это необходимо.

5
ответ дан 18 December 2019 в 13:17
поделиться

Вы также можете просто скопировать то, что хотите, из shellwords.rb в ствол репозитория Subversion Ruby (это GPLv2 ' d):

  def shellescape(str)
    # An empty argument will be skipped, so return empty quotes.
    return "''" if str.empty?

    str = str.dup

    # Process as a single byte sequence because not all shell
    # implementations are multibyte aware.
    str.gsub!(/([^A-Za-z0-9_\-.,:\/@\n])/n, "\\\\\\1")

    # A LF cannot be escaped with a backslash because a backslash + LF
    # combo is regarded as line continuation and simply ignored.
    str.gsub!(/\n/, "'\n'")

    return str
  end
9
ответ дан 18 December 2019 в 13:17
поделиться