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"


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow