范:面向日期輸入的 Prompt 類型設(shè)計指南)
開發(fā)工具【免費下載鏈接】enquirerStylish, intuitive and user-friendly prompts. Used by eslint, webpack, yarn, pm2, pnpm, RedwoodJS, FactorJS, salesforce, Cypress, Google Lighthouse, Generate, tencent cloudbase, lint-staged, gluegun, hygen, hardhat, AWS Amplify, GitHub Actions Toolkit, airbnb/nimbus, and more! Please follow Enquirers author: https://github.com/jonschlinkert項目地址https://gitcode.com/gh_mirrors/en/enquirer點擊查看免費下載導(dǎo)讀本文圍繞 Enquirer 倉庫中 Date Prompt 類型規(guī)范文檔 展開系統(tǒng)梳理這一即將推出的日期輸入型 Prompt 的完整鍵盤交互模型——從光標(biāo)移動、數(shù)字位增減與跨字段進位到提交、取消、重置與狀態(tài)符號顯示。讀完本文你將清楚掌握 Date Prompt 的設(shè)計意圖與鍵位約定并能將其與 Enquirer 既有的 StringPrompt、NumberPrompt 等類型類的通用鍵位體系對照使用。Date Prompt 在 Enquirer 中的定位在 Enquirer 的類型體系中低層starter類型類用于簡化任何用途的 Prompt 創(chuàng)建其中與日期相關(guān)的就是DatePrompt——官方類型總覽將其描述為create prompts that take and return date-related values創(chuàng)建接收并返回日期相關(guān)值的 Prompt。該條目在文檔中以刪除線形式列出~~DatePrompt~~表明其仍處于規(guī)劃狀態(tài)README.md 與 docs/prompts.md 的 Prompt 類型清單中也均標(biāo)注為DatePrompt (Coming Soon!)。從源碼結(jié)構(gòu)可以推斷該類型尚未落地實現(xiàn)lib/types/index.js 當(dāng)前僅導(dǎo)出ArrayPrompt、AuthPrompt、BooleanPrompt、NumberPrompt、StringPrompt五個類型類lib/types/目錄下沒有date.js。因此date.md 這份文檔實質(zhì)上是 DatePrompt 的行為與鍵位設(shè)計規(guī)范本文即以此規(guī)范為準(zhǔn)逐條展開。光標(biāo)移動逐位定位日期字段與普通文本輸入不同Date Prompt 需要把光標(biāo)定位到日期串中的某個數(shù)字位上進行局部編輯。規(guī)范規(guī)定了如下移動方式操作鍵位效果左移一格Left Arrow←光標(biāo)向左移動右移一格Right Arrow→光標(biāo)向右移動按詞左移Alt (Option)B光標(biāo)向左移動詞為單位按詞右移Alt (Option)F光標(biāo)向右移動詞為單位右移等價 TabTab/CtrlI光標(biāo)向右移動移到開頭CtrlA光標(biāo)跳到日期串起始位置移到結(jié)尾CtrlE光標(biāo)跳到日期串末尾其中Alt/Option B與Alt/Option F沿用了終端世界按詞移動backward/forward word的經(jīng)典約定Ctrl A / Ctrl E對應(yīng) support/keypresses.md 中列出的通用編輯鍵位Move the cursor to the first character in user input / Move the cursor to the end of the line。這些組合在 Enquirer 支持用戶輸入的各類型 Prompt 中是共通的可參見 docs/key-bindings.md 的 Move cursor 一節(jié)。數(shù)字位增減與跨字段進位邏輯Date Prompt 最核心的交互特色是用Up Arrow/Down Arrow改變當(dāng)前光標(biāo)所在數(shù)字位的值并且當(dāng)某個字段達(dá)到邊界時會自動向更高一級字段進位。規(guī)范給出了四條具體的進位示例分鐘 → 小時在6:59上遞增分鐘分鐘溢出后小時位自動加一得到7:00小時 → 日日期在23:00上遞增小時小時溢出后**日/日期隨之遞增**跨天日 → 月在31 Jan上遞增天數(shù)天數(shù)溢出后月份加一月 → 年在Dec上遞增月份月份溢出后改為年份遞增跨年。這條鏈路分鐘→小時→日→月→年形成了完整的自底向上進位模型用戶無需關(guān)心各字段的合法取值范圍——上/下鍵的遞增遞減會自動遵守日歷約束并平滑跨位。這也解釋了為什么該 Prompt 適合按位編輯而非自由文本輸入每一位都是一個獨立、可尋址、可增減的數(shù)值單元。提交、取消、重置與終止 REPLDate Prompt 沿用了 Enquirer 面向輸入類 Prompt 的生命周期鍵位約定并針對 REPL 場景補充了停止鍵鍵位行為CtrlJ/Return回車提交當(dāng)前日期值Prompt 結(jié)束CtrlC/Escape取消PromptCtrlG重置Prompt 至初始狀態(tài)CtrlD停止 REPL終止運行中的 Read-Eval-Print Loop其中Ctrl C取消與Ctrl G重置是 docs/key-bindings.md 中定義的所有Prompt 通用鍵位Cancel the prompt. / Reset the prompt to its initial state.Ctrl D用于停止 REPLCtrl J作為回車提交的等價鍵則是終端行編輯中的常見慣例見 support/keypresses.md 的通用命令表。直接鍵入數(shù)字修改當(dāng)前位除方向鍵外Date Prompt 還允許直接鍵入數(shù)字來改寫光標(biāo)所在的數(shù)字位其規(guī)則包含三個要點輸入延遲重置停止輸入 1 秒后本次鍵入的輸入被重置位數(shù)齊全后應(yīng)用當(dāng)所有數(shù)字位都鍵入完成后輸入才會被應(yīng)用為當(dāng)前位的值應(yīng)用后光標(biāo)右移輸入被應(yīng)用之后光標(biāo)自動移動到右側(cè)下一位。也就是說該機制把數(shù)字位抽象為固定寬度的字段用戶連續(xù)鍵入以填滿該位完成后自動推進到下一個位繼續(xù)編輯。1 秒無輸入則清除當(dāng)前緩沖避免殘留在編輯中途的半截數(shù)值。這套填位式輸入 自動進位的設(shè)計與上/下鍵的遞增遞減共同構(gòu)成了雙模編輯方式。提交前后與取消時的狀態(tài)符號規(guī)范還明確了 Date Prompt 在三個關(guān)鍵時點的狀態(tài)反饋時機顯示符號提交前?問號表示等待輸入提交后?對勾表示成功取消后?叉號表示中止這符合 Enquirer 各 Prompt 通用的前綴符號隨狀態(tài)切換的渲染模式輸入過程中以問號提示待作答提交成功切換為對勾取消則顯示叉號。可以推斷這些符號的最終呈現(xiàn)會復(fù)用倉庫中的 lib/symbols.js 符號表與 lib/theme.js 主題系統(tǒng)與其他 Prompt 保持一致的可主題化外觀。與其他 Prompt 的鍵位對照將 Date Prompt 的規(guī)范與倉庫中通用的鍵位參考對照可以更清晰地理解其設(shè)計取舍通用取消/重置Ctrl C取消、Ctrl G重置與所有 Prompt 一致見 docs/key-bindings.md光標(biāo)移動Left/Right Arrow、Ctrl A、Ctrl E與 support/keypresses.md 的 Move Cursor 一節(jié)一致說明 Date Prompt 復(fù)用輸入類 Prompt 的編輯基礎(chǔ)設(shè)施特色能力上/下鍵按位增減、數(shù)字填位式直輸、以及跨字段進位是 Date Prompt 獨有的交互也是本規(guī)范最值得關(guān)注的部分。小結(jié)盡管 DatePrompt 在 README.md 中仍標(biāo)記為 Coming Soon!且 lib/types/index.js 尚無對應(yīng)實現(xiàn)但 date.md 這份規(guī)范已經(jīng)完整定義了該類型的設(shè)計藍(lán)圖按位尋址的光標(biāo)移動、上/下鍵增減與分鐘→小時→日→月→年的進位鏈條、數(shù)字鍵直輸?shù)奶钗痪彌_、以及提交/取消/重置三態(tài)的生命周期與符號反饋。對于希望預(yù)研或自行實現(xiàn)日期輸入型 Prompt 的開發(fā)者這套鍵位與行為約定本身就是一份可直接參照的交互規(guī)格。贊分享開發(fā)工具【免費下載鏈接】enquirerStylish, intuitive and user-friendly prompts. Used by eslint, webpack, yarn, pm2, pnpm, RedwoodJS, FactorJS, salesforce, Cypress, Google Lighthouse, Generate, tencent cloudbase, lint-staged, gluegun, hygen, hardhat, AWS Amplify, GitHub Actions Toolkit, airbnb/nimbus, and more! Please follow Enquirers author: https://github.com/jonschlinkert項目地址https://gitcode.com/gh_mirrors/en/enquirer點擊查看免費下載相關(guān)推薦深入 Enquirer 自定義 Prompt 開發(fā)從 Prompt 基類到類型注冊的完整實戰(zhàn)指南深入 Enquirer 自定義 Prompt 開發(fā)從 Prompt 基類到類型注冊的完整實戰(zhàn)指南 Enquirer 2.0 引入了prompt 類型typ開發(fā)工具Enquirer List Prompt 實戰(zhàn)指南從 prompt-list 到內(nèi)置 List 的列表輸入完整方案Enquirer List Prompt 實戰(zhàn)指南從 prompt list 到內(nèi)置 List 的列表輸入完整方案 導(dǎo)讀 本文聚焦 Enquirer 項目中的開發(fā)工具Enquirer核心架構(gòu)解析Prompt類設(shè)計與狀態(tài)管理機制Enquirer核心架構(gòu)解析Prompt類設(shè)計與狀態(tài)管理機制 架構(gòu)概覽 Enquirer作為Node.js生態(tài)中廣泛使用的交互式命令行提示庫其核心架構(gòu)圍繞開發(fā)工具上一篇終極指南如何使用tview庫在終端中開發(fā)炫酷的文本游戲下一篇Binwalk質(zhì)量保證終極指南如何實現(xiàn)95%代碼覆蓋率與測試完整性創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考