Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Split files by directories. Merge hrls. Move type information to file…

…s from .hrl-files.
  • Loading branch information...
commit 73e5e7ace9b1c745b29e2a500a9e3d937854bfde 1 parent 2feba99
@arcusfelis arcusfelis authored
Showing with 888 additions and 2,763 deletions.
  1. +1 −1  Makefile
  2. +11 −5 doc/README.md
  3. +2 −2 doc/edoc-info
  4. +3 −0  doc/uca/package-summary.md
  5. +6 −12 doc/{ → uca}/ux_uca_compress.md
  6. +7 −0 doc/uca/ux_uca_extract.md
  7. +10 −19 doc/{ → uca}/ux_uca_options.md
  8. +6 −12 doc/{ → uca}/ux_uca_sort_key_binary.md
  9. +6 −12 doc/{ → uca}/ux_uca_sort_key_binary_cs.md
  10. +6 −12 doc/{ → uca}/ux_uca_sort_key_list.md
  11. +6 −12 doc/{ → uca}/ux_uca_sort_key_uncompressed.md
  12. +94 −0 doc/uca/ux_uca_utils.md
  13. +3 −0  doc/unidata/package-summary.md
  14. +3 −0  doc/utils/package-summary.md
  15. +59 −0 doc/utils/ux_opt_ranges.md
  16. +13 −19 doc/{ux_range.md → utils/ux_ranges.md}
  17. +59 −59 doc/ux_char.md
  18. +0 −333 doc/ux_col.md
  19. +37 −0 doc/ux_gb.md
  20. +0 −82 doc/ux_math.md
  21. +0 −83 doc/ux_par.md
  22. +0 −50 doc/ux_ranges.md
  23. +92 −165 doc/ux_string.md
  24. +29 −0 doc/ux_types.md
  25. +97 −52 doc/ux_uca.md
  26. +0 −10 doc/ux_uca_alt.md
  27. +0 −10 doc/ux_uca_extract.md
  28. +0 −10 doc/ux_uca_tests.md
  29. +0 −156 doc/ux_unidata_filelist.md
  30. +0 −146 doc/ux_unidata_parser.md
  31. +0 −56 doc/ux_unidata_parser_allkeys.md
  32. +0 −56 doc/ux_unidata_parser_blocks.md
  33. +0 −56 doc/ux_unidata_parser_comp_exclusions.md
  34. +0 −56 doc/ux_unidata_parser_norm_props.md
  35. +0 −56 doc/ux_unidata_parser_unidata.md
  36. +0 −116 doc/ux_unidata_server.md
  37. +0 −136 doc/ux_unidata_store.md
  38. +0 −58 doc/ux_unidata_store_sup.md
  39. +0 −56 doc/ux_utils.md
  40. +46 −0 doc/ux_wb.md
  41. +4 −5 ebin/ux.app
  42. +5 −4 rebar.config
  43. +0 −275 root.xml
  44. +1 −0  src/uca/ux.hrl
  45. +5 −42 src/{ → uca}/ux_uca.hrl
  46. +1 −1  src/{ → uca}/ux_uca_alt.erl
  47. +0 −2  src/{ → uca}/ux_uca_compress.erl
  48. +8 −11 src/{ → uca}/ux_uca_extract.erl
  49. 0  src/{ → uca}/ux_uca_options.erl
  50. +7 −2 src/{ → uca}/ux_uca_sort_key_binary.erl
  51. +6 −2 src/{ → uca}/ux_uca_sort_key_binary_cs.erl
  52. +7 −2 src/{ → uca}/ux_uca_sort_key_list.erl
  53. +7 −2 src/{ → uca}/ux_uca_sort_key_uncompressed.erl
  54. +18 −5 src/{ux_uca_common.hrl → uca/ux_uca_utils.erl}
  55. +1 −0  src/unidata/ux.hrl
  56. +0 −1  src/{ → unidata}/ux_unidata_filelist.erl
  57. +0 −1  src/{ → unidata}/ux_unidata_parser.erl
  58. +5 −4 src/{ → unidata}/ux_unidata_parser_allkeys.erl
  59. 0  src/{ → unidata}/ux_unidata_parser_blocks.erl
  60. 0  src/{ → unidata}/ux_unidata_parser_comp_exclusions.erl
  61. 0  src/{ → unidata}/ux_unidata_parser_grapheme_break_property.erl
  62. 0  src/{ → unidata}/ux_unidata_parser_norm_props.erl
  63. 0  src/{ → unidata}/ux_unidata_parser_scripts.erl
  64. 0  src/{ → unidata}/ux_unidata_parser_unidata.erl
  65. 0  src/{ → unidata}/ux_unidata_parser_word_break_property.erl
  66. +0 −1  src/{ → unidata}/ux_unidata_server.erl
  67. +0 −1  src/{ → unidata}/ux_unidata_store.erl
  68. 0  src/{ → unidata}/ux_unidata_store_sup.erl
  69. +0 −1  src/{ → utils}/ux_opt_ranges.erl
  70. +0 −1  src/{ → utils}/ux_ranges.erl
  71. +105 −0 src/ux.hrl
  72. +0 −1  src/ux_break.erl
  73. +4 −2 src/ux_char.erl
  74. +0 −124 src/ux_char.hrl
  75. +1 −1  src/ux_gb.erl
  76. +0 −261 src/ux_html.erl
  77. +1 −3 src/ux_string.erl
  78. +0 −57 src/ux_string.hrl
  79. +43 −0 src/ux_types.erl
  80. +58 −3 src/ux_uca.erl
  81. +1 −1  src/ux_unidata.erl
  82. +0 −30 src/ux_unidata.hrl
  83. +0 −5 src/ux_unidata_server.hrl
  84. +1 −1  src/ux_wb.erl
  85. +1 −1  start-dev.sh
  86. 0  {src → test}/ux_break_tests.erl
  87. 0  {src → test}/ux_char_tests.erl
  88. +0 −1  {src → test}/ux_string_tests.erl
  89. +2 −0  {src → test}/ux_tests.hrl
  90. +0 −1  {src → test}/ux_uca_tests.erl
