PHP 8.2.31
Preview: text.rb Size: 1.88 KB
/proc/thread-self/root/opt/alt/ruby24/lib64/ruby/2.4.0/rubygems/text.rb

# frozen_string_literal: true
require 'rubygems'

##
# A collection of text-wrangling methods

module Gem::Text

  ##
  # Remove any non-printable characters and make the text suitable for
  # printing.
  def clean_text(text)
    text.gsub(/[\000-\b\v-\f\016-\037\177]/, ".".freeze)
  end

  def truncate_text(text, description, max_length = 100_000)
    raise ArgumentError, "max_length must be positive" unless max_length > 0
    return text if text.size <= max_length
    "Truncating #{description} to #{max_length.to_s.reverse.gsub(/...(?=.)/,'\&,').reverse} characters:\n" + text[0, max_length]
  end

  ##
  # Wraps +text+ to +wrap+ characters and optionally indents by +indent+
  # characters

  def format_text(text, wrap, indent=0)
    result = []
    work = clean_text(text)

    while work.length > wrap do
      if work =~ /^(.{0,#{wrap}})[ \n]/ then
        result << $1.rstrip
        work.slice!(0, $&.length)
      else
        result << work.slice!(0, wrap)
      end
    end

    result << work if work.length.nonzero?
    result.join("\n").gsub(/^/, " " * indent)
  end

  def min3 a, b, c # :nodoc:
    if a < b && a < c then
      a
    elsif b < c then
      b
    else
      c
    end
  end

  # This code is based directly on the Text gem implementation
  # Returns a value representing the "cost" of transforming str1 into str2
  def levenshtein_distance str1, str2
    s = str1
    t = str2
    n = s.length
    m = t.length

    return m if (0 == n)
    return n if (0 == m)

    d = (0..m).to_a
    x = nil

    str1.each_char.each_with_index do |char1,i|
      e = i+1

      str2.each_char.each_with_index do |char2,j|
        cost = (char1 == char2) ? 0 : 1
        x = min3(
             d[j+1] + 1, # insertion
             e + 1,      # deletion
             d[j] + cost # substitution
            )
        d[j] = e
        e = x
      end

      d[m] = x
    end

    return x
  end
end

Directory Contents

Dirs: 11 × Files: 59

Name Size Perms Modified Actions
commands DIR
- drwxr-xr-x 2024-03-03 22:48:02
Edit Download
core_ext DIR
- drwxr-xr-x 2024-03-03 22:48:02
Edit Download
ext DIR
- drwxr-xr-x 2024-03-03 22:48:02
Edit Download
package DIR
- drwxr-xr-x 2024-03-03 22:48:02
Edit Download
request DIR
- drwxr-xr-x 2024-03-03 22:48:02
Edit Download
- drwxr-xr-x 2024-03-03 22:48:02
Edit Download
resolver DIR
- drwxr-xr-x 2024-03-03 22:48:02
Edit Download
security DIR
- drwxr-xr-x 2024-03-03 22:48:02
Edit Download
source DIR
- drwxr-xr-x 2024-03-03 22:48:02
Edit Download
ssl_certs DIR
- drwxr-xr-x 2024-03-03 22:48:02
Edit Download
util DIR
- drwxr-xr-x 2024-03-03 22:48:02
Edit Download
3.02 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
7.20 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
13.87 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
4.75 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
1.66 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
12.91 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
4.46 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
8.31 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
14.07 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
5.55 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
1.73 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
3.06 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
4.50 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
6.23 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
461 B lrw-r--r-- 2020-03-31 11:42:18
Edit Download
4.37 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
1.99 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
11.04 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
24.68 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
4.29 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
337 B lrw-r--r-- 2020-03-31 11:42:18
Edit Download
311 B lrw-r--r-- 2020-03-31 11:42:18
Edit Download
7.57 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
3.40 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
1.38 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
2.41 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
16.61 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
3.80 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
1.72 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
6.25 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
300 B lrw-r--r-- 2020-03-31 11:42:18
Edit Download
793 B lrw-r--r-- 2020-03-31 11:42:18
Edit Download
7.74 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
11.65 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
8.66 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
9.74 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
6.52 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
9.05 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
1.11 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
21.00 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
23.02 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
5.24 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
2.53 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
141 B lrw-r--r-- 2020-03-31 11:42:18
Edit Download
123 B lrw-r--r-- 2020-03-31 11:42:18
Edit Download
80.50 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
6.34 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
4.80 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
2.12 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
39.71 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
8.63 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
1.88 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
8.74 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
792 B lrw-r--r-- 2020-03-31 11:42:18
Edit Download
14.46 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
2.60 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
4.21 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
11.47 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download
1.86 KB lrw-r--r-- 2020-03-31 11:42:18
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).