diff options
Diffstat (limited to 'lib/stdlib/doc/src')
| -rw-r--r-- | lib/stdlib/doc/src/c.xml | 9 | ||||
| -rw-r--r-- | lib/stdlib/doc/src/filelib.xml | 29 | ||||
| -rw-r--r-- | lib/stdlib/doc/src/filename.xml | 30 | ||||
| -rw-r--r-- | lib/stdlib/doc/src/gen_server.xml | 52 | ||||
| -rw-r--r-- | lib/stdlib/doc/src/gen_statem.xml | 12 | ||||
| -rw-r--r-- | lib/stdlib/doc/src/rand.xml | 118 | ||||
| -rw-r--r-- | lib/stdlib/doc/src/string.xml | 396 | ||||
| -rw-r--r-- | lib/stdlib/doc/src/unicode_usage.xml | 8 | 
8 files changed, 248 insertions, 406 deletions
| diff --git a/lib/stdlib/doc/src/c.xml b/lib/stdlib/doc/src/c.xml index 7666699183..697e1715e7 100644 --- a/lib/stdlib/doc/src/c.xml +++ b/lib/stdlib/doc/src/c.xml @@ -94,6 +94,15 @@      </func>      <func> +      <name name="erlangrc" arity="1"/> +      <fsummary>Load an erlang resource file.</fsummary> +      <desc> +        <p>Search <c>PathList</c> and load <c>.erlang</c> resource file if +	found.</p> +      </desc> +    </func> + +    <func>        <name name="flush" arity="0"/>        <fsummary>Flush any messages sent to the shell.</fsummary>        <desc> diff --git a/lib/stdlib/doc/src/filelib.xml b/lib/stdlib/doc/src/filelib.xml index 80c4acffdb..5e631aac21 100644 --- a/lib/stdlib/doc/src/filelib.xml +++ b/lib/stdlib/doc/src/filelib.xml @@ -45,6 +45,30 @@      <p>For more information about raw filenames, see the        <seealso marker="kernel:file"><c>file</c></seealso> module.</p> + +    <note> +      <p> +	Functionality in this module generally assumes valid input and +	does not necessarily fail on input that does not use a valid +	encoding, but may instead very likely produce invalid output. +      </p> +      <p> +	File operations used to accept filenames containing +	null characters (integer value zero). This caused +	the name to be truncated and in some cases arguments +	to primitive operations to be mixed up. Filenames +	containing null characters inside the filename +	are now <em>rejected</em> and will cause primitive +	file operations to fail. +      </p> +    </note> +    <warning><p> +      Currently null characters at the end of the filename +      will be accepted by primitive file operations. Such +      filenames are however still documented as invalid. The +      implementation will also change in the future and +      reject such filenames. +    </p></warning>    </description>    <datatypes> @@ -193,6 +217,11 @@          <p>Other characters represent themselves. Only filenames that            have exactly the same character in the same position match.            Matching is case-sensitive, for example, "a" does not match "A".</p> +	<p>Directory separators must always be written as <c>/</c>, even on +	Windows.</p> +	<p>A character preceded by <c>\</c> loses its special meaning. Note +	that <c>\</c> must be written as <c>\\</c> in a string literal. +	For example, "\\?*" will match any filename starting with <c>?</c>.</p>          <p>Notice that multiple "*" characters are allowed            (as in Unix wildcards, but opposed to Windows/DOS wildcards).</p>          <p><em>Examples:</em></p> diff --git a/lib/stdlib/doc/src/filename.xml b/lib/stdlib/doc/src/filename.xml index 14fd5ef787..d2608ad542 100644 --- a/lib/stdlib/doc/src/filename.xml +++ b/lib/stdlib/doc/src/filename.xml @@ -46,7 +46,10 @@        filename by removing redundant directory separators, use        <seealso marker="#join/1"><c>join/1</c></seealso>.</p> -    <p>The module supports raw filenames in the way that if a binary is +    <p> +      The module supports +      <seealso marker="unicode_usage#notes-about-raw-filenames">raw +      filenames</seealso> in the way that if a binary is        present, or the filename cannot be interpreted according to the return        value of <seealso marker="kernel:file#native_name_encoding/0">        <c>file:native_name_encoding/0</c></seealso>, a raw filename is also @@ -56,6 +59,30 @@        (the join operation is performed of course). For more information        about raw filenames, see the        <seealso marker="kernel:file"><c>file</c></seealso> module.</p> + +    <note> +      <p> +	Functionality in this module generally assumes valid input and +	does not necessarily fail on input that does not use a valid +	encoding, but may instead very likely produce invalid output. +      </p> +      <p> +	File operations used to accept filenames containing +	null characters (integer value zero). This caused +	the name to be truncated and in some cases arguments +	to primitive operations to be mixed up. Filenames +	containing null characters inside the filename +	are now <em>rejected</em> and will cause primitive +	file operations to fail. +      </p> +    </note> +    <warning><p> +      Currently null characters at the end of the filename +      will be accepted by primitive file operations. Such +      filenames are however still documented as invalid. The +      implementation will also change in the future and +      reject such filenames. +    </p></warning>    </description>    <datatypes>        <datatype> @@ -555,6 +582,7 @@ unsafe</pre>  ["a:/","msdev","include"]</pre>        </desc>      </func> +    </funcs>  </erlref> diff --git a/lib/stdlib/doc/src/gen_server.xml b/lib/stdlib/doc/src/gen_server.xml index 7d137fc772..da74e793e6 100644 --- a/lib/stdlib/doc/src/gen_server.xml +++ b/lib/stdlib/doc/src/gen_server.xml @@ -60,6 +60,8 @@ gen_server:abcast     -----> Module:handle_cast/2  -                     -----> Module:handle_info/2 +-                     -----> Module:handle_continue/2 +  -                     -----> Module:terminate/2  -                     -----> Module:code_change/3</pre> @@ -88,6 +90,13 @@ gen_server:abcast     -----> Module:handle_cast/2        implies at least two garbage collections (when hibernating and        shortly after waking up) and is not something you want to do        between each call to a busy server.</p> + +    <p>If the <c>gen_server</c> process needs to perform an action +      immediately after initialization or to break the execution of a +      callback into multiple steps, it can return <c>{continue,Continue}</c> +      in place of the time-out or hibernation value, which will immediately +      invoke the <c>handle_continue/2</c> callback.</p> +    </description>    <funcs> @@ -610,12 +619,15 @@ gen_server:abcast     -----> Module:handle_cast/2          <v>State = term()</v>          <v>Result = {reply,Reply,NewState} | {reply,Reply,NewState,Timeout}</v>           <v>  | {reply,Reply,NewState,hibernate}</v> +        <v>  | {reply,Reply,NewState,{continue,Continue}}</v>          <v>  | {noreply,NewState} | {noreply,NewState,Timeout}</v>           <v>  | {noreply,NewState,hibernate}</v> +        <v>  | {noreply,NewState,{continue,Continue}}</v>          <v>  | {stop,Reason,Reply,NewState} | {stop,Reason,NewState}</v>          <v> Reply = term()</v>          <v> NewState = term()</v>          <v> Timeout = int()>=0 | infinity</v> +        <v> Continue = term()</v>          <v> Reason = term()</v>        </type>        <desc> @@ -673,9 +685,11 @@ gen_server:abcast     -----> Module:handle_cast/2          <v>State = term()</v>          <v>Result = {noreply,NewState} | {noreply,NewState,Timeout}</v>          <v>  | {noreply,NewState,hibernate}</v> +        <v>  | {noreply,NewState,{continue,Continue}}</v>          <v>  | {stop,Reason,NewState}</v>          <v> NewState = term()</v>          <v> Timeout = int()>=0 | infinity</v> +        <v> Continue = term()</v>          <v> Reason = term()</v>        </type>        <desc> @@ -690,6 +704,41 @@ gen_server:abcast     -----> Module:handle_cast/2      </func>      <func> +      <name>Module:handle_continue(Continue, State) -> Result</name> +      <fsummary>Handle a continue instruction.</fsummary> +      <type> +        <v>Continue = term()</v> +        <v>State = term()</v> +        <v>Result = {noreply,NewState} | {noreply,NewState,Timeout}</v> +        <v>  | {noreply,NewState,hibernate}</v> +        <v>  | {noreply,NewState,{continue,Continue}}</v> +        <v>  | {stop,Reason,NewState}</v> +        <v> NewState = term()</v> +        <v> Timeout = int()>=0 | infinity</v> +        <v> Continue = term()</v> +        <v> Reason = normal | term()</v> +      </type> +      <desc> +        <note> +          <p>This callback is optional, so callback modules need to +            export it only if they return <c>{continue,Continue}</c> +            from another callback. If continue is used and the callback +            is not implemented, the process will exit with <c>undef</c> +            error.</p> +        </note> +        <p>This function is called by a <c>gen_server</c> process whenever +          a previous callback returns <c>{continue, Continue}</c>. +          <c>handle_continue/2</c> is invoked immediately after the previous +          callback, which makes it useful for performing work after +          initialization or for splitting the work in a callback in +          multiple steps, updating the process state along the way.</p> +        <p>For a description of the other arguments and possible return values, +          see <seealso marker="#Module:handle_call/3"> +          <c>Module:handle_call/3</c></seealso>.</p> +      </desc> +    </func> + +    <func>        <name>Module:handle_info(Info, State) -> Result</name>        <fsummary>Handle an incoming message.</fsummary>        <type> @@ -697,6 +746,7 @@ gen_server:abcast     -----> Module:handle_cast/2          <v>State = term()</v>          <v>Result = {noreply,NewState} | {noreply,NewState,Timeout}</v>          <v>  | {noreply,NewState,hibernate}</v> +        <v>  | {noreply,NewState,{continue,Continue}}</v>          <v>  | {stop,Reason,NewState}</v>          <v> NewState = term()</v>          <v> Timeout = int()>=0 | infinity</v> @@ -726,7 +776,7 @@ gen_server:abcast     -----> Module:handle_cast/2        <type>          <v>Args = term()</v>          <v>Result =  {ok,State} | {ok,State,Timeout} | {ok,State,hibernate}</v> -        <v> | {stop,Reason} | ignore</v> +        <v> | {ok,State,{continue,Continue}} | {stop,Reason} | ignore</v>          <v> State = term()</v>          <v> Timeout = int()>=0 | infinity</v>          <v> Reason = term()</v> diff --git a/lib/stdlib/doc/src/gen_statem.xml b/lib/stdlib/doc/src/gen_statem.xml index a7caa71dcb..4a824f073e 100644 --- a/lib/stdlib/doc/src/gen_statem.xml +++ b/lib/stdlib/doc/src/gen_statem.xml @@ -1329,7 +1329,7 @@ handle_event(_, _, State, Data) ->  	  <c><anno>T</anno></c> is the time-out time.  	  <c>{clean_timeout,<anno>T</anno>}</c> works like  	  just <c>T</c> described in the note above -	  and uses a proxy process for <c>T < infinity</c>, +	  and uses a proxy process  	  while <c>{dirty_timeout,<anno>T</anno>}</c>  	  bypasses the proxy process which is more lightweight.  	</p> @@ -1339,8 +1339,12 @@ handle_event(_, _, State, Data) ->  	    with <c>{dirty_timeout,<anno>T</anno>}</c>  	    to avoid that the calling process dies when the call  	    times out, you will have to be prepared to handle -	    a late reply. -	    So why not just let the calling process die? +	    a late reply.  Note that there is an odd chance +	    to get a late reply even with +	    <c>{dirty_timeout,infinity}</c> or <c>infinity</c> +	    for example in the event of network problems. +	    So why not just let the calling process die +	    by not catching the exception?  	  </p>  	</note>  	<p> @@ -1851,7 +1855,7 @@ handle_event(_, _, State, Data) ->  	</p>          <note>  	  <p> -	    Note that if the <c>gen_statem</c> is started trough +	    Note that if the <c>gen_statem</c> is started through  	    <seealso marker="proc_lib"><c>proc_lib</c></seealso>  	    and  	    <seealso marker="#enter_loop/4"><c>enter_loop/4-6</c></seealso>, diff --git a/lib/stdlib/doc/src/rand.xml b/lib/stdlib/doc/src/rand.xml index 89fb858823..21f680a0ee 100644 --- a/lib/stdlib/doc/src/rand.xml +++ b/lib/stdlib/doc/src/rand.xml @@ -133,8 +133,9 @@        variable <c>rand_seed</c> to remember the current state.</p>      <p>If a process calls -      <seealso marker="#uniform-0"><c>uniform/0</c></seealso> or -      <seealso marker="#uniform-1"><c>uniform/1</c></seealso> without +      <seealso marker="#uniform-0"><c>uniform/0</c></seealso>, +      <seealso marker="#uniform-1"><c>uniform/1</c></seealso> or +      <seealso marker="#uniform_real-0"><c>uniform_real/0</c></seealso> without        setting a seed first, <seealso marker="#seed-1"><c>seed/1</c></seealso>        is called automatically with the default algorithm and creates a        non-constant seed.</p> @@ -168,10 +169,17 @@ R3 = rand:uniform(),</pre>  S0 = rand:seed_s(exrop),  {R4, S1} = rand:uniform_s(S0),</pre> +   <p>Textbook basic form Box-Muller standard normal deviate</p> + +   <pre> +R5 = rand:uniform_real(), +R6 = rand:uniform(), +SND0 = math:sqrt(-2 * math:log(R5)) * math:cos(math:pi() * R6)</pre> +     <p>Create a standard normal deviate:</p>     <pre> -{SND0, S2} = rand:normal_s(S1),</pre> +{SND1, S2} = rand:normal_s(S1),</pre>     <p>Create a normal deviate with mean -3 and variance 0.5:</p> @@ -414,7 +422,8 @@ tests. We suggest to use a sign test to extract a random Boolean value.</pre>  	    This function may return exactly <c>0.0</c> which can be  	    fatal for certain applications.  If that is undesired  	    you can use <c>(1.0 - rand:uniform())</c> to get the -	    interval <c>0.0 < <anno>X</anno> =< 1.0</c>. +	    interval <c>0.0 < <anno>X</anno> =< 1.0</c>, or instead use +	    <seealso marker="#uniform_real-0"><c>uniform_real/0</c></seealso>.  	  </p>  	  <p>  	    If neither endpoint is desired you can test and re-try @@ -432,6 +441,42 @@ end.</pre>      </func>      <func> +      <name name="uniform_real" arity="0"/> +      <fsummary>Return a random float.</fsummary> +      <desc><marker id="uniform_real-0"/> +        <p> +	  Returns a random float +	  uniformly distributed in the value range +	  <c>DBL_MIN =< <anno>X</anno> < 1.0</c> +	  and updates the state in the process dictionary. +	</p> +	<p> +	  Conceptually, a random real number <c>R</c> is generated +	  from the interval <c>0 =< R < 1</c> and then the +	  closest rounded down normalized number +	  in the IEEE 754 Double precision format +	  is returned. +	</p> +	<note> +	  <p> +	    The generated numbers from this function has got better +	    granularity for small numbers than the regular +	    <seealso marker="#uniform-0"><c>uniform/0</c></seealso> +	    because all bits in the mantissa are random. +	    This property, in combination with the fact that exactly zero +	    is never returned is useful for algoritms doing for example +	    <c>1.0 / <anno>X</anno></c> or <c>math:log(<anno>X</anno>)</c>. +	  </p> +	</note> +	<p> +	  See +	  <seealso marker="#uniform_real_s-1"><c>uniform_real_s/1</c></seealso> +	  for more explanation. +	</p> +      </desc> +    </func> + +    <func>        <name name="uniform" arity="1"/>        <fsummary>Return a random integer.</fsummary>        <desc><marker id="uniform-1"/> @@ -460,7 +505,8 @@ end.</pre>  	    This function may return exactly <c>0.0</c> which can be  	    fatal for certain applications.  If that is undesired  	    you can use <c>(1.0 - rand:uniform(State))</c> to get the -	    interval <c>0.0 < <anno>X</anno> =< 1.0</c>. +	    interval <c>0.0 < <anno>X</anno> =< 1.0</c>, or instead use +	    <seealso marker="#uniform_real_s-1"><c>uniform_real_s/1</c></seealso>.  	  </p>  	  <p>  	    If neither endpoint is desired you can test and re-try @@ -478,6 +524,68 @@ end.</pre>      </func>      <func> +      <name name="uniform_real_s" arity="1"/> +      <fsummary>Return a random float.</fsummary> +      <desc> +        <p> +	  Returns, for a specified state, a random float +	  uniformly distributed in the value range +	  <c>DBL_MIN =< <anno>X</anno> < 1.0</c> +	  and updates the state in the process dictionary. +	</p> +	<p> +	  Conceptually, a random real number <c>R</c> is generated +	  from the interval <c>0 =< R < 1</c> and then the +	  closest rounded down normalized number +	  in the IEEE 754 Double precision format +	  is returned. +	</p> +	<note> +	  <p> +	    The generated numbers from this function has got better +	    granularity for small numbers than the regular +	    <seealso marker="#uniform_s-1"><c>uniform_s/1</c></seealso> +	    because all bits in the mantissa are random. +	    This property, in combination with the fact that exactly zero +	    is never returned is useful for algoritms doing for example +	    <c>1.0 / <anno>X</anno></c> or <c>math:log(<anno>X</anno>)</c>. +	  </p> +	</note> +	<p> +	  The concept implicates that the probability to get +	  exactly zero is extremely low; so low that this function +	  is in fact guaranteed to never return zero.  The smallest +	  number that it might return is <c>DBL_MIN</c>, which is +	  2.0^(-1022). +	</p> +	<p> +	  The value range stated at the top of this function +	  description is technically correct, but +	  <c>0.0 =< <anno>X</anno> < 1.0</c> +	  is a better description of the generated numbers' +	  statistical distribution.  Except that exactly 0.0 +	  is never returned, which is not possible to observe +	  statistically. +	</p> +	<p> +	  For example; for all sub ranges +	  <c>N*2.0^(-53) =< X < (N+1)*2.0^(-53)</c> +	  where +	  <c>0 =< integer(N) < 2.0^53</c> +	  the probability is the same. +	  Compare that with the form of the numbers generated by +	  <seealso marker="#uniform_s-1"><c>uniform_s/1</c></seealso>. +	</p> +	<p> +	  Having to generate extra random bits for +	  small numbers costs a little performance. +	  This function is about 20% slower than the regular +	  <seealso marker="#uniform_s-1"><c>uniform_s/1</c></seealso> +	</p> +      </desc> +    </func> + +    <func>        <name name="uniform_s" arity="2"/>        <fsummary>Return a random integer.</fsummary>        <desc> diff --git a/lib/stdlib/doc/src/string.xml b/lib/stdlib/doc/src/string.xml index 9d5edd9ecf..130fc74a28 100644 --- a/lib/stdlib/doc/src/string.xml +++ b/lib/stdlib/doc/src/string.xml @@ -109,10 +109,8 @@      <p>This module has been reworked in Erlang/OTP 20 to      handle <seealso marker="unicode#type-chardata">      <c>unicode:chardata()</c></seealso> and operate on grapheme -    clusters. The <seealso marker="#oldapi"> <c>old -    functions</c></seealso> that only work on Latin-1 lists as input -    are still available but should not be -    used. They will be deprecated in Erlang/OTP 21. +    clusters. The <c>old functions</c> that only work on Latin-1 lists as input +    are kept for backwards compatibility reasons but should not be used.      </p>    </description> @@ -594,7 +592,7 @@ ÖÄÅ</pre>  	  or <c>both</c>, indicates from which direction characters  	  are to be removed.  	</p> -	<p> Default <c><anno>Characters</anno></c> are the set of +	<p> Default <c><anno>Characters</anno></c> is the set of  	nonbreakable whitespace codepoints, defined as  	Pattern_White_Space in  	<url href="http://unicode.org/reports/tr31/">Unicode Standard Annex #31</url>. @@ -631,393 +629,5 @@ ÖÄÅ</pre>      </func>    </funcs> - -  <section> -    <marker id="oldapi"/> -    <title>Obsolete API functions</title> -    <p>Here follows the function of the old API. -    These functions only work on a list of Latin-1 characters. -    </p> -    <note><p> -      The functions are kept for backward compatibility, but are -      not recommended. -      They will be deprecated in Erlang/OTP 21. -    </p> -    <p>Any undocumented functions in <c>string</c> are not to be used.</p> -    </note> -  </section> - -  <funcs> -    <func> -      <name name="centre" arity="2"/> -      <name name="centre" arity="3"/> -      <fsummary>Center a string.</fsummary> -      <desc> -        <p>Returns a string, where <c><anno>String</anno></c> is centered in the -          string and surrounded by blanks or <c><anno>Character</anno></c>. -	  The resulting string has length <c><anno>Number</anno></c>.</p> -	<p>This function is <seealso marker="#oldapi">obsolete</seealso>. -	Use -	<seealso marker="#pad/3"><c>pad/3</c></seealso>. -	</p> -      </desc> -    </func> - -    <func> -      <name name="chars" arity="2"/> -      <name name="chars" arity="3"/> -      <fsummary>Return a string consisting of numbers of characters.</fsummary> -      <desc> -        <p>Returns a string consisting of <c><anno>Number</anno></c> characters -          <c><anno>Character</anno></c>. Optionally, the string can end with -          string <c><anno>Tail</anno></c>.</p> -	<p>This function is <seealso marker="#oldapi">obsolete</seealso>. -	Use -	<seealso marker="lists#duplicate/2"><c>lists:duplicate/2</c></seealso>.</p> -      </desc> -    </func> - -    <func> -      <name name="chr" arity="2"/> -      <fsummary>Return the index of the first occurrence of -        a character in a string.</fsummary> -      <desc> -        <p>Returns the index of the first occurrence of -          <c><anno>Character</anno></c> in <c><anno>String</anno></c>. Returns -          <c>0</c> if <c><anno>Character</anno></c> does not occur.</p> -	<p>This function is <seealso marker="#oldapi">obsolete</seealso>. -	Use -	<seealso marker="#find/2"><c>find/2</c></seealso>.</p> -      </desc> -    </func> - -    <func> -      <name name="concat" arity="2"/> -      <fsummary>Concatenate two strings.</fsummary> -      <desc> -        <p>Concatenates <c><anno>String1</anno></c> and -          <c><anno>String2</anno></c> to form a new string -          <c><anno>String3</anno></c>, which is returned.</p> -	<p> -	  This function is <seealso marker="#oldapi">obsolete</seealso>. -	  Use <c>[<anno>String1</anno>, <anno>String2</anno>]</c> as -	  <c>Data</c> argument, and call -	  <seealso marker="unicode#characters_to_list/2"> -	  <c>unicode:characters_to_list/2</c></seealso> or -	  <seealso marker="unicode#characters_to_binary/2"> -	  <c>unicode:characters_to_binary/2</c></seealso> -	  to flatten the output. -	</p> -      </desc> -    </func> - -    <func> -      <name name="copies" arity="2"/> -      <fsummary>Copy a string.</fsummary> -      <desc> -        <p>Returns a string containing <c><anno>String</anno></c> repeated -          <c><anno>Number</anno></c> times.</p> -	<p>This function is <seealso marker="#oldapi">obsolete</seealso>. -	Use -	<seealso marker="lists#duplicate/2"><c>lists:duplicate/2</c></seealso>.</p> -      </desc> -    </func> - -    <func> -      <name name="cspan" arity="2"/> -      <fsummary>Span characters at start of a string.</fsummary> -      <desc> -        <p>Returns the length of the maximum initial segment of -          <c><anno>String</anno></c>, which consists entirely of characters -          not from <c><anno>Chars</anno></c>.</p> -	<p>This function is <seealso marker="#oldapi">obsolete</seealso>. -	Use -	<seealso marker="#take/3"><c>take/3</c></seealso>.</p> -        <p><em>Example:</em></p> -        <code type="none"> -> string:cspan("\t    abcdef", " \t"). -0</code> -      </desc> -    </func> - -    <func> -      <name name="join" arity="2"/> -      <fsummary>Join a list of strings with separator.</fsummary> -      <desc> -        <p>Returns a string with the elements of <c><anno>StringList</anno></c> -          separated by the string in <c><anno>Separator</anno></c>.</p> -	<p>This function is <seealso marker="#oldapi">obsolete</seealso>. -	Use -	<seealso marker="lists#join/2"><c>lists:join/2</c></seealso>.</p> -        <p><em>Example:</em></p> -        <code type="none"> -> join(["one", "two", "three"], ", "). -"one, two, three"</code> -      </desc> -    </func> - -    <func> -      <name name="left" arity="2"/> -      <name name="left" arity="3"/> -      <fsummary>Adjust left end of a string.</fsummary> -      <desc> -        <p>Returns <c><anno>String</anno></c> with the length adjusted in -          accordance with <c><anno>Number</anno></c>. The left margin is -          fixed. If <c>length(<anno>String</anno>)</c> < -          <c><anno>Number</anno></c>, then <c><anno>String</anno></c> is padded -          with blanks or <c><anno>Character</anno></c>s.</p> -	<p>This function is <seealso marker="#oldapi">obsolete</seealso>. -	Use -	<seealso marker="#pad/2"><c>pad/2</c></seealso> or -	<seealso marker="#pad/3"><c>pad/3</c></seealso>.</p> -        <p><em>Example:</em></p> -        <code type="none"> -> string:left("Hello",10,$.). -"Hello....."</code> -      </desc> -    </func> - -    <func> -      <name name="len" arity="1"/> -      <fsummary>Return the length of a string.</fsummary> -      <desc> -        <p>Returns the number of characters in <c><anno>String</anno></c>.</p> -	<p>This function is <seealso marker="#oldapi">obsolete</seealso>. -	Use -	<seealso marker="#length/1"><c>length/1</c></seealso>.</p> -      </desc> -    </func> - -    <func> -      <name name="rchr" arity="2"/> -      <fsummary>Return the index of the last occurrence of -        a character in a string.</fsummary> -      <desc> -        <p>Returns the index of the last occurrence of -          <c><anno>Character</anno></c> in <c><anno>String</anno></c>. Returns -          <c>0</c> if <c><anno>Character</anno></c> does not occur.</p> -	<p>This function is <seealso marker="#oldapi">obsolete</seealso>. -	Use -	<seealso marker="#find/3"><c>find/3</c></seealso>.</p> -      </desc> -    </func> - -    <func> -      <name name="right" arity="2"/> -      <name name="right" arity="3"/> -      <fsummary>Adjust right end of a string.</fsummary> -      <desc> -        <p>Returns <c><anno>String</anno></c> with the length adjusted in -          accordance with <c><anno>Number</anno></c>. The right margin is -          fixed. If the length of <c>(<anno>String</anno>)</c> < -          <c><anno>Number</anno></c>, then <c><anno>String</anno></c> is padded -          with blanks or <c><anno>Character</anno></c>s.</p> -	<p>This function is <seealso marker="#oldapi">obsolete</seealso>. -	Use -	<seealso marker="#pad/3"><c>pad/3</c></seealso>.</p> -        <p><em>Example:</em></p> -        <code type="none"> -> string:right("Hello", 10, $.). -".....Hello"</code> -      </desc> -    </func> - -    <func> -      <name name="rstr" arity="2"/> -      <fsummary>Find the index of a substring.</fsummary> -      <desc> -        <p>Returns the position where the last occurrence of -          <c><anno>SubString</anno></c> begins in <c><anno>String</anno></c>. -          Returns <c>0</c> if <c><anno>SubString</anno></c> -          does not exist in <c><anno>String</anno></c>.</p> -	<p>This function is <seealso marker="#oldapi">obsolete</seealso>. -	Use -	<seealso marker="#find/3"><c>find/3</c></seealso>.</p> -        <p><em>Example:</em></p> -        <code type="none"> -> string:rstr(" Hello Hello World World ", "Hello World"). -8</code> -      </desc> -    </func> - -    <func> -      <name name="span" arity="2"/> -      <fsummary>Span characters at start of a string.</fsummary> -      <desc> -        <p>Returns the length of the maximum initial segment of -          <c><anno>String</anno></c>, which consists entirely of characters -          from <c><anno>Chars</anno></c>.</p> -	<p>This function is <seealso marker="#oldapi">obsolete</seealso>. -	Use -	<seealso marker="#take/2"><c>take/2</c></seealso>.</p> -        <p><em>Example:</em></p> -        <code type="none"> -> string:span("\t    abcdef", " \t"). -5</code> -      </desc> -    </func> - -    <func> -      <name name="str" arity="2"/> -      <fsummary>Find the index of a substring.</fsummary> -      <desc> -        <p>Returns the position where the first occurrence of -          <c><anno>SubString</anno></c> begins in <c><anno>String</anno></c>. -          Returns <c>0</c> if <c><anno>SubString</anno></c> -          does not exist in <c><anno>String</anno></c>.</p> -	<p>This function is <seealso marker="#oldapi">obsolete</seealso>. -	Use -	<seealso marker="#find/2"><c>find/2</c></seealso>.</p> -        <p><em>Example:</em></p> -        <code type="none"> -> string:str(" Hello Hello World World ", "Hello World"). -8</code> -      </desc> -    </func> - -    <func> -      <name name="strip" arity="1"/> -      <name name="strip" arity="2"/> -      <name name="strip" arity="3"/> -      <fsummary>Strip leading or trailing characters.</fsummary> -      <desc> -        <p>Returns a string, where leading or trailing, or both, blanks or a -          number of <c><anno>Character</anno></c> have been removed. -          <c><anno>Direction</anno></c>, which can be <c>left</c>, <c>right</c>, -          or <c>both</c>, indicates from which direction blanks are to be -          removed. <c>strip/1</c> is equivalent to -          <c>strip(String, both)</c>.</p> -	<p>This function is <seealso marker="#oldapi">obsolete</seealso>. -	Use -	<seealso marker="#trim/3"><c>trim/3</c></seealso>.</p> -        <p><em>Example:</em></p> -        <code type="none"> -> string:strip("...Hello.....", both, $.). -"Hello"</code> -      </desc> -    </func> - -    <func> -      <name name="sub_string" arity="2"/> -      <name name="sub_string" arity="3"/> -      <fsummary>Extract a substring.</fsummary> -      <desc> -        <p>Returns a substring of <c><anno>String</anno></c>, starting at -          position <c><anno>Start</anno></c> to the end of the string, or to -          and including position <c><anno>Stop</anno></c>.</p> -	<p>This function is <seealso marker="#oldapi">obsolete</seealso>. -	Use -	<seealso marker="#slice/3"><c>slice/3</c></seealso>.</p> -        <p><em>Example:</em></p> -        <code type="none"> -sub_string("Hello World", 4, 8). -"lo Wo"</code> -      </desc> -    </func> - -    <func> -      <name name="substr" arity="2"/> -      <name name="substr" arity="3"/> -      <fsummary>Return a substring of a string.</fsummary> -      <desc> -        <p>Returns a substring of <c><anno>String</anno></c>, starting at -          position <c><anno>Start</anno></c>, and ending at the end of the -          string or at length <c><anno>Length</anno></c>.</p> -	<p>This function is <seealso marker="#oldapi">obsolete</seealso>. -	Use -	<seealso marker="#slice/3"><c>slice/3</c></seealso>.</p> -        <p><em>Example:</em></p> -        <code type="none"> -> substr("Hello World", 4, 5). -"lo Wo"</code> -      </desc> -    </func> - -    <func> -      <name name="sub_word" arity="2"/> -      <name name="sub_word" arity="3"/> -      <fsummary>Extract subword.</fsummary> -      <desc> -        <p>Returns the word in position <c><anno>Number</anno></c> of -          <c><anno>String</anno></c>. Words are separated by blanks or -          <c><anno>Character</anno></c>s.</p> -	<p>This function is <seealso marker="#oldapi">obsolete</seealso>. -	Use -	<seealso marker="#nth_lexeme/3"><c>nth_lexeme/3</c></seealso>.</p> -        <p><em>Example:</em></p> -        <code type="none"> -> string:sub_word(" Hello old boy !",3,$o). -"ld b"</code> -      </desc> -    </func> - -    <func> -      <name name="to_lower" arity="1" clause_i="1"/> -      <name name="to_lower" arity="1" clause_i="2"/> -      <name name="to_upper" arity="1" clause_i="1"/> -      <name name="to_upper" arity="1" clause_i="2"/> -      <fsummary>Convert case of string (ISO/IEC 8859-1).</fsummary> -      <type variable="String" name_i="1"/> -      <type variable="Result" name_i="1"/> -      <type variable="Char"/> -      <type variable="CharResult"/> -      <desc> -        <p>The specified string or character is case-converted. Notice that -          the supported character set is ISO/IEC 8859-1 (also called Latin 1); -          all values outside this set are unchanged</p> -	<p>This function is <seealso marker="#oldapi">obsolete</seealso> use -	<seealso marker="#lowercase/1"><c>lowercase/1</c></seealso>, -	<seealso marker="#uppercase/1"><c>uppercase/1</c></seealso>, -	<seealso marker="#titlecase/1"><c>titlecase/1</c></seealso> or -	<seealso marker="#casefold/1"><c>casefold/1</c></seealso>.</p> -      </desc> -    </func> - -    <func> -      <name name="tokens" arity="2"/> -      <fsummary>Split string into tokens.</fsummary> -      <desc> -        <p>Returns a list of tokens in <c><anno>String</anno></c>, separated -          by the characters in <c><anno>SeparatorList</anno></c>.</p> -        <p><em>Example:</em></p> -        <code type="none"> -> tokens("abc defxxghix jkl", "x "). -["abc", "def", "ghi", "jkl"]</code> -        <p>Notice that, as shown in this example, two or more -          adjacent separator characters in <c><anno>String</anno></c> -          are treated as one. That is, there are no empty -          strings in the resulting list of tokens.</p> -	<p>This function is <seealso marker="#oldapi">obsolete</seealso>. -	Use -	<seealso marker="#lexemes/2"><c>lexemes/2</c></seealso>.</p> -      </desc> -    </func> - -    <func> -      <name name="words" arity="1"/> -      <name name="words" arity="2"/> -      <fsummary>Count blank separated words.</fsummary> -      <desc> -        <p>Returns the number of words in <c><anno>String</anno></c>, separated -          by blanks or <c><anno>Character</anno></c>.</p> -	<p>This function is <seealso marker="#oldapi">obsolete</seealso>. -	Use -	<seealso marker="#lexemes/2"><c>lexemes/2</c></seealso>.</p> -        <p><em>Example:</em></p> -        <code type="none"> -> words(" Hello old boy!", $o). -4</code> -      </desc> -    </func> -  </funcs> - -  <section> -    <title>Notes</title> -    <p>Some of the general string functions can seem to overlap each -      other. The reason is that this string package is the -      combination of two earlier packages and all functions of -      both packages have been retained.</p> -  </section> -  </erlref> diff --git a/lib/stdlib/doc/src/unicode_usage.xml b/lib/stdlib/doc/src/unicode_usage.xml index 26dc46719e..789e063c12 100644 --- a/lib/stdlib/doc/src/unicode_usage.xml +++ b/lib/stdlib/doc/src/unicode_usage.xml @@ -719,8 +719,8 @@ Eshell V5.10.1  (abort with ^G)    </section>     <section> -    <title>Unicode Filenames</title>      <marker id="unicode_file_names"/> +    <title>Unicode Filenames</title>      <p>Most modern operating systems support Unicode filenames in some way.        There are many different ways to do this and Erlang by default treats the        different approaches differently:</p> @@ -855,8 +855,12 @@ Eshell V5.10.1  (abort with ^G)      </note>      <section> -      <title>Notes About Raw Filenames</title>        <marker id="notes-about-raw-filenames"/> +      <title>Notes About Raw Filenames</title> +      <note><p> +	Note that raw filenames <em>not</em> necessarily are encoded the +	same way as on the OS level. +      </p></note>        <p>Raw filenames were introduced together with Unicode filename support          in ERTS 5.8.2 (Erlang/OTP R14B01). The reason "raw          filenames" were introduced in the system was | 
