Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
b81bef53
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,发现更多精彩内容 >>
提交
b81bef53
编写于
1月 05, 2012
作者:
N
Norman Clarke
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Just use Ruby's String#[]=
上级
46579340
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
0 addition
and
46 deletion
+0
-46
activesupport/lib/active_support/multibyte/chars.rb
activesupport/lib/active_support/multibyte/chars.rb
+0
-41
activesupport/test/multibyte_chars_test.rb
activesupport/test/multibyte_chars_test.rb
+0
-5
未找到文件。
activesupport/lib/active_support/multibyte/chars.rb
浏览文件 @
b81bef53
...
...
@@ -80,47 +80,6 @@ def split(*args)
@wrapped_string
.
split
(
*
args
).
map
{
|
i
|
i
.
mb_chars
}
end
# Like <tt>String#[]=</tt>, except instead of byte offsets you specify character offsets.
#
# Example:
#
# s = "Müller"
# s.mb_chars[2] = "e" # Replace character with offset 2
# s
# # => "Müeler"
#
# s = "Müller"
# s.mb_chars[1, 2] = "ö" # Replace 2 characters at character offset 1
# s
# # => "Möler"
def
[]=
(
*
args
)
replace_by
=
args
.
pop
# Indexed replace with regular expressions already works
if
args
.
first
.
is_a?
(
Regexp
)
@wrapped_string
[
*
args
]
=
replace_by
else
result
=
Unicode
.
u_unpack
(
@wrapped_string
)
case
args
.
first
when
Fixnum
raise
IndexError
,
"index
#{
args
[
0
]
}
out of string"
if
args
[
0
]
>=
result
.
length
min
=
args
[
0
]
max
=
args
[
1
].
nil?
?
min
:
(
min
+
args
[
1
]
-
1
)
range
=
Range
.
new
(
min
,
max
)
replace_by
=
[
replace_by
].
pack
(
'U'
)
if
replace_by
.
is_a?
(
Fixnum
)
when
Range
raise
RangeError
,
"
#{
args
[
0
]
}
out of range"
if
args
[
0
].
min
>=
result
.
length
range
=
args
[
0
]
else
needle
=
args
[
0
].
to_s
min
=
index
(
needle
)
max
=
min
+
Unicode
.
u_unpack
(
needle
).
length
-
1
range
=
Range
.
new
(
min
,
max
)
end
result
[
range
]
=
Unicode
.
u_unpack
(
replace_by
)
@wrapped_string
.
replace
(
result
.
pack
(
'U*'
))
end
end
def
slice!
(
*
args
)
chars
(
@wrapped_string
.
slice!
(
*
args
))
end
...
...
activesupport/test/multibyte_chars_test.rb
浏览文件 @
b81bef53
...
...
@@ -117,11 +117,6 @@ def test_split_should_return_an_array_of_chars_instances
end
end
def
test_indexed_insert_accepts_fixnums
@chars
[
2
]
=
32
assert_equal
'こに わ'
,
@chars
end
%w{capitalize downcase lstrip reverse rstrip upcase}
.
each
do
|
method
|
class_eval
(
<<-
EOTESTS
)
def test_
#{
method
}
_bang_should_return_self_when_modifying_wrapped_string
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录