From 5e8d4e36d4b2bf18e216cd5ce1763970c5e0947b Mon Sep 17 00:00:00 2001 From: joe <> Date: Sat, 9 Sep 2023 13:46:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8F=B4=20{{}}=20=E7=9B=B4=E6=8E=A5?= =?UTF-8?q?=E4=BB=A3=E8=A1=A8=E8=BC=B8=E5=85=A5=E6=A1=86=EF=BC=8C=E5=8F=A6?= =?UTF-8?q?=E5=A4=96=E8=AA=BF=E6=95=B4=E7=9B=B8=E9=97=9C=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 34 ++++++++++++++++------------- _locales/en/messages.json | 2 +- _locales/ja/messages.json | 2 +- _locales/ko/messages.json | 2 +- _locales/zh_CN/messages.json | 2 +- _locales/zh_TW/messages.json | 2 +- js/content.js | 42 ++++++++++++++++++++++++++++++------ manifest.json | 2 +- 8 files changed, 60 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index ae9b4f8..353c794 100644 --- a/README.md +++ b/README.md @@ -29,11 +29,6 @@ Buy Me A Coffee - -PS : 也不用亂給沒任何評論的星星,如下XD - -![](https://hackmd.io/_uploads/ryzlMWLu2.png) - ## 操作功能一覽 ### Mac 快捷鍵 @@ -268,21 +263,20 @@ ChatGPT 雖然很厲害,但也有它的極限,所以我們要加強自己的 > PS:Prompt 只是更佳的提問技巧,無需過度神話,而 ChatGPT 的正確使用觀念,就是持續對它進行提問,讓 AI 進行自我修正,最後獲得出最佳的答案。 -### 使用 [xxx] 替換成 多個欄位 的技巧 +### 支援多個欄位 -#### 可以把會重複的欄位使用 [xxx],並在最後告訴 ChatGPT 說替換成其它文字 -![](https://hackmd.io/_uploads/rJw0iZ2En.png) +#### 輸入多個要重複的欄位名稱 +![](https://hackmd.io/_uploads/rysugnyR3.png) #### 產生出來的樣板 -![](https://hackmd.io/_uploads/Hyu5j-nVh.png) +![](https://hackmd.io/_uploads/BynSl3JR2.png) #### 示範輸入 -![](https://hackmd.io/_uploads/H1q9sWnVh.png) +![](https://hackmd.io/_uploads/rJXiyh1Rn.png) -#### ChatGPT 輸出的結果 -![](https://hackmd.io/_uploads/B1e-is-n4n.png) +#### 結果 +![](https://hackmd.io/_uploads/SkDXg31Rn.png) -> 這只是示範替換的技巧,如果只有一個欄位挖空的話,用原本的 {{欄位}} 方式就可以了。 ### 使用另一種方式,直接產出已加上 {{xxx}} 的新 Prompt @@ -510,6 +504,16 @@ ChatGPT 雖然很厲害,但也有它的極限,所以我們要加強自己的 - 調整 選單 button 位置 ### 1.0.5 版 -送審日期:2023/8/13 -通過日期:送審中 +送審日期:2023/8/13 +通過日期:2023/8/15 - 優化超級樣版產生輸入框方式 + +### 1.0.6 版 +送審日期:2023/8/26 +送審日期:2023/8/26 +- 調整 menu 位置,避免擋住 share link + +### 1.0.7 版 +送審日期:2023/9/9 +送審日期:送審中 +- 支援輸入 {{}} 即可代表一個輸入框 \ No newline at end of file diff --git a/_locales/en/messages.json b/_locales/en/messages.json index a666ca2..0fa6763 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -143,7 +143,7 @@ "message":"Pressing tab can move to the next cell, and pressing shift + tab can move back to the previous cell." }, "placeholder_supper_prompt_desc": { - "message": "Using {{}} represents a field, and within {{}}, you can set the field name and default value. For example, {{ Role | | Chef }}. You can also input a block of text without field extraction. If the button name or template content is not filled, it will not be displayed in the right menu." + "message": "You can use {{}} to represent a field. Inside {{}}, you can set the field name and default value, for example: {{ Role || Chef }}. In addition, you can also use {{}} directly to represent an input box. You can also input a piece of text without creating a field. If the button name or template content is not filled in, it will not be displayed in the right-side menu." }, "placeholder_keyword_input":{ "message":"Category or Keyword..." diff --git a/_locales/ja/messages.json b/_locales/ja/messages.json index 5b4020a..8efa463 100644 --- a/_locales/ja/messages.json +++ b/_locales/ja/messages.json @@ -143,7 +143,7 @@ "message":"タブを押すと次のセルに移動できます。Shift + タブを押すと前のセルに戻ることができます。" }, "placeholder_supper_prompt_desc": { - "message": "{{}}を使用すると、フィールドを表し、{{}}内でフィールド名とデフォルト値を設定できます。例えば、{{ ロール | | シェフ }}です。フィールドの抽出を行わずにテキストブロックを入力することもできます。ボタン名やテンプレートの内容が入力されていない場合、右側のメニューには表示されません。" + "message": "{{}}はフィールドを表すために使用できます。{{}}の中には、フィールド名とデフォルト値を設定できます。例えば、{{ Role || Chef }}です。さらに、{{}}を使用して直接入力ボックスを表すこともできます。フィールドを作成せずにテキストを入力することもできます。ボタン名やテンプレートの内容が入力されていない場合、右側のメニューに表示されません。" }, "placeholder_keyword_input":{ "message":"キーワード..." diff --git a/_locales/ko/messages.json b/_locales/ko/messages.json index 21c43ff..0176b87 100644 --- a/_locales/ko/messages.json +++ b/_locales/ko/messages.json @@ -143,7 +143,7 @@ "message":"Tab을 누르면 다음 셀로 이동할 수 있으며, Shift + Tab을 누르면 이전 셀로 이동할 수 있습니다." }, "placeholder_supper_prompt_desc": { - "message": "{{}}를 사용하면 필드를 나타내며, {{}} 안에 필드 이름과 기본값을 설정할 수 있습니다. 예를 들어, {{ 역할 | | 요리사 }}입니다. 필드 추출 없이 텍스트 블록을 입력할 수도 있습니다. 버튼 이름이나 템플릿 내용이 입력되지 않은 경우, 오른쪽 메뉴에 표시되지 않습니다." + "message": "{{}}를 사용하여 필드를 나타낼 수 있습니다. {{}} 안에 필드 이름과 기본값을 설정할 수 있으며, 예를 들면 {{ Role || 요리사 }}와 같이 설정할 수 있습니다. 또한, {{}}를 사용하여 직접 입력 상자를 나타낼 수도 있습니다. 필드를 생성하지 않고 텍스트를 입력할 수도 있습니다. 버튼 이름이나 템플릿 내용이 입력되지 않은 경우, 오른쪽 메뉴에 표시되지 않습니다." }, "placeholder_keyword_input":{ "message":"분류명 또는 키워드 ..." diff --git a/_locales/zh_CN/messages.json b/_locales/zh_CN/messages.json index 90aef48..c2b15b8 100644 --- a/_locales/zh_CN/messages.json +++ b/_locales/zh_CN/messages.json @@ -143,7 +143,7 @@ "message":"按下 Tab 可以移动到下一个单元格,按下 Shift + Tab 可以移回上一个单元格。" }, "placeholder_supper_prompt_desc": { - "message": "使用{{}}可以代表一个字段,{{}}里面可以设置字段名称和默认值,例如:{{ 角色 | | 厨师 }}。也可以纯输入一段文字,不进行字段挖空。按钮名称或模板内容未填写,则不会显示在右侧菜单。" + "message": "您可以使用{{}}表示一个字段。在{{}}内,您可以设置字段名称和默认值,例如:{{ 角色 || 厨师 }}。此外,您也可以直接使用{{}}表示一个输入框。您还可以输入一段文本而不创建字段。如果未填写按钮名称或模板内容,它将不会显示在右侧菜单中。" }, "placeholder_keyword_input":{ "message":"分类名称 或 关键字..." diff --git a/_locales/zh_TW/messages.json b/_locales/zh_TW/messages.json index c901d2f..d4ce2b6 100644 --- a/_locales/zh_TW/messages.json +++ b/_locales/zh_TW/messages.json @@ -143,7 +143,7 @@ "message":"按下 tab 可移動到下一格,按下 shift + tab 可移動回上一格。" }, "placeholder_supper_prompt_desc": { - "message": "使用{{}}可以代表一個欄位,{{}}裡面可以設定欄位名稱和預設值,例如:{{ 角色 | | 廚師 }}。也可以純輸入一段文字,不進行欄位挖空。若是按鈕名稱或樣板內容未填寫,則不會顯示在右側選單。" + "message": "您可以使用{{}}表示一個欄位。在{{}}內,您可以設定欄位名稱和預設值,例如:{{ 角色 || 廚師 }}。此外,您也可以直接使用{{}}表示一個輸入框。您還可以輸入一段文字而不創建欄位。如果未填寫按鈕名稱或範本內容,它將不會顯示在右側選單中。" }, "placeholder_keyword_input":{ "message":"分類名稱 或 關鍵字..." diff --git a/js/content.js b/js/content.js index 567f930..2a87fc2 100644 --- a/js/content.js +++ b/js/content.js @@ -4173,11 +4173,23 @@ function findGroupAndIndex(promptId) { `#${superPromptId} ${superPromptName}
` + innerHTML; // 使用正規表達式搜尋 {{ 和 }} 之間的內容 - const matches = superPrompt.match(/{{\s*([^}]+)\s*}}/g); - - // 移除重複的 - const uniqueMatches = [...new Set(matches)]; + const matches = superPrompt.match(/{{\s*([^}]*)\s*}}/g) || []; + // 移除重複的,但將 {{}} 是為獨立的一個 + const uniqueMatches = []; + const countMap = {}; + + for (const match of matches) { + if (match === '{{}}') { + uniqueMatches.push(match); + } else { + if (!countMap[match]) { + countMap[match] = true; + uniqueMatches.push(match); + } + } + } + if (!uniqueMatches) { return; } @@ -4272,8 +4284,23 @@ function findGroupAndIndex(promptId) { const table = document.querySelector("#superPromptTable"); const superPromptTextList = table.querySelectorAll(".superPromptText"); - const matches = superPrompt.match(/{{\s*([^}]+)\s*}}/g); - const uniqueMatches = [...new Set(matches)]; + // 使用正規表達式搜尋 {{ 和 }} 之間的內容 + const matches = superPrompt.match(/{{\s*([^}]*)\s*}}/g) || []; + + // 移除重複的,但將 {{}} 是為獨立的一個 + const uniqueMatches = []; + const countMap = {}; + + for (const match of matches) { + if (match === '{{}}') { + uniqueMatches.push(match); + } else { + if (!countMap[match]) { + countMap[match] = true; + uniqueMatches.push(match); + } + } + } let message = superPrompt; @@ -4293,7 +4320,8 @@ function findGroupAndIndex(promptId) { for (let i = 0; i < superPromptTextList.length; i++) { const uniqueMatch = escapeRegExp(uniqueMatches[i]); - const regex = new RegExp(uniqueMatch, 'g'); + const flag = uniqueMatch == escapeRegExp('{{}}') ? '' : 'g'; + const regex = new RegExp(uniqueMatch, flag); message = message.replace(regex, superPromptTextList[i].value); } diff --git a/manifest.json b/manifest.json index 085cacc..d096426 100644 --- a/manifest.json +++ b/manifest.json @@ -3,7 +3,7 @@ "name": "__MSG_extension_name__", "description": "__MSG_extension_description__", "author": "Joe", - "version": "1.0.6", + "version": "1.0.7", "default_locale": "en", "icons": { "16": "images/icon/16.png",