comparison xml/en/docs/njs/reference.xml @ 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 63cef7604e0d
children cd97adddd757
comparison
equal deleted inserted replaced
2581:324ca14c3003 2582:e162a71453b0
7 <!DOCTYPE article SYSTEM "../../../../dtd/article.dtd"> 7 <!DOCTYPE article SYSTEM "../../../../dtd/article.dtd">
8 8
9 <article name="Reference" 9 <article name="Reference"
10 link="/en/docs/njs/reference.html" 10 link="/en/docs/njs/reference.html"
11 lang="en" 11 lang="en"
12 rev="50"> 12 rev="51">
13 13
14 <section id="summary"> 14 <section id="summary">
15 15
16 <para> 16 <para>
17 <link doc="index.xml">njs</link> provides objects, methods and properties 17 <link doc="index.xml">njs</link> provides objects, methods and properties
588 otherwise, <literal>null</literal> is returned: 588 otherwise, <literal>null</literal> is returned:
589 <example> 589 <example>
590 >> '£'.toBytes().toString('hex') 590 >> '£'.toBytes().toString('hex')
591 'a3' /* a3 is a byte equal to 00A3 ('£') code point */ 591 'a3' /* a3 is a byte equal to 00A3 ('£') code point */
592 </example> 592 </example>
593 Only byte strings can be converted to different encodings.
594 For example, a string cannot be encoded to <literal>hex</literal> directly:
595 <example>
596 >> 'αβγδ'.toString('base64')
597 TypeError: argument must be a byte string
598 at String.prototype.toString (native)
599 at main (native)
600 </example>
601 To convert a Unicode string to hex,
602 first, it should be converted to a byte string and then to hex:
603 <example>
604 >> 'αβγδ'.toUTF8().toString('base64')
605 'zrHOss6zzrQ='
606 </example>
607 593
608 <list type="tag"> 594 <list type="tag">
609 595
610 <tag-name id="string_bytesfrom"><literal>String.bytesFrom(<value>array</value> 596 <tag-name id="string_bytesfrom"><literal>String.bytesFrom(<value>array</value>
611 | <value>string</value>, <value>encoding</value>)</literal></tag-name> 597 | <value>string</value>, <value>encoding</value>)</literal></tag-name>
647 Serializes a Unicode string to a byte string. 633 Serializes a Unicode string to a byte string.
648 Returns <literal>null</literal> if a character larger than 255 is 634 Returns <literal>null</literal> if a character larger than 255 is
649 found in the string. 635 found in the string.
650 </tag-desc> 636 </tag-desc>
651 637
652 <tag-name id="string_tostring"><literal>String.prototype.toString([<value>encoding</value>])</literal></tag-name> 638 <tag-name id="string_tostring"><literal>String.prototype.toString(<value>encoding</value>)</literal></tag-name>
653 <tag-desc> 639 <tag-desc>
654 <para> 640 <para>
655 If no <literal>encoding</literal> is specified, 641 Encodes a string to
656 returns a specified Unicode string or byte string as in ECMAScript.
657 </para>
658
659 <para>
660 If <literal>encoding</literal> is specified,
661 encodes a <link id="string_tobytes">byte string</link> to
662 <literal>hex</literal>, 642 <literal>hex</literal>,
663 <literal>base64</literal>, or 643 <literal>base64</literal>, or
664 <literal>base64url</literal>. 644 <literal>base64url</literal>:
665 </para> 645 <example>
646 >> 'αβγδ'.toString('base64url')
647 'zrHOss6zzrQ'
648 </example>
649 Before version <link doc="changes.xml" id="njs0.4.3">0.4.3</link>,
650 only a <link id="string_tobytes">byte string</link> could be encoded:
666 <example> 651 <example>
667 >> 'αβγδ'.toUTF8().toString('base64url') 652 >> 'αβγδ'.toUTF8().toString('base64url')
668 'zrHOss6zzrQ' 653 'zrHOss6zzrQ'
669 </example> 654 </example>
655 </para>
670 </tag-desc> 656 </tag-desc>
671 657
672 <tag-name id="string_toutf8"><literal>String.prototype.toUTF8(<value>start</value>[, 658 <tag-name id="string_toutf8"><literal>String.prototype.toUTF8(<value>start</value>[,
673 <value>end</value>])</literal></tag-name> 659 <value>end</value>])</literal></tag-name>
674 <tag-desc> 660 <tag-desc>