Поиск…


замечания

ActiveSupport - это утилита универсальных инструментов, используемых остальной частью Rails.

Одним из основных способов предоставления этих инструментов является monkeypatching родные типы Ruby. Они называются Core Extensions .

Основные расширения: доступ к строкам

Строка # в

Возвращает подстроку строкового объекта. Тот же интерфейс, что и String#[] .

str = "hello"
str.at(0)      # => "h"
str.at(1..3)   # => "ell"
str.at(-2)     # => "l"
str.at(-2..-1) # => "lo"
str.at(5)      # => nil
str.at(5..-1)  # => ""

Строка # из

Возвращает подстроку из заданной позиции в конец строки.

str = "hello"
str.from(0)  # => "hello"
str.from(3)  # => "lo"
str.from(-2) # => "lo"

Строка # для

Возвращает подстроку от начала строки до заданной позиции.
Если позиция отрицательная, она отсчитывается от конца строки.

str = "hello"
str.to(0)  # => "h"
str.to(3)  # => "hell"
str.to(-2) # => "hell"

from и to может использоваться в тандеме.

str = "hello"
str.from(0).to(-1) # => "hello"
str.from(1).to(-2) # => "ell"

Строка # первый

Возвращает первый символ или заданное количество символов до длины строки.

str = "hello"
str.first    # => "h"
str.first(1) # => "h"
str.first(2) # => "he"
str.first(0) # => ""
str.first(6) # => "hello"

Строка # последний

Возвращает последний символ или заданное количество символов с конца строки, отсчитывающей назад.

str = "hello"
str.last    # => "o"
str.last(1) # => "o"
str.last(2) # => "lo"
str.last(0) # => ""
str.last(6) # => "hello"

Расширения ядра: преобразование строк и даты / времени

Строка # TO_TIME

Преобразует строку в значение времени. Параметр form может быть :utc или :local , по умолчанию - :local .

"13-12-2012".to_time               # => 2012-12-13 00:00:00 +0100
"06:12".to_time                    # => 2012-12-13 06:12:00 +0100
"2012-12-13 06:12".to_time         # => 2012-12-13 06:12:00 +0100
"2012-12-13T06:12".to_time         # => 2012-12-13 06:12:00 +0100
"2012-12-13T06:12".to_time(:utc)   # => 2012-12-13 06:12:00 UTC
"12/13/2012".to_time               # => ArgumentError: argument out of range

Строка # to_date

Преобразует строку в значение Date.

"1-1-2012".to_date   # => Sun, 01 Jan 2012
"01/01/2012".to_date # => Sun, 01 Jan 2012
"2012-12-13".to_date # => Thu, 13 Dec 2012
"12/13/2012".to_date # => ArgumentError: invalid date

Строка # to_datetime

Преобразует строку в значение DateTime.

"1-1-2012".to_datetime            # => Sun, 01 Jan 2012 00:00:00 +0000
"01/01/2012 23:59:59".to_datetime # => Sun, 01 Jan 2012 23:59:59 +0000
"2012-12-13 12:50".to_datetime    # => Thu, 13 Dec 2012 12:50:00 +0000
"12/13/2012".to_datetime          # => ArgumentError: invalid date

Основные расширения: исключение строк

Строка # исключить?

Обратный String#include?

"hello".exclude? "lo" # => false
"hello".exclude? "ol" # => true
"hello".exclude? ?h   # => false

Основные расширения: строковые фильтры

Строка # мармелад

Возвращает версию данной строки без начального или конечного пробела и объединяет все последовательные пробелы в интерьере в одиночные пробелы. Деструктивная версия squish! действует непосредственно на экземпляр строки.

Обрабатывает как пробелы ASCII, так и Unicode.

%{ Multi-line
   string }.squish                   # => "Multi-line string"
" foo   bar    \n   \t   boo".squish # => "foo bar boo"

Строка # удалить

Возвращает новую строку с удалением всех вхождений шаблонов. Уничтожьте версию remove! действует непосредственно на заданную строку.

str = "foo bar test"
str.remove(" test")                 # => "foo bar"
str.remove(" test", /bar/)          # => "foo "

Строка # усечение

Возвращает копию заданной строки, усеченной с заданной длиной, если длина строки больше длины.

'Once upon a time in a world far far away'.truncate(27)
# => "Once upon a time in a wo..."

Передача строки или регулярного выражения :separator для усечения при естественном разрыве

'Once upon a time in a world far far away'.truncate(27, separator: ' ')
# => "Once upon a time in a..."

'Once upon a time in a world far far away'.truncate(27, separator: /\s/)
# => "Once upon a time in a..."

Строка # truncate_words

Возвращает строку, усеченную после заданного количества слов.

'Once upon a time in a world far far away'.truncate_words(4)
# => "Once upon a time..."

Передайте строку или regexp, чтобы указать другой разделитель слов

'Once<br>upon<br>a<br>time<br>in<br>a<br>world'.truncate_words(5, separator: '<br>')
# => "Once<br>upon<br>a<br>time<br>in..."

Последние символы будут заменены строкой :omission (по умолчанию «...»)

'And they found that many people were sleeping better.'.truncate_words(5, omission: '... (continued)')
# => "And they found that many... (continued)"

Строка # strip_heredoc

Вырезание полос в heredocs. Ищет наименее исписанную непустую строку и удаляет это количество ведущих пробелов.

if options[:usage]
  puts <<-USAGE.strip_heredoc
    This command does such and such.

    Supported options are:
      -h         This message
      ...
  USAGE
end

пользователь увидит

This command does such and such.

Supported options are:
-h         This message
...

Основные расширения: String Inflection

Строка # множественное число