View
2  Makefile
@@ -10,7 +10,7 @@ all:
edoc:
@$(REBAR) skip_deps=true doc
-test:
+eunit:
@$(REBAR) skip_deps=true eunit
clean:
View
16 doc/README.md
@@ -1,18 +1,24 @@
-<h1>The ux application</h1>
+#The ux application#
-The ux application
-==================
+##Packages##
-<h2 class="indextitle">Modules</h2>
+<table width="100%" border="0" summary="list of packages"><tr><td><a href="uca/package-summary.md" class="package">uca</a></td></tr><tr><td><a href="unidata/package-summary.md" class="package">unidata</a></td></tr><tr><td><a href="utils/package-summary.md" class="package">utils</a></td></tr></table>
+
+
+
+##Modules##
<table width="100%" border="0" summary="list of modules">
<tr><td><a href="ux_char.md" class="module">ux_char</a></td></tr>
+<tr><td><a href="ux_gb.md" class="module">ux_gb</a></td></tr>
<tr><td><a href="ux_string.md" class="module">ux_string</a></td></tr>
+<tr><td><a href="ux_types.md" class="module">ux_types</a></td></tr>
<tr><td><a href="ux_uca.md" class="module">ux_uca</a></td></tr>
-<tr><td><a href="ux_uca_options.md" class="module">ux_uca_options</a></td></tr></table>
+<tr><td><a href="ux_uca_options.md" class="module">ux_uca_options</a></td></tr>
+<tr><td><a href="ux_wb.md" class="module">ux_wb</a></td></tr></table>
View
4 doc/edoc-info
@@ -1,3 +1,3 @@
{application,ux}.
-{packages,[]}.
-{modules,[ux_char,ux_string,ux_uca,ux_uca_options]}.
+{packages,[uca,unidata,utils]}.
+{modules,[ux_char,ux_gb,ux_string,ux_types,ux_uca,ux_uca_options,ux_wb]}.
View
3  doc/uca/package-summary.md
@@ -0,0 +1,3 @@
+
+
+#Package uca#
View
18 doc/ux_uca_compress.md → doc/uca/ux_uca_compress.md
@@ -1,33 +1,27 @@
-Module ux_uca_compress
-======================
-<h1>Module ux_uca_compress</h1>
-
+#Module ux_uca_compress#
* [Function Index](#index)
* [Function Details](#functions)
+<a name="index"></a>
-
-<h2><a name="index">Function Index</a></h2>
-
+##Function Index##
<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#reassign_fun-3">reassign_fun/3</a></td><td></td></tr></table>
+<a name="functions"></a>
-
-<h2><a name="functions">Function Details</a></h2>
-
+##Function Details##
<a name="reassign_fun-3"></a>
-<h3>reassign_fun/3</h3>
-
+###reassign_fun/3##
View
7 doc/uca/ux_uca_extract.md
@@ -0,0 +1,7 @@
+
+
+#Module ux_uca_extract#
+
+
+
+
View
29 doc/ux_uca_options.md → doc/uca/ux_uca_options.md
@@ -1,9 +1,6 @@
-Module ux_uca_options
-=====================
-<h1>Module ux_uca_options</h1>
-
+#Module ux_uca_options#
* [Description](#description)
* [Function Index](#index)
* [Function Details](#functions)
@@ -12,32 +9,28 @@ Module ux_uca_options
This library contains functions for manipulating with
a configuration of sorting.
+<a name="description"></a>
-
-<h2><a name="description">Description</a></h2>
-
+##Description##
You can use it as:
`C = ux_uca_options:get_options(shifted).`
And then:
-`ux_uca:sort(C, ["string1", "string2", "string3").`
-
-<h2><a name="index">Function Index</a></h2>
+`ux_uca:sort(C, ["string1", "string2", "string3").`<a name="index"></a>
+##Function Index##
<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#get_options-0">get_options/0</a></td><td></td></tr><tr><td valign="top"><a href="#get_options-1">get_options/1</a></td><td></td></tr><tr><td valign="top"><a href="#get_options-2">get_options/2</a></td><td>If you want use this library without import *.hrl, you can create
a #uca_options {} record with this function.</td></tr></table>
+<a name="functions"></a>
-
-<h2><a name="functions">Function Details</a></h2>
-
+##Function Details##
<a name="get_options-0"></a>
-<h3>get_options/0</h3>
-
+###get_options/0##
@@ -46,8 +39,7 @@ a #uca_options {} record with this function.</td></tr></table>
<a name="get_options-1"></a>
-<h3>get_options/1</h3>
-
+###get_options/1##
@@ -56,8 +48,7 @@ a #uca_options {} record with this function.</td></tr></table>
<a name="get_options-2"></a>
-<h3>get_options/2</h3>
-
+###get_options/2##
View
18 doc/ux_uca_sort_key_binary.md → doc/uca/ux_uca_sort_key_binary.md
@@ -1,33 +1,27 @@
-Module ux_uca_sort_key_binary
-=============================
-<h1>Module ux_uca_sort_key_binary</h1>
-
+#Module ux_uca_sort_key_binary#
* [Function Index](#index)
* [Function Details](#functions)
+<a name="index"></a>
-
-<h2><a name="index">Function Index</a></h2>
-
+##Function Index##
<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#sort_key-2">sort_key/2</a></td><td></td></tr></table>
+<a name="functions"></a>
-
-<h2><a name="functions">Function Details</a></h2>
-
+##Function Details##
<a name="sort_key-2"></a>
-<h3>sort_key/2</h3>
-
+###sort_key/2##
View
18 doc/ux_uca_sort_key_binary_cs.md → doc/uca/ux_uca_sort_key_binary_cs.md
@@ -1,33 +1,27 @@
-Module ux_uca_sort_key_binary_cs
-================================
-<h1>Module ux_uca_sort_key_binary_cs</h1>
-
+#Module ux_uca_sort_key_binary_cs#
* [Function Index](#index)
* [Function Details](#functions)
+<a name="index"></a>
-
-<h2><a name="index">Function Index</a></h2>
-
+##Function Index##
<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#sort_key-2">sort_key/2</a></td><td></td></tr></table>
+<a name="functions"></a>
-
-<h2><a name="functions">Function Details</a></h2>
-
+##Function Details##
<a name="sort_key-2"></a>
-<h3>sort_key/2</h3>
-
+###sort_key/2##
View
18 doc/ux_uca_sort_key_list.md → doc/uca/ux_uca_sort_key_list.md
@@ -1,33 +1,27 @@
-Module ux_uca_sort_key_list
-===========================
-<h1>Module ux_uca_sort_key_list</h1>
-
+#Module ux_uca_sort_key_list#
* [Function Index](#index)
* [Function Details](#functions)
+<a name="index"></a>
-
-<h2><a name="index">Function Index</a></h2>
-
+##Function Index##
<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#sort_key-2">sort_key/2</a></td><td></td></tr></table>
+<a name="functions"></a>
-
-<h2><a name="functions">Function Details</a></h2>
-
+##Function Details##
<a name="sort_key-2"></a>
-<h3>sort_key/2</h3>
-
+###sort_key/2##
View
18 doc/ux_uca_sort_key_uncompressed.md → doc/uca/ux_uca_sort_key_uncompressed.md
@@ -1,33 +1,27 @@
-Module ux_uca_sort_key_uncompressed
-===================================
-<h1>Module ux_uca_sort_key_uncompressed</h1>
-
+#Module ux_uca_sort_key_uncompressed#
* [Function Index](#index)
* [Function Details](#functions)
+<a name="index"></a>
-
-<h2><a name="index">Function Index</a></h2>
-
+##Function Index##
<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#sort_key-2">sort_key/2</a></td><td></td></tr></table>
+<a name="functions"></a>
-
-<h2><a name="functions">Function Details</a></h2>
-
+##Function Details##
<a name="sort_key-2"></a>
-<h3>sort_key/2</h3>
-
+###sort_key/2##
View
94 doc/uca/ux_uca_utils.md
@@ -0,0 +1,94 @@
+
+
+#Module ux_uca_utils#
+* [Function Index](#index)
+* [Function Details](#functions)
+
+
+
+
+<a name="index"></a>
+
+##Function Index##
+
+
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#do_alt-2">do_alt/2</a></td><td></td></tr><tr><td valign="top"><a href="#do_alt-3">do_alt/3</a></td><td></td></tr><tr><td valign="top"><a href="#do_extract-3">do_extract/3</a></td><td></td></tr><tr><td valign="top"><a href="#get_ducet-0">get_ducet/0</a></td><td></td></tr><tr><td valign="top"><a href="#get_options-0">get_options/0</a></td><td></td></tr><tr><td valign="top"><a href="#get_reassign_function-2">get_reassign_function/2</a></td><td></td></tr><tr><td valign="top"><a href="#split_levels-3">split_levels/3</a></td><td></td></tr></table>
+
+
+<a name="functions"></a>
+
+##Function Details##
+
+<a name="do_alt-2"></a>
+
+###do_alt/2##
+
+
+
+
+<pre>do_alt(A::function(), W::binary() | integer()) -&gt; [integer()]</pre>
+<br></br>
+
+
+<a name="do_alt-3"></a>
+
+###do_alt/3##
+
+
+
+
+`do_alt(A, W, S) -> any()`
+
+<a name="do_extract-3"></a>
+
+###do_extract/3##
+
+
+
+
+<pre>do_extract(Uca_options::#uca_options{}, S::string(), D::function()) -&gt; {integer(), string()}</pre>
+<br></br>
+
+
+<a name="get_ducet-0"></a>
+
+###get_ducet/0##
+
+
+
+
+<pre>get_ducet() -&gt; function()</pre>
+<br></br>
+
+
+<a name="get_options-0"></a>
+
+###get_options/0##
+
+
+
+
+<pre>get_options() -&gt; #uca_options{}</pre>
+<br></br>
+
+
+<a name="get_reassign_function-2"></a>
+
+###get_reassign_function/2##
+
+
+
+
+`get_reassign_function(D, L) -> any()`
+
+<a name="split_levels-3"></a>
+
+###split_levels/3##
+
+
+
+
+<pre>split_levels(L::integer(), B::boolean(), W::[[integer()]]) -&gt; {[integer()], [[integer()]]}</pre>
+<br></br>
+
+
View
3  doc/unidata/package-summary.md
@@ -0,0 +1,3 @@
+
+
+#Package unidata#
View
3  doc/utils/package-summary.md
@@ -0,0 +1,3 @@
+
+
+#Package utils#
View
59 doc/utils/ux_opt_ranges.md
@@ -0,0 +1,59 @@
+
+
+#Module ux_opt_ranges#
+* [Description](#description)
+* [Function Index](#index)
+* [Function Details](#functions)
+
+
+Functions for working with ranges in lists.
+
+<a name="description"></a>
+
+##Description##
+
+
+
+
+ETS is fast only as a key-value store.
+But some data files contains ranges: From..To.
+The fastest way is using lists for storing this values.
+
+
+
+There is two types of these lists:
+* with booleans: `[{1,3}, 6, {8,9}]`. For example, `is_compat`;
+* with values: `[{{1,3}, value1}, {{4,12}, value2}]`.
+
+`in_list` function is for the first type.
+`search` function is for the second type.
+<a name="index"></a>
+
+##Function Index##
+
+
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#in_list-1">in_list/1</a></td><td></td></tr><tr><td valign="top"><a href="#search-2">search/2</a></td><td></td></tr></table>
+
+
+<a name="functions"></a>
+
+##Function Details##
+
+<a name="in_list-1"></a>
+
+###in_list/1##
+
+
+
+
+`in_list(V) -> any()`
+
+<a name="search-2"></a>
+
+###search/2##
+
+
+
+
+`search(Def, V) -> any()`
+
View
32 doc/ux_range.md → doc/utils/ux_ranges.md
@@ -1,23 +1,21 @@
-Module ux_range
-===============
-<h1>Module ux_range</h1>
-
+#Module ux_ranges#
* [Description](#description)
* [Function Index](#index)
* [Function Details](#functions)
-ETS is fast only as a key-value store.
+Functions for working with ranges in lists.
+<a name="description"></a>
+##Description##
-<h2><a name="description">Description</a></h2>
-
+ETS is fast only as a key-value store.
But some data files contains ranges: From..To.
The fastest way is using lists for storing this values.
@@ -29,41 +27,37 @@ There is two types of these lists:
`in_list` function is for the first type.
`search` function is for the second type.
+<a name="index"></a>
-
-<h2><a name="index">Function Index</a></h2>
-
+##Function Index##
<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#in_list-2">in_list/2</a></td><td></td></tr><tr><td valign="top"><a href="#search-2">search/2</a></td><td></td></tr></table>
+<a name="functions"></a>
-
-<h2><a name="functions">Function Details</a></h2>
-
+##Function Details##
<a name="in_list-2"></a>
-<h3>in_list/2</h3>
-
+###in_list/2##
-<pre>in_list(T::[{integer(), integer()} | integer()], V::integer()) -> boolean()</pre>
+<pre>in_list(T::[{integer(), integer()} | integer()], H::integer()) -&gt; boolean()</pre>
<br></br>
<a name="search-2"></a>
-<h3>search/2</h3>
-
+###search/2##
-<pre>search(T::[{{integer(), integer()} | integer(), term()}], V::integer()) -> boolean()</pre>
+<pre>search(T::[{{integer(), integer()} | integer(), term()}], H::integer()) -&gt; boolean()</pre>
<br></br>
View
118 doc/ux_char.md
@@ -1,10 +1,8 @@
-Module ux_char
-==============
-<h1>Module ux_char</h1>
-
+#Module ux_char#
* [Description](#description)
+* [Data Types](#types)
* [Function Index](#index)
* [Function Details](#functions)
@@ -16,59 +14,66 @@ Character functions.
Copyright (c) 2010-2011 Michael Uvarov
__Authors:__ Michael Uvarov ([`freeakk@gmail.com`](mailto:freeakk@gmail.com)).
+<a name="types"></a>
-<h2><a name="index">Function Index</a></h2>
+##Data Types##
-<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#block-1">block/1</a></td><td></td></tr><tr><td valign="top"><a href="#comment-1">comment/1</a></td><td></td></tr><tr><td valign="top"><a href="#is_acsii-1">is_acsii/1</a></td><td></td></tr><tr><td valign="top"><a href="#is_cjk_compatibility_ideograph-1">is_cjk_compatibility_ideograph/1</a></td><td></td></tr><tr><td valign="top"><a href="#is_cjk_unified_ideograph-1">is_cjk_unified_ideograph/1</a></td><td></td></tr><tr><td valign="top"><a href="#is_decimal-1">is_decimal/1</a></td><td>Return true, if C is a decimal number.</td></tr><tr><td valign="top"><a href="#is_hangul-1">is_hangul/1</a></td><td></td></tr><tr><td valign="top"><a href="#is_hangul_precomposed-1">is_hangul_precomposed/1</a></td><td></td></tr><tr><td valign="top"><a href="#is_letter-1">is_letter/1</a></td><td>Returns true, if C is a letter.</td></tr><tr><td valign="top"><a href="#is_lower-1">is_lower/1</a></td><td></td></tr><tr><td valign="top"><a href="#is_mark-1">is_mark/1</a></td><td></td></tr><tr><td valign="top"><a href="#is_number-1">is_number/1</a></td><td>Returns true, if is C is a number.</td></tr><tr><td valign="top"><a href="#is_punctuation_mark-1">is_punctuation_mark/1</a></td><td>Returns true, if is C is a punctiation mark.</td></tr><tr><td valign="top"><a href="#is_separator-1">is_separator/1</a></td><td>Return true, if is C is a separator.</td></tr><tr><td valign="top"><a href="#is_unified_ideograph-1">is_unified_ideograph/1</a></td><td></td></tr><tr><td valign="top"><a href="#is_upper-1">is_upper/1</a></td><td></td></tr><tr><td valign="top"><a href="#to_lower-1">to_lower/1</a></td><td></td></tr><tr><td valign="top"><a href="#to_ncr-1">to_ncr/1</a></td><td></td></tr><tr><td valign="top"><a href="#to_upper-1">to_upper/1</a></td><td></td></tr><tr><td valign="top"><a href="#type-1">type/1</a></td><td></td></tr></table>
+###<a name="type-char_type">char_type()</a>##
-<h2><a name="functions">Function Details</a></h2>
+<pre>char_type() = <a href="ux_types.md#type-char_type">ux_types:char_type()</a></pre>
+<a name="index"></a>
+##Function Index##
+
+
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#block-1">block/1</a></td><td></td></tr><tr><td valign="top"><a href="#comment-1">comment/1</a></td><td></td></tr><tr><td valign="top"><a href="#is_acsii-1">is_acsii/1</a></td><td></td></tr><tr><td valign="top"><a href="#is_cjk_compatibility_ideograph-1">is_cjk_compatibility_ideograph/1</a></td><td></td></tr><tr><td valign="top"><a href="#is_cjk_unified_ideograph-1">is_cjk_unified_ideograph/1</a></td><td></td></tr><tr><td valign="top"><a href="#is_decimal-1">is_decimal/1</a></td><td>Return true, if C is a decimal number.</td></tr><tr><td valign="top"><a href="#is_hangul-1">is_hangul/1</a></td><td></td></tr><tr><td valign="top"><a href="#is_hangul_precomposed-1">is_hangul_precomposed/1</a></td><td></td></tr><tr><td valign="top"><a href="#is_letter-1">is_letter/1</a></td><td>Returns true, if C is a letter.</td></tr><tr><td valign="top"><a href="#is_lower-1">is_lower/1</a></td><td></td></tr><tr><td valign="top"><a href="#is_mark-1">is_mark/1</a></td><td></td></tr><tr><td valign="top"><a href="#is_number-1">is_number/1</a></td><td>Returns true, if is C is a number.</td></tr><tr><td valign="top"><a href="#is_punctuation_mark-1">is_punctuation_mark/1</a></td><td>Returns true, if is C is a punctiation mark.</td></tr><tr><td valign="top"><a href="#is_separator-1">is_separator/1</a></td><td>Return true, if is C is a separator.</td></tr><tr><td valign="top"><a href="#is_unified_ideograph-1">is_unified_ideograph/1</a></td><td></td></tr><tr><td valign="top"><a href="#is_upper-1">is_upper/1</a></td><td></td></tr><tr><td valign="top"><a href="#script-1">script/1</a></td><td></td></tr><tr><td valign="top"><a href="#to_lower-1">to_lower/1</a></td><td></td></tr><tr><td valign="top"><a href="#to_ncr-1">to_ncr/1</a></td><td></td></tr><tr><td valign="top"><a href="#to_upper-1">to_upper/1</a></td><td></td></tr><tr><td valign="top"><a href="#type-1">type/1</a></td><td></td></tr></table>
-<a name="block-1"></a>
-<h3>block/1</h3>
+<a name="functions"></a>
+##Function Details##
+<a name="block-1"></a>
+
+###block/1##
-<pre>block(V::char) -> atom()</pre>
+
+<pre>block(V::char) -&gt; atom()</pre>
<br></br>
<a name="comment-1"></a>
-<h3>comment/1</h3>
-
+###comment/1##
-<pre>comment(V::char()) -> binary()</pre>
+<pre>comment(V::char()) -&gt; binary()</pre>
<br></br>
<a name="is_acsii-1"></a>
-<h3>is_acsii/1</h3>
+###is_acsii/1##
-
-<pre>is_acsii(Char::char()) -> boolean()</pre>
+<pre>is_acsii(Char::char()) -&gt; boolean()</pre>
<br></br>
<a name="is_cjk_compatibility_ideograph-1"></a>
-<h3>is_cjk_compatibility_ideograph/1</h3>
-
+###is_cjk_compatibility_ideograph/1##
@@ -77,8 +82,7 @@ __Authors:__ Michael Uvarov ([`freeakk@gmail.com`](mailto:freeakk@gmail.com)).
<a name="is_cjk_unified_ideograph-1"></a>
-<h3>is_cjk_unified_ideograph/1</h3>
-
+###is_cjk_unified_ideograph/1##
@@ -87,13 +91,12 @@ __Authors:__ Michael Uvarov ([`freeakk@gmail.com`](mailto:freeakk@gmail.com)).
<a name="is_decimal-1"></a>
-<h3>is_decimal/1</h3>
-
+###is_decimal/1##
-<pre>is_decimal(C::char()) -> boolean()</pre>
+<pre>is_decimal(C::char()) -&gt; boolean()</pre>
<br></br>
@@ -101,8 +104,7 @@ __Authors:__ Michael Uvarov ([`freeakk@gmail.com`](mailto:freeakk@gmail.com)).
Return true, if C is a decimal number.<a name="is_hangul-1"></a>
-<h3>is_hangul/1</h3>
-
+###is_hangul/1##
@@ -111,8 +113,7 @@ Return true, if C is a decimal number.<a name="is_hangul-1"></a>
<a name="is_hangul_precomposed-1"></a>
-<h3>is_hangul_precomposed/1</h3>
-
+###is_hangul_precomposed/1##
@@ -121,13 +122,12 @@ Return true, if C is a decimal number.<a name="is_hangul-1"></a>
<a name="is_letter-1"></a>
-<h3>is_letter/1</h3>
+###is_letter/1##
-
-<pre>is_letter(C::char()) -> boolean()</pre>
+<pre>is_letter(C::char()) -&gt; boolean()</pre>
<br></br>
@@ -135,20 +135,18 @@ Return true, if C is a decimal number.<a name="is_hangul-1"></a>
Returns true, if C is a letter.<a name="is_lower-1"></a>
-<h3>is_lower/1</h3>
-
+###is_lower/1##
-<pre>is_lower(V::char()) -> boolean()</pre>
+<pre>is_lower(V::char()) -&gt; boolean()</pre>
<br></br>
<a name="is_mark-1"></a>
-<h3>is_mark/1</h3>
-
+###is_mark/1##
@@ -157,13 +155,12 @@ Returns true, if C is a letter.<a name="is_lower-1"></a>
<a name="is_number-1"></a>
-<h3>is_number/1</h3>
-
+###is_number/1##
-<pre>is_number(C::char()) -> boolean()</pre>
+<pre>is_number(C::char()) -&gt; boolean()</pre>
<br></br>
@@ -171,13 +168,12 @@ Returns true, if C is a letter.<a name="is_lower-1"></a>
Returns true, if is C is a number.<a name="is_punctuation_mark-1"></a>
-<h3>is_punctuation_mark/1</h3>
+###is_punctuation_mark/1##
-
-<pre>is_punctuation_mark(C::char()) -> boolean()</pre>
+<pre>is_punctuation_mark(C::char()) -&gt; boolean()</pre>
<br></br>
@@ -185,13 +181,12 @@ Returns true, if is C is a number.<a name="is_punctuation_mark-1"></a>
Returns true, if is C is a punctiation mark.<a name="is_separator-1"></a>
-<h3>is_separator/1</h3>
-
+###is_separator/1##
-<pre>is_separator(C::char()) -> boolean()</pre>
+<pre>is_separator(C::char()) -&gt; boolean()</pre>
<br></br>
@@ -199,8 +194,7 @@ Returns true, if is C is a punctiation mark.<a name="is_separator-1"></a>
Return true, if is C is a separator.<a name="is_unified_ideograph-1"></a>
-<h3>is_unified_ideograph/1</h3>
-
+###is_unified_ideograph/1##
@@ -209,56 +203,62 @@ Return true, if is C is a separator.<a name="is_unified_ideograph-1"></a>
<a name="is_upper-1"></a>
-<h3>is_upper/1</h3>
+###is_upper/1##
+
+
+
+<pre>is_upper(V::char()) -&gt; boolean()</pre>
+<br></br>
+
+
+<a name="script-1"></a>
+
+###script/1##
-<pre>is_upper(V::char()) -> boolean()</pre>
+<pre>script(V::char) -&gt; atom()</pre>
<br></br>
<a name="to_lower-1"></a>
-<h3>to_lower/1</h3>
+###to_lower/1##
-
-<pre>to_lower(V::char()) -> char()</pre>
+<pre>to_lower(V::char()) -&gt; char()</pre>
<br></br>
<a name="to_ncr-1"></a>
-<h3>to_ncr/1</h3>
-
+###to_ncr/1##
-<pre>to_ncr(Char::char()) -> string()</pre>
+<pre>to_ncr(Char::char()) -&gt; string()</pre>
<br></br>
<a name="to_upper-1"></a>
-<h3>to_upper/1</h3>
+###to_upper/1##
-
-<pre>to_upper(V::char()) -> char()</pre>
+<pre>to_upper(V::char()) -&gt; char()</pre>
<br></br>
<a name="type-1"></a>
-<h3>type/1</h3>
-
+###type/1##
View
333 doc/ux_col.md
@@ -1,333 +0,0 @@
-Module ux_col
-=============
-
-
-<h1>Module ux_col</h1>
-
-* [Description](#description)
-* [Function Index](#index)
-* [Function Details](#functions)
-
-
-UCA.
-
-
-
-Copyright (c) 2010-2011 Michael Uvarov
-
-__Authors:__ Michael Uvarov ([`freeakk@gmail.com`](mailto:freeakk@gmail.com)).
-
-__See also:__ [ux](ux.md).
-
-<h2><a name="description">Description</a></h2>
-
-
-
-
-
-<h3><a name="Additional_information_(and_links)">Additional information (and links)</a></h3>
-
-
-
-
-
-1. [Hangul Collation Requirements](http://www.open-std.org/jtc1/sc22/wg20/docs/n1037-Hangul%20Collation%20Requirements.htm)
-PS: There is the main source of information.
-
-
-
-2. [Terminator weight for Hangul](http://code.activestate.com/lists/perl-unicode/2163/)
-
-
-
-3. [Theory vs. practice for Korean text collation](http://blogs.msdn.com/b/michkap/archive/2005/02/25/380266.aspx)
-PS: there is no any practice. They do not the UCA :/
-
-
-
-4. [Wiki](http://en.wikipedia.org/wiki/Unicode_collation_algorithm)
-
-
-
-6. [Unicode implementer's guide part 3: Conjoining jamo behavior](http://useless-factor.blogspot.com/2007/08/unicode-implementers-guide-part-3.md)
-
-
-
-7. [Unicode implementer's guide part 5: Collation](http://useless-factor.blogspot.com/2007/10/unicode-implementers-guide-part-5.md)
-
-
-
-8. [Unicode collation works now](http://useless-factor.blogspot.com/2008/05/unicode-collation-works-now.md)
-PS: I found it so late. :(
-
-
-
-9. [ICU](http://userguide.icu-project.org/collation/concepts)
-
-10. [String Sorting (Natural) in Erlang Cookbook](http://trapexit.org/String_Sorting_%28Natural%29)
-<pre> FIXED: Combining character contractions. Apparently, two combining marks can
-form a contraction. A straight reading of the UCA wouldn't predict
-this, but not all of the UCA tests pass unless you check for
-non-adjacent combining marks being in a contraction together, without
-a noncombining mark to start it off.</pre>
-
-<h2><a name="index">Function Index</a></h2>
-
-
-
-<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#blanked-2">blanked/2</a></td><td>Variable collation elements and any subsequent ignorables
-are reset so that their weights at levels one through three are zero.</td></tr><tr><td valign="top"><a href="#compare-2">compare/2</a></td><td></td></tr><tr><td valign="top"><a href="#compare-3">compare/3</a></td><td></td></tr><tr><td valign="top"><a href="#ducet-1">ducet/1</a></td><td>In: not reversed string.</td></tr><tr><td valign="top"><a href="#get_options-0">get_options/0</a></td><td></td></tr><tr><td valign="top"><a href="#get_options-1">get_options/1</a></td><td></td></tr><tr><td valign="top"><a href="#get_options-2">get_options/2</a></td><td>If you want use this library without import *.hrl, you can create
-a #uca_options {} record with this function.</td></tr><tr><td valign="top"><a href="#non_ignorable-2">non_ignorable/2</a></td><td>Variable collation elements are not reset to be ignorable, but
-get the weights explicitly mentioned in the file.</td></tr><tr><td valign="top"><a href="#shift_trimmed-2">shift_trimmed/2</a></td><td>This option is the same as Shifted, except that all trailing
-FFFFs are trimmed from the sort key.</td></tr><tr><td valign="top"><a href="#shifted-2">shifted/2</a></td><td>Variable collation elements are reset to zero at levels one through
-three.</td></tr><tr><td valign="top"><a href="#sort-1">sort/1</a></td><td></td></tr><tr><td valign="top"><a href="#sort-2">sort/2</a></td><td>Sort a string list.</td></tr><tr><td valign="top"><a href="#sort_array-1">sort_array/1</a></td><td></td></tr><tr><td valign="top"><a href="#sort_array-2">sort_array/2</a></td><td></td></tr><tr><td valign="top"><a href="#sort_array_blanked-1">sort_array_blanked/1</a></td><td></td></tr><tr><td valign="top"><a href="#sort_array_non_ignorable-1">sort_array_non_ignorable/1</a></td><td></td></tr><tr><td valign="top"><a href="#sort_array_shift_trimmed-1">sort_array_shift_trimmed/1</a></td><td></td></tr><tr><td valign="top"><a href="#sort_array_shifted-1">sort_array_shifted/1</a></td><td></td></tr><tr><td valign="top"><a href="#sort_key-1">sort_key/1</a></td><td></td></tr><tr><td valign="top"><a href="#sort_key-2">sort_key/2</a></td><td></td></tr></table>
-
-
-
-
-<h2><a name="functions">Function Details</a></h2>
-
-
-<a name="blanked-2"></a>
-
-<h3>blanked/2</h3>
-
-
-
-
-
-`blanked(S1, S2) -> any()`
-
-
-
-Variable collation elements and any subsequent ignorables
-are reset so that their weights at levels one through three are zero.
-For example,
-<pre> * SPACE would have the value [.0000.0000.0000]
-* A combining grave accent after a space would have the value [.0000.0000.0000]
-* Capital A would be unchanged, with the value [.06D9.0020.0008]
-* A combining grave accent after a Capital A would be unchanged</pre><a name="compare-2"></a>
-
-<h3>compare/2</h3>
-
-
-
-
-
-`compare(String1, String2) -> any()`
-
-<a name="compare-3"></a>
-
-<h3>compare/3</h3>
-
-
-
-
-
-`compare(String1, String2, Uca_options) -> any()`
-
-<a name="ducet-1"></a>
-
-<h3>ducet/1</h3>
-
-
-
-
-
-`ducet(A) -> any()`
-
-
-
-In: not reversed string.
-Out: not reversed weight list.<a name="get_options-0"></a>
-
-<h3>get_options/0</h3>
-
-
-
-
-
-`get_options() -> any()`
-
-<a name="get_options-1"></a>
-
-<h3>get_options/1</h3>
-
-
-
-
-
-`get_options(Params) -> any()`
-
-<a name="get_options-2"></a>
-
-<h3>get_options/2</h3>
-
-
-
-
-
-`get_options(T, Opt) -> any()`
-
-
-
-If you want use this library without import *.hrl, you can create
-a #uca_options {} record with this function.<a name="non_ignorable-2"></a>
-
-<h3>non_ignorable/2</h3>
-
-
-
-
-
-`non_ignorable(S1, S2) -> any()`
-
-
-
-Variable collation elements are not reset to be ignorable, but
-get the weights explicitly mentioned in the file.
-<pre> * SPACE would have the value [.0209.0020.0002]
-* Capital A would be unchanged, with the value [.06D9.0020.0008]
-* Ignorables are unchanged.</pre><a name="shift_trimmed-2"></a>
-
-<h3>shift_trimmed/2</h3>
-
-
-
-
-
-`shift_trimmed(S1, S2) -> any()`
-
-
-
-This option is the same as Shifted, except that all trailing
-FFFFs are trimmed from the sort key.
-This could be used to emulate POSIX behavior.<a name="shifted-2"></a>
-
-<h3>shifted/2</h3>
-
-
-
-
-
-`shifted(S1, S2) -> any()`
-
-
-
-Variable collation elements are reset to zero at levels one through
-three. In addition, a new fourth-level weight is appended, whose value
-depends on the type, as shown in Table 12.
-Any subsequent primary or secondary ignorables following a variable are reset
-so that their weights at levels one through four are zero.
-<pre> * A combining grave accent after a space would have the value
-[.0000.0000.0000.0000].
-* A combining grave accent after a Capital A would be unchanged.</pre><a name="sort-1"></a>
-
-<h3>sort/1</h3>
-
-
-
-
-
-`sort(Lists) -> any()`
-
-<a name="sort-2"></a>
-
-<h3>sort/2</h3>
-
-
-
-
-
-`sort(Lists, Alt) -> any()`
-
-
-
-Sort a string list.
-Example:
-<pre> f().
-RawData = ["death", "de luge", "de-luge", "deluge", "de-luge", "de Luge", "de-Luge", "deLuge", "de-Luge", "demark"].
-Data = lists:map(fun lists:flatten/1, RawData).
-ux_string:sort(Data, non_ignorable).
-ux_string:sort(Data, blanked).
-ux_string:sort(Data, shifted).
-ux_string:sort(Data, shift_trimmed).</pre><a name="sort_array-1"></a>
-
-<h3>sort_array/1</h3>
-
-
-
-
-
-`sort_array(Str) -> any()`
-
-<a name="sort_array-2"></a>
-
-<h3>sort_array/2</h3>
-
-
-
-
-
-`sort_array(Str, Params) -> any()`
-
-<a name="sort_array_blanked-1"></a>
-
-<h3>sort_array_blanked/1</h3>
-
-
-
-
-
-`sort_array_blanked(Str) -> any()`
-
-<a name="sort_array_non_ignorable-1"></a>
-
-<h3>sort_array_non_ignorable/1</h3>
-
-
-
-
-
-`sort_array_non_ignorable(Str) -> any()`
-
-<a name="sort_array_shift_trimmed-1"></a>
-
-<h3>sort_array_shift_trimmed/1</h3>
-
-
-
-
-
-`sort_array_shift_trimmed(Str) -> any()`
-
-<a name="sort_array_shifted-1"></a>
-
-<h3>sort_array_shifted/1</h3>
-
-
-
-
-
-`sort_array_shifted(Str) -> any()`
-
-<a name="sort_key-1"></a>
-
-<h3>sort_key/1</h3>
-
-
-
-
-
-`sort_key(Str) -> any()`
-
-<a name="sort_key-2"></a>
-
-<h3>sort_key/2</h3>
-
-
-
-
-
-`sort_key(Str, Uca_options) -> any()`
-
View
37 doc/ux_gb.md
@@ -0,0 +1,37 @@
+
+
+#Module ux_gb#
+* [Description](#description)
+* [Function Index](#index)
+* [Function Details](#functions)
+
+
+Default Grapheme Cluster Boundary Breaker.
+
+<a name="description"></a>
+
+##Description##
+
+
+[UTR29: Grapheme Cluster Boundaries]
+(http://unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries)<a name="index"></a>
+
+##Function Index##
+
+
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#split-2">split/2</a></td><td></td></tr></table>
+
+
+<a name="functions"></a>
+
+##Function Details##
+
+<a name="split-2"></a>
+
+###split/2##
+
+
+
+
+`split(T, S) -> any()`
+
View
82 doc/ux_math.md
@@ -1,82 +0,0 @@
-Module ux_math
-==============
-
-
-<h1>Module ux_math</h1>
-
-* [Function Index](#index)
-* [Function Details](#functions)
-
-
-
-
-
-
-Copyright (c) 2010-2011 Michael Uvarov
-
-__Authors:__ Michael Uvarov ([`freeakk@gmail.com`](mailto:freeakk@gmail.com)).
-
-__See also:__ [ux](ux.md).
-
-<h2><a name="index">Function Index</a></h2>
-
-
-
-<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#average-1">average/1</a></td><td></td></tr><tr><td valign="top"><a href="#factorial-1">factorial/1</a></td><td></td></tr><tr><td valign="top"><a href="#stdev-1">stdev/1</a></td><td></td></tr><tr><td valign="top"><a href="#stdev_filter_miss-1">stdev_filter_miss/1</a></td><td></td></tr><tr><td valign="top"><a href="#variance-1">variance/1</a></td><td></td></tr></table>
-
-
-
-
-<h2><a name="functions">Function Details</a></h2>
-
-
-<a name="average-1"></a>
-
-<h3>average/1</h3>
-
-
-
-
-
-`average(Tail) -> any()`
-
-<a name="factorial-1"></a>
-
-<h3>factorial/1</h3>
-
-
-
-
-
-`factorial(N) -> any()`
-
-<a name="stdev-1"></a>
-
-<h3>stdev/1</h3>
-
-
-
-
-
-`stdev(X) -> any()`
-
-<a name="stdev_filter_miss-1"></a>
-
-<h3>stdev_filter_miss/1</h3>
-
-
-
-
-
-`stdev_filter_miss(Val) -> any()`
-
-<a name="variance-1"></a>
-
-<h3>variance/1</h3>
-
-
-
-
-
-`variance(X) -> any()`
-
View
83 doc/ux_par.md
@@ -1,83 +0,0 @@
-Module ux_par
-=============
-
-
-<h1>Module ux_par</h1>
-
-* [Description](#description)
-* [Function Index](#index)
-* [Function Details](#functions)
-
-
-This Module contains functions for working with Req:parse_post() list
-from the mochiweb library.
-
-
-
-<h2><a name="description">Description</a></h2>
-
-
-
-Example:
-[Extraction of params from a POST data list](https://github.com/freeakk/web_col).
-<pre> col_params(PostList) ->
-V = ux_col:get_options([
-{natural_sort, ux_par:atom("natural_sort", PostList)},
-{case_sensitive, ux_par:atom("case_sensitive", PostList)},
-{strength, ux_par:integer("strength", PostList)},
-{alternate, ux_par:atom("alternate", PostList)},
-{case_first, ux_par:atom("case_first", PostList)}
-]).'</pre>
-
-<h2><a name="index">Function Index</a></h2>
-
-
-
-<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#atom-2">atom/2</a></td><td></td></tr><tr><td valign="top"><a href="#el-2">el/2</a></td><td></td></tr><tr><td valign="top"><a href="#integer-2">integer/2</a></td><td></td></tr><tr><td valign="top"><a href="#string-2">string/2</a></td><td></td></tr></table>
-
-
-
-
-<h2><a name="functions">Function Details</a></h2>
-
-
-<a name="atom-2"></a>
-
-<h3>atom/2</h3>
-
-
-
-
-
-`atom(Name, List) -> any()`
-
-<a name="el-2"></a>
-
-<h3>el/2</h3>
-
-
-
-
-
-`el(Name, List) -> any()`
-
-<a name="integer-2"></a>
-
-<h3>integer/2</h3>
-
-
-
-
-
-`integer(Name, List) -> any()`
-
-<a name="string-2"></a>
-
-<h3>string/2</h3>
-
-
-
-
-
-`string(Name, List) -> any()`
-
View
50 doc/ux_ranges.md
@@ -1,50 +0,0 @@
-Module ux_ranges
-================
-
-
-<h1>Module ux_ranges</h1>
-
-* [Function Index](#index)
-* [Function Details](#functions)
-
-
-
-
-
-
-<h2><a name="index">Function Index</a></h2>
-
-
-
-<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#in_list-2">in_list/2</a></td><td></td></tr><tr><td valign="top"><a href="#search-2">search/2</a></td><td></td></tr></table>
-
-
-
-
-<h2><a name="functions">Function Details</a></h2>
-
-
-<a name="in_list-2"></a>
-
-<h3>in_list/2</h3>
-
-
-
-
-
-<pre>in_list(T::[{integer(), integer()} | integer()], V::integer()) -> boolean()</pre>
-<br></br>
-
-
-<a name="search-2"></a>
-
-<h3>search/2</h3>
-
-
-
-
-
-<pre>search(T::[{{integer(), integer()} | integer(), term()}], V::integer()) -> boolean()</pre>
-<br></br>
-
-
View
257 doc/ux_string.md
@@ -1,10 +1,8 @@
-Module ux_string
-================
-<h1>Module ux_string</h1>
-
+#Module ux_string#
* [Description](#description)
+* [Data Types](#types)
* [Function Index](#index)
* [Function Details](#functions)
@@ -16,31 +14,41 @@ String functions.
Copyright (c) 2010-2011 Michael Uvarov
__Authors:__ Michael Uvarov ([`freeakk@gmail.com`](mailto:freeakk@gmail.com)).
+<a name="types"></a>
+
+##Data Types##
+
+
+
+
+###<a name="type-char_type">char_type()</a>##
+
-<h2><a name="index">Function Index</a></h2>
+<pre>char_type() = <a href="ux_types.md#type-char_type">ux_types:char_type()</a></pre>
+<a name="index"></a>
+
+##Function Index##
<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#delete_types-2">delete_types/2</a></td><td>Returns a new string which is made from the chars of Str
which are not a type from Types list.</td></tr><tr><td valign="top"><a href="#delete_types-3">delete_types/3</a></td><td>Stops delete_type/2 after Limit deleted chars.</td></tr><tr><td valign="top"><a href="#explode-2">explode/2</a></td><td>Splits the string by delimeters.</td></tr><tr><td valign="top"><a href="#explode-3">explode/3</a></td><td></td></tr><tr><td valign="top"><a href="#explode_types-2">explode_types/2</a></td><td>Returns a new list of strings which are parts of Str splited
-by separator chars of a type from Types list.</td></tr><tr><td valign="top"><a href="#filter_types-2">filter_types/2</a></td><td>Returns a new string which is made from the chars of Str
+by separator chars of a type from Types list.</td></tr><tr><td valign="top"><a href="#extract_words-1">extract_words/1</a></td><td></td></tr><tr><td valign="top"><a href="#filter_types-2">filter_types/2</a></td><td>Returns a new string which is made from the chars of Str
which are a type from Types list.</td></tr><tr><td valign="top"><a href="#filter_types-3">filter_types/3</a></td><td>Stops after -Limit skipped chars.</td></tr><tr><td valign="top"><a href="#first-2">first/2</a></td><td>Return Len chars from the beginning of the string.</td></tr><tr><td valign="top"><a href="#first_types-3">first_types/3</a></td><td>If Len<0, then gets first Len chars of type, which is in Types
-If Len>0, then gets first -Len chars of type, which is NOT in Types.</td></tr><tr><td valign="top"><a href="#freq-1">freq/1</a></td><td>Counts how many identical chars in the string.</td></tr><tr><td valign="top"><a href=".md_special_chars-1">html_special_chars/1</a></td><td>Encodes html special chars.</td></tr><tr><td valign="top"><a href="#info-1">info/1</a></td><td>Return information about a string.</td></tr><tr><td valign="top"><a href="#is_nfc-1">is_nfc/1</a></td><td></td></tr><tr><td valign="top"><a href="#is_nfd-1">is_nfd/1</a></td><td></td></tr><tr><td valign="top"><a href="#is_nfkc-1">is_nfkc/1</a></td><td></td></tr><tr><td valign="top"><a href="#is_nfkd-1">is_nfkd/1</a></td><td></td></tr><tr><td valign="top"><a href="#last-2">last/2</a></td><td>Return Len chars from the beginning of the string.</td></tr><tr><td valign="top"><a href="#last_types-3">last_types/3</a></td><td>If Len<0, then gets last Len chars of type, which is in Types
-If Len>0, then gets last -Len chars of type, which is NOT in Types.</td></tr><tr><td valign="top"><a href="#length-1">length/1</a></td><td>Compute count of graphemes in the string.</td></tr><tr><td valign="top"><a href="#reverse-1">reverse/1</a></td><td>Reverses the string graphemes.</td></tr><tr><td valign="top"><a href="#split-2">split/2</a></td><td></td></tr><tr><td valign="top"><a href="#split-3">split/3</a></td><td></td></tr><tr><td valign="top"><a href="#split_types-2">split_types/2</a></td><td>Returns a new list of strings which are parts of Str splited
-by separator chars of a type from Types list.</td></tr><tr><td valign="top"><a href="#strip_tags-1">strip_tags/1</a></td><td>Deletes tags from the string.</td></tr><tr><td valign="top"><a href="#strip_tags-2">strip_tags/2</a></td><td></td></tr><tr><td valign="top"><a href="#strip_tags-3">strip_tags/3</a></td><td></td></tr><tr><td valign="top"><a href="#to_graphemes-1">to_graphemes/1</a></td><td>Split unicode string into
+If Len>0, then gets first -Len chars of type, which is NOT in Types.</td></tr><tr><td valign="top"><a href="#freq-1">freq/1</a></td><td>Counts how many identical chars in the string.</td></tr><tr><td valign="top"><a href="#is_nfc-1">is_nfc/1</a></td><td></td></tr><tr><td valign="top"><a href="#is_nfd-1">is_nfd/1</a></td><td></td></tr><tr><td valign="top"><a href="#is_nfkc-1">is_nfkc/1</a></td><td></td></tr><tr><td valign="top"><a href="#is_nfkd-1">is_nfkd/1</a></td><td></td></tr><tr><td valign="top"><a href="#last-2">last/2</a></td><td>Return Len chars from the beginning of the string.</td></tr><tr><td valign="top"><a href="#last_types-3">last_types/3</a></td><td>If Len<0, then gets last Len chars of type, which is in Types
+If Len>0, then gets last -Len chars of type, which is NOT in Types.</td></tr><tr><td valign="top"><a href="#length-1">length/1</a></td><td>Compute count of graphemes in the string.</td></tr><tr><td valign="top"><a href="#reverse-1">reverse/1</a></td><td>Reverses the string graphemes.</td></tr><tr><td valign="top"><a href="#script-1">script/1</a></td><td></td></tr><tr><td valign="top"><a href="#scripts-1">scripts/1</a></td><td></td></tr><tr><td valign="top"><a href="#split-2">split/2</a></td><td></td></tr><tr><td valign="top"><a href="#split-3">split/3</a></td><td></td></tr><tr><td valign="top"><a href="#split_types-2">split_types/2</a></td><td>Returns a new list of strings which are parts of Str splited
+by separator chars of a type from Types list.</td></tr><tr><td valign="top"><a href="#to_graphemes-1">to_graphemes/1</a></td><td>Split unicode string into
[graphemes](http://en.wikipedia.org/wiki/Grapheme).</td></tr><tr><td valign="top"><a href="#to_lower-1">to_lower/1</a></td><td>Converts characters of a string to a lowercase format.</td></tr><tr><td valign="top"><a href="#to_ncr-1">to_ncr/1</a></td><td>Convert everything from utf-8 into an NCR (Numeric Character Reference).</td></tr><tr><td valign="top"><a href="#to_nfc-1">to_nfc/1</a></td><td></td></tr><tr><td valign="top"><a href="#to_nfd-1">to_nfd/1</a></td><td></td></tr><tr><td valign="top"><a href="#to_nfkc-1">to_nfkc/1</a></td><td></td></tr><tr><td valign="top"><a href="#to_nfkd-1">to_nfkd/1</a></td><td></td></tr><tr><td valign="top"><a href="#to_string-1">to_string/1</a></td><td>Converts something to string (list).</td></tr><tr><td valign="top"><a href="#to_upper-1">to_upper/1</a></td><td>Converts characters of a string to a uppercase format.</td></tr><tr><td valign="top"><a href="#types-1">types/1</a></td><td>Returns various "character types" which can be used
as a default categorization in implementations.</td></tr></table>
+<a name="functions"></a>
-
-<h2><a name="functions">Function Details</a></h2>
-
+##Function Details##
<a name="delete_types-2"></a>
-<h3>delete_types/2</h3>
-
+###delete_types/2##
@@ -54,8 +62,7 @@ as a default categorization in implementations.</td></tr></table>
Returns a new string which is made from the chars of Str
which are not a type from Types list.<a name="delete_types-3"></a>
-<h3>delete_types/3</h3>
-
+###delete_types/3##
@@ -69,13 +76,12 @@ which are not a type from Types list.<a name="delete_types-3"></a>
Stops delete_type/2 after Limit deleted chars. If Limit < 0, then
stops after -Limit skipped chars.<a name="explode-2"></a>
-<h3>explode/2</h3>
-
+###explode/2##
-<pre>explode(Delimeter::[string()], Str::string()) -> [string()]</pre>
+<pre>explode(Delimeter::[nonempty_string()], Str::string()) -&gt; [string()]</pre>
<br></br>
@@ -83,20 +89,18 @@ stops after -Limit skipped chars.<a name="explode-2"></a>
Splits the string by delimeters.<a name="explode-3"></a>
-<h3>explode/3</h3>
+###explode/3##
-
-<pre>explode(Delimeter::[string()], Str::string(), Limit::integer()) -> string()</pre>
+<pre>explode(Delimeter::[nonempty_string()], Str::string(), Limit::integer()) -&gt; string()</pre>
<br></br>
<a name="explode_types-2"></a>
-<h3>explode_types/2</h3>
-
+###explode_types/2##
@@ -108,10 +112,18 @@ Splits the string by delimeters.<a name="explode-3"></a>
Returns a new list of strings which are parts of Str splited
-by separator chars of a type from Types list.<a name="filter_types-2"></a>
+by separator chars of a type from Types list.<a name="extract_words-1"></a>
+
+###extract_words/1##
+
+
+
+
+`extract_words(S) -> any()`
-<h3>filter_types/2</h3>
+<a name="filter_types-2"></a>
+###filter_types/2##
@@ -125,8 +137,7 @@ by separator chars of a type from Types list.<a name="filter_types-2"></a>
Returns a new string which is made from the chars of Str
which are a type from Types list.<a name="filter_types-3"></a>
-<h3>filter_types/3</h3>
-
+###filter_types/3##
@@ -139,8 +150,7 @@ which are a type from Types list.<a name="filter_types-3"></a>
Stops after -Limit skipped chars.<a name="first-2"></a>
-<h3>first/2</h3>
-
+###first/2##
@@ -151,8 +161,7 @@ Stops after -Limit skipped chars.<a name="first-2"></a>
Return Len chars from the beginning of the string.<a name="first_types-3"></a>
-<h3>first_types/3</h3>
-
+###first_types/3##
@@ -166,13 +175,12 @@ Return Len chars from the beginning of the string.<a name="first_types-3"></a>
If Len<0, then gets first Len chars of type, which is in Types
If Len>0, then gets first -Len chars of type, which is NOT in Types<a name="freq-1"></a>
-<h3>freq/1</h3>
+###freq/1##
-
-<pre>freq(Str::string()) -> dict()</pre>
+<pre>freq(Str::string()) -&gt; dict()</pre>
<br></br>
@@ -183,86 +191,53 @@ Returns a dict.
Example:
<pre> >dict:to_list(ux_string:freq("FFDF")).
[{70,3},{68,1}]</pre>
-<a name="html_special_chars-1"></a>
-
-<h3>html_special_chars/1</h3>
+<a name="is_nfc-1"></a>
+###is_nfc/1##
-<pre>html_special_chars(Str::string()) -> string()</pre>
-<br></br>
-
-
-
-
-Encodes html special chars.<a name="info-1"></a>
-
-<h3>info/1</h3>
-
-
-
-
-
-<pre>info(Str::string()) -> #unistr_info{}</pre>
-<br></br>
-
-
-
-
-Return information about a string.<a name="is_nfc-1"></a>
-
-<h3>is_nfc/1</h3>
-
-
-
-
-
-<pre>is_nfc(Str::list()) -> yes | no | maybe</pre>
+<pre>is_nfc(Str::list()) -&gt; yes | no | maybe</pre>
<br></br>
<a name="is_nfd-1"></a>
-<h3>is_nfd/1</h3>
-
+###is_nfd/1##
-<pre>is_nfd(Str::list()) -> yes | no | maybe</pre>
+<pre>is_nfd(Str::list()) -&gt; yes | no | maybe</pre>
<br></br>
<a name="is_nfkc-1"></a>
-<h3>is_nfkc/1</h3>
+###is_nfkc/1##
-
-<pre>is_nfkc(Str::list()) -> yes | no | maybe</pre>
+<pre>is_nfkc(Str::list()) -&gt; yes | no | maybe</pre>
<br></br>
<a name="is_nfkd-1"></a>
-<h3>is_nfkd/1</h3>
-
+###is_nfkd/1##
-<pre>is_nfkd(Str::list()) -> yes | no | maybe</pre>
+<pre>is_nfkd(Str::list()) -&gt; yes | no | maybe</pre>
<br></br>
<a name="last-2"></a>
-<h3>last/2</h3>
-
+###last/2##
@@ -273,8 +248,7 @@ Return information about a string.<a name="is_nfc-1"></a>
Return Len chars from the beginning of the string.<a name="last_types-3"></a>
-<h3>last_types/3</h3>
-
+###last_types/3##
@@ -288,20 +262,18 @@ Return Len chars from the beginning of the string.<a name="last_types-3"></a>
If Len<0, then gets last Len chars of type, which is in Types
If Len>0, then gets last -Len chars of type, which is NOT in Types<a name="length-1"></a>
-<h3>length/1</h3>
-
+###length/1##
-`length(Str) -> any()`
+`length(S) -> any()`
Compute count of graphemes in the string.<a name="reverse-1"></a>
-<h3>reverse/1</h3>
-
+###reverse/1##
@@ -310,96 +282,60 @@ Compute count of graphemes in the string.<a name="reverse-1"></a>
-Reverses the string graphemes.<a name="split-2"></a>
-
-<h3>split/2</h3>
-
-
-
-
-
-`split(P1, P2) -> any()`
-
-<a name="split-3"></a>
-
-<h3>split/3</h3>
-
+Reverses the string graphemes.<a name="script-1"></a>
+###script/1##
-`split(P1, P2, P3) -> any()`
-<a name="split_types-2"></a>
+`script(S) -> any()`
-<h3>split_types/2</h3>
+<a name="scripts-1"></a>
+###scripts/1##
-<pre>split_types(Types::[<a href="#type-char_type">char_type()</a>], Str::string()) -> string()</pre>
-<br></br>
+`scripts(S) -> any()`
+<a name="split-2"></a>
+###split/2##
-Returns a new list of strings which are parts of Str splited
-by separator chars of a type from Types list. Parts can not be
-empty.<a name="strip_tags-1"></a>
-<h3>strip_tags/1</h3>
-
-
-
-
-
-<pre>strip_tags(Str::string()) -> string()</pre>
-<br></br>
+`split(P1, P2) -> any()`
+<a name="split-3"></a>
+###split/3##
-Deletes tags from the string.
-Example:
-<pre> > ux_string:strip_tags("<b>some string</b>").
- "some string"
- > ux_string:strip_tags("<h1>Head</h1><p>and paragraf</p>", ["h1"]).
- "<h1>Head</h1>and paragraf"
- ux_string:strip_tags("<h1>Head</h1><p><!-- and paragraf --></p>", ["!--"]).
- "Head<!-- and paragraf -->"
- ux_string:st("a<br />b", [], " ").
- "a b"</pre><a name="strip_tags-2"></a>
+`split(P1, P2, P3) -> any()`
-<h3>strip_tags/2</h3>
+<a name="split_types-2"></a>
+###split_types/2##
-<pre>strip_tags(Str::string, Allowed::[string() | atom() | char()]) -> string()</pre>
+<pre>split_types(Types::[<a href="#type-char_type">char_type()</a>], Str::string()) -> string()</pre>
<br></br>
-<a name="strip_tags-3"></a>
-
-<h3>strip_tags/3</h3>
-
-
-
-
-
-<pre>strip_tags(Str::string, Allowed::[string() | atom() | char()], Alt::string()) -> string()</pre>
-<br></br>
-<a name="to_graphemes-1"></a>
-
-<h3>to_graphemes/1</h3>
+Returns a new list of strings which are parts of Str splited
+by separator chars of a type from Types list. Parts can not be
+empty.<a name="to_graphemes-1"></a>
+###to_graphemes/1##
@@ -428,13 +364,12 @@ by two Unicode code points. These user-perceived characters are
approximated by what is called a grapheme cluster, which can be
determined programmatically.<a name="to_lower-1"></a>
-<h3>to_lower/1</h3>
+###to_lower/1##
-
-<pre>to_lower(Str::string()) -> string()</pre>
+<pre>to_lower(Str::string()) -&gt; string()</pre>
<br></br>
@@ -442,8 +377,7 @@ determined programmatically.<a name="to_lower-1"></a>
Converts characters of a string to a lowercase format.<a name="to_ncr-1"></a>
-<h3>to_ncr/1</h3>
-
+###to_ncr/1##
@@ -454,61 +388,56 @@ Converts characters of a string to a lowercase format.<a name="to_ncr-1"></a>
Convert everything from utf-8 into an NCR (Numeric Character Reference).<a name="to_nfc-1"></a>
-<h3>to_nfc/1</h3>
-
+###to_nfc/1##
-<pre>to_nfc(Str::list()) -> list()</pre>
+<pre>to_nfc(Str::list()) -&gt; list()</pre>
<br></br>
<a name="to_nfd-1"></a>
-<h3>to_nfd/1</h3>
+###to_nfd/1##
-
-<pre>to_nfd(Str::list()) -> list()</pre>
+<pre>to_nfd(Str::list()) -&gt; list()</pre>
<br></br>
<a name="to_nfkc-1"></a>
-<h3>to_nfkc/1</h3>
-
+###to_nfkc/1##
-<pre>to_nfkc(Str::list()) -> list()</pre>
+<pre>to_nfkc(Str::list()) -&gt; list()</pre>
<br></br>
<a name="to_nfkd-1"></a>
-<h3>to_nfkd/1</h3>
-
+###to_nfkd/1##
-<pre>to_nfkd(Str::list()) -> list()</pre>
+<pre>to_nfkd(Str::list()) -&gt; list()</pre>
<br></br>
<a name="to_string-1"></a>
-<h3>to_string/1</h3>
+###to_string/1##
-
-<pre>to_string(Str::string() | atom() | integer()) -> string()</pre>
+<pre>to_string(Str::string() | atom() | integer()) -&gt; string()</pre>
<br></br>
@@ -516,13 +445,12 @@ Convert everything from utf-8 into an NCR (Numeric Character Reference).<a name=
Converts something to string (list).<a name="to_upper-1"></a>
-<h3>to_upper/1</h3>
-
+###to_upper/1##
-<pre>to_upper(Str::string()) -> string()</pre>
+<pre>to_upper(Str::string()) -&gt; string()</pre>
<br></br>
@@ -530,8 +458,7 @@ Converts something to string (list).<a name="to_upper-1"></a>
Converts characters of a string to a uppercase format.<a name="types-1"></a>
-<h3>types/1</h3>
-
+###types/1##
View
29 doc/ux_types.md
@@ -0,0 +1,29 @@
+
+
+#Module ux_types#
+* [Data Types](#types)
+
+
+
+
+
+<a name="types"></a>
+
+##Data Types##
+
+
+
+
+###<a name="type-char_type">char_type()</a>##
+
+
+
+<pre>char_type() = lu | ll | lt | mn | mc | me | nd | nl | no | zs | zl | zp | cc | cf | cs | co | cn | lm | lo | pc | pd | ps | pe | pi | pf | po | sm | sc | sk | so | other</pre>
+
+
+
+###<a name="type-ux_ccc">ux_ccc()</a>##
+
+
+
+<pre>ux_ccc() = 0..240</pre>
View
149 doc/ux_uca.md
@@ -1,9 +1,6 @@
-Module ux_uca
-=============
-<h1>Module ux_uca</h1>
-
+#Module ux_uca#
* [Description](#description)
* [Data Types](#types)
* [Function Index](#index)
@@ -17,16 +14,14 @@ see Unicode Technical Standard #10.
Copyright (c) 2010-2011 Michael Uvarov
-__Authors:__ Michael Uvarov ([`freeakk@gmail.com`](mailto:freeakk@gmail.com)).
-
-<h2><a name="description">Description</a></h2>
-
+__Authors:__ Michael Uvarov ([`freeakk@gmail.com`](mailto:freeakk@gmail.com)).<a name="description"></a>
+##Description##
-<h3><a name="Additional_information_(and_links)">Additional information (and links)</a></h3>
+###<a name="Additional_information_(and_links)">Additional information (and links)</a>##
@@ -79,8 +74,7 @@ For hangul collation:
-<h3><a name="Levels">Levels</a></h3>
-
+###<a name="Levels">Levels</a>##
@@ -100,14 +94,12 @@ Example using levels:
-<h3><a name="Common_configurations">Common configurations</a></h3>
-
+###<a name="Common_configurations">Common configurations</a>##
-<h4><a name="Non-ignorable">Non-ignorable</a></h4>
-
+####<a name="Non-ignorable">Non-ignorable</a>##
@@ -127,8 +119,7 @@ Example:
-<h4><a name="Blanked">Blanked</a></h4>
-
+####<a name="Blanked">Blanked</a>##
@@ -151,8 +142,7 @@ Example:
-<h4><a name="Shifted">Shifted</a></h4>
-
+####<a name="Shifted">Shifted</a>##
@@ -175,8 +165,7 @@ Example:
-<h4><a name="Shift-trimmed">Shift-trimmed</a></h4>
-
+####<a name="Shift-trimmed">Shift-trimmed</a>##
@@ -189,16 +178,22 @@ Example:
ux_uca:sort_key(C, "Shift-trimmed collation sort key").</pre>
+<a name="types"></a>
+##Data Types##
-<h2><a name="types">Data Types</a></h2>
+###<a name="type-result">result()</a>##
-<h3 class="typedecl"><a name="type-search_result">search_result()</a></h3>
+<pre>result() = {[<a href="#type-uca_elem">uca_elem()</a>], string()}</pre>
+
+
+
+###<a name="type-search_result">search_result()</a>##
@@ -206,33 +201,93 @@ Example:
-<h3 class="typedecl"><a name="type-uca_compare_result">uca_compare_result()</a></h3>
+###<a name="type-uca_alternate">uca_alternate()</a>##
+
+
+
+<pre>uca_alternate() = shifted | shift_trimmed | non_ignorable | blanked</pre>
+
+
+
+###<a name="type-uca_array">uca_array()</a>##
+<pre>uca_array() = [<a href="#type-uca_elem">uca_elem()</a>]</pre>
+