@workwell-global/toolkit 1.1.45 → 1.1.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/models/schemas/api/_entityTools/CreateEntityTools.d.ts +11 -9
- package/dist/models/schemas/api/_entityTools/CreateEntityTools.d.ts.map +1 -1
- package/dist/models/schemas/api/_entityTools/CreateEntityTools.js +8 -8
- package/dist/models/schemas/api/_entityTools/CreateEntityTools.js.map +1 -1
- package/dist/models/schemas/api/_entityTools/MappersEntityTools.d.ts +2 -2
- package/dist/models/schemas/api/_entityTools/MappersEntityTools.d.ts.map +1 -1
- package/dist/models/schemas/api/_entityTools/MappersEntityTools.js +78 -70
- package/dist/models/schemas/api/_entityTools/MappersEntityTools.js.map +1 -1
- package/dist/models/schemas/api/_entityTools/SchemasEntityTools.d.ts.map +1 -1
- package/dist/models/schemas/api/_entityTools/SchemasEntityTools.js +4 -1
- package/dist/models/schemas/api/_entityTools/SchemasEntityTools.js.map +1 -1
- package/dist/models/schemas/api/account/DAccountAPI.js +1 -1
- package/dist/models/schemas/api/account/DAccountAPI.js.map +1 -1
- package/dist/models/schemas/api/account/TAccountAPI.d.ts +229 -229
- package/dist/models/schemas/api/account/index.d.ts +229 -229
- package/dist/models/schemas/api/activityMimeAttachment/TActivityMimeAttachmentAPI.d.ts +60 -60
- package/dist/models/schemas/api/activityMimeAttachment/index.d.ts +60 -60
- package/dist/models/schemas/api/activityParty/DActivityPartyAPI.d.ts +5 -5
- package/dist/models/schemas/api/activityParty/DActivityPartyAPI.js +5 -5
- package/dist/models/schemas/api/activityParty/DActivityPartyAPI.js.map +1 -1
- package/dist/models/schemas/api/activityParty/TActivityPartyAPI.d.ts +134 -134
- package/dist/models/schemas/api/activityParty/index.d.ts +134 -134
- package/dist/models/schemas/api/activityPointer/DActivityPointerAPI.js +1 -1
- package/dist/models/schemas/api/activityPointer/DActivityPointerAPI.js.map +1 -1
- package/dist/models/schemas/api/activityPointer/TActivityPointerAPI.d.ts +58 -58
- package/dist/models/schemas/api/activityPointer/index.d.ts +58 -58
- package/dist/models/schemas/api/assignment/DAssignmentAPI.js +1 -1
- package/dist/models/schemas/api/assignment/DAssignmentAPI.js.map +1 -1
- package/dist/models/schemas/api/assignment/TAssignmentAPI.d.ts +304 -304
- package/dist/models/schemas/api/assignment/index.d.ts +304 -304
- package/dist/models/schemas/api/assignmentLog/TAssignmentLogAPI.d.ts +66 -66
- package/dist/models/schemas/api/assignmentLog/index.d.ts +66 -66
- package/dist/models/schemas/api/caseManagement/DCaseManagementAPI.d.ts +1 -1
- package/dist/models/schemas/api/caseManagement/DCaseManagementAPI.d.ts.map +1 -1
- package/dist/models/schemas/api/caseManagement/DCaseManagementAPI.js +2 -2
- package/dist/models/schemas/api/caseManagement/DCaseManagementAPI.js.map +1 -1
- package/dist/models/schemas/api/caseManagement/TCaseManagementAPI.d.ts +176 -176
- package/dist/models/schemas/api/caseManagement/index.d.ts +176 -176
- package/dist/models/schemas/api/changeRequest/DChangeRequestAPI.d.ts +4 -4
- package/dist/models/schemas/api/changeRequest/DChangeRequestAPI.d.ts.map +1 -1
- package/dist/models/schemas/api/changeRequest/DChangeRequestAPI.js +5 -4
- package/dist/models/schemas/api/changeRequest/DChangeRequestAPI.js.map +1 -1
- package/dist/models/schemas/api/changeRequest/TChangeRequestAPI.d.ts +143 -143
- package/dist/models/schemas/api/changeRequest/index.d.ts +143 -143
- package/dist/models/schemas/api/companyDocument/TCompanyDocumentAPI.d.ts +116 -116
- package/dist/models/schemas/api/companyDocument/index.d.ts +116 -116
- package/dist/models/schemas/api/contact/DContactAPI.js +1 -1
- package/dist/models/schemas/api/contact/DContactAPI.js.map +1 -1
- package/dist/models/schemas/api/contact/TContactAPI.d.ts +264 -264
- package/dist/models/schemas/api/contact/index.d.ts +264 -264
- package/dist/models/schemas/api/contractorDocument/DContractorDocumentAPI.d.ts +11 -0
- package/dist/models/schemas/api/contractorDocument/DContractorDocumentAPI.d.ts.map +1 -1
- package/dist/models/schemas/api/contractorDocument/DContractorDocumentAPI.js +12 -1
- package/dist/models/schemas/api/contractorDocument/DContractorDocumentAPI.js.map +1 -1
- package/dist/models/schemas/api/contractorDocument/TContractorDocumentAPI.d.ts +170 -150
- package/dist/models/schemas/api/contractorDocument/TContractorDocumentAPI.d.ts.map +1 -1
- package/dist/models/schemas/api/contractorDocument/index.d.ts +174 -150
- package/dist/models/schemas/api/contractorDocument/index.d.ts.map +1 -1
- package/dist/models/schemas/api/country/TCountryAPI.d.ts +70 -70
- package/dist/models/schemas/api/country/index.d.ts +70 -70
- package/dist/models/schemas/api/countryOffering/TCountryOfferingAPI.d.ts +50 -50
- package/dist/models/schemas/api/countryOffering/index.d.ts +50 -50
- package/dist/models/schemas/api/currency/TCurrencyAPI.d.ts +50 -50
- package/dist/models/schemas/api/currency/index.d.ts +50 -50
- package/dist/models/schemas/api/customerAddress/TCustomerAddressAPI.d.ts +80 -80
- package/dist/models/schemas/api/customerAddress/index.d.ts +80 -80
- package/dist/models/schemas/api/disqualificationReason/TDisqualificationAPI.d.ts +50 -50
- package/dist/models/schemas/api/disqualificationReason/index.d.ts +50 -50
- package/dist/models/schemas/api/email/DEmailAPI.d.ts.map +1 -1
- package/dist/models/schemas/api/email/DEmailAPI.js +1 -1
- package/dist/models/schemas/api/email/DEmailAPI.js.map +1 -1
- package/dist/models/schemas/api/email/TEmailAPI.d.ts +99 -99
- package/dist/models/schemas/api/email/index.d.ts +99 -99
- package/dist/models/schemas/api/enquiry/DEnquiryAPI.d.ts.map +1 -1
- package/dist/models/schemas/api/enquiry/DEnquiryAPI.js +1 -1
- package/dist/models/schemas/api/enquiry/DEnquiryAPI.js.map +1 -1
- package/dist/models/schemas/api/enquiry/TEnquiryAPI.d.ts +86 -86
- package/dist/models/schemas/api/enquiry/index.d.ts +86 -86
- package/dist/models/schemas/api/margin/TMarginAPI.d.ts +78 -78
- package/dist/models/schemas/api/margin/index.d.ts +78 -78
- package/dist/models/schemas/api/nationality/TNationalityAPI.d.ts +56 -56
- package/dist/models/schemas/api/nationality/index.d.ts +56 -56
- package/dist/models/schemas/api/note/DNoteAPI.d.ts +2 -2
- package/dist/models/schemas/api/note/DNoteAPI.d.ts.map +1 -1
- package/dist/models/schemas/api/note/DNoteAPI.js +2 -2
- package/dist/models/schemas/api/note/DNoteAPI.js.map +1 -1
- package/dist/models/schemas/api/referral/DReferralAPI.d.ts.map +1 -1
- package/dist/models/schemas/api/referral/DReferralAPI.js +1 -1
- package/dist/models/schemas/api/referral/DReferralAPI.js.map +1 -1
- package/dist/models/schemas/api/referral/TReferralAPI.d.ts +244 -244
- package/dist/models/schemas/api/referral/index.d.ts +244 -244
- package/dist/models/schemas/api/referralLog/TReferralLogAPI.d.ts +65 -65
- package/dist/models/schemas/api/referralLog/index.d.ts +65 -65
- package/dist/models/schemas/api/role/TRoleAPI.d.ts +50 -50
- package/dist/models/schemas/api/role/index.d.ts +50 -50
- package/dist/models/schemas/api/simulation/DSimulationAPI.js +1 -1
- package/dist/models/schemas/api/simulation/DSimulationAPI.js.map +1 -1
- package/dist/models/schemas/api/simulation/TSimulationAPI.d.ts +134 -134
- package/dist/models/schemas/api/simulation/index.d.ts +134 -134
- package/dist/models/schemas/api/solution/TSolutionAPI.d.ts +134 -134
- package/dist/models/schemas/api/solution/index.d.ts +134 -134
- package/dist/models/schemas/api/systemUser/TSystemUserAPI.d.ts +160 -160
- package/dist/models/schemas/api/systemUser/index.d.ts +160 -160
- package/dist/models/schemas/api/webMessage/DWebMessageAPI.d.ts +6 -6
- package/dist/models/schemas/api/webMessage/DWebMessageAPI.d.ts.map +1 -1
- package/dist/models/schemas/api/webMessage/DWebMessageAPI.js +3 -5
- package/dist/models/schemas/api/webMessage/DWebMessageAPI.js.map +1 -1
- package/dist/models/schemas/api/webMessage/TWebMessageAPI.d.ts +62 -62
- package/dist/models/schemas/api/webMessage/index.d.ts +62 -62
- package/dist/models/schemas/bff/caseDetail/SGetCaseEmailBFF.d.ts +5 -5
- package/dist/models/schemas/bff/caseDetail/SGetCaseEmailPartiesBFF.d.ts +5 -5
- package/dist/models/schemas/bff/caseDetail/SPostCaseBFF.d.ts +3 -3
- package/dist/models/schemas/bff/caseDetail/SPostCaseResponseBFF.d.ts +1 -1
- package/dist/models/schemas/bff/casesSummary/SGetCaseEmailPartiesBFF.d.ts +5 -5
- package/dist/models/schemas/bff/casesSummary/SGetCasesSummaryEmailBFF.d.ts +5 -5
- package/dist/models/schemas/bff/changeRequest/SGetChangeRequestBFF.d.ts +8 -1
- package/dist/models/schemas/bff/changeRequest/SGetChangeRequestBFF.d.ts.map +1 -1
- package/dist/models/schemas/bff/changeRequest/SGetChangeRequestDocumentBFF.d.ts +7 -0
- package/dist/models/schemas/bff/changeRequest/SGetChangeRequestDocumentBFF.d.ts.map +1 -1
- package/dist/models/schemas/bff/changeRequest/SPostExtensionBFF.d.ts +1 -1
- package/dist/models/schemas/bff/contractorDocuments/SGetContractorDocumentBFF.d.ts +7 -0
- package/dist/models/schemas/bff/contractorDocuments/SGetContractorDocumentBFF.d.ts.map +1 -1
- package/dist/models/schemas/bff/contractorDocuments/SPostContractorDocumentBFF.d.ts +14 -0
- package/dist/models/schemas/bff/contractorDocuments/SPostContractorDocumentBFF.d.ts.map +1 -1
- package/dist/models/schemas/bff/engagementsSummary/SGetEngagementsAssignmentDocumentBFF.d.ts +7 -0
- package/dist/models/schemas/bff/engagementsSummary/SGetEngagementsAssignmentDocumentBFF.d.ts.map +1 -1
- package/dist/models/schemas/bff/engagementsSummary/SGetEngagementsReferralDocumentBFF.d.ts +7 -0
- package/dist/models/schemas/bff/engagementsSummary/SGetEngagementsReferralDocumentBFF.d.ts.map +1 -1
- package/dist/models/schemas/bff/engagementsSummary/SGetEngagementsWorkerSummaryBFF.d.ts +84 -0
- package/dist/models/schemas/bff/engagementsSummary/SGetEngagementsWorkerSummaryBFF.d.ts.map +1 -1
- package/dist/models/schemas/bff/engagementsSummary/SPostEngagementsWorkerSummaryBFF.d.ts +15 -8
- package/dist/models/schemas/bff/engagementsSummary/SPostEngagementsWorkerSummaryBFF.d.ts.map +1 -1
- package/dist/models/schemas/bff/engagementsSummary/SPostEngagementsWorkerSummaryBFF.js +2 -2
- package/dist/models/schemas/bff/engagementsSummary/SPostEngagementsWorkerSummaryBFF.js.map +1 -1
- package/dist/models/schemas/bff/enquiryDetail/SGetEnquiryBFF.d.ts +7 -0
- package/dist/models/schemas/bff/enquiryDetail/SGetEnquiryBFF.d.ts.map +1 -1
- package/dist/models/schemas/bff/enquiryDetail/SGetEnquirySimBFF.d.ts +7 -0
- package/dist/models/schemas/bff/enquiryDetail/SGetEnquirySimBFF.d.ts.map +1 -1
- package/dist/models/schemas/bff/enquiryDetail/SGetEnquirySimDocumentBFF.d.ts +7 -0
- package/dist/models/schemas/bff/enquiryDetail/SGetEnquirySimDocumentBFF.d.ts.map +1 -1
- package/dist/models/schemas/bff/personalDetails/SGetPersonalDetails.d.ts +7 -0
- package/dist/models/schemas/bff/personalDetails/SGetPersonalDetails.d.ts.map +1 -1
- package/dist/models/schemas/bff/personalDetails/SPostPersonalDetails.d.ts +7 -0
- package/dist/models/schemas/bff/personalDetails/SPostPersonalDetails.d.ts.map +1 -1
- package/dist/utils/strings/manipulate.d.ts +11 -1
- package/dist/utils/strings/manipulate.d.ts.map +1 -1
- package/dist/utils/strings/manipulate.js +47 -42
- package/dist/utils/strings/manipulate.js.map +1 -1
- package/dist/utils/strings/manipulate.test.js +42 -0
- package/dist/utils/strings/manipulate.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,57 +1,62 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
/**
|
|
2
|
+
* A "word" character is any Unicode letter, number, or combining mark.
|
|
3
|
+
* Combining marks (e.g. U+0308 in the decomposed form of "ä") must stay
|
|
4
|
+
* attached to the letter before them, otherwise they split a word in two.
|
|
5
|
+
* Anything else (space, hyphen, apostrophe, punctuation) is a separator and
|
|
6
|
+
* is emitted unchanged.
|
|
7
|
+
*/
|
|
8
|
+
const WORD_CHAR = /^[\p{L}\p{N}\p{M}]$/u;
|
|
9
|
+
const isWordChar = (ch) => WORD_CHAR.test(ch);
|
|
10
|
+
/**
|
|
11
|
+
* Upper-cases the first character of every word and lower-cases the rest.
|
|
12
|
+
* Separators are preserved and each starts a new word, so hyphenated and
|
|
13
|
+
* apostrophised names keep their inner capital:
|
|
14
|
+
* "KERRI-ANNE O'BRIEN" -> "Kerri-Anne O'Brien", "TÄNZER" -> "Tänzer".
|
|
15
|
+
*/
|
|
16
|
+
export const wordsToTitleCase = (str) => {
|
|
6
17
|
if (str.length === 0)
|
|
7
18
|
return '';
|
|
8
|
-
|
|
19
|
+
// Lower-case the whole string first so context-sensitive rules
|
|
20
|
+
// (e.g. Greek final sigma) are applied correctly.
|
|
9
21
|
let output = '';
|
|
10
|
-
let
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
output += lowercase.charAt(i);
|
|
16
|
-
i++;
|
|
17
|
-
continue;
|
|
22
|
+
let atWordStart = true;
|
|
23
|
+
for (const ch of str.toLowerCase()) {
|
|
24
|
+
if (isWordChar(ch)) {
|
|
25
|
+
output += atWordStart ? ch.toUpperCase() : ch;
|
|
26
|
+
atWordStart = false;
|
|
18
27
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
j++;
|
|
23
|
-
const token = lowercase.slice(i, j);
|
|
24
|
-
if (token.length > 0) {
|
|
25
|
-
output +=
|
|
26
|
-
tokenIndex === 0
|
|
27
|
-
? token
|
|
28
|
-
: token.charAt(0).toUpperCase() + token.slice(1);
|
|
29
|
-
tokenIndex++;
|
|
28
|
+
else {
|
|
29
|
+
output += ch;
|
|
30
|
+
atWordStart = true;
|
|
30
31
|
}
|
|
31
|
-
i = j;
|
|
32
32
|
}
|
|
33
33
|
return output;
|
|
34
34
|
};
|
|
35
|
-
|
|
35
|
+
/**
|
|
36
|
+
* Lower-cases the first word, title-cases every later word, and preserves
|
|
37
|
+
* separators: "V2-API.js" -> "v2-Api.Js".
|
|
38
|
+
*/
|
|
39
|
+
export const wordsToCamelCase = (str) => {
|
|
36
40
|
if (str.length === 0)
|
|
37
41
|
return '';
|
|
38
|
-
const lowercase = str.toLowerCase();
|
|
39
42
|
let output = '';
|
|
40
|
-
let
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
if (
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
43
|
+
let atWordStart = true;
|
|
44
|
+
let wordIndex = 0;
|
|
45
|
+
for (const ch of str.toLowerCase()) {
|
|
46
|
+
if (isWordChar(ch)) {
|
|
47
|
+
if (atWordStart) {
|
|
48
|
+
output += wordIndex === 0 ? ch : ch.toUpperCase();
|
|
49
|
+
wordIndex++;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
output += ch;
|
|
53
|
+
}
|
|
54
|
+
atWordStart = false;
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
output += ch;
|
|
58
|
+
atWordStart = true;
|
|
47
59
|
}
|
|
48
|
-
let j = i;
|
|
49
|
-
while (j < lowercase.length &&
|
|
50
|
-
isAsciiAlphaNumericCode(lowercase.charCodeAt(j)))
|
|
51
|
-
j++;
|
|
52
|
-
const token = lowercase.slice(i, j);
|
|
53
|
-
output += token.charAt(0).toUpperCase() + token.slice(1);
|
|
54
|
-
i = j;
|
|
55
60
|
}
|
|
56
61
|
return output;
|
|
57
62
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manipulate.js","sourceRoot":"","sources":["../../../src/utils/strings/manipulate.ts"],"names":[],"mappings":"AAAA,MAAM,
|
|
1
|
+
{"version":3,"file":"manipulate.js","sourceRoot":"","sources":["../../../src/utils/strings/manipulate.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,SAAS,GAAG,sBAAsB,CAAA;AAExC,MAAM,UAAU,GAAG,CAAC,EAAU,EAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAE9D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,GAAW,EAAU,EAAE;IACtD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAE/B,+DAA+D;IAC/D,kDAAkD;IAClD,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,IAAI,WAAW,GAAG,IAAI,CAAA;IAEtB,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;QACnC,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;YACnB,MAAM,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;YAC7C,WAAW,GAAG,KAAK,CAAA;QACrB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,EAAE,CAAA;YACZ,WAAW,GAAG,IAAI,CAAA;QACpB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,GAAW,EAAU,EAAE;IACtD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAE/B,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,IAAI,WAAW,GAAG,IAAI,CAAA;IACtB,IAAI,SAAS,GAAG,CAAC,CAAA;IAEjB,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;QACnC,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;YACnB,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,IAAI,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAA;gBACjD,SAAS,EAAE,CAAA;YACb,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,EAAE,CAAA;YACd,CAAC;YACD,WAAW,GAAG,KAAK,CAAA;QACrB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,EAAE,CAAA;YACZ,WAAW,GAAG,IAAI,CAAA;QACpB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
|
|
@@ -21,6 +21,44 @@ describe('wordsToTitleCase', () => {
|
|
|
21
21
|
expect(wordsToTitleCase('hELLo')).toBe('Hello');
|
|
22
22
|
expect(wordsToTitleCase('')).toBe('');
|
|
23
23
|
});
|
|
24
|
+
it('keeps accented letters inside a word', () => {
|
|
25
|
+
expect(wordsToTitleCase('TÄNZER')).toBe('Tänzer');
|
|
26
|
+
expect(wordsToTitleCase('MÜLLER')).toBe('Müller');
|
|
27
|
+
expect(wordsToTitleCase('FRANÇOIS')).toBe('François');
|
|
28
|
+
expect(wordsToTitleCase('NUÑEZ')).toBe('Nuñez');
|
|
29
|
+
expect(wordsToTitleCase('GROß')).toBe('Groß');
|
|
30
|
+
expect(wordsToTitleCase('SØRENSEN')).toBe('Sørensen');
|
|
31
|
+
expect(wordsToTitleCase('ŁUKASZ')).toBe('Łukasz');
|
|
32
|
+
});
|
|
33
|
+
it('upper-cases an accented first letter', () => {
|
|
34
|
+
expect(wordsToTitleCase('ÉMILE ZOLA')).toBe('Émile Zola');
|
|
35
|
+
expect(wordsToTitleCase('émile')).toBe('Émile');
|
|
36
|
+
expect(wordsToTitleCase('ÅSA ÖSTLUND')).toBe('Åsa Östlund');
|
|
37
|
+
});
|
|
38
|
+
it('keeps combining marks attached to the preceding letter', () => {
|
|
39
|
+
// "TÄNZER" in decomposed (NFD) form: the diaeresis is a separate code point
|
|
40
|
+
const decomposed = 'TÄNZER'.normalize('NFD');
|
|
41
|
+
expect(wordsToTitleCase(decomposed)).toBe('Tänzer'.normalize('NFD'));
|
|
42
|
+
});
|
|
43
|
+
it('handles non-Latin scripts', () => {
|
|
44
|
+
expect(wordsToTitleCase('ИВАН ПЕТРОВ')).toBe('Иван Петров');
|
|
45
|
+
expect(wordsToTitleCase('ΓΙΩΡΓΟΣ')).toBe('Γιωργος');
|
|
46
|
+
// scripts without case are returned unchanged
|
|
47
|
+
expect(wordsToTitleCase('田中 太郎')).toBe('田中 太郎');
|
|
48
|
+
expect(wordsToTitleCase('محمد')).toBe('محمد');
|
|
49
|
+
});
|
|
50
|
+
it('title-cases each part of hyphenated and apostrophised names', () => {
|
|
51
|
+
expect(wordsToTitleCase("O'BRIEN")).toBe("O'Brien");
|
|
52
|
+
expect(wordsToTitleCase('O’BRIEN')).toBe('O’Brien');
|
|
53
|
+
expect(wordsToTitleCase("D'ANGELO")).toBe("D'Angelo");
|
|
54
|
+
expect(wordsToTitleCase('KERRI-ANNE')).toBe('Kerri-Anne');
|
|
55
|
+
expect(wordsToTitleCase('JEAN-LUC PICARD')).toBe('Jean-Luc Picard');
|
|
56
|
+
expect(wordsToTitleCase('MARY‑KATE')).toBe('Mary‑Kate'); // non-breaking hyphen
|
|
57
|
+
});
|
|
58
|
+
it('preserves surrounding and repeated whitespace', () => {
|
|
59
|
+
expect(wordsToTitleCase(' JOHN DOE ')).toBe(' John Doe ');
|
|
60
|
+
expect(wordsToTitleCase('JOHN\tDOE')).toBe('John\tDoe');
|
|
61
|
+
});
|
|
24
62
|
});
|
|
25
63
|
describe('wordsToCamelCase', () => {
|
|
26
64
|
it('keeps first token lowercase and title-cases later tokens', () => {
|
|
@@ -42,5 +80,9 @@ describe('wordsToCamelCase', () => {
|
|
|
42
80
|
expect(wordsToCamelCase('hELLo')).toBe('hello');
|
|
43
81
|
expect(wordsToCamelCase('')).toBe('');
|
|
44
82
|
});
|
|
83
|
+
it('keeps accented letters inside a word', () => {
|
|
84
|
+
expect(wordsToCamelCase('ÉMILE TÄNZER')).toBe('émile Tänzer');
|
|
85
|
+
expect(wordsToCamelCase('MÜLLER-LÜDENSCHEIDT')).toBe('müller-Lüdenscheidt');
|
|
86
|
+
});
|
|
45
87
|
});
|
|
46
88
|
//# sourceMappingURL=manipulate.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manipulate.test.js","sourceRoot":"","sources":["../../../src/utils/strings/manipulate.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"manipulate.test.js","sourceRoot":"","sources":["../../../src/utils/strings/manipulate.test.ts"],"names":[],"mappings":"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"}
|