|
1 | 1 | # Number formats supported by xtd |
2 | 2 |
|
3 | | -| Name | currency decimal digits | currency decimal separator | currency group separator | currency group sizes | currency negative pattern | currency positive pattern | currency symbol | digit substitution | nan symbol | negative infinity symbol | negative sign | number decimal digits | number decimal separator | number group separator | number group sizes | number negative pattern | percent decimal digits | percent decimal separator | percent group separator | percent group sizes | percent negative pattern | percent positive pattern | percent symbol | per mille symbol | positive infinity symbol | positive sign | |
4 | | -| ---- | ----------------------- | -------------------------- | ------------------------ | -------------------- | ------------------------- | ------------------------- | --------------- | ------------------ | ---------- | ------------------------ | ------------- | --------------------- | ------------------------ | ---------------------- | ------------------ | ----------------------- | ---------------------- | ------------------------- | ----------------------- | ------------------- | ------------------------ | ------------------------ | -------------- | ---------------- | ------------------------ | ------------- | |
5 | | -| Invariant | 2 | . | , | 3 | 0 | 0 | ¤ | 1 | NaN | -Infinity | - | 2 | . | , | 3 | 1 | 2 | . | , | 3 | 0 | 0 | % | ‰ | Infinity | + | |
| 3 | +| Name | currency decimal digits | currency decimal separator | currency group separator | currency group sizes | currency negative pattern | currency positive pattern | currency symbol | digit substitution | nan symbol | negative infinity symbol | negative sign | number decimal digits | number decimal separator | number group separator | number group sizes | number negative pattern | percent decimal digits | percent decimal separator | percent group separator | percent group sizes | percent negative pattern | percent positive pattern | percent symbol | per mille symbol | positive infinity symbol | positive sign | |
| 4 | +| ---- | ----------------------- | -------------------------- | ------------------------ | -------------------- | ------------------------- | ------------------------- | --------------- | ------------------ | ---------- | ------------------------ | ------------- | --------------------- | ------------------------ | ---------------------- | ------------------ | ----------------------- | ---------------------- | ------------------------- | ----------------------- | ------------------- | ------------------------ | ------------------------ | -------------- | ---------------- | ------------------------ | ------------- | |
| 5 | +| **Invariant** | 2 | . | , | 3 | 0 | 0 | ¤ | 1 | NaN | -Infinity | - | 2 | . | , | 3 | 1 | 2 | . | , | 3 | 0 | 0 | % | ‰ | Infinity | + | |
6 | 6 | | af | 2 | , | | 3 | 1 | 0 | ¤ | 1 | NaN | -∞ | - | 3 | , | | 3 | 1 | 3 | , | | 3 | 1 | 1 | % | ‰ | ∞ | + | |
7 | 7 | | af-NA | 2 | , | | 3 | 1 | 0 | $ | 1 | NaN | -∞ | - | 3 | , | | 3 | 1 | 3 | , | | 3 | 1 | 1 | % | ‰ | ∞ | + | |
8 | 8 | | af-ZA | 2 | , | | 3 | 1 | 0 | R | 1 | NaN | -∞ | - | 3 | , | | 3 | 1 | 3 | , | | 3 | 1 | 1 | % | ‰ | ∞ | + | |
|
1046 | 1046 | <!-- |
1047 | 1047 | #include <xtd/xtd> |
1048 | 1048 |
|
| 1049 | +using namespace xtd::collections::specialized; |
1049 | 1050 | using namespace xtd::globalization; |
1050 | 1051 | using namespace xtd::text; |
1051 | 1052 |
|
1052 | | -auto escape_md(const string& s) { |
1053 | | - return s.aggregate<string>("", delegate_(const string& result, const char& c) {return result + (c == '|' ? "\\|" : as<string>(c));}); |
1054 | | -} |
1055 | | -
|
1056 | 1053 | auto main() -> int { |
1057 | | - auto columns = ordered_dictionary<string, delegate<string(const culture_info&)>> { |
1058 | | - {"Name", {delegate_(const culture_info& c) {return c.name().empty() ? "Invariant" : c.name();}}}, |
1059 | | - {"currency decimal digits", {delegate_(const culture_info& c) {return as<string>(c.number_format().currency_decimal_digits());}}}, |
1060 | | - {"currency decimal separator", {delegate_(const culture_info& c) {return c.number_format().currency_decimal_separator();}}}, |
1061 | | - {"currency group separator", {delegate_(const culture_info& c) {return c.number_format().currency_group_separator();}}}, |
1062 | | - {"currency group sizes", {delegate_(const culture_info& c) {return string::join(", ", c.number_format().currency_group_sizes());}}}, |
1063 | | - {"currency negative pattern", {delegate_(const culture_info& c) {return as<string>(c.number_format().currency_negative_pattern());}}}, |
1064 | | - {"currency positive pattern", {delegate_(const culture_info& c) {return as<string>(c.number_format().currency_positive_pattern());}}}, |
1065 | | - {"currency symbol", {delegate_(const culture_info& c) {return c.number_format().currency_symbol();}}}, |
1066 | | - {"digit substitution", {delegate_(const culture_info& c) {return as<string>(c.number_format().digit_substitution());}}}, |
1067 | | - {"nan symbol", {delegate_(const culture_info& c) {return c.number_format().nan_symbol();}}}, |
1068 | | - {"negative infinity symbol", {delegate_(const culture_info& c) {return c.number_format().negative_infinity_symbol();}}}, |
1069 | | - {"negative sign", {delegate_(const culture_info& c) {return c.number_format().negative_sign();}}}, |
1070 | | - {"number decimal digits", {delegate_(const culture_info& c) {return as<string>(c.number_format().number_decimal_digits());}}}, |
1071 | | - {"number decimal separator", {delegate_(const culture_info& c) {return c.number_format().number_decimal_separator();}}}, |
1072 | | - {"number group separator", {delegate_(const culture_info& c) {return c.number_format().number_group_separator();}}}, |
1073 | | - {"number group sizes", {delegate_(const culture_info& c) {return string::join(", ", c.number_format().number_group_sizes());}}}, |
1074 | | - {"number negative pattern", {delegate_(const culture_info& c) {return as<string>(c.number_format().number_negative_pattern());}}}, |
1075 | | - {"percent decimal digits", {delegate_(const culture_info& c) {return as<string>(c.number_format().percent_decimal_digits());}}}, |
1076 | | - {"percent decimal separator", {delegate_(const culture_info& c) {return c.number_format().percent_decimal_separator();}}}, |
1077 | | - {"percent group separator", {delegate_(const culture_info& c) {return c.number_format().percent_group_separator();}}}, |
1078 | | - {"percent group sizes", {delegate_(const culture_info& c) {return string::join(", ", c.number_format().percent_group_sizes());}}}, |
1079 | | - {"percent negative pattern", {delegate_(const culture_info& c) {return as<string>(c.number_format().percent_negative_pattern());}}}, |
1080 | | - {"percent positive pattern", {delegate_(const culture_info& c) {return as<string>(c.number_format().percent_positive_pattern());}}}, |
1081 | | - {"percent symbol", {delegate_(const culture_info& c) {return c.number_format().percent_symbol();}}}, |
1082 | | - {"per mille symbol", {delegate_(const culture_info& c) {return c.number_format().per_mille_symbol();}}}, |
1083 | | - {"positive infinity symbol", {delegate_(const culture_info& c) {return c.number_format().positive_infinity_symbol();}}}, |
1084 | | - {"positive sign", {delegate_(const culture_info& c) {return c.number_format().positive_sign();}}} |
1085 | | - }; |
| 1054 | + using ci_action = delegate<string(const culture_info&)>; |
| 1055 | + auto columns = ordered_dictionary<string, ci_action> {}; |
| 1056 | + columns["Name"] = ci_action {delegate_(const culture_info& c) {return c.name().empty() ? "**Invariant**" : c.name();}}; |
| 1057 | + columns["currency decimal digits"] = ci_action {delegate_(const culture_info& c) {return as<string>(c.number_format().currency_decimal_digits());}}; |
| 1058 | + columns["currency decimal separator"] = ci_action {delegate_(const culture_info& c) {return c.number_format().currency_decimal_separator();}}; |
| 1059 | + columns["currency group separator"] = ci_action {delegate_(const culture_info& c) {return c.number_format().currency_group_separator();}}; |
| 1060 | + columns["currency group sizes"] = ci_action {delegate_(const culture_info& c) {return string::join(", ", c.number_format().currency_group_sizes());}}; |
| 1061 | + columns["currency negative pattern"] = ci_action {delegate_(const culture_info& c) {return as<string>(c.number_format().currency_negative_pattern());}}; |
| 1062 | + columns["currency positive pattern"] = ci_action {delegate_(const culture_info& c) {return as<string>(c.number_format().currency_positive_pattern());}}; |
| 1063 | + columns["currency symbol"] = ci_action {delegate_(const culture_info& c) {return c.number_format().currency_symbol();}}; |
| 1064 | + columns["digit substitution"] = ci_action {delegate_(const culture_info& c) {return as<string>(c.number_format().digit_substitution());}}; |
| 1065 | + columns["nan symbol"] = ci_action {delegate_(const culture_info& c) {return c.number_format().nan_symbol();}}; |
| 1066 | + columns["negative infinity symbol"] = ci_action {delegate_(const culture_info& c) {return c.number_format().negative_infinity_symbol();}}; |
| 1067 | + columns["negative sign"] = ci_action {delegate_(const culture_info& c) {return c.number_format().negative_sign();}}; |
| 1068 | + columns["number decimal digits"] = ci_action {delegate_(const culture_info& c) {return as<string>(c.number_format().number_decimal_digits());}}; |
| 1069 | + columns["number decimal separator"] = ci_action {delegate_(const culture_info& c) {return c.number_format().number_decimal_separator();}}; |
| 1070 | + columns["number group separator"] = ci_action {delegate_(const culture_info& c) {return c.number_format().number_group_separator();}}; |
| 1071 | + columns["number group sizes"] = ci_action {delegate_(const culture_info& c) {return string::join(", ", c.number_format().number_group_sizes());}}; |
| 1072 | + columns["number negative pattern"] = ci_action {delegate_(const culture_info& c) {return as<string>(c.number_format().number_negative_pattern());}}; |
| 1073 | + columns["percent decimal digits"] = ci_action {delegate_(const culture_info& c) {return as<string>(c.number_format().percent_decimal_digits());}}; |
| 1074 | + columns["percent decimal separator"] = ci_action {delegate_(const culture_info& c) {return c.number_format().percent_decimal_separator();}}; |
| 1075 | + columns["percent group separator"] = ci_action {delegate_(const culture_info& c) {return c.number_format().percent_group_separator();}}; |
| 1076 | + columns["percent group sizes"] = ci_action {delegate_(const culture_info& c) {return string::join(", ", c.number_format().percent_group_sizes());}}; |
| 1077 | + columns["percent negative pattern"] = ci_action {delegate_(const culture_info& c) {return as<string>(c.number_format().percent_negative_pattern());}}; |
| 1078 | + columns["percent positive pattern"] = ci_action {delegate_(const culture_info& c) {return as<string>(c.number_format().percent_positive_pattern());}}; |
| 1079 | + columns["percent symbol"] = ci_action {delegate_(const culture_info& c) {return c.number_format().percent_symbol();}}; |
| 1080 | + columns["per mille symbol"] = ci_action {delegate_(const culture_info& c) {return c.number_format().per_mille_symbol();}}; |
| 1081 | + columns["positive infinity symbol"] = ci_action {delegate_(const culture_info& c) {return c.number_format().positive_infinity_symbol();}}; |
| 1082 | + columns["positive sign"] = ci_action {delegate_(const culture_info& c) {return c.number_format().positive_sign();}}; |
1086 | 1083 |
|
1087 | 1084 | auto content = string_builder {}; |
1088 | 1085 | content.append_line("# Number formats supported by xtd\n"); |
1089 | 1086 | content.append_format("| {} |\n", string::join(" | ", columns.keys())); |
1090 | 1087 | content.append_format("| {} |\n", string::join(" | ", columns.keys().select(delegate_(auto v) {return string('-', v.length());}))); |
1091 | | - culture_info::get_cultures(culture_types::all_cultures).to_list().for_each(delegate_(auto c) {content.append_format("| {} |\n", string::join(" | ", columns.values().select<string>([&](auto v) {return v(c);})));}); |
| 1088 | + auto escape_md = delegate_(const string& s) {return s.aggregate<string>("", delegate_(const string& result, const char& c) {return result + (c == '|' ? "\\|" : as<string>(c));});}; |
| 1089 | + culture_info::get_cultures(culture_types::all_cultures).to_list().for_each(delegate_(auto c) {content.append_format("| {} |\n", string::join(" | ", columns.values().select<string>(delegate_(auto v) {return escape_md(v(c));})));}); |
1092 | 1090 | file::write_all_text("number_formats.md", content.to_string()); |
1093 | 1091 | console::write_line("Markdown table generated in number_formats.md"); |
1094 | 1092 | } |
|
0 commit comments