Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
755af497
R
rails
项目概览
张重言
/
rails
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rails
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
755af497
编写于
7月 30, 2010
作者:
X
Xavier Noria
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
edit pass to apply API guideline wrt the use of "# =>" in example code
上级
a7a6a2ff
变更
19
显示空白变更内容
内联
并排
Showing
19 changed file
with
104 addition
and
103 deletion
+104
-103
actionmailer/lib/action_mailer/base.rb
actionmailer/lib/action_mailer/base.rb
+2
-2
actionpack/lib/action_dispatch/routing/url_for.rb
actionpack/lib/action_dispatch/routing/url_for.rb
+1
-1
activemodel/lib/active_model/conversion.rb
activemodel/lib/active_model/conversion.rb
+3
-3
activemodel/lib/active_model/errors.rb
activemodel/lib/active_model/errors.rb
+10
-10
activemodel/lib/active_model/naming.rb
activemodel/lib/active_model/naming.rb
+6
-3
activemodel/lib/active_model/translation.rb
activemodel/lib/active_model/translation.rb
+1
-1
activemodel/lib/active_model/validations.rb
activemodel/lib/active_model/validations.rb
+7
-11
activemodel/lib/active_model/validator.rb
activemodel/lib/active_model/validator.rb
+2
-2
activerecord/lib/active_record/nested_attributes.rb
activerecord/lib/active_record/nested_attributes.rb
+2
-2
activerecord/lib/active_record/relation.rb
activerecord/lib/active_record/relation.rb
+1
-1
activesupport/lib/active_support/core_ext/array/uniq_by.rb
activesupport/lib/active_support/core_ext/array/uniq_by.rb
+1
-1
activesupport/lib/active_support/core_ext/enumerable.rb
activesupport/lib/active_support/core_ext/enumerable.rb
+2
-1
activesupport/lib/active_support/core_ext/string/multibyte.rb
...vesupport/lib/active_support/core_ext/string/multibyte.rb
+5
-5
activesupport/lib/active_support/multibyte/chars.rb
activesupport/lib/active_support/multibyte/chars.rb
+37
-36
activesupport/lib/active_support/multibyte/unicode.rb
activesupport/lib/active_support/multibyte/unicode.rb
+4
-4
activesupport/lib/active_support/notifications.rb
activesupport/lib/active_support/notifications.rb
+3
-3
activesupport/lib/active_support/secure_random.rb
activesupport/lib/active_support/secure_random.rb
+13
-13
railties/lib/rails/generators/active_model.rb
railties/lib/rails/generators/active_model.rb
+3
-3
railties/lib/rails/generators/test_case.rb
railties/lib/rails/generators/test_case.rb
+1
-1
未找到文件。
actionmailer/lib/action_mailer/base.rb
浏览文件 @
755af497
...
...
@@ -496,10 +496,10 @@ def headers(args=nil)
# You can also search for specific attachments:
#
# # By Filename
# mail.attachments['filename.jpg'] #=> Mail::Part object or nil
# mail.attachments['filename.jpg'] #
=> Mail::Part object or nil
#
# # or by index
# mail.attachments[0] #=> Mail::Part (first attachment)
# mail.attachments[0] #
=> Mail::Part (first attachment)
#
def
attachments
@_message
.
attachments
...
...
actionpack/lib/action_dispatch/routing/url_for.rb
浏览文件 @
755af497
...
...
@@ -20,7 +20,7 @@ module Routing
# <%= link_to('Click here', :controller => 'users',
# :action => 'new', :message => 'Welcome!') %>
#
# #
=> Generates a link to:
/users/new?message=Welcome%21
# #
Generates a link to
/users/new?message=Welcome%21
#
# link_to, and all other functions that require URL generation functionality,
# actually use ActionController::UrlFor under the hood. And in particular,
...
...
activemodel/lib/active_model/conversion.rb
浏览文件 @
755af497
...
...
@@ -17,9 +17,9 @@ module ActiveModel
# end
#
# cm = ContactMessage.new
# cm.to_model == self #=> true
# cm.to_key #=> nil
# cm.to_param #=> nil
# cm.to_model == self #
=> true
# cm.to_key #
=> nil
# cm.to_param #
=> nil
#
module
Conversion
# If your object is already designed to implement all of the Active Model
...
...
activemodel/lib/active_model/errors.rb
浏览文件 @
755af497
...
...
@@ -83,8 +83,8 @@ def initialize(base)
# When passed a symbol or a name of a method, returns an array of errors
# for the method.
#
# p.errors[:name] #=> ["can not be nil"]
# p.errors['name'] #=> ["can not be nil"]
# p.errors[:name] #
=> ["can not be nil"]
# p.errors['name'] #
=> ["can not be nil"]
def
[]
(
attribute
)
if
errors
=
get
(
attribute
.
to_sym
)
errors
...
...
@@ -96,7 +96,7 @@ def [](attribute)
# Adds to the supplied attribute the supplied error message.
#
# p.errors[:name] = "must be set"
# p.errors[:name] #=> ['must be set']
# p.errors[:name] #
=> ['must be set']
def
[]=
(
attribute
,
error
)
self
[
attribute
.
to_sym
]
<<
error
end
...
...
@@ -124,9 +124,9 @@ def each
# Returns the number of error messages.
#
# p.errors.add(:name, "can't be blank")
# p.errors.size #=> 1
# p.errors.size #
=> 1
# p.errors.add(:name, "must be specified")
# p.errors.size #=> 2
# p.errors.size #
=> 2
def
size
values
.
flatten
.
size
end
...
...
@@ -135,16 +135,16 @@ def size
#
# p.errors.add(:name, "can't be blank")
# p.errors.add(:name, "must be specified")
# p.errors.to_a
#=>
["name can't be blank", "name must be specified"]
# p.errors.to_a
# =>
["name can't be blank", "name must be specified"]
def
to_a
full_messages
end
# Returns the number of error messages.
# p.errors.add(:name, "can't be blank")
# p.errors.count #=> 1
# p.errors.count #
=> 1
# p.errors.add(:name, "must be specified")
# p.errors.count #=> 2
# p.errors.count #
=> 2
def
count
to_a
.
size
end
...
...
@@ -158,8 +158,8 @@ def empty?
#
# p.errors.add(:name, "can't be blank")
# p.errors.add(:name, "must be specified")
# p.errors.to_xml
#=> Produces:
#
# p.errors.to_xml
#
# =>
# # <?xml version=\"1.0\" encoding=\"UTF-8\"?>
# # <errors>
# # <error>name can't be blank</error>
...
...
activemodel/lib/active_model/naming.rb
浏览文件 @
755af497
...
...
@@ -17,7 +17,10 @@ def initialize(klass)
end
# Transform the model name into a more humane format, using I18n. By default,
# it will underscore then humanize the class name (BlogPost.model_name.human #=> "Blog post").
# it will underscore then humanize the class name
#
# BlogPost.model_name.human # => "Blog post"
#
# Specify +options+ with additional translating options.
def
human
(
options
=
{})
return
@human
unless
@klass
.
respond_to?
(
:lookup_ancestors
)
&&
...
...
@@ -45,8 +48,8 @@ def human(options={})
# extend ActiveModel::Naming
# end
#
# BookCover.model_name #=> "BookCover"
# BookCover.model_name.human #=> "Book cover"
# BookCover.model_name #
=> "BookCover"
# BookCover.model_name.human #
=> "Book cover"
#
# Providing the functionality that ActiveModel::Naming provides in your object
# is required to pass the Active Model Lint test. So either extending the provided
...
...
activemodel/lib/active_model/translation.rb
浏览文件 @
755af497
...
...
@@ -14,7 +14,7 @@ module ActiveModel
# end
#
# TranslatedPerson.human_attribute_name('my_attribute')
# #=> "My attribute"
# #
=> "My attribute"
#
# This also provides the required class methods for hooking into the
# Rails internationalization API, including being able to define a
...
...
activemodel/lib/active_model/validations.rb
浏览文件 @
755af497
...
...
@@ -24,20 +24,16 @@ module ActiveModel
# end
#
# Which provides you with the full standard validation stack that you
# know from Active
Record.
# know from Active
Record:
#
# person = Person.new
# person.valid?
# #=> true
# person.invalid?
# #=> false
# person.valid? # => true
# person.invalid? # => false
#
# person.first_name = 'zoolander'
# person.valid?
# #=> false
# person.invalid?
# #=> true
# person.errors
# #=> #<OrderedHash {:first_name=>["starts with z."]}>
# person.valid? # => false
# person.invalid? # => true
# person.errors # => #<OrderedHash {:first_name=>["starts with z."]}>
#
# Note that ActiveModel::Validations automatically adds an +errors+ method
# to your instances initialized with a new ActiveModel::Errors object, so
...
...
activemodel/lib/active_model/validator.rb
浏览文件 @
755af497
...
...
@@ -102,8 +102,8 @@ class Validator
#
# == Examples
#
# PresenceValidator.kind
#
=> :presence
# UniquenessValidator.kind
#
=> :uniqueness
# PresenceValidator.kind
#
=> :presence
# UniquenessValidator.kind
#
=> :uniqueness
#
def
self
.
kind
@kind
||=
name
.
split
(
'::'
).
last
.
underscore
.
sub
(
/_validator$/
,
''
).
to_sym
unless
anonymous?
...
...
activerecord/lib/active_record/nested_attributes.rb
浏览文件 @
755af497
...
...
@@ -78,7 +78,7 @@ class TooManyRecords < ActiveRecordError
# member.avatar_attributes = { :id => '2', :_destroy => '1' }
# member.avatar.marked_for_destruction? # => true
# member.save
# member.reload.avatar #=> nil
# member.reload.avatar #
=> nil
#
# Note that the model will _not_ be destroyed until the parent is saved.
#
...
...
@@ -180,7 +180,7 @@ class TooManyRecords < ActiveRecordError
#
# member.attributes = params['member']
# member.posts.detect { |p| p.id == 2 }.marked_for_destruction? # => true
# member.posts.length #=> 2
# member.posts.length #
=> 2
# member.save
# member.reload.posts.length # => 1
#
...
...
activerecord/lib/active_record/relation.rb
浏览文件 @
755af497
...
...
@@ -108,7 +108,7 @@ def many?
# ==== Example
#
# Comment.where(:post_id => 1).scoping do
# Comment.first #
=>
SELECT * FROM comments WHERE post_id = 1
# Comment.first # SELECT * FROM comments WHERE post_id = 1
# end
#
# Please check unscoped if you want to remove all previous scopes (including
...
...
activesupport/lib/active_support/core_ext/array/uniq_by.rb
浏览文件 @
755af497
...
...
@@ -2,7 +2,7 @@ class Array
# Return an unique array based on the criteria given as a proc.
#
# [1, 2, 3, 4].uniq_by { |i| i.odd? }
# #=> [1, 2]
# #
=> [1, 2]
#
def
uniq_by
hash
,
array
=
{},
[]
...
...
activesupport/lib/active_support/core_ext/enumerable.rb
浏览文件 @
755af497
...
...
@@ -66,7 +66,8 @@ def sum(identity = 0, &block)
# +memo+ to the block. Handy for building up hashes or
# reducing collections down to one object. Examples:
#
# %w(foo bar).each_with_object({}) { |str, hsh| hsh[str] = str.upcase } #=> {'foo' => 'FOO', 'bar' => 'BAR'}
# %w(foo bar).each_with_object({}) { |str, hsh| hsh[str] = str.upcase }
# # => {'foo' => 'FOO', 'bar' => 'BAR'}
#
# *Note* that you can't use immutable objects like numbers, true or false as
# the memo. You would think the following returns 120, but since the memo is
...
...
activesupport/lib/active_support/core_ext/string/multibyte.rb
浏览文件 @
755af497
...
...
@@ -12,11 +12,11 @@ class String
# class. If the proxy class doesn't respond to a certain method, it's forwarded to the encapsuled string.
#
# name = 'Claus Müller'
# name.reverse
#
=> "rell??M sualC"
# name.length
#
=> 13
# name.reverse
#
=> "rell??M sualC"
# name.length
#
=> 13
#
# name.mb_chars.reverse.to_s
#
=> "rellüM sualC"
# name.mb_chars.length
#
=> 12
# name.mb_chars.reverse.to_s
#
=> "rellüM sualC"
# name.mb_chars.length
#
=> 12
#
# In Ruby 1.9 and newer +mb_chars+ returns +self+ because String is (mostly) encoding aware. This means that
# it becomes easy to run one version of your code on multiple Ruby versions.
...
...
@@ -26,7 +26,7 @@ class String
# All the methods on the Chars proxy which normally return a string will return a Chars object. This allows
# method chaining on the result of any of these methods.
#
# name.mb_chars.reverse.length #=> 12
# name.mb_chars.reverse.length #
=> 12
#
# == Interoperability and configuration
#
...
...
activesupport/lib/active_support/multibyte/chars.rb
浏览文件 @
755af497
...
...
@@ -11,7 +11,7 @@ module Multibyte #:nodoc:
# String methods are proxied through the Chars object, and can be accessed through the +mb_chars+ method. Methods
# which would normally return a String object now return a Chars object so methods can be chained.
#
# "The Perfect String ".mb_chars.downcase.strip.normalize #=> "the perfect string"
# "The Perfect String ".mb_chars.downcase.strip.normalize #
=> "the perfect string"
#
# Chars objects are perfectly interchangeable with String objects as long as no explicit class checks are made.
# If certain methods do explicitly check the class, call +to_s+ before you pass chars objects to them.
...
...
@@ -83,12 +83,13 @@ def self.consumes?(string)
include
Comparable
# Returns
<tt>-1</tt>, <tt>0</tt> or <tt>+1</tt>
depending on whether the Chars object is to be sorted before,
# equal or after the object on the right side of the operation. It accepts any object
that implements +to_s+.
#
See <tt>String#<=></tt> for more details.
# Returns
-1, 0, or 1,
depending on whether the Chars object is to be sorted before,
# equal or after the object on the right side of the operation. It accepts any object
#
that implements +to_s+:
#
# Example:
# 'é'.mb_chars <=> 'ü'.mb_chars #=> -1
# 'é'.mb_chars <=> 'ü'.mb_chars # => -1
#
# See <tt>String#<=></tt> for more details.
def
<
=>
(
other
)
@wrapped_string
<=>
other
.
to_s
end
...
...
@@ -103,7 +104,7 @@ def self.wants?(string)
# Returns a new Chars object containing the _other_ object concatenated to the string.
#
# Example:
# ('Café'.mb_chars + ' périferôl').to_s #=> "Café périferôl"
# ('Café'.mb_chars + ' périferôl').to_s #
=> "Café périferôl"
def
+
(
other
)
chars
(
@wrapped_string
+
other
)
end
...
...
@@ -111,7 +112,7 @@ def +(other)
# Like <tt>String#=~</tt> only it returns the character offset (in codepoints) instead of the byte offset.
#
# Example:
# 'Café périferôl'.mb_chars =~ /ô/ #=> 12
# 'Café périferôl'.mb_chars =~ /ô/ #
=> 12
def
=~
(
other
)
translate_offset
(
@wrapped_string
=~
other
)
end
...
...
@@ -119,7 +120,7 @@ def =~(other)
# Inserts the passed string at specified codepoint offsets.
#
# Example:
# 'Café'.mb_chars.insert(4, ' périferôl').to_s #=> "Café périferôl"
# 'Café'.mb_chars.insert(4, ' périferôl').to_s #
=> "Café périferôl"
def
insert
(
offset
,
fragment
)
unpacked
=
Unicode
.
u_unpack
(
@wrapped_string
)
unless
offset
>
unpacked
.
length
...
...
@@ -135,7 +136,7 @@ def insert(offset, fragment)
# Returns +true+ if contained string contains _other_. Returns +false+ otherwise.
#
# Example:
# 'Café'.mb_chars.include?('é') #=> true
# 'Café'.mb_chars.include?('é') #
=> true
def
include?
(
other
)
# We have to redefine this method because Enumerable defines it.
@wrapped_string
.
include?
(
other
)
...
...
@@ -144,8 +145,8 @@ def include?(other)
# Returns the position _needle_ in the string, counting in codepoints. Returns +nil+ if _needle_ isn't found.
#
# Example:
# 'Café périferôl'.mb_chars.index('ô')
#
=> 12
# 'Café périferôl'.mb_chars.index(/\w/u) #=> 0
# 'Café périferôl'.mb_chars.index('ô')
#
=> 12
# 'Café périferôl'.mb_chars.index(/\w/u) #
=> 0
def
index
(
needle
,
offset
=
0
)
wrapped_offset
=
first
(
offset
).
wrapped_string
.
length
index
=
@wrapped_string
.
index
(
needle
,
wrapped_offset
)
...
...
@@ -157,8 +158,8 @@ def index(needle, offset=0)
# string. Returns +nil+ if _needle_ isn't found.
#
# Example:
# 'Café périferôl'.mb_chars.rindex('é')
#
=> 6
# 'Café périferôl'.mb_chars.rindex(/\w/u) #=> 13
# 'Café périferôl'.mb_chars.rindex('é')
#
=> 6
# 'Café périferôl'.mb_chars.rindex(/\w/u) #
=> 13
def
rindex
(
needle
,
offset
=
nil
)
offset
||=
length
wrapped_offset
=
first
(
offset
).
wrapped_string
.
length
...
...
@@ -190,7 +191,7 @@ def strip
# Returns the codepoint of the first character in the string.
#
# Example:
# 'こんにちは'.mb_chars.ord #=> 12371
# 'こんにちは'.mb_chars.ord #
=> 12371
def
ord
Unicode
.
u_unpack
(
@wrapped_string
)[
0
]
end
...
...
@@ -200,10 +201,10 @@ def ord
# Example:
#
# "¾ cup".mb_chars.rjust(8).to_s
# #=> " ¾ cup"
# #
=> " ¾ cup"
#
# "¾ cup".mb_chars.rjust(8, " ").to_s # Use non-breaking whitespace
# #=> " ¾ cup"
# #
=> " ¾ cup"
def
rjust
(
integer
,
padstr
=
' '
)
justify
(
integer
,
:right
,
padstr
)
end
...
...
@@ -213,10 +214,10 @@ def rjust(integer, padstr=' ')
# Example:
#
# "¾ cup".mb_chars.rjust(8).to_s
# #=> "¾ cup "
# #
=> "¾ cup "
#
# "¾ cup".mb_chars.rjust(8, " ").to_s # Use non-breaking whitespace
# #=> "¾ cup "
# #
=> "¾ cup "
def
ljust
(
integer
,
padstr
=
' '
)
justify
(
integer
,
:left
,
padstr
)
end
...
...
@@ -226,10 +227,10 @@ def ljust(integer, padstr=' ')
# Example:
#
# "¾ cup".mb_chars.center(8).to_s
# #=> " ¾ cup "
# #
=> " ¾ cup "
#
# "¾ cup".mb_chars.center(8, " ").to_s # Use non-breaking whitespace
# #=> " ¾ cup "
# #
=> " ¾ cup "
def
center
(
integer
,
padstr
=
' '
)
justify
(
integer
,
:center
,
padstr
)
end
...
...
@@ -244,7 +245,7 @@ def =~(other)
# instances instead of String. This makes chaining methods easier.
#
# Example:
# 'Café périferôl'.mb_chars.split(/é/).map { |part| part.upcase.to_s } #=> ["CAF", " P", "RIFERÔL"]
# 'Café périferôl'.mb_chars.split(/é/).map { |part| part.upcase.to_s } #
=> ["CAF", " P", "RIFERÔL"]
def
split
(
*
args
)
@wrapped_string
.
split
(
*
args
).
map
{
|
i
|
i
.
mb_chars
}
end
...
...
@@ -256,12 +257,12 @@ def split(*args)
# s = "Müller"
# s.mb_chars[2] = "e" # Replace character with offset 2
# s
# #=> "Müeler"
# #
=> "Müeler"
#
# s = "Müller"
# s.mb_chars[1, 2] = "ö" # Replace 2 characters at character offset 1
# s
# #=> "Möler"
# #
=> "Möler"
def
[]=
(
*
args
)
replace_by
=
args
.
pop
# Indexed replace with regular expressions already works
...
...
@@ -292,7 +293,7 @@ def []=(*args)
# Reverses all characters in the string.
#
# Example:
# 'Café'.mb_chars.reverse.to_s #=> 'éfaC'
# 'Café'.mb_chars.reverse.to_s #
=> 'éfaC'
def
reverse
chars
(
Unicode
.
g_unpack
(
@wrapped_string
).
reverse
.
flatten
.
pack
(
'U*'
))
end
...
...
@@ -301,7 +302,7 @@ def reverse
# character.
#
# Example:
# 'こんにちは'.mb_chars.slice(2..3).to_s #=> "にち"
# 'こんにちは'.mb_chars.slice(2..3).to_s #
=> "にち"
def
slice
(
*
args
)
if
args
.
size
>
2
raise
ArgumentError
,
"wrong number of arguments (
#{
args
.
size
}
for 1)"
# Do as if we were native
...
...
@@ -330,7 +331,7 @@ def slice(*args)
#
# Example:
# s = 'こんにちは'
# s.mb_chars.limit(7) #=> "こに"
# s.mb_chars.limit(7) #
=> "こに"
def
limit
(
limit
)
slice
(
0
...
translate_offset
(
limit
))
end
...
...
@@ -338,7 +339,7 @@ def limit(limit)
# Convert characters in the string to uppercase.
#
# Example:
# 'Laurent, où sont les tests ?'.mb_chars.upcase.to_s #=> "LAURENT, OÙ SONT LES TESTS ?"
# 'Laurent, où sont les tests ?'.mb_chars.upcase.to_s #
=> "LAURENT, OÙ SONT LES TESTS ?"
def
upcase
chars
(
Unicode
.
apply_mapping
@wrapped_string
,
:uppercase_mapping
)
end
...
...
@@ -346,7 +347,7 @@ def upcase
# Convert characters in the string to lowercase.
#
# Example:
# 'VĚDA A VÝZKUM'.mb_chars.downcase.to_s #=> "věda a výzkum"
# 'VĚDA A VÝZKUM'.mb_chars.downcase.to_s #
=> "věda a výzkum"
def
downcase
chars
(
Unicode
.
apply_mapping
@wrapped_string
,
:lowercase_mapping
)
end
...
...
@@ -354,7 +355,7 @@ def downcase
# Converts the first character to uppercase and the remainder to lowercase.
#
# Example:
# 'über'.mb_chars.capitalize.to_s #=> "Über"
# 'über'.mb_chars.capitalize.to_s #
=> "Über"
def
capitalize
(
slice
(
0
)
||
chars
(
''
)).
upcase
+
(
slice
(
1
..-
1
)
||
chars
(
''
)).
downcase
end
...
...
@@ -382,8 +383,8 @@ def normalize(form = nil)
# Performs canonical decomposition on all the characters.
#
# Example:
# 'é'.length
#
=> 2
# 'é'.mb_chars.decompose.to_s.length #=> 3
# 'é'.length
#
=> 2
# 'é'.mb_chars.decompose.to_s.length #
=> 3
def
decompose
chars
(
Unicode
.
decompose_codepoints
(
:canonical
,
Unicode
.
u_unpack
(
@wrapped_string
)).
pack
(
'U*'
))
end
...
...
@@ -391,8 +392,8 @@ def decompose
# Performs composition on all the characters.
#
# Example:
# 'é'.length
#
=> 3
# 'é'.mb_chars.compose.to_s.length #=> 2
# 'é'.length
#
=> 3
# 'é'.mb_chars.compose.to_s.length #
=> 2
def
compose
chars
(
Unicode
.
compose_codepoints
(
Unicode
.
u_unpack
(
@wrapped_string
)).
pack
(
'U*'
))
end
...
...
@@ -400,8 +401,8 @@ def compose
# Returns the number of grapheme clusters in the string.
#
# Example:
# 'क्षि'.mb_chars.length
#
=> 4
# 'क्षि'.mb_chars.g_length #=> 3
# 'क्षि'.mb_chars.length
#
=> 4
# 'क्षि'.mb_chars.g_length #
=> 3
def
g_length
Unicode
.
g_unpack
(
@wrapped_string
).
length
end
...
...
activesupport/lib/active_support/multibyte/unicode.rb
浏览文件 @
755af497
...
...
@@ -64,7 +64,7 @@ def self.codepoints_to_pattern(array_of_codepoints) #:nodoc:
# valid UTF-8.
#
# Example:
# Unicode.u_unpack('Café') #=> [67, 97, 102, 233]
# Unicode.u_unpack('Café') #
=> [67, 97, 102, 233]
def
u_unpack
(
string
)
begin
string
.
unpack
'U*'
...
...
@@ -85,8 +85,8 @@ def in_char_class?(codepoint, classes)
# Unpack the string at grapheme boundaries. Returns a list of character lists.
#
# Example:
# Unicode.g_unpack('क्षि') #=> [[2325, 2381], [2359], [2367]]
# Unicode.g_unpack('Café') #=> [[67], [97], [102], [233]]
# Unicode.g_unpack('क्षि') #
=> [[2325, 2381], [2359], [2367]]
# Unicode.g_unpack('Café') #
=> [[67], [97], [102], [233]]
def
g_unpack
(
string
)
codepoints
=
u_unpack
(
string
)
unpacked
=
[]
...
...
@@ -120,7 +120,7 @@ def g_unpack(string)
# Reverse operation of g_unpack.
#
# Example:
# Unicode.g_pack(Unicode.g_unpack('क्षि')) #=> 'क्षि'
# Unicode.g_pack(Unicode.g_unpack('क्षि')) #
=> 'क्षि'
def
g_pack
(
unpacked
)
(
unpacked
.
flatten
).
pack
(
'U*'
)
end
...
...
activesupport/lib/active_support/notifications.rb
浏览文件 @
755af497
...
...
@@ -22,9 +22,9 @@ module ActiveSupport
# end
#
# event = @events.first
# event.name #=> :render
# event.duration #=> 10 (in milliseconds)
# event.payload #=> { :extra => :information }
# event.name #
=> :render
# event.duration #
=> 10 (in milliseconds)
# event.payload #
=> { :extra => :information }
#
# When subscribing to Notifications, you can pass a pattern, to only consume
# events that match the pattern:
...
...
activesupport/lib/active_support/secure_random.rb
浏览文件 @
755af497
...
...
@@ -26,25 +26,25 @@ module ActiveSupport
# == Example
#
# # random hexadecimal string.
# p SecureRandom.hex(10) #=> "52750b30ffbc7de3b362"
# p SecureRandom.hex(10) #=> "92b15d6c8dc4beb5f559"
# p SecureRandom.hex(11) #=> "6aca1b5c58e4863e6b81b8"
# p SecureRandom.hex(12) #=> "94b2fff3e7fd9b9c391a2306"
# p SecureRandom.hex(13) #=> "39b290146bea6ce975c37cfc23"
# p SecureRandom.hex(10) #
=> "52750b30ffbc7de3b362"
# p SecureRandom.hex(10) #
=> "92b15d6c8dc4beb5f559"
# p SecureRandom.hex(11) #
=> "6aca1b5c58e4863e6b81b8"
# p SecureRandom.hex(12) #
=> "94b2fff3e7fd9b9c391a2306"
# p SecureRandom.hex(13) #
=> "39b290146bea6ce975c37cfc23"
# ...
#
# # random base64 string.
# p SecureRandom.base64(10) #=> "EcmTPZwWRAozdA=="
# p SecureRandom.base64(10) #=> "9b0nsevdwNuM/w=="
# p SecureRandom.base64(10) #=> "KO1nIU+p9DKxGg=="
# p SecureRandom.base64(11) #=> "l7XEiFja+8EKEtY="
# p SecureRandom.base64(12) #=> "7kJSM/MzBJI+75j8"
# p SecureRandom.base64(13) #=> "vKLJ0tXBHqQOuIcSIg=="
# p SecureRandom.base64(10) #
=> "EcmTPZwWRAozdA=="
# p SecureRandom.base64(10) #
=> "9b0nsevdwNuM/w=="
# p SecureRandom.base64(10) #
=> "KO1nIU+p9DKxGg=="
# p SecureRandom.base64(11) #
=> "l7XEiFja+8EKEtY="
# p SecureRandom.base64(12) #
=> "7kJSM/MzBJI+75j8"
# p SecureRandom.base64(13) #
=> "vKLJ0tXBHqQOuIcSIg=="
# ...
#
# # random binary string.
# p SecureRandom.random_bytes(10) #=> "\016\t{\370g\310pbr\301"
# p SecureRandom.random_bytes(10) #=> "\323U\030TO\234\357\020\a\337"
# p SecureRandom.random_bytes(10) #
=> "\016\t{\370g\310pbr\301"
# p SecureRandom.random_bytes(10) #
=> "\323U\030TO\234\357\020\a\337"
# ...
module
SecureRandom
# SecureRandom.random_bytes generates a random binary string.
...
...
railties/lib/rails/generators/active_model.rb
浏览文件 @
755af497
...
...
@@ -9,16 +9,16 @@ module Generators
# For example:
#
# ActiveRecord::Generators::ActiveModel.find(Foo, "params[:id]")
# #=> "Foo.find(params[:id])"
# #
=> "Foo.find(params[:id])"
#
# Datamapper::Generators::ActiveModel.find(Foo, "params[:id]")
# #=> "Foo.get(params[:id])"
# #
=> "Foo.get(params[:id])"
#
# On initialization, the ActiveModel accepts the instance name that will
# receive the calls:
#
# builder = ActiveRecord::Generators::ActiveModel.new "@foo"
# builder.save #=> "@foo.save"
# builder.save #
=> "@foo.save"
#
# The only exception in ActiveModel for ActiveRecord is the use of self.build
# instead of self.new.
...
...
railties/lib/rails/generators/test_case.rb
浏览文件 @
755af497
...
...
@@ -68,7 +68,7 @@ def self.destination(path)
# Captures the given stream and returns it:
#
# stream = capture(:stdout){ puts "Cool" }
# stream #=> "Cool\n"
# stream #
=> "Cool\n"
#
def
capture
(
stream
)
begin
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录