changeset 2582:e162a71453b0

Improved String.prototype.toString() for ordinary strings in njs.
author Yaroslav Zhuravlev <yar@nginx.com>
date Tue, 11 Aug 2020 12:34:32 +0100
parents 324ca14c3003
children cd97adddd757
files xml/en/docs/njs/reference.xml xml/ru/docs/njs/reference.xml
diffstat 2 files changed, 22 insertions(+), 50 deletions(-) [+]
line wrap: on
line diff
--- a/xml/en/docs/njs/reference.xml
+++ b/xml/en/docs/njs/reference.xml
@@ -9,7 +9,7 @@
 <article name="Reference"
         link="/en/docs/njs/reference.html"
         lang="en"
-        rev="50">
+        rev="51">
 
 <section id="summary">
 
@@ -590,20 +590,6 @@ otherwise, <literal>null</literal> is re
 >> '£'.toBytes().toString('hex')
 'a3'  /* a3 is a byte equal to 00A3 ('£') code point  */
 </example>
-Only byte strings can be converted to different encodings.
-For example, a string cannot be encoded to <literal>hex</literal> directly:
-<example>
->> 'αβγδ'.toString('base64')
-TypeError: argument must be a byte string
-    at String.prototype.toString (native)
-    at main (native)
-</example>
-To convert a Unicode string to hex,
-first, it should be converted to a byte string and then to hex:
-<example>
->> 'αβγδ'.toUTF8().toString('base64')
-'zrHOss6zzrQ='
-</example>
 
 <list type="tag">
 
@@ -649,24 +635,24 @@ Returns <literal>null</literal> if a cha
 found in the string.
 </tag-desc>
 
-<tag-name id="string_tostring"><literal>String.prototype.toString([<value>encoding</value>])</literal></tag-name>
+<tag-name id="string_tostring"><literal>String.prototype.toString(<value>encoding</value>)</literal></tag-name>
 <tag-desc>
 <para>
-If no <literal>encoding</literal> is specified,
-returns a specified Unicode string or byte string as in ECMAScript.
-</para>
-
-<para>
-If <literal>encoding</literal> is specified,
-encodes a <link id="string_tobytes">byte string</link> to
+Encodes a string to
 <literal>hex</literal>,
 <literal>base64</literal>, or
-<literal>base64url</literal>.
-</para>
+<literal>base64url</literal>:
+<example>
+>>  'αβγδ'.toString('base64url')
+'zrHOss6zzrQ'
+</example>
+Before version <link doc="changes.xml" id="njs0.4.3">0.4.3</link>,
+only a <link id="string_tobytes">byte string</link> could be encoded:
 <example>
 >>  'αβγδ'.toUTF8().toString('base64url')
 'zrHOss6zzrQ'
 </example>
+</para>
 </tag-desc>
 
 <tag-name id="string_toutf8"><literal>String.prototype.toUTF8(<value>start</value>[,
--- a/xml/ru/docs/njs/reference.xml
+++ b/xml/ru/docs/njs/reference.xml
@@ -9,7 +9,7 @@
 <article name="Справочник"
         link="/ru/docs/njs/reference.html"
         lang="ru"
-        rev="50">
+        rev="51">
 
 <section id="summary">
 
@@ -594,20 +594,6 @@ true, если буфер должен иметь флаг <literal>flush</literal>
 >> '£'.toBytes().toString('hex')
 'a3'  /* a3 является байтом, равным codepoint 00A3 ('£')  */
 </example>
-В различные кодировки могут быть преобразованы только байтовые строки.
-Например строка не может быть кодирована напрямую в <literal>hex</literal>:
-<example>
->> 'αβγδ'.toString('base64')
-TypeError: argument must be a byte string
-    at String.prototype.toString (native)
-    at main (native)
-</example>
-Чтобы преобразовать строку Unicode в hex,
-сначала необходимо её преобразовать в байтовую строку и затем в hex:
-<example>
->> 'αβγδ'.toUTF8().toString('base64')
-'zrHOss6zzrQ='
-</example>
 
 <list type="tag">
 
@@ -652,24 +638,24 @@ TypeError: argument must be a byte strin
 Возвращает <literal>null</literal>, если в строке найден символ больше, чем 255.
 </tag-desc>
 
-<tag-name id="string_tostring"><literal>String.prototype.toString([<value>кодировка</value>])</literal></tag-name>
+<tag-name id="string_tostring"><literal>String.prototype.toString(<value>кодировка</value>)</literal></tag-name>
 <tag-desc>
 <para>
-Если кодировка не указана,
-возвращает указанную строку Unicode string или байтовую строку как в ECMAScript.
-</para>
-
-<para>
-Если кодировка указана,
-кодирует <link id="string_tobytes">байтовую строку</link> в
+Кодирует указанную строку в
 <literal>hex</literal>,
 <literal>base64</literal> или
-<literal>base64url</literal>.
-</para>
+<literal>base64url</literal>:
+<example>
+>>  'αβγδ'.toString('base64url')
+'zrHOss6zzrQ'
+</example>
+До версии <link doc="changes.xml" id="njs0.4.3">0.4.3</link>
+могла быть кодирована только <link id="string_tobytes">байтовая строка</link>:
 <example>
 >>  'αβγδ'.toUTF8().toString('base64url')
 'zrHOss6zzrQ'
 </example>
+</para>
 </tag-desc>
 
 <tag-name id="string_toutf8"><literal>String.prototype.toUTF8(<value>начало</value>[,