Szukaj…


Uwagi

ActiveSupport to klejnot narzędziowy narzędzi ogólnego zastosowania używanych przez resztę frameworka Rails.

Jednym z głównych sposobów dostarczania tych narzędzi jest śledzenie rodzimych typów Ruby. Są one określane jako rozszerzenia podstawowe .

Rozszerzenia rdzenia: ciąg dostępu

String # at

Zwraca podłańcuch obiektu łańcuchowego. Taki sam interfejs jak 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)  # => ""

Ciąg # z

Zwraca podciąg z podanej pozycji do końca łańcucha.

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

Ciąg # do

Zwraca podciąg z początku łańcucha do podanej pozycji.
Jeśli pozycja jest ujemna, jest liczona od końca łańcucha.

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

from to mogą być używane w tandemie.

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

Ciąg # pierwszy

Zwraca pierwszy znak lub określoną liczbę znaków do długości ciągu.

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

Ciąg # ostatni

Zwraca ostatni znak lub określoną liczbę znaków od końca ciągu licząc do tyłu.

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

Rozszerzenia podstawowe: Konwersja ciągu na datę / godzinę

Ciąg # to_time

Konwertuje ciąg na wartość Czas. Parametrem form może być :utc lub :local , domyślnie :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

Ciąg # to_date

Konwertuje ciąg na wartość Data.

"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

Ciąg # to_datetime

Konwertuje ciąg na wartość 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

Rozszerzenia rdzenia: Wykluczenie łańcucha

Ciąg # wykluczyć?

Odwrotność ciągu String#include?

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

Rozszerzenia rdzenia: filtry ciągów

String # squish

Zwraca wersję podanego ciągu bez początkowych lub końcowych białych znaków i łączy wszystkie kolejne białe znaki we wnętrzu z pojedynczymi spacjami. Wersja niszcząca squish! działa bezpośrednio na instancji ciągu.

Obsługuje zarówno białe znaki ASCII, jak i Unicode.

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

Ciąg # usuń

Zwraca nowy ciąg z usuniętymi wszystkimi wystąpieniami wzorców. Wersja destrukcyjna remove! działa bezpośrednio na podanym ciągu.

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

Łańcuch # obcięty

Zwraca kopię danego ciągu obciętego o określonej długości, jeśli ciąg jest dłuższy niż długość.

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

Przekaż ciąg lub wyrażenie regularne :separator aby obciąć przy naturalnym zerwaniu

'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..."

Ciąg # truncate_words

Zwraca ciąg obcięty po określonej liczbie słów.

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

Przekaż ciąg lub wyrażenie regularne, aby określić inny separator słów

'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..."

Ostatnie znaki zostaną zastąpione ciągiem :omission (domyślnie „...”)

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

Ciąg # strip_heredoc

Usuwa wcięcia w heredokach. Wyszukuje najmniej wciętą niepustą linię i usuwa tę ilość wiodących białych znaków.

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

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

użytkownik zobaczy

This command does such and such.

Supported options are:
-h         This message
...

Rozszerzenia rdzenia: ciąg infekcji

Ciąg # pluralizuj

Zwraca liczbę mnogą łańcucha. Opcjonalnie przyjmuje parametr count i zwraca liczbę pojedynczą, jeśli count == 1 . Akceptuje również parametr locale dla pluralizacji specyficznej dla języka.

'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"

String # singularize

Zwraca liczbę pojedynczą ciągu. Akceptuje opcjonalny parametr 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"

String # constantize

Próbuje znaleźć zadeklarowaną stałą o nazwie podanej w ciągu. Podnosi NameError gdy nazwa nie znajduje się w CamelCase lub nie została zainicjowana.

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

Ciąg # safe_constantize

Wykonuje constantize ale zwraca nil zamiast podnoszenia NameError .

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

Ciąg # camelize

Domyślnie konwertuje ciągi znaków do UpperCamelCase, jeśli :lower parametr podano :lower ponieważ zamiast tego parametr konwertuje ciąg znaków do lowerCamelCase.

alias: camelcase

Uwaga: konwertuje również / do :: co jest przydatne do konwersji ścieżek do przestrzeni nazw.

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

String # titleize

Wielkie słowa i wielkie litery zastępuje niektóre znaki w ciągu, aby stworzyć ładniejszy tytuł.

alias: titlecase

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

Ciąg # podkreślenia

Tworzy podkreśloną, małą literę z wyrażenia w ciągu. Odwrotność camelize .

Uwaga: underscore zmieni również :: na / aby przekonwertować przestrzenie nazw na ścieżki.

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

Ciąg # dasherize

Zastępuje podkreślenia myślnikami w ciągu.

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

String # demodulize

Usuwa część modułu ze stałego wyrażenia w ciągu.

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

String # dekonstantize

Usuwa segment z prawej strony ze stałego wyrażenia w ciągu.

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

Ciąg # parametryzacja

Zastępuje znaki specjalne w ciągu, dzięki czemu można ich używać jako części „ładnego” adresu URL.

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

Zachowaj wielkość liter w ciągu za pomocą argumentu :preserve_case .

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

Bardzo częstym przypadkiem użycia do parameterize jest przesłonięcie metody to_param modelu ActiveRecord w celu obsługi bardziej opisowych informacji o to_param URL.

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

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

String # tableize

Tworzy nazwę tabeli, tak jak robi to Railsy dla modeli do nazw tabel. Wykreśla liczbę mnogą ostatniego słowa w ciągu.

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

Ciąg # klasyfikuj

Zwraca ciąg nazwy klasy z liczby mnogiej nazwy tabeli, podobnie jak Rails dla nazw tabel do modeli.

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

String # humanize

Umieszcza wielkie słowo w pierwszym słowie, zamienia podkreślenia w spacje i usuwa końcowe _id jeśli jest obecne.

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

Ciąg # upcase_first

Konwertuje tylko pierwszy znak na wielkie litery.

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

Ciąg # klucz obcy

Tworzy nazwę klucza obcego na podstawie nazwy klasy. Przekazać false param do wyłączenia dodawania _ między nazwą i 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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow