![[chappy-log.webp|cover-picture]]
## çµç·¯
<div class="link-card-v2">
<div class="link-card-v2-site">
<img class="link-card-v2-site-icon" src="https://github.githubassets.com/favicons/favicon.svg" />
<span class="link-card-v2-site-name">GitHub</span>
</div>
<div class="link-card-v2-title">
Preserve first-letter case · Issue #329 · tadashi-aikawa/obsidian-various-complements-plugin
</div>
<div class="link-card-v2-content">
Thanks for the great plugin! What I wish to have is to handle the following problem in some way: Given: my notes ...
</div>
<img class="link-card-v2-image" src="https://opengraph.githubassets.com/0eeba23405048b5361bb3b5e2d7e6da071f58d97dde8a6a0333ddd447c555f32/tadashi-aikawa/obsidian-various-complements-plugin/issues/329" />
<a href="https://github.com/tadashi-aikawa/obsidian-various-complements-plugin/issues/329"></a>
</div>
## 察å¿ãããšæ±ºããçç±
- è±èªåã§ã¯æ®éã®èŠä»¶
- [[Current file complement]]ãªã©ã§ã¯å¯Ÿå¿ããŠãã
- [[Internal Link Complement]]ã¯å€§æåå°æåã®åºå¥ãªãã«åè£ã«è¡šç€ºããŠãã
- ããã«æå
¥ãã¯å¿
èŠãªããã
- æåŸã®æ¿å
¥æã ãåŠçã远å ããã°ã圱é¿ç¯å²ã¯å°ããæããããã
## ãã°
çµæ§è°è«ãçœç±ããã®ã§ãã°ãæ®ããç¹ã«åºæåè©åšãã
> [!right-bubble] ![[minerva-face-right.webp]]
> https://github.com/tadashi-aikawa/obsidian-various-complements-plugin/issues/329 ã®å¯Ÿå¿ãè¡ãå Žåãinternal linkãæ¿å
¥ããéšåã«ã®ã¿æãå
¥ããã°å€§äžå€«ããã§ããïŒ åœ±é¿ç¯å²ãããã«åãŸããªã察å¿ããããšæã£ãŠããŸããããã以äžåºãããããªã埮åŠã ãªãšæããŸããŠã
>
> ãããã¯ãŒã¯ã¢ã¯ã»ã¹ããŠããã£ãŠæ§ããŸããã
> [!left-bubble] ![[chappy.webp]]
> çµè«ãšããŠã¯ãåºæ¬çã«å
éšãªã³ã¯æ¿å
¥ããžãã¯ã«æãå
¥ããã°è¶³ããŸããå
·äœçã«ã¯ src/ui/AutoCompleteSuggest.ts ã® constructInternalLinkText ããªã³ã¯æååãçµã¿ç«ãŠãŠããã®ã§ãããã§
> ãå
¥åã¯ãšãªã®å
é ãå°æåã§ãè£å®èªã®å
é ã倧æåãªã `[[Link|alias]]` ãè¿ãããšãã£ãå€å®ãå
¥ããã®ãæçã§ãã
> word.query 㯠src/provider/suggester.ts ã§æ¢ã«åããããŠããã®ã§ãååãã以å€ã¯è§Šããã«æžãã¯ãã§ãã
>
> ãã ããæ¬¡ã®ã±ãŒã¹ãã©ããããã§åœ±é¿ç¯å²ãå°ãåºããå¯èœæ§ã¯ãããŸãã
>
> - èšå®ãšããŠãªã³/ãªãå¯èœã«ãããªã src/setting/settings.tsïŒSettings/DEFAULT/èšå®UIïŒã«æãå
¥ããå¿
èŠããã
> - æ°èŠãªã³ã¯ïŒphantomïŒãç¹æ®ãªæ¿å
¥ã¢ãŒããŸã§å³å¯ã«æãããªããã¯ãšãªæªèšå®ã±ãŒã¹ã®æ±ãã远å ã§æ€èšãå¿
èŠã
>
> äžèšã蚱容ã§ãããªãã倿Žç¯å²ã¯ã»ãŒ src/ui/AutoCompleteSuggest.ts ã«éããããèŠç«ãŠã§ãã
> [!right-bubble] ![[minerva-face-right.webp]]
> ã¡ãªã¿ã«ãsrc/ui/AutoCompleteSuggest.ts 以å€ã«å¯Ÿå¿ãå
¥ããéžæè¢ããããŸããïŒ ããããã®ã¡ãªããã»ãã¡ãªããã¯ïŒ
> [!left-bubble] ![[chappy.webp]]
>
> ãããŸããsrc/ui/AutoCompleteSuggest.ts 以å€ã«å
¥ããå Žåã®ä»£è¡šçãªåè£ãšã¡ãªãã¡ãæŽçããŸãã
>
> åè£
>
> - src/provider/suggester.tsïŒjudge / suggestWords ãŸããïŒ
> - ã¡ãªãã: ããã§ãå
¥åã®å
é ã±ãŒã¹ã«åããã alias ãçæãããã°ãæ¿å
¥åŽã¯ä»ã®ãŸãŸã§æžããword.query ãæ¢ã«æã£ãŠããã®ã§æ¡ä»¶ãæã£ãŠããã
> - ãã¡ãªãã: 衚瀺åŽã® value/hit ãå€ãããããåè£è¡šç€ºãå±¥æŽé äœä»ãã«ã圱é¿ãåºãå¯èœæ§ããããå
éšãªã³ã¯ä»¥å€ã«ãæ³¢åããããã
> - src/provider/InternalLinkWordProvider.tsïŒã€ã³ããã¯ã¹çæïŒ
> - ã¡ãªãã: ã€ã³ããã¯ã¹æç¹ã§å°æåçã® alias ãä»èŸŒãã°ãåŸæ®µã®ããžãã¯å€æŽãæå°ã«ãªãããšãããã
> - ãã¡ãªãã: æ¬æ¥ã® alias ã§ã¯ãªãæååãæãããããšã«ãªãã®ã§ãåè£ã®æå³ããºã¬ãå¯èœæ§ãèŸæžãµã€ãºãå¢ããã
> - src/ui/popup-commands.tsïŒselectWithQueryAliasïŒ
> - ã¡ãªãã: æ¢ã«ãã¯ãšãªã alias ã«ãããæ©èœãããã®ã§ããããèªååããçºæ³ãåããã
> - ãã¡ãªãã: æ¢åã®ãããããŒæåãå€ããããšã«ãªãã®ã§ãUI/UXã®æåŸ
ã厩ãããããéåžž Enter ãšæåãæãããªãçµå± AutoCompleteSuggest åŽã«å¯ããããªãã
> - src/app-helper.tsïŒoptimizeMarkdownLinkText çïŒ
> - ã¡ãªãã: ãªã³ã¯è§£æ±ºã®å€æåŠçã«è¿ãäœçœ®ã§çµ±å¶ã§ããã
> - ãã¡ãªãã: ããã¯ããã¹è§£æ±ºãšè¡šç€ºæé©åããç®çãªã®ã§ãå
¥åã®ã±ãŒã¹ãšãããšãã£ã¿æèã«äŸåããåŠçãå
¥ãããšè²¬åã厩ããã
>
> çµè«ïŒåœ±é¿ã®å°ããéèŠïŒ
>
> - ãæ¿å
¥æã®ããã¹ãçæã ãå€ãããããªãããã¯ã src/ui/AutoCompleteSuggest.ts ãæå°ç¯å²ã
> - ãåè£çæã®ã«ãŒã«ãã®ãã®ãå€ããŠã衚瀺ãå±¥æŽãå«ããŠçµ±äžãããããªã src/provider/suggester.ts åŽãéžæè¢ã
>
> å¿
èŠãªããã©ã®ä»æ§ãæåªå
ãããïŒè¡šç€ºã»å±¥æŽã»èšå®è¿œå ã®æç¡ïŒã確èªããŠããæ¹éãçµããŸãã
> [!right-bubble] ![[minerva-face-right.webp]]
>
> ã¯ãšãªãHogeã§ãããhoge.mdãããããããšã
>
> - `[[hoge|Hoge]]`
> - `[[hoge]]`
>
> ã®2ã€ããããããŠããŸãã®ã¯è«å€ã§ãããããªããš...ïŒ
> [!left-bubble] ![[chappy.webp]]
>
> ãã®æ¡ä»¶ã ãšãå¥åè£ãšã㊠`[[hoge|Hoge]]` ã远å ãããæ¡ã¯ç¢ºå®ã«ã¢ãŠãã§ããsuggestionUniqPredicate 㯠word.value åäœã§éè€æé€ããŠããã®ã§ãhoge ãš Hoge ã¯å¥ç©æ±ãã«ãªãã2件衚瀺ãããŸãã
> ã€ãŸã âåè£ãå¢ããâ æ¹åã§ã¯ãªã âæ¿å
¥æã«åºåãå€ããâ æ¹å ã§ããå¿
èŠããããŸãã
>
> å
·äœçã«ã¯ãããªããŸãã
>
> - NGïŒ2ä»¶åºãïŒ
> - InternalLinkWordProvider ãªã©ã§ Hoge ã alias ãšããŠåè£ã«è¿œå
> - suggester ã§å¥ Word ãçæããŠæç€º
> - OKïŒ1ä»¶ã®ãŸãŸïŒ
> - constructInternalLinkText ã§ word.query ãšãªã³ã¯ã®å
é æåã®å€§å°ãéãå Žåã ã alias åºå
> - åè£ãªã¹ãã¯ä»ã® 1 ä»¶ã®ãŸãŸãæ¿å
¥æååã ã `[[hoge|Hoge]]` ã«ãã
>
> 泚æç¹ãšããŠãéè€æé€ãã倧å°ç¡èŠãã«å€ããæããããŸãããLinux çã§ Hoge.md ãš hoge.md ãå
±åããç°å¢ã§ã¯å£ããã®ã§éæšå¥šã§ãã
>
> èŠããã«ããäºéåè£ã絶察é¿ãããåæãªã æ¿å
¥ããžãã¯ã§åå²ããããããªã ã§ãã
> [!right-bubble] ![[minerva-face-right.webp]]
>
> äºè§£ã§ããã§ã¯ `constructInternalLinkText` ã«ä»å远å ãããªãã·ã§ã³ãæž¡ãããã®äžã§æ§ç¯ããæ¹éã§ãé¡ãããŸãã
>
> ãšããžã±ãŒã¹ã§ããã€ãçåç¹ãéžæè¢ãããå Žåã¯èããŠäžããã
> [!left-bubble] ![[chappy.webp]]
> äºè§£ã§ããconstructInternalLinkText ã«ãªãã·ã§ã³ãæž¡ããŠæ¿å
¥æã«åå²ããæ¹éã§é²ããŸããå®è£
åã«ä»æ§ã®ç¢ºèªã ããããŠãã ããã
>
> 確èªãããç¹ïŒãšããžã±ãŒã¹ïŒ
>
> - ãšã€ãªã¢ã¹ã«äœ¿ãæåå: ã¯ãšãªãéšåäžèŽã®ãšãã`[[Link|query]]`ïŒäŸ: memïŒã«ãããã`[[Link|linkã®å
é ã ãå°æåå]]`ïŒäŸ: memoryïŒã«ããããã©ã¡ããæãŸããã§ããïŒ
> - æ¢åãšã€ãªã¢ã¹åè£ïŒword.aliasMeta ãããã±ãŒã¹ïŒã§ãä»åã®ãå
é æåã®ä¿æããé©çšããŸããïŒ ãããšãæ¢åãšã€ãªã¢ã¹åªå
ã§è§Šããªãæ¹ãè¯ãã§ããïŒ
> - insertAliasTransformedFromDisplayedInternalLink ãæå¹ãªå Žåãä»åã®ãªãã·ã§ã³ãšã©ã¡ããåªå
ããŸããïŒ
> - select with query aliasïŒãããããŒïŒã䜿ã£ãå Žåã¯ãä»ãŸã§éããã¯ãšãªåªå
ãæåã®ãŸãŸã§ããã§ããïŒ
> - ããã©ã«ã: æ°ãªãã·ã§ã³ã¯æ¢åæåç¶æã®ãã OFF ã«ããŠè¯ãã§ããïŒïŒON ãåžæãªãèšã£ãŠãã ããïŒ
>
> é²ãæ¹ïŒãã©ã³ïŒ
>
> - 仿§ç¢ºå®ïŒäžã®ç¢ºèªäºé
ïŒ
> - èšå®è¿œå ïŒSettings/DEFAULT_SETTINGS/èšå®UIã«æ°ãªãã·ã§ã³ïŒ
> - constructInternalLinkText ã«ãªãã·ã§ã³ãæž¡ããæ¿å
¥ããã¹ãçæãåå²
> - å¿
èŠãªã軜ããã¹ã远å ïŒã©ããããçžè«ïŒ
>
> ãã®å
容ã§OKãªããé²ããŠããšèšã£ãŠãã ããã
> [!right-bubble] ![[minerva-face-right.webp]]
> > - ãšã€ãªã¢ã¹ã«äœ¿ãæåå: ã¯ãšãªãéšåäžèŽã®ãšãã`[[Link|query]]`ïŒäŸ: memïŒã«ãããã`[[Link|linkã®å
é ã ãå°æåå]]`ïŒäŸ: memoryïŒã«ããããã©ã¡ããæãŸããã§ããïŒ
>
> 質åã®æå³ãåãããŸããã§ããã
>
> > - æ¢åãšã€ãªã¢ã¹åè£ïŒword.aliasMeta ãããã±ãŒã¹ïŒã§ãä»åã®ãå
é æåã®ä¿æããé©çšããŸããïŒ ãããšãæ¢åãšã€ãªã¢ã¹åªå
ã§è§Šããªãæ¹ãè¯ãã§ããïŒ
>
> ã¯ãšãªããšã€ãªã¢ã¹ã«å¯Ÿãããããã§ããšã€ãªã¢ã¹ã衚瀺æååãšããŠæ¿å
¥ããå Žåããã®è¡šç€ºæååã®å
é ãã¯ãšãªã®å
é ãšå€§æåã»å°æåç°ãªããªãããããŠã»ããã§ãã
>
> > - insertAliasTransformedFromDisplayedInternalLink ãæå¹ãªå Žåãä»åã®ãªãã·ã§ã³ãšã©ã¡ããåªå
ããŸããïŒ
>
> ã¯ãšãªããšã€ãªã¢ã¹ã«å¯Ÿãããããã§ããšã€ãªã¢ã¹ã衚瀺æååãšããŠæ¿å
¥ããå Žåããã®è¡šç€ºæååã®å
é ãã¯ãšãªã®å
é ãšå€§æåã»å°æåç°ãªããªãããããŠã»ããã§ãã
>
> > - select with query aliasïŒãããããŒïŒã䜿ã£ãå Žåã¯ãä»ãŸã§éããã¯ãšãªåªå
ãæåã®ãŸãŸã§ããã§ããïŒ
>
> ããã§ãã
>
> > - ããã©ã«ã: æ°ãªãã·ã§ã³ã¯æ¢åæåç¶æã®ãã OFF ã«ããŠè¯ãã§ããïŒïŒON ãåžæãªãèšã£ãŠãã ããïŒ
>
> OFFã§ããã§ãã
> [!left-bubble] ![[chappy.webp]]
> ããããšãããããŸããææ¡ããŸããã1ç¹ã ã仿§ç¢ºèªãããŠãã ããïŒãããæ±ºãŸãã°çæã§ããŸãïŒã
>
> 質åïŒæå³ã®å説æïŒ
>
> - ãéšåäžèŽã§éžæããå Žåã«ã衚瀺æååãã©ãããããã®ç¢ºèªã§ãã
> äŸ: å
¥åã memãåè£ã¯ Memory ã®ãšã
> 1. `[[Memory|mem]]`ïŒãŠãŒã¶ãŒãå®éã«æã£ãã¯ãšãªã衚瀺ã«äœ¿ãïŒ
> 2. `[[Memory|memory]]`ïŒåè£èªã®å
é ã ãã¯ãšãªã«åããããã®ã衚瀺ã«äœ¿ãïŒ
> ã©ã¡ããæãŸããã§ããïŒ
>
> è£è¶³ã®ç¢ºèª
>
> - insertAliasTransformedFromDisplayedInternalLink ãæå¹ãªå Žåã倿åŸã®è¡šç€ºæååã®å
é ãã¯ãšãªã«åããããã§è¯ãã§ããïŒïŒäŸ: å€æã§ MemoryâMEMORY ã«ãªã£ãŠããã¯ãšãªã memory ãªã
> memory ãåªå
ãããã©ããïŒ
>
> ãã®2ç¹ã ãæããŠãã ãããOKããããããããã©ã³éãã«å®è£
ãžé²ã¿ãŸãã
> [!right-bubble] ![[minerva-face-right.webp]]
> > 2. `[[Memory|memory]]`ïŒåè£èªã®å
é ã ãã¯ãšãªã«åããããã®ã衚瀺ã«äœ¿ãïŒ
>
> ãã¡ãã§ãé¡ãããŸããä»åã®å¯Ÿå¿ã¯ãããŸã§ãå
é ã®å€§æåã»å°æåã®å·®ç°ãããå Žåãã¯ãšãªã®å
é æåç¶æ
ãåžžã«åªå
ãããããšããæ¹éã§äžè²«ããŠããŸãã
>
> > - insertAliasTransformedFromDisplayedInternalLink ãæå¹ãªå Žåã倿åŸã®è¡šç€ºæååã®å
é ãã¯ãšãªã«åããããã§è¯ãã§ããïŒïŒäŸ: å€æã§ MemoryâMEMORY ã«ãªã£ãŠããã¯ãšãªã memory ãªãmemory ãåªå
ãããã©ããïŒ
>
> ã¯ãããã ãããŸã§å
é ã ããªã®ã§ã`Memory -> MEMORY` ã«ãªãã®ã§ããã° `mEMORY` ã§ãããã... ãã ã¡ãã£ãšããã¯éåæãããŸãããäžæŠ `insertAliasTransformedFromDisplayedInternalLink` ã®ããšã¯æ°ã«ããªããŠããã§ãã
> [!left-bubble] ![[chappy.webp]]
> å
éšãªã³ã¯æ¿å
¥æã«ãã¯ãšãªã®å
é æåã®å€§å°ãåªå
ããããªãã·ã§ã³ã远å ããæ¿å
¥ããã¹ãçæåŽã§ã±ãŒã¹åãããè¡ãããã«ããŸãããæ¢åæåã¯ããã©ã«ãOFFã§ç¶æããŠããŸãã
>
> 倿Žå
容
>
> - src/setting/settings.ts ã« preserveFirstLetterCaseOnInternalLink ã远å ããããã©ã«ãOFFïŒèšå®UIã«ãã°ã«ã远å ããŸããã
> - src/ui/AutoCompleteSuggest.ts ã® constructInternalLinkText ã«ãªãã·ã§ã³ãæž¡ãã衚瀺æååã®å
é ã ãã¯ãšãªã®ã±ãŒã¹ã«åãããŠæ¿å
¥ããåå²ãå
¥ããŸãããwikiãªã³ã¯ã®å Žåã¯ã±ãŒã¹å·®åã
> ãããšãã« `[[link|alias]]` 圢åŒã䜿ããŸãã
>
> ãã¹ãã¯å®è¡ããŠããŸããã
>
> 次ã®ã¹ãããïŒæå確èªïŒ
>
> 1. èšå®ã§ âPreserve first-letter caseâ ãONã«ãã
> 2. memory â Memory ãè£å®ã㊠`[[Memory|memory]]` ã«ãªãããšã確èªãã
> 3. ãšã€ãªã¢ã¹åè£ã§ãå
é ã±ãŒã¹ãã¯ãšãªã«äžèŽããããšã確èªãã
> [!right-bubble] ![[minerva-face-right.webp]]
> queryã¯word: InternalLinkWord ããååŸã§ããŸãããïŒ æž¡ãå¿
èŠãããã®ã¯ãªãïŒ
> [!left-bubble] ![[chappy.webp]]
> ã¯ããword.query ããååŸã§ããŸããä»åãããŠæž¡ããçç±ã¯äž»ã«æ¬¡ã®2ç¹ã§ãã
>
> - word.query ã¯ä»»æé
ç®ã§ããã¹ãŠã® InternalLinkWord ã«å¿
ãå
¥ãä¿èšŒããªãïŒæ°èŠãªã³ã¯çæãäžéšã®çµè·¯ã§æªèšå®ã®å¯èœæ§ãããïŒã®ã§ã**ããã®åŒã³åºãã§ã¯ã¯ãšãªã䜿ãã** ãæç€ºãããã£ãã
> - constructInternalLinkText ããæ¿å
¥ããžãã¯ãšããŠæç€ºçã«å¶åŸ¡ã§ãã圢ãã«ããŠãããšãä»åŸå¥ã®åŒã³åºãçµè·¯ã§ã¯ãšãªã䜿ããªã倿ãæç¢ºã«ãªãããã
>
> ãšã¯ããçŸç¶ã®åŒã³åºãå
ã§ã¯ word.query ãããåæã§åããŠããã®ã§ãã·ã³ãã«ã« word.query ãåç
§ãã圢ã«ãªãã¡ã¯ã¿ããŠåé¡ãããŸããããããã®æ¹éãªããæ¬¡ã®ããã«çŽããŸãïŒã³ãŒã倿Žã¯ãŸã ããŠããŸããïŒã
>
> - constructInternalLinkText ã® option.query ãåé€ããword.query ãçŽæ¥åç
§
> - åŒã³åºãåŽã¯ preserveFirstLetterCase ã ãæž¡ã
>
> ãã®ãªãã¡ã¯ã¿ãå
¥ããŸããïŒå
¥ãããªããã©ã³æç€ºâæ¿è«Ÿã®æµãã§é²ããŸãã
> [!right-bubble] ![[minerva-face-right.webp]]
> ããã§ãé¡ãããŸããword.query ã¯judgementã®åŸã«å¿
ãæ¿å
¥ãããããžãã¯ã«ãªã£ãŠãããšæããŸãã念ã®çºãé¢é£ã³ãŒãã調æ»ããŠããã確èªããŠãããŠãã ããã
> [!left-bubble] ![[chappy.webp]]
> 調æ»çµæã§ãã
>
> - word.query 㯠src/provider/suggester.ts ã® judge / judgeByPartialMatch ã§ ãããæç«æã«å¿
ãä»äžãããŠããŸãïŒquery ã空æåã®å Žåã ãäŸå€ïŒã
> - suggestWords / suggestWordsByPartialMatch 㯠Judgement ã® word ããã®ãŸãŸè¿ããããéåžžã®åè£ã§ã¯ word.query ãå
¥ããŸãã
> - äŸå€ãšããŠãsrc/ui/AutoCompleteSuggest.ts ã® createNewLinkSuggestions()ïŒæ°èŠãªã³ã¯è£å®ïŒã§ã¯ InternalLinkWord ãçŽæ¥çæããŠã㊠query ãå
¥ããªãçµè·¯ããããŸãã
>
> ãªã®ã§ éåžžã®è£å®ã§ã¯ word.query åç
§ã§åé¡ãªãããã ãæ°èŠãªã³ã¯è£å®ãªã©ã®äŸå€ãèæ
®ã㊠word.query ãæªå®çŸ©ãªãäœãããªãã¬ãŒãã¯æ®ãã®ãå®å
šã§ãã
>
> 倿Žãã©ã³ïŒæ¿è«ŸåŸã«å®æœïŒ
>
> 1. src/ui/AutoCompleteSuggest.ts ã® constructInternalLinkText ãã option.query ãåé€ããword.query ãçŽæ¥åç
§
> 2. åŒã³åºãåŽã¯ preserveFirstLetterCase ã ãæž¡ã
> 3. word.query ãæªå®çŸ©ã®ãšãã¯åŸæ¥éã倿ããªãã¬ãŒããç¶æ
>
> ãã®æ¹éã§é²ããŠããã§ããïŒïŒOKãªããé²ããŠããšã ãè¿ããŠããããã°çæããŸãïŒ
> [!right-bubble] ![[minerva-face-right.webp]]
> ãªãã»ã©ãååšããªãæ°èŠãªã³ã¯ã®ã±ãŒã¹ã ãã¯å€±å¿µããŠããŸããããã㯠`Fallback linkify` æ©èœã§åè£ã«è¡šç€ºãããäžèЧãšããããšã§è¯ãã§ããããïŒ
>
> ãããããªãããšãã£ã¿ã«å
¥åããã倧æåã»å°æåã®ãŸãŸæ°èŠãªã³ã¯ã®è¡šç€ºãšããŠããŸã£ãŠããæ°ãããŸãããããæšè«ããã®ã¯ããªãé£ããã®ã§ã
>
> ã€ãŸããææ¡ããŠããã£ãæ¹éã§OKã§ãã
> [!left-bubble] ![[chappy.webp]]
> ã¯ãããã®çè§£ã§åã£ãŠããŸããcreateNewLinkSuggestions() ã§äœãããæ°èŠãªã³ã¯åè£ïŒphantom: trueïŒããFallback linkifyãçµç±ã®äžèЧã§ãããã㯠word.query ãç¡ãã®ã§ãå
¥åãããã±ãŒã¹ã®ãŸãŸè¡šç€º/æ¿å
¥ã§è¯ãæ¹éã«ããŸãïŒã±ãŒã¹æšè«ã¯ããŸããïŒã
>
> å®è£
æ¹éïŒåæ²ã»ç°¡ç¥ïŒ
>
> - constructInternalLinkText 㯠word.query ãåç
§ããæªå®çŸ©ãªãã±ãŒã¹åããããªã
> - åŒã³åºãåŽã¯ preserveFirstLetterCase ã ãæž¡ã
> - æ°èŠãªã³ã¯ïŒword.query ãªãïŒã¯åŸæ¥éãå
¥åéãã§æ¿å
¥
>
> ãã®æ¹éã§ä¿®æ£ãé²ããŠãããã°ãé²ããŠããšè¿ããŠãã ããã
> [!left-bubble] ![[chappy.webp]]
> word.query ãçŽæ¥åç
§ãã圢ã«åãæ¿ããŸãããword.query æªå®çŸ©ã®ã±ãŒã¹ïŒFallback linkifyã®æ°èŠãªã³ã¯åè£ïŒã§ã¯ã±ãŒã¹åãããã¹ãããããã®ã§ãå
¥åéãã®ãŸãŸæ¿å
¥ãããŸãã
>
> 倿Žç¹
>
> - src/ui/AutoCompleteSuggest.ts ã® constructInternalLinkText ã word.query ãçŽæ¥åç
§ããããã«å€æŽ
> - åŒã³åºãåŽã¯ preserveFirstLetterCase ã®ã¿æž¡ãããæŽç
>
> ãã¹ãã¯å®è¡ããŠããŸããã
>
> 次ã®ã¹ãããïŒæå確èªïŒ
>
> 1. èšå®ã§ âPreserve first-letter caseâ ãON
> 2. memory â Memory ãè£å®ã㊠`[[Memory|memory]]`
> 3. Fallback linkifyïŒæ°èŠãªã³ã¯åè£ïŒã§ã¯å
¥åã±ãŒã¹ã®ãŸãŸæ¿å
¥ãããããšã確èª
>
> å¿
èŠãªããã¹ã远å ã察å¿ããŸãã
> [!right-bubble] ![[minerva-face-right.webp]]
> applyQueryFirstLetterCase ã AutoCompleteSuggest.ts 以å€ã®é©åãªãã¡ã€ã«å
ã«é¢æ°ãšããŠåé¢ã§ããŸããïŒ
>
> - queryã¯åŒæ°ã§æå®ãã
> - preserveFirstLetterCase ã¯èæ
®ããªã (AutoCompleteSuggest.ts#constructInternalLinkText ã§èæ
®)
>
> ãã®äžã§ãapplyQueryFirstLetterCase ã®ãã¹ããæžããŠã»ããã§ãããããŸã§åé¢ããã°ç°¡åã«æžããã¯ãã
> [!left-bubble] ![[chappy.webp]]
> 以äžã®æ¹éã§é²ããŸããåé¡ãªããã°ãé²ããŠããšè¿ããŠãã ããã
>
> - applyQueryFirstLetterCase ã src/util/strings.ts ã«åé¢ïŒquery ã¯åŒæ°ãpreserveFirstLetterCase ã¯åŒã³åºãå
ã§å€å®ïŒ
> - src/ui/AutoCompleteSuggest.ts ããæ°é¢æ°ãåŒã¶ããã«ä¿®æ£
> - src/util/strings.test.ts ã«ãã¹ã远å
>
> é²ããŠããã§ããïŒ
> [!left-bubble] ![[chappy.webp]]
> applyQueryFirstLetterCase ããŠãŒãã£ãªãã£ãšããŠåé¢ããAutoCompleteSuggest åŽã¯ãã®é¢æ°ã䜿ãåœ¢ã«æŽçããŸãããåãããŠåäœãã¹ãã远å ããŠããŸãã
>
> - src/util/strings.ts ã« applyQueryFirstLetterCase ã远å
> - src/ui/AutoCompleteSuggest.ts ã§ããŒã«ã«é¢æ°ã廿¢ãããŠãŒãã£ãªãã£ãåŒã¶ããã«å€æŽ
> - src/util/strings.test.ts ã«ã±ãŒã¹å€æã®ãã¹ãã远å
>
> ãã¹ãã¯æªå®è¡ã§ãã
>
> 次ã®ã¹ãããæ¡
>
> 1. pnpm test -- strings.test.ts
> 2. ãããã¯å
šäœå®è¡ãªã pnpm test
> [!right-bubble] ![[minerva-face-right.webp]]
> ãã¹ãã±ãŒã¹ãå°ãå¢ãããŸããã
>
> ```ts
> describe.each<{ value: string; query: string; expected: string }>`
> value | query | expected
> ${"Memory"} | ${"memory"} | ${"memory"}
> ${"Memory"} | ${"m"} | ${"memory"}
> ${"memory"} | ${"Memory"} | ${"Memory"}
> ${"memory"} | ${"M"} | ${"Memory"}
> ${"Memory"} | ${"Memory"} | ${"Memory"}
> ${"Memory"} | ${"M"} | ${"Memory"}
> ${"memory"} | ${"memory"} | ${"memory"}
> ${"memory"} | ${"m"} | ${"memory"}
> ${"AWS"} | ${"a"} | ${"AWS"}
> ${"AWS"} | ${"A"} | ${"AWS"}
> ${"Memory Card"} | ${"m"} | ${"memory card"}
> ${"Memory Card"} | ${"M"} | ${"Memory Card"}
> ${"memory card"} | ${"m"} | ${"memory card"}
> ${"memory card"} | ${"M"} | ${"Memory card"}
> ${"Memory"} | ${""} | ${"Memory"}
> ${""} | ${"memory"} | ${""}
> ${"1value"} | ${"memory"} | ${"1value"}
> ${"Memory"} | ${"1query"} | ${"Memory"}
> `("applyQueryFirstLetterCase", ({ value, query, expected }) => {
> test(`applyQueryFirstLetterCase(${value}, ${query}) = ${expected}`, () => {
> expect(applyQueryFirstLetterCase(value, query)).toBe(expected);
> });
> });
> ```
>
> çµæã¯2ã€å€±æããŠããŸãããããã¯æ°ãã«å€æŽãã仿§ãæºããæåŸ
å€ã§ãã
>
> ```
> â applyQueryFirstLetterCase ⺠applyQueryFirstLetterCase(AWS, a) = AWS
>
> expect(received).toBe(expected) // Object.is equality
>
> Expected: "AWS"
> Received: "aWS"
>
> 163 | test(`lowerStartsWithoutSpace(${one}, ${other}) = ${expected}`, () => {
> 164 | expect(lowerStartsWithoutSpace(one, other)).toBe(expected);
> > 165 | });
> | ^
> 166 | });
> 167 |
> 168 | describe.each`
>
> at Object.<anonymous> (src/util/strings.test.ts:165:93)
>
> â applyQueryFirstLetterCase ⺠applyQueryFirstLetterCase(Memory Card, m) = memory card
>
> expect(received).toBe(expected) // Object.is equality
>
> Expected: "memory card"
> Received: "memory Card"
>
> 163 | test(`lowerStartsWithoutSpace(${one}, ${other}) = ${expected}`, () => {
> 164 | expect(lowerStartsWithoutSpace(one, other)).toBe(expected);
> > 165 | });
> | ^
> 166 | });
> 167 |
> 168 | describe.each`
>
> at Object.<anonymous> (src/util/strings.test.ts:165:93)
> ```
>
> ãã®ä»æ§å€æŽã«éåæã¯ãããŸããïŒ ããããªãå Žåã¯ãã¹ããéãããã«å®è£
ã倿ŽããŠãã ãããããå Žåã¯é æ
®ãªãèšã£ãŠãã ããã
> [!left-bubble] ![[chappy.webp]]
> éåæã¯ãããŸãããæç€ºããã ããæåŸ
å€ã«åãããŠå®è£
ã調æŽã§ããŸãã
>
> é²ãæ¹ïŒæ¿è«ŸåŸã«å®æœïŒ
>
> 1. src/util/strings.ts ã® applyQueryFirstLetterCase ã仿§ã«åãããŠå€æŽ
> - ã¯ãšãªå
é ãå°æå: 空çœåºåãã®ååèªã®å
é ã ãå°æååïŒãã ãå
šå€§æåã®åèªã¯ç¶æïŒ
> - ã¯ãšãªå
é ã倧æå: æååå
šäœã®å
é ã ã倧æåå
> - ã¯ãšãªå
é ãéè±å/空: 倿Žãªã
> 2. src/util/strings.test.ts ã®ããŒãã«ãããã ããã±ãŒã¹ã«å·®ãæ¿ã
>
> ãã®å
容ã§é²ããŠãããã°ãé²ããŠããšè¿ããŠãã ããã
> [!right-bubble] ![[minerva-face-right.webp]]
> åèãŸã§ã«ããªããéåæããªãããšå€æããã®ãã®çç±(æ ¹æ )ãæããŠããããŸããïŒ ç§ã¯è±èªã§æ®æ®µæç« ãæžããªãã®ã§ãæ¬åœã«ãã®å€æŽç¹ã劥åœã§ãããèªä¿¡ããããŸããã(æ³åã§ããããã ãã§ãã)
> [!left-bubble] ![[chappy.webp]]
> éåæããªããšå€æããçç±ã¯ã次ã®2ç¹ã§ãã
>
> - ã¯ãšãªå
é ãå°æåã®ãšãã¯ãæäžã§äœ¿ããããæå³ã匷ãã®ã§ãã¿ã€ãã«ã±ãŒã¹ã®èªãæäžã®èªç¶ãªåœ¢ïŒæäœïŒsentence caseïŒã«å¯ããã®ã劥åœã«èŠããŸããè±èªã§ã¯æäžã®äžè¬åè©å¥ã¯åºæ¬çã«å°æåãªã®ã§ãMemory Card â memory card ã¯èªç¶å¯ãã§ãã
> - å
šå€§æåã¯ç¥èªã®å¯èœæ§ãé«ãã®ã§ãAWS ã aWS ã«ããªãã®ã¯èªç¶ã§ããè±èªã®å¯èªæ§ãèœã¡ãã®ã§ãããã¯ä¿æããã®ãçŽæçã§ãã
>
> ãã ããæžå¿µããããŸãã
>
> - New York ãªã©ã®åºæåè©ã¯æ¬æ¥å€§æåã®ãŸãŸãæ£ããã®ã§ãnew york ã«èœã¡ãã®ã¯èª€ãã«ãªããŸãã
> - âå
é ã ãâãšããåœåæ¹éããã¯å€ãããããæåã¯åŒ·ãã§ãã
>
> ãã®æžå¿µã蚱容ã§ãããã©ããã§æ¹éãåããããšæããŸããéžæè¢ãšããŠã¯:
>
> 1. ä»åã®æåŸ
å€ã©ãããå°æåã¯ãšãªãªãåèªå
é ãå
šéšå°æååïŒãã ãå
šå€§æååèªã¯ä¿æïŒã
> 2. ãã£ãšä¿å®çã«ãæååå
šäœã®å
é 1æåã ãå€ããã
> 3. æè¡·ãšããŠã2èªç®ä»¥éã¯å
šå€§æå or æç€ºçã«åºæåè©ã£ãœãå Žåã¯ä¿æããªã©ã®è¿œå ãã¥ãŒãªã¹ãã£ãã¯
>
> ç§ã¯ 1) ã§ãååçã¯éããšèããŸãããåºæåè©ãå€ãç°å¢ã ãšéåæãåºãŸãã
> ãã®åæã§ãããªãã®æåŸ
å€ïŒ1ïŒãæ¡çšããŠå®è£
ã»ãã¹ããéãæ¹åã§é²ããŠããã§ããïŒ
> [!right-bubble] ![[minerva-face-right.webp]]
> æžå¿µã«ã€ããŠ
>
> - New York ãªã©ã®åºæåè©ã¯æ¬æ¥å€§æåã®ãŸãŸãæ£ããã®ã§ãnew york ã«èœã¡ãã®ã¯èª€ãã«ãªããŸãã
>
> ããã¯ãã®ãšããã§ãããã "New York" ãšåžžã«å€§æåã§å
é ã衚èšãããããªã±ãŒã¹ã«ãããŠã¯
>
> - ç»é²ã¯ "New York" ã«ãªã
> - å
¥åã "n" ã§ã¯ãªã "N" ããè¡ãã®ãæ®é
>
> ã§ãããããåé¡ãªãããªãšæã£ãŠããŸãã
>
> å¥ã®èгç¹ããèå¯ãããšã"New York" ã®ãããªã±ãŒã¹ãé€ãã°ã"Daily note" 㯠"Daily Note" ãšåèªããã¹ãŠå€§æåã¯ããŸãã«ã¯ãªãããå
é ã ãã倧æåãšããŠç»é²ãããããšãå€ãã®ã§ã¯ãªãããšãæããŸãã
>
> ç§ã¯è±èªã§æç« ãæžããªãã§åŠ¥åœæ§ãåãããŸãããEnglish NativeãšããŠã®æèŠãèãããã§ãã
> [!left-bubble] ![[chappy.webp]]
> ççŽã«èšããšãç§ã¯è±èªãã€ãã£ãã§ã¯ãªãã®ã§ãè±èªãã€ãã£ããšããŠæå®ãã¯ã§ããŸããããã®äžã§ãè±èªã®äžè¬çãªæžãæ¹ã«ç
§ãããâåŠ¥åœæ§âã®èŠç«ãŠã¯ä»¥äžã§ãã
>
> 劥åœã ãšæãç¹
>
> - è±èªã®æ¬æäžã¯åºæ¬ sentence caseïŒäžè¬åè©ã¯å°æåïŒãªã®ã§ãã¿ã€ãã«ã±ãŒã¹ïŒMemory CardïŒã®ããŒãåãæäžã§äœ¿ãå Žåã« memory card ãžèœã¡ãã®ã¯èªç¶ã§ãã
> - æ¢ã«ãã¯ãšãªã®å
é ã±ãŒã¹ãåªå
ããããšããæ¹éã«ããŠããã®ã§ããŠãŒã¶ãŒå
¥åãåªå
ããã®ã¯äžè²«ããŠããŸãã
>
> æžå¿µç¹ïŒãã€ãã£ã芳ç¹ã§ãåŒã£ããããããéšåïŒ
>
> - åºæåè©ããã©ã³ãåïŒNew York, YouTube, iPhone, McDonaldâs ãªã©ïŒã¯æäžã§ã倧æåã®ãŸãŸãæ£ãããããå°æååã¯èª€ãã«ãªããŸãã
> - âå
¥åã¯å¿
ã N ããå§ããã¯ãâã¯æ£ããå Žåãå€ãã§ãããéèšãç¿æ
£ã§å°æåå
¥åããŠããŸãã±ãŒã¹ãçŸå®çã«ãããããã§èª€ã£ãŠå°æååãããå¯èœæ§ããããŸãã
>
> ã€ãŸãããã®ä»æ§ã¯ãäžè¬åè©ã«ã¯è¯ãããåºæåè©ã«ã¯èª€ããåºãããšãããã¬ãŒããªãã§ãã
> è±èªãã€ãã£ãã§ãããã®æåã«âéåæããªãâãšããããã奜ã¿ã®èªåæŽåœ¢ãã誀ãã蚱容ããããã®å€æã«ãªããšæããŸãã
>
> ããå®å
šå¯ãã«ãããªã
>
> - ãå
é 1æåã ãå€ããïŒåèªå
šäœã¯è§ŠããªãïŒããããä¿å®çã§ãåºæåè©ã®åŽ©ããæžãããŸãã
> - éã«ãããªãã®æåŸ
å€ã©ãããåèªå
é ãå
šéšåããããã¯ãâæäžã®èŠãç®âéèŠã®åŒ·ãã®è£æ£ã§ãã
>
> ã©ã¡ããåªå
ãããïŒæäžã®èªç¶ã vs åºæåè©ã®ä¿è·ïŒã ãæ±ºããã°OKã ãšæããŸãã
> ããªãã®åæïŒåºæåè©ã¯å€§æåã§å
¥åããéçšïŒãªããæç€ºã®ä»æ§ã¯å®çšäžåé¡ãå°ãªããšå€æããŠè¯ãã¯ãã§ãã
>
> ãã®åæã§ãæç€ºã®ãã¹ãæåŸ
å€ã©ããã«å®è£
倿ŽããŠãããã°ãé²ããŠããšè¿ããŠãã ããã
> [!right-bubble] ![[minerva-face-right.webp]]
> ãªãã»ã©ãã§ã¯è©Šãã«ä»¥äžã®æ¡ãæ¡çšããå Žåã«ãã¹ãã±ãŒã¹ã¯ã©ãå€ãããŸããïŒ
>
> > 3. æè¡·ãšããŠã2èªç®ä»¥éã¯å
šå€§æå or æç€ºçã«åºæåè©ã£ãœãå Žåã¯ä¿æããªã©ã®è¿œå ãã¥ãŒãªã¹ãã£ãã¯
> [!left-bubble] ![[chappy.webp]]
> æè¡·æ¡ã¯ãæç€ºçã«åºæåè©ã£ãœããã®å®çŸ©æ¬¡ç¬¬ã§ãã¹ããå€ãããŸãã代衚çãª2ãã¿ãŒã³ãæãããšããããªããŸãã
>
> ãã¿ãŒã³A: âåºæåè©ã£ãœãâïŒå
é 以å€ã«ã倧æåããã or å
šå€§æå
>
> - æ¢åã®ããŒãã«ã¯ 倿Žãªã
> - 远å ãã¹ãã®ã¿å¢ããã€ã¡ãŒãž
>
> ${"Memory YouTube"} | ${"m"} | ${"memory YouTube"}
> ${"Memory iPhone"} | ${"m"} | ${"memory iPhone"}
> ${"Memory AWS"} | ${"m"} | ${"memory AWS"}
> â» New York ã¯ä¿è·ã§ãã new york ã«ãªãïŒãã®å®çŸ©ã ãšïŒã
>
> ãã¿ãŒã³B: âåºæåè©ã£ãœãâïŒ2èªç®ä»¥éã Title Case ãªãä¿æ
>
> - æ¢åããŒãã«ã§ å€ããã®ã¯ããã ã
>
> ${"Memory Card"} | ${"m"} | ${"memory Card"} // 以å㯠memory card
> - 远å ãã¹ãäŸ
>
> ${"New York"} | ${"n"} | ${"new York"}
>
> ã©ã¡ãã®å®çŸ©ã§é²ããã®ãåžæã§ããïŒ
>
> 1. ãã¿ãŒã³AïŒCamelCase/å
šå€§æåã ãä¿è·ïŒ
> 2. ãã¿ãŒã³BïŒ2èªç®ä»¥éã®Title Caseãä¿è·ïŒ
> 3. å¥ã®å®çŸ©ïŒå
·äœçã«æããŠãã ããïŒ
> [!right-bubble] ![[minerva-face-right.webp]]
> "memory card" ã®äŸã¯åããã¥ããã®ã§ããã¡ã€ã«ãæŽæ°ããŠåºæåè©ã®ä»£è¡šäŸã远å ããŸããã
>
> ```
> value | query | expected
> // äžç¥
> ${"AWS"} | ${"a"} | ${"AWS"}
> ${"AWS"} | ${"A"} | ${"AWS"}
> ${"New York"} | ${"n"} | ${"New York"}
> ${"New York"} | ${"N"} | ${"New York"}
> ${"AWS Lambda"} | ${"a"} | ${"AWS Lambda"}
> ${"AWS Lambda"} | ${"A"} | ${"AWS Lambda"}
> ${"iPhone"} | ${"i"} | ${"iPhone"}
> ${"iPhone"} | ${"I"} | ${"iPhone"}
> ```
>
> ãããããå°ãåºããåºæåè©ã®ã«ãŒã«ã¯ãå
é 1æåç®ä»¥å€ã«å€§æåãå«ãŸããŠããå Žåããã 1ã€ã«éçŽã§ãããšæããŸããããããã§ããããïŒ
> [!left-bubble] ![[chappy.webp]]
> çµè«ãšããŠããã®ã«ãŒã«ïŒãå
é 1æåç®ä»¥å€ã«å€§æåãå«ãŸããŠããå Žåã¯åºæåè©æ±ãã§å€æŽããªããïŒã¯ãæç€ºãããäŸãšççŸãããå®è£
ãã·ã³ãã«ã§è¯ããšæããŸãã
>
> 劥åœã ãšæããçç±
>
> - AWS, iPhone, New York, AWS Lambda ããã¹ãŠãå
é 以å€ã«å€§æåãããã§ä¿è·ãããã®ã§ãäŸå€ãªãæåŸ
å€ã«åããŸãã
> - å®è£
ãåçŽãªã®ã§æåãäºæž¬ããããããã¹ããæå¿«ã§ãã
>
> ãã ããã¬ãŒããªã
>
> - Daily Note ã Meeting Notes ã®ãããªãäžè¬åè©ã ãã©ã¿ã€ãã«ã±ãŒã¹ã§åœåããããŒããã倿Žãããªããªãã®ã§ãæäžã§ã¯å€§æåãæ®ãããããªããŸãã
> ããã蚱容ãããªãããã®ã«ãŒã«ã§ååã§ãã
>
> ãã®ã«ãŒã«ã«ãããšãããšãã°ä»¥äžã¯å€æŽãããŸããã
>
> - Memory Card + m â Memory CardïŒC ã倧æåãªã®ã§ä¿è·ãããïŒ
>
> ãã®æåã§åé¡ãªããã°ã以äžã®æ¹éã§å®è£
ã»ãã¹ãæŽæ°ããŸãã
>
> - applyQueryFirstLetterCase ã¯æåã«ãå
é 以å€ã«å€§æåããããããå€å®ããããã°ãã®ãŸãŸè¿ã
> - ãã以å€ã¯åŸæ¥éãå
é 1æåã ãã¯ãšãªã®å€§å°ã«åããã
>
> ãã®ã«ãŒã«ã§é²ããŠè¯ãã§ããïŒ
> [!right-bubble] ![[minerva-face-right.webp]]
> > Daily Note ã Meeting Notes ã®ãããªãäžè¬åè©ã ãã©ã¿ã€ãã«ã±ãŒã¹ã§åœåããããŒããã倿Žãããªããªãã®ã§ãæäžã§ã¯å€§æåãæ®ãããããªããŸãã
>
> è±èªã ãšããŒãã®ã¿ã€ãã«ã«èšèŒããã衚èšã¯åèªã倧æåã«ãªãããšã¯å€ãã®ã§ããããïŒ ããšãã°wikipediaãè±èªèŸæžãªã©ã®åèªã¿ã€ãã«ã¯ã©ããªã£ãŠããã®ãïŒ
>
> ç§ã®è¶£åãããäžè¬çã«ã©ã¡ãã®ãã¿ãŒã³ãå€ããã«è¿åãããã
> [!left-bubble] ![[chappy.webp]]
> è±èªãã€ãã£ãã§ã¯ãããŸããããäžè¬çãªã¹ã¿ã€ã«ã¬ã€ããæ
£è¡ãšããŠã¯ããã§ãã
>
> - Wikipedia: sentence caseïŒå
é ã ã倧æå + åºæåè©ã®ã¿å€§æåïŒãTitle Caseã¯åºæ¬äœ¿ããŸããã
> - è±èªèŸæž: èŠåºãèªã¯å°æåãåºæ¬ãåºæåè©ã»ç¥èªã¯å€§æåã
> - æžç±/æ ç»/æ°èèŠåºãïŒç¹ã«ç±³åœïŒ: Title Case ãå€ãã
> - æè¡ããã¥ã¡ã³ããUIã®èŠåºã: sentence case ãå¢å åŸåã
>
> ã€ãŸããäžè¬çã«ã©ã¡ããå€ãããã¯æèäŸåã§ã
> åç
§ç³»ïŒWikipedia/èŸæžïŒã«å¯ãããªã sentence caseã
> ã¿ã€ãã«ç³»ïŒæ¬/æ ç»/èŠåºãïŒã«å¯ãããªã Title Case ã§ãã
>
> ä»åã®ã«ãŒã«
> ãå
é 1æåç®ä»¥å€ã«å€§æåãããå Žåã¯å€æŽããªãã
> 㯠Title Case/åºæåè©ä¿è·å¯ãã§ãã
> ãã®ä»£ãããMemory Card ã®ãããªäžè¬åè©ã® Title Case ãŸã§ä¿è·ããŠããŸãã®ã§ã
> èŸæžçïŒsentence caseïŒã«ã¯ãããºã¬ãŸãã
>
> ãªã®ã§ãããªãããäžè¬çãªè±èªã®æ¬æè¡šèšã«å¯ãããããªã
> å°æåå
¥åæã¯äžè¬åè©ãèœãšãæ¹éã®ã»ããè¿ãã§ãã
> ãã ãå®å
šèªåã§åºæåè©ãèŠåããã®ã¯é£ããã®ã§ã
> ã©ããŸã§èª€å€æã蚱容ãããã®ãã¬ãŒããªãã«ãªããŸãã
>
> ãã®åæã§ãä»ã®ã倧æåãå
éšã«ãããªãä¿æãã«ãŒã«ã¯
> âä¿å®çã§èª€å€æãå°ãªãâ代ããã«âæ¬æã®èªç¶ãã¯å°ãç ç²âãšããäœçœ®ã¥ãã§ãã
> [!right-bubble] ![[minerva-face-right.webp]]
> 話å€ãããŸãããCustom dictionary complementsã®æ©èœã§ã¯ãå
é ã®1æåã®ã¿ã倧æåå°æåã®äž¡æ¹ãèæ
®ããããindexingãããŠããŸãã
>
> å人çãªèãã§ã¯
>
> - **äžè¬åè©ãåè©**: Custom dictionary ã«ç»é²ããã
> - Custom dictionary complementsã§è£å®
> - å
é ã®1æåã®ã¿å€§æåå°æåèæ
®
> - **åºæåè©ãæ**: ããŒãã«ç»é²ããã
> - Internal link complementsã§è£å®
> - å
é ã®1æå以å€ã倧æåå°æåèæ
®
>
> ã®ãããªå©çšãå€ããšäºæ³ããŠããŸãã
>
> ããšããšåºæåè©ã°ãããããŒãã«ç»é²ããŠãããŠãŒã¶ãŒããããã°ãä»åã®æ©èœã¯ããããå©çšã·ãŒã³ãå°ãªãã®ã§ã¯ãšæã£ãŠããŸãããªããªããåºæåè©ã¯ Title Case ã§ãããããã¯æäžã§ããã®ãŸãŸäœ¿ããã => `title case` ã§ `Title Case` ãšè£å®ããããã§ãã
>
> ãŸããæãããŒãã«ç»é²ããŠãããŠãŒã¶ãŒã®å Žåã`cat is cute` ã `Cat is cute` ã®ãããªããŒãã«ãªããšèããããŸãããããæäžã«æ¿å
¥ãããš
>
> - **åé :** Cat is cute
> - `[[cat is cute|Cat is cute]]` ã«å€æããã
> - **éäž:** I think that cat is cute
> - `[[cat is cute]]` ã«å€æããã
>
> ãšãªãããããèªç¶ã§ãã
>
> äžæ¹ã§ã`New York` ãšããããŒããç»é²ããŠããå Žåã¯ã©ãã§ãããã
>
> - **åé :** New York is ...
> - `New York` ã«å€æããã
> - **éäž:** I went to new york
> - `[[New York]]` ã«å€æããã
> - `[[new york]]` ã«å€æããŠã»ããã±ãŒã¹ã¯ãªãã¯ã
>
> Title Case ã¯åžžã«ãã®ãŸãŸã§ããæ°ãããŸãã
>
> 1ç¹æ°ãã€ããã¹ããã€ã³ãã¯ã`can I use ...` ã® `I` ã¿ããã«å¿
ã倧æåã§ããéåºæåè©(æ)ã®å Žåã®èæ
®ã§ããããããåºæåè©ãšå€æãããŠã»ããã¯ãªãã®ã§ã
> [!left-bubble] ![[chappy.webp]]
> ãã®ã«ãŒã«ïŒãå
é 1æåç®ä»¥å€ã«å€§æåãå«ãŸããŠããå Žåã¯å€æŽããªããïŒã¯ãæç€ºãããæ°ãããã¹ã矀ã«ã¯ãããã«åããŸãããå®è£
ãç°¡æœã§è¯ããšæããŸãã
> äžæ¹ã§ãMemory Card ã®ãã㪠äžè¬åè©ã®Title Case ãä¿è·ãããã®ã§ãæäžã§å€§æåãæ®ãããããªãç¹ã¯ãã¬ãŒããªãã«ãªããŸããããã蚱容ãããªããã®ã«ãŒã«ã¯åŠ¥åœã§ãã
>
> æžå¿µã® I ã«ã€ããŠã¯ã次ã®ããã«ããã°åé¿ã§ããŸãã
>
> - åºæåè©å€å®ã®å¯Ÿè±¡ãããåèªé·1ã®å€§æåïŒI/AïŒããé€å€ãã
> äŸ: can I use ã¯åºæåè©æ±ãã«ãªãããå
é ã ãã¯ãšãªã«åããããã
> äŸ: New York 㯠Y ãåèªé·>1ãªã®ã§åºæåè©æ±ãã§ä¿æ
> äŸ: AWS Lambda 㯠AWS ãåèªé·>1ãªã®ã§ä¿æ
> äŸ: iPhone ã¯åèªå
ã«å€§æåãããã®ã§ä¿æ
>
> ãã®ã«ãŒã«ã«ãããšãI ã¯ãåºæåè©å€å®ã«ã¯äœ¿ããªããããã©ãåºåã§ã¯ãã®ãŸãŸå€§æåãæ®ãïŒä»ã®å€æãå
é ã®ã¿ãªã®ã§ïŒãããæå³éãã«ãªããŸãã
>
> ãããã®æ¹åã§è¡ããªãã远å ãã¹ãã®äŸã¯ä»¥äžãåãããããã§ãã
>
> ```
> ${"can I use"} | ${"c"} | ${"can I use"}
> ${"can I use"} | ${"C"} | ${"Can I use"}
> ${"Plan A"} | ${"p"} | ${"Plan A"} // Aã¯åèªé·1ãªã®ã§åºæåè©å€å®ããªããã©ããã®ç¢ºèª
> ```
>
> ãã®ãåèªé·1ã®å€§æåãé€å€ãã«ãŒã«ã§é²ããŠè¯ãã§ããïŒ
> ïŒOKãªãå®è£
æ¹éãšãã¹ãæŽæ°ã®ãã©ã³ãåºããŠçæããŸãïŒ
> [!left-bubble] ![[chappy.webp]]
> åºæåè©å€å®ã®ã«ãŒã«ïŒå
é 以å€ã«å€§æåãããå Žåã¯å€æŽããªãïŒåèªé·1ã®å€§æåã¯é€å€ïŒã applyQueryFirstLetterCase ã«å
¥ãããã¹ãã±ãŒã¹ãåæä»æ§ã«æŽæ°ããŸããã
>
> 倿Žç¹
>
> - src/util/strings.ts ã«ãå
é 以å€ã®å€§æåæ€åºïŒåèªé·1ã¯é€å€ïŒãã®ã¬ãŒãã远å
> - src/util/strings.test.ts ã« can I use / Plan A ã®ã±ãŒã¹ã远å
>
> ãã¹ãæªå®è¡ã§ãã
>
> 次ã®ã¹ãããæ¡
>
> 1. pnpm test -- strings.test.ts
> 2. åé¡ãªããã° pnpm test
> [!right-bubble] ![[minerva-face-right.webp]]
> ```
> â applyQueryFirstLetterCase ⺠applyQueryFirstLetterCase(New York, n) = New York
>
> expect(received).toBe(expected) // Object.is equality
>
> Expected: "New York"
> Received: "new York"
>
> 169 | text | expected
> 170 | ${"abc"} | ${"Abc"}
> > 171 | ${"Abc"} | ${"Abc"}
> | ^
> 172 | ${"ABC"} | ${"ABC"}
> 173 | ${" abc"} | ${" abc"}
> 174 | ${"ããã"} | ${"ããã"}
>
> at Object.<anonymous> (src/util/strings.test.ts:171:93)
> ```
>
> ããã ã倱æããŠãŸãã
> [!left-bubble] ![[chappy.webp]]
> New York ã new York ã«ãªã£ãŠããåå ã¯ããå
é 以å€ã®å€§æåãå€å®ãâååèªã®2æåç®ä»¥éâã ããèŠãŠããããã§ããããã§ã2èªç®ä»¥éã®å
é 倧æåããå
é 以å€ã®å€§æåããšããŠæ±ãããã«ä¿®æ£ããŸããïŒåèªé·1ã¯åŒãç¶ãé€å€ïŒã
>
> 倿Žç¹
>
> - src/util/strings.ts ã®åºæåè©å€å®ãä¿®æ£ããNew York ã® Y ãæ€åºå¯Ÿè±¡ã«ããŸããã
>
> ãã¹ãã¯ãŸã å®è¡ããŠããŸããã
> 次ã®ã¹ãããæ¡:
>
> 1. pnpm test -- strings.test.ts
> 2. åé¡ãªããã° pnpm test
> [!right-bubble] ![[minerva-face-right.webp]]
> å®è£
ã¯OKã§ãã
>
> ä»å远å ããå
容ã `/Users/tadashi-aikawa/git/github.com/tadashi-aikawa/docs-obsidian-various-complements-plugin` ã® `docs/` é
äžã®ããã¥ã¡ã³ãã«èšèŒããŠã»ããã
> [!left-bubble] ![[chappy.webp]]
> 以äžã®å
容ã§å¯Ÿå¿ããŸããé²ããŠãããã°ãé²ããŠããšã ãè¿ããŠãã ããã
>
> - docs/4. Options/4.7. Internal link complement/âïž Preserve first-letter case.md ãæ°èŠè¿œå ããèšå®ã®æå³ã»æåã»äŸãæ¥æ¬èªã§èšèŒ
> - docs/1. Features/Internal link complement.md ã® Related Options ã«æ°èšå®ãžã®ãªã³ã¯ã远å
> [!right-bubble] ![[minerva-face-right.webp]]
> æ¹éã¯OKã§ãããæ¥æ¬èªã§ã¯ãªãè±èªãã§èšèŒããŠãã ãããä»ãããã§ããããã«ã
> [!left-bubble] ![[chappy.webp]]
> Internal link complement ã®æ°ãªãã·ã§ã³ãè±èªããã¥ã¡ã³ãã«è¿œå ããé¢é£ãªã³ã¯ã远èšããŸãããSince 㯠v10.9.0 ãšããŠããŸãããå¥ããŒãžã§ã³ã«ãããå Žåã¯æããŠãã ããã
>
> - æ°èŠãªãã·ã§ã³ã®èª¬æã远å : docs/4. Options/4.7. Internal link complement/âïž Preserve first-letter case.md
> - Related Options ã«ãªã³ã¯è¿œå : docs/1. Features/Internal link complement.md
>
> ãã¹ãã¯å®è¡ããŠããŸããã
>
> 次ã®ã¹ããããå¿
èŠãªãæããŠãã ããã