Ruby on Rails
ActiveSupport
Recherche…
Remarques
ActiveSupport est un outil utilitaire d’outils à usage général utilisé par le reste du framework Rails.
L'une des principales façons dont il fournit ces outils consiste à comparer les types natifs de Ruby. Ceux-ci sont appelés extensions de base .
Extensions Core: accès aux chaînes
String # à
Renvoie une sous-chaîne d'un objet chaîne. Même interface que 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) # => ""
Chaîne # de
Renvoie une sous-chaîne de la position donnée à la fin de la chaîne.
str = "hello" str.from(0) # => "hello" str.from(3) # => "lo" str.from(-2) # => "lo"
Chaîne # à
Renvoie une sous-chaîne du début de la chaîne à la position donnée.
Si la position est négative, elle est comptée à partir de la fin de la chaîne.
str = "hello" str.to(0) # => "h" str.to(3) # => "hell" str.to(-2) # => "hell"
from
et to
peut être utilisé en tandem.
str = "hello" str.from(0).to(-1) # => "hello" str.from(1).to(-2) # => "ell"
String # en premier
Renvoie le premier caractère ou un nombre donné de caractères jusqu'à la longueur de la chaîne.
str = "hello" str.first # => "h" str.first(1) # => "h" str.first(2) # => "he" str.first(0) # => "" str.first(6) # => "hello"
String # last
Renvoie le dernier caractère ou un nombre donné de caractères à partir de la fin de la chaîne en comptant à rebours.
str = "hello" str.last # => "o" str.last(1) # => "o" str.last(2) # => "lo" str.last(0) # => "" str.last(6) # => "hello"
Core Extensions: Conversion de chaîne en date / heure
Chaîne # to_time
Convertit une chaîne en valeur Time. Le paramètre de form
peut être :utc
ou :local
, par défaut :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
Convertit une chaîne en valeur de 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
Convertit une chaîne en valeur 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
Extensions de base: exclusion de chaînes
Chaîne # exclure?
L'inverse de String#include?
"hello".exclude? "lo" # => false "hello".exclude? "ol" # => true "hello".exclude? ?h # => false
Core Extensions: Filtres de chaîne
String # squish
Renvoie une version de la chaîne donnée sans espace de début ou de fin et combine tous les espaces blancs consécutifs à l'intérieur des espaces. Version destructive de squish!
fonctionne directement sur l'instance de chaîne.
Gère les espaces blancs ASCII et Unicode.
%{ Multi-line string }.squish # => "Multi-line string" " foo bar \n \t boo".squish # => "foo bar boo"
String # supprimer
Retourne une nouvelle chaîne avec toutes les occurrences des motifs supprimés. Version destructive remove!
fonctionne directement sur la chaîne donnée.
str = "foo bar test" str.remove(" test") # => "foo bar" str.remove(" test", /bar/) # => "foo "
String # tronqué
Renvoie une copie d'une chaîne donnée tronquée à une longueur donnée si la chaîne est plus longue que la longueur.
'Once upon a time in a world far far away'.truncate(27) # => "Once upon a time in a wo..."
Passer une chaîne ou une expression rationnelle :separator
pour tronquer lors d'une rupture naturelle
'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
Renvoie une chaîne tronquée après un nombre de mots donné.
'Once upon a time in a world far far away'.truncate_words(4) # => "Once upon a time..."
Passer une chaîne ou une expression rationnelle pour spécifier un séparateur de mots différent
'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..."
Les derniers caractères seront remplacés par la chaîne :omission
(par défaut, "...")
'And they found that many people were sleeping better.'.truncate_words(5, omission: '... (continued)') # => "And they found that many... (continued)"
String # strip_heredoc
Bandes d'indentation dans heredocs. Recherche la ligne non vide la moins en retrait et supprime cette quantité d'espaces principaux.
if options[:usage] puts <<-USAGE.strip_heredoc This command does such and such. Supported options are: -h This message ... USAGE end
l'utilisateur verrait
This command does such and such.
Supported options are:
-h This message
...
Extensions Core: Inflection String
String # pluralize
Renvoie la forme plurielle de la chaîne. Prend éventuellement un paramètre de count
et retourne une forme singulière si count == 1
. Accepte également un locale
paramètres locale
pour la pluralisation spécifique à la langue.
'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 # singulariser
Renvoie la forme singulière de la chaîne. Accepte un locale
paramètres locale
facultatif.
'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"
Chaîne # constantize
Essaie de trouver une constante déclarée avec le nom spécifié dans la chaîne. Il déclenche une NameError
lorsque le nom n'est pas dans CamelCase ou n'est pas initialisé.
'Module'.constantize # => Module 'Class'.constantize # => Class 'blargle'.constantize # => NameError: wrong constant name blargle
String # safe_constantize
Effectue une constantize
mais renvoie nil
au lieu de NameError
.
'Module'.safe_constantize # => Module 'Class'.safe_constantize # => Class 'blargle'.safe_constantize # => nil
String # camelize
Convertit les chaînes en UpperCamelCase par défaut, si :lower
est donné en tant que param convertit à lowerCamelCase.
alias: camelcase
Remarque: convertira également /
vers ::
ce qui est utile pour convertir les chemins vers les espaces de noms.
'active_record'.camelize # => "ActiveRecord" 'active_record'.camelize(:lower) # => "activeRecord" 'active_record/errors'.camelize # => "ActiveRecord::Errors" 'active_record/errors'.camelize(:lower) # => "activeRecord::Errors"
String # titleize
Met en majuscule tous les mots et remplace certains caractères de la chaîne pour créer un titre plus joli.
alias: titlecase
'man from the boondocks'.titleize # => "Man From The Boondocks" 'x-men: the last stand'.titleize # => "X Men: The Last Stand"
String # souligné
Donne une forme soulignée, en minuscules, de l'expression de la chaîne. Le revers de camelize
.
Note: le underscore
changera aussi ::
to /
pour convertir les espaces de noms en chemins.
'ActiveModel'.underscore # => "active_model" 'ActiveModel::Errors'.underscore # => "active_model/errors"
String # dasherize
Remplace les traits de soulignement par des tirets dans la chaîne.
'puni_puni'.dasherize # => "puni-puni"
String # démodule
Supprime la partie module de l'expression constante de la chaîne.
'ActiveRecord::CoreExtensions::String::Inflections'.demodulize # => "Inflections" 'Inflections'.demodulize # => "Inflections" '::Inflections'.demodulize # => "Inflections" ''.demodulize # => ''
String # déconstantize
Supprime le segment le plus à droite de l'expression constante dans la chaîne.
'Net::HTTP'.deconstantize # => "Net" '::Net::HTTP'.deconstantize # => "::Net" 'String'.deconstantize # => "" '::String'.deconstantize # => "" ''.deconstantize # => ""
String # paramétrer
Remplace les caractères spéciaux d'une chaîne de manière à ce qu'elle puisse être utilisée dans le cadre d'une "jolie" URL.
"Donald E. Knuth".parameterize # => "donald-e-knuth"
Conservez la casse des caractères dans une chaîne avec l'argument :preserve_case
.
"Donald E. Knuth".parameterize(preserve_case: true) # => "Donald-E-Knuth"
Un cas d'utilisation très courant de parameterize
est de remplacer la méthode to_param
d'un modèle ActiveRecord pour prendre en charge des to_param
d'URL plus descriptifs.
class Person < ActiveRecord::Base def to_param "#{id}-#{name.parameterize}" end end Person.find(1).to_param # => "1-donald-e-knuth"
String # tableize
Crée le nom d'une table comme Rails fait pour les modèles aux noms de tables. Pluralise le dernier mot de la chaîne.
'RawScaledScorer'.tableize # => "raw_scaled_scorers" 'ham_and_egg'.tableize # => "ham_and_eggs" 'fancyCategory'.tableize # => "fancy_categories"
String # classifier
Renvoie une chaîne de nom de classe à partir d'un nom de table pluriel comme Rails pour les noms de table vers les modèles.
'ham_and_eggs'.classify # => "HamAndEgg" 'posts'.classify # => "Post"
Chaîne # humaniser
Met en majuscule le premier mot, transforme les traits de soulignement en espaces et supprime un _id
si présent.
'employee_salary'.humanize # => "Employee salary" 'author_id'.humanize # => "Author" 'author_id'.humanize(capitalize: false) # => "author" '_id'.humanize # => "Id"
String # upcase_first
Convertit juste le premier caractère en majuscule.
'what a Lovely Day'.upcase_first # => "What a Lovely Day" 'w'.upcase_first # => "W" ''.upcase_first # => ""
String # étrangères_key
Crée un nom de clé étrangère à partir d'un nom de classe. Passez false
param pour désactiver l'ajout de _
entre nom et id
.
'Message'.foreign_key # => "message_id" 'Message'.foreign_key(false) # => "messageid" 'Admin::Post'.foreign_key # => "post_id"