Возвраты множественной формы строки. Необязательно принимает параметр count и возвращает особую форму, если count == 1 . Также принимает параметр locale для специфического для языка плюрализации.

'post'.pluralize             # => "posts"
'octopus'.pluralize          # => "octopi"
'sheep'.pluralize            # => "sheep"
'words'.pluralize            # => "words"
'the blue mailman'.pluralize # => "the blue mailmen"
'CamelOctopus'.pluralize     # => "CamelOctopi"
'apple'.pluralize(1)         # => "apple"
'apple'.pluralize(2)         # => "apples"
'ley'.pluralize(:es)         # => "leyes"
'ley'.pluralize(1, :es)      # => "ley"

Строка # образовывать форму единственного числа

Возвращает единственную форму строки. Принимает необязательный параметр locale .

'posts'.singularize            # => "post"
'octopi'.singularize           # => "octopus"
'sheep'.singularize            # => "sheep"
'word'.singularize             # => "word"
'the blue mailmen'.singularize # => "the blue mailman"
'CamelOctopi'.singularize      # => "CamelOctopus"
'leyes'.singularize(:es)       # => "ley"

Строка # constantize

Пытается найти объявленную константу с именем, указанным в строке. Он вызывает NameError когда имя не находится в CamelCase или не инициализировано.

'Module'.constantize  # => Module
'Class'.constantize   # => Class
'blargle'.constantize # => NameError: wrong constant name blargle

Строка # safe_constantize

Выполняет constantize но возвращает nil вместо повышения NameError .

'Module'.safe_constantize  # => Module
'Class'.safe_constantize   # => Class
'blargle'.safe_constantize # => nil

Строка # camelize

Преобразует строки в UpperCamelCase по умолчанию, если :lower задается как параметр преобразует вместо lowerCamelCase.

псевдоним: camelcase

Примечание: также будет конвертировать / в :: что полезно для преобразования путей в пространства имен.

'active_record'.camelize                # => "ActiveRecord"
'active_record'.camelize(:lower)        # => "activeRecord"
'active_record/errors'.camelize         # => "ActiveRecord::Errors"
'active_record/errors'.camelize(:lower) # => "activeRecord::Errors"

Строка # titleize

Капитализует все слова и заменяет некоторые символы в строке, чтобы создать более привлекательный заголовок.

псевдоним: titlecase

'man from the boondocks'.titleize # => "Man From The Boondocks"
'x-men: the last stand'.titleize  # => "X Men: The Last Stand"

Строка # подчеркивание

Делает подчеркнутую, строчную форму из выражения в строке. Реверс camelize .

Примечание. underscore также изменит :: на / чтобы преобразовать пространства имен в пути.

'ActiveModel'.underscore         # => "active_model"
'ActiveModel::Errors'.underscore # => "active_model/errors"

Строка # dasherize

Заменяет символы подчеркивания тире в строке.

'puni_puni'.dasherize # => "puni-puni"

Строка # demodulize

Удаляет часть модуля из константного выражения в строке.

'ActiveRecord::CoreExtensions::String::Inflections'.demodulize # => "Inflections"
'Inflections'.demodulize                                       # => "Inflections"
'::Inflections'.demodulize                                     # => "Inflections"
''.demodulize                                                  # => ''

Строка # deconstantize

Удаляет самый правый сегмент из константного выражения в строке.

'Net::HTTP'.deconstantize   # => "Net"
'::Net::HTTP'.deconstantize # => "::Net"
'String'.deconstantize      # => ""
'::String'.deconstantize    # => ""
''.deconstantize            # => ""

Строка # Параметрирование

Заменяет специальные символы в строке, чтобы ее можно было использовать как часть «симпатичного» URL-адреса.

"Donald E. Knuth".parameterize # => "donald-e-knuth"

Сохраните случай символов в строке с аргументом :preserve_case .

"Donald E. Knuth".parameterize(preserve_case: true) # => "Donald-E-Knuth"

Очень распространенным вариантом использования для parameterize является переопределение метода to_param модели ActiveRecord для поддержки более описательных URL-адресов.

class Person < ActiveRecord::Base
  def to_param
    "#{id}-#{name.parameterize}"
  end
end

Person.find(1).to_param # => "1-donald-e-knuth"

Строка # tableize

Создает имя таблицы, например Rails, для моделей с именами таблиц. Плюрализует последнее слово в строке.

'RawScaledScorer'.tableize # => "raw_scaled_scorers"
'ham_and_egg'.tableize     # => "ham_and_eggs"
'fancyCategory'.tableize   # => "fancy_categories"

Строка # классифицируют

Возвращает строку имени класса из множественного имени таблицы, такого как Rails для имен таблиц для моделей.

'ham_and_eggs'.classify # => "HamAndEgg"
'posts'.classify        # => "Post"

Строка # Humanize

Заглавное слово первого слова, превращает подчеркивания в пробелы и разбивает конечный _id если он присутствует.

'employee_salary'.humanize              # => "Employee salary"
'author_id'.humanize                    # => "Author"
'author_id'.humanize(capitalize: false) # => "author"
'_id'.humanize                          # => "Id"

Строка # upcase_first

Преобразует только первый символ в верхний регистр.

'what a Lovely Day'.upcase_first # => "What a Lovely Day"
'w'.upcase_first                 # => "W"
''.upcase_first                  # => ""

Строка # foreign_key

Создает имя внешнего ключа из имени класса. Передайте false параметр, чтобы отключить добавление _ между именем и id .

'Message'.foreign_key        # => "message_id"
'Message'.foreign_key(false) # => "messageid"
'Admin::Post'.foreign_key    # => "post_id"


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow