rbs 3.0.0.dev.2 → 3.0.0.dev.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/comments.yml +2 -1
  3. data/.github/workflows/ruby.yml +4 -0
  4. data/Gemfile.lock +11 -11
  5. data/Rakefile +2 -2
  6. data/Steepfile +1 -1
  7. data/core/array.rbs +573 -423
  8. data/core/basic_object.rbs +11 -39
  9. data/core/binding.rbs +1 -1
  10. data/core/builtin.rbs +8 -0
  11. data/core/class.rbs +37 -0
  12. data/core/comparable.rbs +7 -18
  13. data/core/complex.rbs +2 -2
  14. data/core/data.rbs +419 -0
  15. data/core/dir.rbs +52 -104
  16. data/core/encoding.rbs +22 -181
  17. data/core/enumerable.rbs +212 -175
  18. data/core/enumerator/product.rbs +96 -0
  19. data/core/enumerator.rbs +57 -8
  20. data/core/errors.rbs +8 -2
  21. data/core/exception.rbs +41 -0
  22. data/core/fiber.rbs +95 -12
  23. data/core/file.rbs +840 -275
  24. data/core/file_test.rbs +34 -19
  25. data/core/float.rbs +40 -96
  26. data/core/gc.rbs +15 -3
  27. data/core/hash.rbs +113 -175
  28. data/core/integer.rbs +85 -145
  29. data/core/io/buffer.rbs +187 -60
  30. data/core/io/wait.rbs +28 -16
  31. data/core/io.rbs +1859 -1389
  32. data/core/kernel.rbs +525 -961
  33. data/core/match_data.rbs +306 -142
  34. data/core/math.rbs +506 -234
  35. data/core/method.rbs +0 -24
  36. data/core/module.rbs +110 -17
  37. data/core/nil_class.rbs +2 -0
  38. data/core/numeric.rbs +76 -144
  39. data/core/object.rbs +88 -212
  40. data/core/proc.rbs +17 -5
  41. data/core/process.rbs +22 -5
  42. data/core/ractor.rbs +1 -1
  43. data/core/random.rbs +20 -3
  44. data/core/range.rbs +91 -89
  45. data/core/rational.rbs +2 -3
  46. data/core/rbs/unnamed/argf.rbs +177 -120
  47. data/core/rbs/unnamed/env_class.rbs +89 -163
  48. data/core/rbs/unnamed/random.rbs +36 -12
  49. data/core/refinement.rbs +8 -0
  50. data/core/regexp.rbs +462 -272
  51. data/core/ruby_vm.rbs +210 -0
  52. data/{stdlib/set/0 → core}/set.rbs +43 -47
  53. data/core/string.rbs +1403 -1332
  54. data/core/string_io.rbs +191 -107
  55. data/core/struct.rbs +67 -63
  56. data/core/symbol.rbs +187 -201
  57. data/core/thread.rbs +40 -35
  58. data/core/time.rbs +902 -826
  59. data/core/trace_point.rbs +55 -6
  60. data/core/unbound_method.rbs +48 -24
  61. data/docs/collection.md +4 -0
  62. data/docs/syntax.md +55 -0
  63. data/ext/rbs_extension/parser.c +5 -6
  64. data/lib/rbs/cli.rb +6 -1
  65. data/lib/rbs/collection/cleaner.rb +8 -1
  66. data/lib/rbs/collection/config/lockfile.rb +3 -1
  67. data/lib/rbs/collection/config/lockfile_generator.rb +16 -14
  68. data/lib/rbs/collection/config.rb +1 -1
  69. data/lib/rbs/collection/sources/git.rb +9 -2
  70. data/lib/rbs/collection/sources/local.rb +79 -0
  71. data/lib/rbs/collection/sources.rb +8 -1
  72. data/lib/rbs/environment.rb +6 -5
  73. data/lib/rbs/environment_loader.rb +3 -2
  74. data/lib/rbs/errors.rb +18 -0
  75. data/lib/rbs/locator.rb +26 -7
  76. data/lib/rbs/sorter.rb +2 -2
  77. data/lib/rbs/version.rb +1 -1
  78. data/sig/collection/sources.rbs +32 -3
  79. data/sig/environment.rbs +2 -3
  80. data/sig/locator.rbs +14 -2
  81. data/sig/shims/{abstract_syntax_tree.rbs → _abstract_syntax_tree.rbs} +0 -0
  82. data/stdlib/bigdecimal/0/big_decimal.rbs +16 -13
  83. data/stdlib/cgi/0/core.rbs +16 -0
  84. data/stdlib/coverage/0/coverage.rbs +50 -8
  85. data/stdlib/csv/0/csv.rbs +1 -1
  86. data/stdlib/date/0/date.rbs +856 -726
  87. data/stdlib/date/0/date_time.rbs +83 -210
  88. data/stdlib/erb/0/erb.rbs +13 -36
  89. data/stdlib/etc/0/etc.rbs +127 -20
  90. data/stdlib/fileutils/0/fileutils.rbs +1290 -381
  91. data/stdlib/logger/0/logger.rbs +466 -316
  92. data/stdlib/net-http/0/net-http.rbs +2211 -534
  93. data/stdlib/nkf/0/nkf.rbs +5 -5
  94. data/stdlib/objspace/0/objspace.rbs +31 -14
  95. data/stdlib/openssl/0/openssl.rbs +11 -7
  96. data/stdlib/optparse/0/optparse.rbs +20 -17
  97. data/stdlib/pathname/0/pathname.rbs +21 -4
  98. data/stdlib/pstore/0/pstore.rbs +378 -154
  99. data/stdlib/pty/0/pty.rbs +24 -8
  100. data/stdlib/ripper/0/ripper.rbs +1650 -0
  101. data/stdlib/socket/0/addrinfo.rbs +9 -15
  102. data/stdlib/socket/0/socket.rbs +36 -3
  103. data/stdlib/strscan/0/string_scanner.rbs +7 -5
  104. data/stdlib/tempfile/0/tempfile.rbs +104 -44
  105. data/stdlib/time/0/time.rbs +2 -2
  106. data/stdlib/uri/0/file.rbs +5 -0
  107. data/stdlib/uri/0/generic.rbs +2 -2
  108. data/stdlib/yaml/0/yaml.rbs +2 -2
  109. data/stdlib/zlib/0/zlib.rbs +1 -1
  110. metadata +8 -6
  111. data/core/deprecated.rbs +0 -9
  112. data/sig/shims/ripper.rbs +0 -8
data/core/dir.rbs CHANGED
@@ -11,135 +11,83 @@
11
11
  #
12
12
  # First, what's elsewhere. Class Dir:
13
13
  #
14
- # * Inherits from [class
15
- # Object](Object.html#class-Object-label-What-27s+Here).
16
- # * Includes [module
17
- # Enumerable](Enumerable.html#module-Enumerable-label-What-27s+Here), which
14
+ # * Inherits from [class Object](rdoc-ref:Object@What-27s+Here).
15
+ # * Includes [module Enumerable](rdoc-ref:Enumerable@What-27s+Here), which
18
16
  # provides dozens of additional methods.
19
17
  #
20
18
  #
21
19
  # Here, class Dir provides methods that are useful for:
22
20
  #
23
- # * [Reading](#class-Dir-label-Reading)
24
- # * [Setting](#class-Dir-label-Setting)
25
- # * [Querying](#class-Dir-label-Querying)
26
- # * [Iterating](#class-Dir-label-Iterating)
27
- # * [Other](#class-Dir-label-Other)
21
+ # * [Reading](rdoc-ref:Dir@Reading)
22
+ # * [Setting](rdoc-ref:Dir@Setting)
23
+ # * [Querying](rdoc-ref:Dir@Querying)
24
+ # * [Iterating](rdoc-ref:Dir@Iterating)
25
+ # * [Other](rdoc-ref:Dir@Other)
28
26
  #
29
27
  #
30
28
  # ### Reading
31
29
  #
32
- # #close
33
- # : Closes the directory stream for `self`.
34
- #
35
- # #pos=
36
- # : Sets the position in the directory stream for `self`.
37
- #
38
- # #read
39
- # : Reads and returns the next entry in the directory stream for `self`.
40
- #
41
- # #rewind
42
- # : Sets the position in the directory stream for `self` to the first
43
- # entry.
44
- #
45
- # #seek
46
- # : Sets the position in the directory stream for `self` the entry at the
47
- # given offset.
48
- #
30
+ # * #close: Closes the directory stream for `self`.
31
+ # * #pos=: Sets the position in the directory stream for `self`.
32
+ # * #read: Reads and returns the next entry in the directory stream for
33
+ # `self`.
34
+ # * #rewind: Sets the position in the directory stream for `self` to the first
35
+ # entry.
36
+ # * #seek: Sets the position in the directory stream for `self` the entry at
37
+ # the given offset.
49
38
  #
50
39
  #
51
40
  # ### Setting
52
41
  #
53
- # ::chdir
54
- # : Changes the working directory of the current process to the given
55
- # directory.
56
- #
57
- # ::chroot
58
- # : Changes the file-system root for the current process to the given
59
- # directory.
60
- #
42
+ # * ::chdir: Changes the working directory of the current process to the given
43
+ # directory.
44
+ # * ::chroot: Changes the file-system root for the current process to the
45
+ # given directory.
61
46
  #
62
47
  #
63
48
  # ### Querying
64
49
  #
65
- # ::[]
66
- # : Same as ::glob without the ability to pass flags.
67
- #
68
- # ::children
69
- # : Returns an array of names of the children (both files and directories)
70
- # of the given directory, but not including `.` or `..`.
71
- #
72
- # ::empty?
73
- # : Returns whether the given path is an empty directory.
74
- #
75
- # ::entries
76
- # : Returns an array of names of the children (both files and directories)
77
- # of the given directory, including `.` and `..`.
78
- #
79
- # ::exist?
80
- # : Returns whether the given path is a directory.
81
- #
82
- # ::getwd (aliased as #pwd)
83
- # : Returns the path to the current working directory.
84
- #
85
- # ::glob
86
- # : Returns an array of file paths matching the given pattern and flags.
87
- #
88
- # ::home
89
- # : Returns the home directory path for a given user or the current user.
90
- #
91
- # #children
92
- # : Returns an array of names of the children (both files and directories)
93
- # of `self`, but not including `.` or `..`.
94
- #
95
- # #fileno
96
- # : Returns the integer file descriptor for `self`.
97
- #
98
- # #path (aliased as #to_path)
99
- # : Returns the path used to create `self`.
100
- #
101
- # #tell (aliased as #pos)
102
- # : Returns the integer position in the directory stream for `self`.
103
- #
50
+ # * ::[]: Same as ::glob without the ability to pass flags.
51
+ # * ::children: Returns an array of names of the children (both files and
52
+ # directories) of the given directory, but not including `.` or `..`.
53
+ # * ::empty?: Returns whether the given path is an empty directory.
54
+ # * ::entries: Returns an array of names of the children (both files and
55
+ # directories) of the given directory, including `.` and `..`.
56
+ # * ::exist?: Returns whether the given path is a directory.
57
+ # * ::getwd (aliased as #pwd): Returns the path to the current working
58
+ # directory.
59
+ # * ::glob: Returns an array of file paths matching the given pattern and
60
+ # flags.
61
+ # * ::home: Returns the home directory path for a given user or the current
62
+ # user.
63
+ # * #children: Returns an array of names of the children (both files and
64
+ # directories) of `self`, but not including `.` or `..`.
65
+ # * #fileno: Returns the integer file descriptor for `self`.
66
+ # * #path (aliased as #to_path): Returns the path used to create `self`.
67
+ # * #tell (aliased as #pos): Returns the integer position in the directory
68
+ # stream for `self`.
104
69
  #
105
70
  #
106
71
  # ### Iterating
107
72
  #
108
- # ::each_child
109
- # : Calls the given block with each entry in the given directory, but not
110
- # including `.` or `..`.
111
- #
112
- # ::foreach
113
- # : Calls the given block with each entryin the given directory, including
114
- # `.` and `..`.
115
- #
116
- # #each
117
- # : Calls the given block with each entry in `self`, including `.` and
118
- # `..`.
119
- #
120
- # #each_child
121
- # : Calls the given block with each entry in `self`, but not including `.`
122
- # or `..`.
123
- #
73
+ # * ::each_child: Calls the given block with each entry in the given
74
+ # directory, but not including `.` or `..`.
75
+ # * ::foreach: Calls the given block with each entry in the given directory,
76
+ # including `.` and `..`.
77
+ # * #each: Calls the given block with each entry in `self`, including `.` and
78
+ # `..`.
79
+ # * #each_child: Calls the given block with each entry in `self`, but not
80
+ # including `.` or `..`.
124
81
  #
125
82
  #
126
83
  # ### Other
127
84
  #
128
- # ::mkdir
129
- # : Creates a directory at the given path, with optional permissions.
130
- #
131
- # ::new
132
- # : Returns a new Dir for the given path, with optional encoding.
133
- #
134
- # ::open
135
- # : Same as ::new, but if a block is given, yields the Dir to the block,
136
- # closing it upon block exit.
137
- #
138
- # ::unlink (aliased as ::delete and ::rmdir)
139
- # : Removes the given directory.
140
- #
141
- # #inspect
142
- # : Returns a string description of `self`.
85
+ # * ::mkdir: Creates a directory at the given path, with optional permissions.
86
+ # * ::new: Returns a new Dir for the given path, with optional encoding.
87
+ # * ::open: Same as ::new, but if a block is given, yields the Dir to the
88
+ # block, closing it upon block exit.
89
+ # * ::unlink (aliased as ::delete and ::rmdir): Removes the given directory.
90
+ # * #inspect: Returns a string description of `self`.
143
91
  #
144
92
  class Dir
145
93
  include Enumerable[String]
data/core/encoding.rbs CHANGED
@@ -1,195 +1,31 @@
1
1
  # <!-- rdoc-file=encoding.c -->
2
2
  # An Encoding instance represents a character encoding usable in Ruby. It is
3
- # defined as a constant under the Encoding namespace. It has a name and
3
+ # defined as a constant under the Encoding namespace. It has a name and,
4
4
  # optionally, aliases:
5
5
  #
6
- # Encoding::ISO_8859_1.name
7
- # #=> "ISO-8859-1"
6
+ # Encoding::US_ASCII.name # => "US-ASCII"
7
+ # Encoding::US_ASCII.names # => ["US-ASCII", "ASCII", "ANSI_X3.4-1968", "646"]
8
8
  #
9
- # Encoding::ISO_8859_1.names
10
- # #=> ["ISO-8859-1", "ISO8859-1"]
9
+ # A Ruby method that accepts an encoding as an argument will accept:
11
10
  #
12
- # Ruby methods dealing with encodings return or accept Encoding instances as
13
- # arguments (when a method accepts an Encoding instance as an argument, it can
14
- # be passed an Encoding name or alias instead).
11
+ # * An Encoding object.
12
+ # * The name of an encoding.
13
+ # * An alias for an encoding name.
15
14
  #
16
- # "some string".encoding
17
- # #=> #<Encoding:UTF-8>
18
15
  #
19
- # string = "some string".encode(Encoding::ISO_8859_1)
20
- # #=> "some string"
21
- # string.encoding
22
- # #=> #<Encoding:ISO-8859-1>
16
+ # These are equivalent:
23
17
  #
24
- # "some string".encode "ISO-8859-1"
25
- # #=> "some string"
18
+ # 'foo'.encode(Encoding::US_ASCII) # Encoding object.
19
+ # 'foo'.encode('US-ASCII') # Encoding name.
20
+ # 'foo'.encode('ASCII') # Encoding alias.
26
21
  #
27
- # Encoding::ASCII_8BIT is a special encoding that is usually used for a byte
28
- # string, not a character string. But as the name insists, its characters in the
29
- # range of ASCII are considered as ASCII characters. This is useful when you
30
- # use ASCII-8BIT characters with other ASCII compatible characters.
22
+ # For a full discussion of encodings and their uses, see [the Encodings
23
+ # document](rdoc-ref:encodings.rdoc).
31
24
  #
