$("#ray_5956").html("\n
1<\/a>
2<\/a>
3<\/a>
4<\/a>
5<\/a>
6<\/a>
7<\/a>
8<\/a>
9<\/a>
10<\/a><\/strong>
11<\/a>
12<\/a>
13<\/a>
14<\/a>
15<\/a>
16<\/a>
17<\/a>
18<\/a>
19<\/a>
20<\/a><\/strong>
21<\/a>
22<\/a>
23<\/a>
24<\/a>
25<\/a>
26<\/a>
27<\/a>
28<\/a>
29<\/a>
30<\/a><\/strong>
31<\/a>
32<\/a>
33<\/a>
34<\/a>
35<\/a>
36<\/a>
37<\/a>
38<\/a>
39<\/a>
40<\/a><\/strong>
41<\/a>
42<\/a>
43<\/a>
44<\/a>
45<\/a>
46<\/a>
47<\/a>
48<\/a>
49<\/a>
50<\/a><\/strong>
51<\/a>
52<\/a>
53<\/a>
54<\/a>
55<\/a>
56<\/a>
57<\/a>
58<\/a>
59<\/a>
60<\/a><\/strong>
61<\/a>
62<\/a>
63<\/a>
64<\/a>
65<\/a>
66<\/a>
67<\/a>
68<\/a>
69<\/a>
70<\/a><\/strong>
71<\/a>
72<\/a>
73<\/a>
74<\/a>
75<\/a>
76<\/a>
77<\/a>
78<\/a>
79<\/a>
80<\/a><\/strong>
81<\/a>
82<\/a>
83<\/a>
84<\/a>
85<\/a>
86<\/a>
87<\/a>
88<\/a>
89<\/a>
90<\/a><\/strong>
91<\/a>
92<\/a>
93<\/a>
94<\/a>
95<\/a>
96<\/a>
97<\/a>
98<\/a>
99<\/a>
100<\/a><\/strong>
101<\/a>
102<\/a><\/pre><\/td>\n  
  <\/span>class<\/span> <\/span>Chars<\/span>
<\/span>    <\/span>
<\/span>    <\/span>attr_reader<\/span> <\/span>:string<\/span> <\/span># The contained string<\/span>
<\/span>    <\/span>alias_method<\/span> <\/span>:to_s<\/span>,<\/span> <\/span>:string<\/span>
<\/span>    <\/span>
<\/span>    <\/span>include<\/span> <\/span>Comparable<\/span>
<\/span>    <\/span>
<\/span>    <\/span># The magic method to make String and Chars comparable<\/span>
<\/span>    <\/span>def<\/span> <\/span>to_str<\/span>
<\/span>      <\/span># Using any other ways of overriding the String itself will lead you all the way from infinite loops to<\/span>
<\/span>      <\/span># core dumps. Don\'t go there.<\/span>
<\/span>      <\/span>@string<\/span>
<\/span>    <\/span>end<\/span>
<\/span>    <\/span>
<\/span>    <\/span># Make duck-typing with String possible<\/span>
<\/span>    <\/span>def<\/span> <\/span>respond_to?<\/span>(<\/span>method<\/span>)<\/span>
<\/span>      <\/span>super<\/span> <\/span>||<\/span> <\/span>@string<\/span>.<\/span>respond_to?<\/span>(<\/span>method<\/span>)<\/span> <\/span>||<\/span> <\/span>handler<\/span>.<\/span>respond_to?<\/span>(<\/span>method<\/span>)<\/span> <\/span>||<\/span>
<\/span>        <\/span>(<\/span>method<\/span>.<\/span>to_s<\/span> <\/span>=<\/span>~<\/span> <\/span>/<\/span>(.*)!<\/span>/<\/span><\/span> <\/span>&&<\/span> <\/span>handler<\/span>.<\/span>respond_to?<\/span>(<\/span>$1<\/span>)<\/span>)<\/span> <\/span>||<\/span> <\/span>false<\/span>
<\/span>    <\/span>end<\/span>
<\/span>    <\/span>
<\/span>    <\/span># Create a new Chars instance.<\/span>
<\/span>    <\/span>def<\/span> <\/span>initialize<\/span>(<\/span>str<\/span>)<\/span>
<\/span>      <\/span>@string<\/span> <\/span>=<\/span> <\/span>str<\/span>.<\/span>respond_to?<\/span>(<\/span>:string<\/span>)<\/span> <\/span>?<\/span> <\/span>str<\/span>.<\/span>string<\/span> <\/span>:<\/span> <\/span>str<\/span>
<\/span>    <\/span>end<\/span>
<\/span>    <\/span>
<\/span>    <\/span># Returns -1, 0 or +1 depending on whether the Chars object is to be sorted before, equal or after the<\/span>
<\/span>    <\/span># object on the right side of the operation. It accepts any object that implements +to_s+. See String.<=><\/span>
<\/span>    <\/span># for more details.<\/span>
<\/span>    <\/span>def<\/span> <\/span><=><\/span>(<\/span>other<\/span>)<\/span>;<\/span> <\/span>@string<\/span> <\/span><=><\/span> <\/span>other<\/span>.<\/span>to_s<\/span>;<\/span> <\/span>end<\/span>
<\/span>    <\/span>
<\/span>    <\/span># Works just like String#split, with the exception that the items in the resulting list are Chars<\/span>
<\/span>    <\/span># instances instead of String. This makes chaining methods easier.<\/span>
<\/span>    <\/span>def<\/span> <\/span>split<\/span>(<\/span>*<\/span>args<\/span>)<\/span>
<\/span>      <\/span>@string<\/span>.<\/span>split<\/span>(<\/span>*<\/span>args<\/span>)<\/span>.<\/span>map<\/span> <\/span>{<\/span> <\/span>|<\/span>i<\/span>|<\/span> <\/span>i<\/span>.<\/span>chars<\/span> <\/span>}<\/span>
<\/span>    <\/span>end<\/span>
<\/span>    <\/span>
<\/span>    <\/span># Gsub works exactly the same as gsub on a normal string.<\/span>
<\/span>    <\/span>def<\/span> <\/span>gsub<\/span>(<\/span>*<\/span>a<\/span>,<\/span> <\/span>&<\/span>b<\/span>)<\/span>;<\/span> <\/span>@string<\/span>.<\/span>gsub<\/span>(<\/span>*<\/span>a<\/span>,<\/span> <\/span>&<\/span>b<\/span>)<\/span>.<\/span>chars<\/span>;<\/span> <\/span>end<\/span>
<\/span>    <\/span>
<\/span>    <\/span># Like String.=~ only it returns the character offset (in codepoints) instead of the byte offset.<\/span>
<\/span>    <\/span>def<\/span> <\/span>=~<\/span>(<\/span>other<\/span>)<\/span>
<\/span>      <\/span>handler<\/span>.<\/span>translate_offset<\/span>(<\/span>@string<\/span>,<\/span> <\/span>@string<\/span> <\/span>=<\/span>~<\/span> <\/span>other<\/span>)<\/span>
<\/span>    <\/span>end<\/span>
<\/span>    <\/span>
<\/span>    <\/span># Try to forward all undefined methods to the handler, when a method is not defined on the handler, send it to<\/span>
<\/span>    <\/span># the contained string. Method_missing is also responsible for making the bang! methods destructive.<\/span>
<\/span>    <\/span>def<\/span> <\/span>method_missing<\/span>(<\/span>m<\/span>,<\/span> <\/span>*<\/span>a<\/span>,<\/span> <\/span>&<\/span>b<\/span>)<\/span>
<\/span>      <\/span>begin<\/span>
<\/span>        <\/span># Simulate methods with a ! at the end because we can\'t touch the enclosed string from the handlers.<\/span>
<\/span>        <\/span>if<\/span> <\/span>m<\/span>.<\/span>to_s<\/span> <\/span>=<\/span>~<\/span> <\/span>/<\/span>^(.*)<\/span>\\!<\/span>$<\/span>/<\/span><\/span> <\/span>&&<\/span> <\/span>handler<\/span>.<\/span>respond_to?<\/span>(<\/span>$1<\/span>)<\/span>
<\/span>          <\/span>result<\/span> <\/span>=<\/span> <\/span>handler<\/span>.<\/span>send<\/span>(<\/span>$1<\/span>,<\/span> <\/span>@string<\/span>,<\/span> <\/span>*<\/span>a<\/span>,<\/span> <\/span>&<\/span>b<\/span>)<\/span>
<\/span>          <\/span>if<\/span> <\/span>result<\/span> <\/span>==<\/span> <\/span>@string<\/span>
<\/span>            <\/span>result<\/span> <\/span>=<\/span> <\/span>nil<\/span>
<\/span>          <\/span>else<\/span>
<\/span>            <\/span>@string<\/span>.<\/span>replace<\/span> <\/span>result<\/span>
<\/span>          <\/span>end<\/span>
<\/span>        <\/span>elsif<\/span> <\/span>handler<\/span>.<\/span>respond_to?<\/span>(<\/span>m<\/span>)<\/span>
<\/span>          <\/span>result<\/span> <\/span>=<\/span> <\/span>handler<\/span>.<\/span>send<\/span>(<\/span>m<\/span>,<\/span> <\/span>@string<\/span>,<\/span> <\/span>*<\/span>a<\/span>,<\/span> <\/span>&<\/span>b<\/span>)<\/span>
<\/span>        <\/span>else<\/span>
<\/span>          <\/span>result<\/span> <\/span>=<\/span> <\/span>@string<\/span>.<\/span>send<\/span>(<\/span>m<\/span>,<\/span> <\/span>*<\/span>a<\/span>,<\/span> <\/span>&<\/span>b<\/span>)<\/span>
<\/span>        <\/span>end<\/span>
<\/span>      <\/span>rescue<\/span> <\/span>Handlers<\/span>::<\/span>EncodingError<\/span>
<\/span>        <\/span>@string<\/span>.<\/span>replace<\/span> <\/span>handler<\/span>.<\/span>tidy_bytes<\/span>(<\/span>@string<\/span>)<\/span>
<\/span>        <\/span>retry<\/span>
<\/span>      <\/span>end<\/span>
<\/span>      <\/span>
<\/span>      <\/span>if<\/span> <\/span>result<\/span>.<\/span>kind_of?<\/span>(<\/span>String<\/span>)<\/span>
<\/span>        <\/span>result<\/span>.<\/span>chars<\/span>
<\/span>      <\/span>else<\/span>
<\/span>        <\/span>result<\/span>
<\/span>      <\/span>end<\/span>
<\/span>    <\/span>end<\/span>
<\/span>    <\/span>
<\/span>    <\/span># Set the handler class for the Char objects.<\/span>
<\/span>    <\/span>def<\/span> <\/span>self<\/span>.<\/span>handler=<\/span>(<\/span>klass<\/span>)<\/span>
<\/span>      <\/span>@@handler<\/span> <\/span>=<\/span> <\/span>klass<\/span>
<\/span>    <\/span>end<\/span>
<\/span>
<\/span>    <\/span># Returns the proper handler for the contained string depending on $KCODE and the encoding of the string. This<\/span>
<\/span>    <\/span># method is used internally to always redirect messages to the proper classes depending on the context.<\/span>
<\/span>    <\/span>def<\/span> <\/span>handler<\/span>
<\/span>      <\/span>if<\/span> <\/span>utf8_pragma?<\/span>
<\/span>        <\/span>@@handler<\/span>
<\/span>      <\/span>else<\/span>
<\/span>        <\/span>ActiveSupport<\/span>::<\/span>Multibyte<\/span>::<\/span>Handlers<\/span>::<\/span>PassthruHandler<\/span>
<\/span>      <\/span>end<\/span>
<\/span>    <\/span>end<\/span>
<\/span>
<\/span>    <\/span>private<\/span>
<\/span>      <\/span>
<\/span>      <\/span># +utf8_pragma+ checks if it can send this string to the handlers. It makes sure @string isn\'t nil and $KCODE is<\/span>
<\/span>      <\/span># set to \'UTF8\'.<\/span>
<\/span>      <\/span>if<\/span> <\/span>RUBY_VERSION<\/span> <\/span><<\/span> <\/span>\'<\/span>1.9<\/span>\'<\/span><\/span>
<\/span>        <\/span>def<\/span> <\/span>utf8_pragma?<\/span>
<\/span>          <\/span>!<\/span>@string<\/span>.<\/span>nil?<\/span> <\/span>&&<\/span> <\/span>(<\/span>$KCODE<\/span> <\/span>==<\/span> <\/span>\'<\/span>UTF8<\/span>\'<\/span><\/span>)<\/span>
<\/span>        <\/span>end<\/span>
<\/span>      <\/span>else<\/span>
<\/span>        <\/span>def<\/span> <\/span>utf8_pragma?<\/span>
<\/span>          <\/span>!<\/span>@string<\/span>.<\/span>nil?<\/span> <\/span>&&<\/span> <\/span>(<\/span>Encoding<\/span>.<\/span>default_external<\/span> <\/span>==<\/span> <\/span>Encoding<\/span>::<\/span>UTF_8<\/span>)<\/span>
<\/span>        <\/span>end<\/span>
<\/span>      <\/span>end<\/span>
<\/span>  <\/span>end<\/span><\/pre><\/td>\n<\/tr><\/table>\n\n");