Ruby on Rails
ActiveSupport
Zoeken…
Opmerkingen
ActiveSupport is een juweel van algemene tools die door de rest van het Rails-framework worden gebruikt.
Een van de belangrijkste manieren waarop het deze tools biedt, is door Ruby's native types te monitoren. Deze worden Core Extensions genoemd .
Core Extensions: String Access
String # bij
Retourneert een substring van een stringobject. Dezelfde interface als 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 # uit
Retourneert een substring van de gegeven positie naar het einde van de string.
str = "hello" str.from(0) # => "hello" str.from(3) # => "lo" str.from(-2) # => "lo"
String # om
Retourneert een substring vanaf het begin van de tekenreeks naar de opgegeven positie.
Als de positie negatief is, wordt deze geteld vanaf het einde van de string.
str = "hello" str.to(0) # => "h" str.to(3) # => "hell" str.to(-2) # => "hell"
from
en to
kunnen gelijktijdig worden gebruikt.
str = "hello" str.from(0).to(-1) # => "hello" str.from(1).to(-2) # => "ell"
String # eerste
Retourneert het eerste teken of een bepaald aantal tekens tot de lengte van de tekenreeks.
str = "hello" str.first # => "h" str.first(1) # => "h" str.first(2) # => "he" str.first(0) # => "" str.first(6) # => "hello"
String # laatste
Retourneert het laatste teken, of een bepaald aantal tekens vanaf het einde van de reeks die achteruit telt.
str = "hello" str.last # => "o" str.last(1) # => "o" str.last(2) # => "lo" str.last(0) # => "" str.last(6) # => "hello"
Core Extensions: String naar datum / tijd conversie
String # TO_TIME
Converteert een tekenreeks naar een tijdwaarde. De form
kan zijn :utc
of :local
, standaard ingesteld op :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
Converteert een tekenreeks naar een datumwaarde.
"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
Converteert een tekenreeks naar een DateTime-waarde.
"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
Core Extensions: String Exclusion
String # uitsluiten?
Het omgekeerde van String#include?
"hello".exclude? "lo" # => false "hello".exclude? "ol" # => true "hello".exclude? ?h # => false
Core Extensions: Stringfilters
String # squish
Retourneert een versie van de opgegeven tekenreeks zonder voorloop- of volgspaties en combineert alle opeenvolgende witruimten in het interieur tot enkele spaties. Destructieve versie squish!
werkt rechtstreeks op de stringinstantie.
Verwerkt zowel ASCII als Unicode witruimte.
%{ Multi-line string }.squish # => "Multi-line string" " foo bar \n \t boo".squish # => "foo bar boo"
String # verwijderen
Retourneert een nieuwe string met alle exemplaren van de patronen verwijderd. Destructieve versie remove!
werkt direct op de gegeven string.
str = "foo bar test" str.remove(" test") # => "foo bar" str.remove(" test", /bar/) # => "foo "
String # truncate
Retourneert een kopie van een gegeven tekenreeks die op een bepaalde lengte is afgekapt als de tekenreeks langer is dan de lengte.
'Once upon a time in a world far far away'.truncate(27) # => "Once upon a time in a wo..."
Geef een string of regexp :separator
om af te kappen bij een natuurlijke pauze
'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
Retourneert een afgekorte tekenreeks na een bepaald aantal woorden.
'Once upon a time in a world far far away'.truncate_words(4) # => "Once upon a time..."
Geef een tekenreeks of regexp door om een ander scheidingsteken voor woorden op te geven
'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..."
De laatste tekens worden vervangen door de :omission
string (standaard ingesteld op "...")
'And they found that many people were sleeping better.'.truncate_words(5, omission: '... (continued)') # => "And they found that many... (continued)"
String # strip_heredoc
Strips inspringen in heredocs. Zoekt naar de minst ingesprongen niet-lege regel en verwijdert die hoeveelheid voorloopruimte.
if options[:usage] puts <<-USAGE.strip_heredoc This command does such and such. Supported options are: -h This message ... USAGE end
de gebruiker zou het zien
This command does such and such.
Supported options are:
-h This message
...
Core Extensions: String-verbuiging
String # meervoudig maken
Retourneert de meervoudsvorm van de tekenreeks. Neemt optioneel een count
en retourneert een enkelvoud als count == 1
. Accepteert ook een locale
parameter voor taalspecifieke pluralisatie.
'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
Retourneert de enkelvoudige vorm van de tekenreeks. Accepteert een optionele locale
parameter.
'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
Probeert een aangegeven constante te vinden met de naam die is opgegeven in de tekenreeks. Het roept een NameError
als de naam niet in CamelCase staat of niet is geïnitialiseerd.
'Module'.constantize # => Module 'Class'.constantize # => Class 'blargle'.constantize # => NameError: wrong constant name blargle
String # safe_constantize
Voert een constantize
maar retourneert nil
plaats van NameError
verhogen.
'Module'.safe_constantize # => Module 'Class'.safe_constantize # => Class 'blargle'.safe_constantize # => nil
String # kameleren
Converteert standaard strings naar UpperCamelCase, als :lower
wordt gegeven als param in plaats daarvan wordt geconverteerd naar lowerCamelCase.
alias: camelcase
Opmerking: converteert ook /
naar ::
wat handig is voor het converteren van paden naar naamruimten.
'active_record'.camelize # => "ActiveRecord" 'active_record'.camelize(:lower) # => "activeRecord" 'active_record/errors'.camelize # => "ActiveRecord::Errors" 'active_record/errors'.camelize(:lower) # => "activeRecord::Errors"
String # titleize
Hoofdletters in alle woorden en vervangt enkele tekens in de tekenreeks om een mooiere titel te maken.
alias: titlecase
'man from the boondocks'.titleize # => "Man From The Boondocks" 'x-men: the last stand'.titleize # => "X Men: The Last Stand"
String # underscore
Maakt een onderstreepte, kleine vorm van de uitdrukking in de tekenreeks. Het omgekeerde van camelize
.
Opmerking: underscore
verandert ook ::
in /
om naamruimten naar paden te converteren.
'ActiveModel'.underscore # => "active_model" 'ActiveModel::Errors'.underscore # => "active_model/errors"
String # dasherize
Vervangt onderstrepingstekens door streepjes in de tekenreeks.
'puni_puni'.dasherize # => "puni-puni"
String # demodulize
Hiermee verwijdert u het modulegedeelte uit de constante uitdrukking in de tekenreeks.
'ActiveRecord::CoreExtensions::String::Inflections'.demodulize # => "Inflections" 'Inflections'.demodulize # => "Inflections" '::Inflections'.demodulize # => "Inflections" ''.demodulize # => ''
String # deconstantize
Hiermee verwijdert u het meest rechtse segment uit de constante uitdrukking in de tekenreeks.
'Net::HTTP'.deconstantize # => "Net" '::Net::HTTP'.deconstantize # => "::Net" 'String'.deconstantize # => "" '::String'.deconstantize # => "" ''.deconstantize # => ""
String # parametriseren
Vervangt speciale tekens in een tekenreeks zodat deze kan worden gebruikt als onderdeel van een 'mooie' URL.
"Donald E. Knuth".parameterize # => "donald-e-knuth"
Behoud het hoofdlettergebruik van de tekens in een tekenreeks met het argument :preserve_case
.
"Donald E. Knuth".parameterize(preserve_case: true) # => "Donald-E-Knuth"
Een veel voorkomende use-case voor parameterize
is het overschrijven van de to_param
methode van een ActiveRecord-model om meer beschrijvende url-naaktslakken te ondersteunen.
class Person < ActiveRecord::Base def to_param "#{id}-#{name.parameterize}" end end Person.find(1).to_param # => "1-donald-e-knuth"
String # tableize
Creëert de naam van een tabel zoals Rails doet voor modellen naar tabelnamen. Pluraliseert het laatste woord in de string.
'RawScaledScorer'.tableize # => "raw_scaled_scorers" 'ham_and_egg'.tableize # => "ham_and_eggs" 'fancyCategory'.tableize # => "fancy_categories"
String # classificeren
Retourneert een klassennaamreeks uit een meervoudige tabelnaam zoals Rails doet voor tabelnamen naar modellen.
'ham_and_eggs'.classify # => "HamAndEgg" 'posts'.classify # => "Post"
String # Humanize
Hoofdlettergebruik het eerste woord, verandert onderstrepingstekens in spaties en verwijdert een achterblijvende _id
indien aanwezig.
'employee_salary'.humanize # => "Employee salary" 'author_id'.humanize # => "Author" 'author_id'.humanize(capitalize: false) # => "author" '_id'.humanize # => "Id"
String # upcase_first
Converteert alleen het eerste teken naar hoofdletters.
'what a Lovely Day'.upcase_first # => "What a Lovely Day" 'w'.upcase_first # => "W" ''.upcase_first # => ""
String # foreign_key
Creëert een buitenlandse sleutelnaam uit een klassennaam. Geef false
parameter door om het toevoegen van _
tussen naam en id
te schakelen.
'Message'.foreign_key # => "message_id" 'Message'.foreign_key(false) # => "messageid" 'Admin::Post'.foreign_key # => "post_id"