32
- # ## Changing an encoding
33
- #
34
- # The associated Encoding of a String can be changed in two different ways.
35
- #
36
- # First, it is possible to set the Encoding of a string to a new Encoding
37
- # without changing the internal byte representation of the string, with
38
- # String#force_encoding. This is how you can tell Ruby the correct encoding of a
39
- # string.
40
- #
41
- # string
42
- # #=> "R\xC3\xA9sum\xC3\xA9"
43
- # string.encoding
44
- # #=> #<Encoding:ISO-8859-1>
45
- # string.force_encoding(Encoding::UTF_8)
46
- # #=> "R\u00E9sum\u00E9"
47
- #
48
- # Second, it is possible to transcode a string, i.e. translate its internal byte
49
- # representation to another encoding. Its associated encoding is also set to the
50
- # other encoding. See String#encode for the various forms of transcoding, and
51
- # the Encoding::Converter class for additional control over the transcoding
52
- # process.
53
- #
54
- # string
55
- # #=> "R\u00E9sum\u00E9"
56
- # string.encoding
57
- # #=> #<Encoding:UTF-8>
58
- # string = string.encode!(Encoding::ISO_8859_1)
59
- # #=> "R\xE9sum\xE9"
60
- # string.encoding
61
- # #=> #<Encoding::ISO-8859-1>
62
- #
63
- # ## Script encoding
64
- #
65
- # All Ruby script code has an associated Encoding which any String literal
66
- # created in the source code will be associated to.
67
- #
68
- # The default script encoding is Encoding::UTF_8 after v2.0, but it can be
69
- # changed by a magic comment on the first line of the source code file (or
70
- # second line, if there is a shebang line on the first). The comment must
71
- # contain the word `coding` or `encoding`, followed by a colon, space and the
72
- # Encoding name or alias:
73
- #
74
- # # encoding: UTF-8
75
- #
76
- # "some string".encoding
77
- # #=> #<Encoding:UTF-8>
78
- #
79
- # The `__ENCODING__` keyword returns the script encoding of the file which the
80
- # keyword is written:
81
- #
82
- # # encoding: ISO-8859-1
83
- #
84
- # __ENCODING__
85
- # #=> #<Encoding:ISO-8859-1>
86
- #
87
- # `ruby -K` will change the default locale encoding, but this is not
88
- # recommended. Ruby source files should declare its script encoding by a magic
89
- # comment even when they only depend on US-ASCII strings or regular expressions.
90
- #
91
- # ## Locale encoding
92
- #
93
- # The default encoding of the environment. Usually derived from locale.
94
- #
95
- # see Encoding.locale_charmap, Encoding.find('locale')
96
- #
97
- # ## Filesystem encoding
98
- #
99
- # The default encoding of strings from the filesystem of the environment. This
100
- # is used for strings of file names or paths.
101
- #
102
- # see Encoding.find('filesystem')
103
- #
104
- # ## External encoding
105
- #
106
- # Each IO object has an external encoding which indicates the encoding that Ruby
107
- # will use to read its data. By default Ruby sets the external encoding of an IO
108
- # object to the default external encoding. The default external encoding is set
109
- # by locale encoding or the interpreter `-E` option. Encoding.default_external
110
- # returns the current value of the external encoding.
111
- #
112
- # ENV["LANG"]
113
- # #=> "UTF-8"
114
- # Encoding.default_external
115
- # #=> #<Encoding:UTF-8>
116
- #
117
- # $ ruby -E ISO-8859-1 -e "p Encoding.default_external"
118
- # #<Encoding:ISO-8859-1>
119
- #
120
- # $ LANG=C ruby -e 'p Encoding.default_external'
121
- # #<Encoding:US-ASCII>
122
- #
123
- # The default external encoding may also be set through
124
- # Encoding.default_external=, but you should not do this as strings created
125
- # before and after the change will have inconsistent encodings. Instead use
126
- # `ruby -E` to invoke ruby with the correct external encoding.
127
- #
128
- # When you know that the actual encoding of the data of an IO object is not the
129
- # default external encoding, you can reset its external encoding with
130
- # IO#set_encoding or set it at IO object creation (see IO.new options).
131
- #
132
- # ## Internal encoding
133
- #
134
- # To process the data of an IO object which has an encoding different from its
135
- # external encoding, you can set its internal encoding. Ruby will use this
136
- # internal encoding to transcode the data when it is read from the IO object.
137
- #
138
- # Conversely, when data is written to the IO object it is transcoded from the
139
- # internal encoding to the external encoding of the IO object.
140
- #
141
- # The internal encoding of an IO object can be set with IO#set_encoding or at IO
142
- # object creation (see IO.new options).
143
- #
144
- # The internal encoding is optional and when not set, the Ruby default internal
145
- # encoding is used. If not explicitly set this default internal encoding is
146
- # `nil` meaning that by default, no transcoding occurs.
147
- #
148
- # The default internal encoding can be set with the interpreter option `-E`.
149
- # Encoding.default_internal returns the current internal encoding.
150
- #
151
- # $ ruby -e 'p Encoding.default_internal'
152
- # nil
153
- #
154
- # $ ruby -E ISO-8859-1:UTF-8 -e "p [Encoding.default_external, \
155
- # Encoding.default_internal]"
156
- # [#<Encoding:ISO-8859-1>, #<Encoding:UTF-8>]
157
- #
158
- # The default internal encoding may also be set through
159
- # Encoding.default_internal=, but you should not do this as strings created
160
- # before and after the change will have inconsistent encodings. Instead use
161
- # `ruby -E` to invoke ruby with the correct internal encoding.
162
- #
163
- # ## IO encoding example
164
- #
165
- # In the following example a UTF-8 encoded string "Ru00E9sumu00E9" is transcoded
166
- # for output to ISO-8859-1 encoding, then read back in and transcoded to UTF-8:
167
- #
168
- # string = "R\u00E9sum\u00E9"
169
- #
170
- # open("transcoded.txt", "w:ISO-8859-1") do |io|
171
- # io.write(string)
172
- # end
173
- #
174
- # puts "raw text:"
175
- # p File.binread("transcoded.txt")
176
- # puts
177
- #
178
- # open("transcoded.txt", "r:ISO-8859-1:UTF-8") do |io|
179
- # puts "transcoded text:"
180
- # p io.read
181
- # end
182
- #
183
- # While writing the file, the internal encoding is not specified as it is only
184
- # necessary for reading. While reading the file both the internal and external
185
- # encoding must be specified to obtain the correct result.
186
- #
187
- # $ ruby t.rb
188
- # raw text:
189
- # "R\xE9sum\xE9"
190
- #
191
- # transcoded text:
192
- # "R\u00E9sum\u00E9"
25
+ # Encoding::ASCII_8BIT is a special-purpose encoding that is usually used for a
26
+ # string of bytes, not a string of characters. But as the name indicates, its
27
+ # characters in the ASCII range are considered as ASCII characters. This is
28
+ # useful when you use other ASCII-compatible encodings.
193
29
  #
