From f38adb3ac9a6c715059b00a099d81fb67dc974af Mon Sep 17 00:00:00 2001 From: Jean-Yves Perrier Date: Thu, 28 Mar 2024 16:03:31 +0100 Subject: [PATCH] feat(macros/AvailableInWorkers): support more distinct cases (#10029) --- kumascript/macros/AvailableInWorkers.ejs | 79 +++++++++++++++++------- 1 file changed, 55 insertions(+), 24 deletions(-) diff --git a/kumascript/macros/AvailableInWorkers.ejs b/kumascript/macros/AvailableInWorkers.ejs index eb7c80cf743c..0659e7c39706 100644 --- a/kumascript/macros/AvailableInWorkers.ejs +++ b/kumascript/macros/AvailableInWorkers.ejs @@ -3,12 +3,17 @@ // // Parameters: // -// $0 - workerType (optional) -// -// The optional first argument has to be one of the ['notservice']. +// $0 - workerType (optional): +// 'window_and_dedicated': only in DedicatedWorker (and in Window) +// 'dedicated': only in DedicatedWorker +// 'window_and_worker_except_service': all workers but ServiceWorker (and in Window) +// 'worker_except_service': all workers but ServiceWorker (and no window) +// 'window_and_service': only in ServiceWorker (and in Window) +// 'service': only in ServiceWorker +// null: (default) All workers (and Window) // // {{AvailableInWorkers}} -// {{AvailableInWorkers("notservice")}} +// {{AvailableInWorkers("worker_except_service")}} // const locale = env.locale; @@ -21,38 +26,64 @@ const note = mdn.localString({ "ko": "참고:", "ru": "Примечание:", "zh-CN": "备注:", - "zh-TW": "備註:" + "zh-TW": "備註:", }); const textDefault = mdn.localString({ - "en-US": `This feature is available in Web Workers`, - "zh-CN": `此特性在 Web Worker 中可用`, - "zh-TW": `此功能可在 Web Worker 中使用`, - "es": `Esta característica está disponible en Web Workers`, - "fr": `Cette fonctionnalité est disponible via les Web Workers`, - "ja": `この機能は Web Worker 内で利用可能です`, - "ko": `이 기능은 Web Worker에서 사용할 수 있습니다`, - "ru": `Эта возможность доступна в Web Workers` + "en-US": `This feature is available in Web Workers.`, + "zh-CN": `此特性在 Web Worker 中可用。`, + "zh-TW": `此功能可在 Web Worker 中使用。`, + "es": `Esta característica está disponible en Web Workers.`, + "fr": `Cette fonctionnalité est disponible via les Web Workers.`, + "ja": `この機能は Web Worker 内で利用可能です。`, + "ko": `이 기능은 Web Worker에서 사용할 수 있습니다.`, + "ru": `Эта возможность доступна в Web Workers.`, +}); + +const textNotService = mdn.localString({ + "en-US": `This feature is available in Web Workers, except for Service Workers.`, + "zh-CN": `此特性在 Web Worker(不包括 Service Worker)中可用。`, + "zh-TW": `此功能可在 Web Worker(不包括 Service Worker)中使用。`, +}); + +const textNotServiceNotWindow = mdn.localString({ + "en-US": `This feature is only available in Web Workers, except for Service Workers.`, +}); + +const textDedicated = mdn.localString({ + "en-US": `This feature is available in Dedicated Web Workers.`, +}); + +const textDedicatedOnly = mdn.localString({ + "en-US": `This feature is only available in Dedicated Web Workers.`, }); -const textServiceWorkers = mdn.localString({ - "en-US": `This feature is available in Web Workers, except for Service Workers`, - "zh-CN": `此特性在 Web Worker(不包括 Service Worker)中可用`, - "zh-TW": `此功能可在 Web Worker(不包括 Service Worker)中使用` +const textService = mdn.localString({ + "en-US": `This feature is available in Service Workers.`, +}); + +const textServiceOnly = mdn.localString({ + "en-US": `This feature is only available in Service Workers.`, }) -const workerType = $0; +const workerType = $0 || 'default'; -let text = ""; +const associatedText = { + default: () => textDefault, + window_and_worker_except_service: () => textNotService, + worker_except_service: () => textNotServiceNotWindow, + window_and_dedicated: () => textDedicated, + dedicated: () => textDedicatedOnly, + window_and_service: () => textService, + service: () => textServiceOnly, +}; -if (workerType === "notservice") { - text = textServiceWorkers; -} else if (workerType) { +if (!associatedText[workerType]) { throw new Error(`'${workerType}' is not a recognized argument to this macro`); -} else { - text = textDefault; } +const text = associatedText[workerType](); + %>