Ruby on Rails
ActiveSupport
Ricerca…
Osservazioni
ActiveSupport è una utility gemma di strumenti generici utilizzati dal resto del framework Rails.
Uno dei principali modi in cui fornisce questi strumenti consiste nel tenere traccia dei tipi nativi di Ruby. Questi sono indicati come le estensioni del nucleo .
Estensioni principali: accesso con stringhe
String # a
Restituisce una sottostringa di un oggetto stringa. Stessa interfaccia di 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) # => ""
String # da
Restituisce una sottostringa dalla posizione data alla fine della stringa.
str = "hello" str.from(0) # => "hello" str.from(3) # => "lo" str.from(-2) # => "lo"
String # per
Restituisce una sottostringa dall'inizio della stringa alla posizione specificata.
Se la posizione è negativa, viene contata dalla fine della stringa.
str = "hello" str.to(0) # => "h" str.to(3) # => "hell" str.to(-2) # => "hell"
from
e to
poter essere usato in tandem.
str = "hello" str.from(0).to(-1) # => "hello" str.from(1).to(-2) # => "ell"
String # primo
Restituisce il primo carattere o un determinato numero di caratteri fino alla lunghezza della stringa.
str = "hello" str.first # => "h" str.first(1) # => "h" str.first(2) # => "he" str.first(0) # => "" str.first(6) # => "hello"
String # ultima
Restituisce l'ultimo carattere o un determinato numero di caratteri dalla fine della stringa contando all'indietro.
str = "hello" str.last # => "o" str.last(1) # => "o" str.last(2) # => "lo" str.last(0) # => "" str.last(6) # => "hello"
Estensioni principali: conversione da stringa a data / ora
String # to_time
Converte una stringa in un valore Time. Il parametro del form
può essere :utc
o :local
, il valore predefinito è :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
String # to_date
Converte una stringa in un valore 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
String # to_datetime
Converte una stringa in un valore 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
Estensioni principali: esclusione dalla stringa
String # escludono?
L'inverso di String#include?
"hello".exclude? "lo" # => false "hello".exclude? "ol" # => true "hello".exclude? ?h # => false
Estensioni principali: filtri stringa
String # squish
Restituisce una versione della stringa specificata senza spazi vuoti iniziali o finali e combina tutti gli spazi bianchi consecutivi all'interno in spazi singoli. Squish versione distruttiva squish!
opera direttamente sull'istanza della stringa.
Gestisce sia gli spazi bianchi ASCII che Unicode.
%{ Multi-line string }.squish # => "Multi-line string" " foo bar \n \t boo".squish # => "foo bar boo"
String # remove
Restituisce una nuova stringa con tutte le occorrenze dei modelli rimossi. La versione distruttiva remove!
opera direttamente sulla stringa data.
str = "foo bar test" str.remove(" test") # => "foo bar" str.remove(" test", /bar/) # => "foo "
String # troncare
Restituisce una copia di una data stringa troncata ad una lunghezza specifica se la stringa è più lunga della lunghezza.
'Once upon a time in a world far far away'.truncate(27) # => "Once upon a time in a wo..."
Passa una stringa o regexp :separator
per troncare in una naturale interruzione
'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..."
String # truncate_words
Restituisce una stringa troncata dopo un determinato numero di parole.
'Once upon a time in a world far far away'.truncate_words(4) # => "Once upon a time..."
Passa una stringa o regexp per specificare un diverso separatore di parole
'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..."
Gli ultimi caratteri saranno sostituiti con :omission
string (predefinito su "...")
'And they found that many people were sleeping better.'.truncate_words(5, omission: '... (continued)') # => "And they found that many... (continued)"
String # strip_heredoc
Indentazione di strisce in heredocs. Cerca la linea non vuota meno rientrata e rimuove quella quantità di spazi bianchi iniziali.
if options[:usage] puts <<-USAGE.strip_heredoc This command does such and such. Supported options are: -h This message ... USAGE end
l'utente vedrebbe
This command does such and such.
Supported options are:
-h This message
...
Core Extensions: String Inflection
String # plurale
Ritorni della forma plurale della stringa. Facoltativamente, accetta un parametro di count
e restituisce una forma singolare se count == 1
. Accetta anche un parametro locale
per la pluralizzazione specifica della lingua.
'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 # singolarizzare
Restituisce la forma singolare della stringa. Accetta un parametro locale
opzionale.
'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
Cerca di trovare una costante dichiarata con il nome specificato nella stringa. Solleva un NameError
quando il nome non è in CamelCase o non è inizializzato.
'Module'.constantize # => Module 'Class'.constantize # => Class 'blargle'.constantize # => NameError: wrong constant name blargle
String # safe_constantize
Esegue una constantize
ma restituisce nil
invece di sollevare NameError
.
'Module'.safe_constantize # => Module 'Class'.safe_constantize # => Class 'blargle'.safe_constantize # => nil
String # camelize
Converte le stringhe in UpperCamelCase per impostazione predefinita, se :lower
viene dato come param converte in lowerCamelCase.
alias: camelcase
Nota: sarà anche convertire /
a ::
che è utile per la conversione di percorsi per gli spazi dei nomi.
'active_record'.camelize # => "ActiveRecord" 'active_record'.camelize(:lower) # => "activeRecord" 'active_record/errors'.camelize # => "ActiveRecord::Errors" 'active_record/errors'.camelize(:lower) # => "activeRecord::Errors"
String # titleize
Capitalizza tutte le parole e sostituisce alcuni caratteri nella stringa per creare un titolo dall'aspetto più gradevole.
alias: titlecase
'man from the boondocks'.titleize # => "Man From The Boondocks" 'x-men: the last stand'.titleize # => "X Men: The Last Stand"
String # sottolineano
Crea una forma in lettere minuscole sottolineata dall'espressione nella stringa. Il contrario di camelize
.
Nota: il carattere di underscore
cambierà anche ::
in /
per convertire spazi dei nomi in tracciati.
'ActiveModel'.underscore # => "active_model" 'ActiveModel::Errors'.underscore # => "active_model/errors"
String # dasherize
Sostituisce i trattini bassi con trattini nella stringa.
'puni_puni'.dasherize # => "puni-puni"
String # demodulize
Rimuove la parte del modulo dall'espressione costante nella stringa.
'ActiveRecord::CoreExtensions::String::Inflections'.demodulize # => "Inflections" 'Inflections'.demodulize # => "Inflections" '::Inflections'.demodulize # => "Inflections" ''.demodulize # => ''
String # deconstantize
Rimuove il segmento più a destra dall'espressione costante nella stringa.
'Net::HTTP'.deconstantize # => "Net" '::Net::HTTP'.deconstantize # => "::Net" 'String'.deconstantize # => "" '::String'.deconstantize # => "" ''.deconstantize # => ""
String # Parametrizzazione
Sostituisce caratteri speciali in una stringa in modo che possa essere utilizzato come parte di un URL "carino".
"Donald E. Knuth".parameterize # => "donald-e-knuth"
Conserva il caso dei caratteri in una stringa con l'argomento :preserve_case
.
"Donald E. Knuth".parameterize(preserve_case: true) # => "Donald-E-Knuth"
Un caso d'uso molto comune per parameterize
è sovrascrivere il metodo to_param
di un modello ActiveRecord per supportare più slug url descrittivi.
class Person < ActiveRecord::Base def to_param "#{id}-#{name.parameterize}" end end Person.find(1).to_param # => "1-donald-e-knuth"
String # tableize
Crea il nome di una tabella come fa Rails per i modelli ai nomi delle tabelle. Pluralizza l'ultima parola nella stringa.
'RawScaledScorer'.tableize # => "raw_scaled_scorers" 'ham_and_egg'.tableize # => "ham_and_eggs" 'fancyCategory'.tableize # => "fancy_categories"
String # classificano
Restituisce una stringa di nome di classe da un nome di tabella plurale come Rails per i nomi di tabelle per i modelli.
'ham_and_eggs'.classify # => "HamAndEgg" 'posts'.classify # => "Post"
String # umanizzare
_id
maiuscolo la prima parola, trasforma i caratteri di sottolineatura in spazi e toglie uno _id
finale se presente.
'employee_salary'.humanize # => "Employee salary" 'author_id'.humanize # => "Author" 'author_id'.humanize(capitalize: false) # => "author" '_id'.humanize # => "Id"
String # upcase_first
Converte solo il primo carattere in maiuscolo.
'what a Lovely Day'.upcase_first # => "What a Lovely Day" 'w'.upcase_first # => "W" ''.upcase_first # => ""
String # foreign_key
Crea un nome di chiave esterna da un nome di classe. Passa false
param per disabilitare l'aggiunta di _
tra nome ed id
.
'Message'.foreign_key # => "message_id" 'Message'.foreign_key(false) # => "messageid" 'Admin::Post'.foreign_key # => "post_id"