194
30
  class Encoding < Object
195
31
  # <!--
@@ -1352,11 +1188,13 @@ class Encoding::Converter < Object
1352
1188
  # :undef => :replace # replace undefined conversion
1353
1189
  # :replace => string # replacement string ("?" or "\uFFFD" if not specified)
1354
1190
  # :newline => :universal # decorator for converting CRLF and CR to LF
1191
+ # :newline => :lf # decorator for converting CRLF and CR to LF when writing
1355
1192
  # :newline => :crlf # decorator for converting LF to CRLF
1356
1193
  # :newline => :cr # decorator for converting LF to CR
1357
1194
  # :universal_newline => true # decorator for converting CRLF and CR to LF
1358
1195
  # :crlf_newline => true # decorator for converting LF to CRLF
1359
1196
  # :cr_newline => true # decorator for converting LF to CR
1197
+ # :lf_newline => true # decorator for converting CRLF and CR to LF when writing
1360
1198
  # :xml => :text # escape as XML CharData.
1361
1199
  # :xml => :attr # escape as XML AttValue
1362
1200
  # integer form:
@@ -1364,6 +1202,7 @@ class Encoding::Converter < Object
1364
1202
  # Encoding::Converter::UNDEF_REPLACE
1365
1203
  # Encoding::Converter::UNDEF_HEX_CHARREF
1366
1204
  # Encoding::Converter::UNIVERSAL_NEWLINE_DECORATOR
1205
+ # Encoding::Converter::LF_NEWLINE_DECORATOR
1367
1206
  # Encoding::Converter::CRLF_NEWLINE_DECORATOR
1368
1207
  # Encoding::Converter::CR_NEWLINE_DECORATOR
1369
1208
  # Encoding::Converter::XML_TEXT_DECORATOR
@@ -1406,6 +1245,8 @@ class Encoding::Converter < Object
1406
1245
  # : Convert LF to CRLF.
1407
1246
  # :cr_newline => true
1408
1247
  # : Convert LF to CR.
1248
+ # :lf_newline => true
1249
+ # : Convert CRLF and CR to LF (when writing).
1409
1250
  # :xml => :text
1410
1251
  # : Escape as XML CharData. This form can be used as an HTML 4.0 #PCDATA.
1411
1252
  # * '&' -> '&amp;'