mirror of https://github.com/zulip/zulip.git
util: Defining common formatter function
This commit is contained in:
parent
e2520da24d
commit
efb2a5a38d
|
@ -4,6 +4,7 @@ import * as blueslip from "./blueslip";
|
|||
import {$t} from "./i18n";
|
||||
import type {MatchedMessage, Message, RawMessage} from "./message_store";
|
||||
import type {UpdateMessageEvent} from "./types";
|
||||
import {user_settings} from "./user_settings";
|
||||
|
||||
// From MDN: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math/random
|
||||
export function random_int(min: number, max: number): number {
|
||||
|
@ -489,3 +490,21 @@ export function is_valid_url(url: string, require_absolute = false): boolean {
|
|||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// Formats an array of strings as a Internationalized list using the specified language.
|
||||
export function format_array_as_list(
|
||||
array: string[],
|
||||
style: Intl.ListFormatStyle,
|
||||
type: Intl.ListFormatType,
|
||||
): string {
|
||||
// If Intl.ListFormat is not supported
|
||||
if (Intl.ListFormat === undefined) {
|
||||
return array.join(", ");
|
||||
}
|
||||
|
||||
// Use Intl.ListFormat to format the array as a Internationalized list.
|
||||
const list_formatter = new Intl.ListFormat(user_settings.default_language, {style, type});
|
||||
|
||||
// Return the formatted string.
|
||||
return list_formatter.format(array);
|
||||
}
|
||||
|
|
|
@ -338,3 +338,16 @@ run_test("is_valid_url", () => {
|
|||
assert.equal(util.is_valid_url("http://google.com/something?q=query#hash", true), true);
|
||||
assert.equal(util.is_valid_url("/abc/", true), false);
|
||||
});
|
||||
|
||||
run_test("format_array_as_list", () => {
|
||||
const array = ["apple", "banana", "orange"];
|
||||
// when Intl exist
|
||||
assert.equal(
|
||||
util.format_array_as_list(array, "long", "conjunction"),
|
||||
"apple, banana, and orange",
|
||||
);
|
||||
|
||||
// when Intl.ListFormat does not exist
|
||||
global.Intl.ListFormat = undefined;
|
||||
assert.equal(util.format_array_as_list(array, "long", "conjunction"), "apple, banana, orange");
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue