Skip to content

Latest commit

 

History

2,074 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

為什麼你們就是不能加個空格呢?

npm Version Chrome Web Store Version
Chrome Web Store Rating jsDelivr Hits npm Downloads

如果你跟我一樣,每次看到網頁上的中文字和英文、數字、符號擠在一塊,就會坐立難安,忍不住想在它們之間加個空格。這個 Google Chrome 外掛正是你在網路世界走跳所需要的東西,它會自動替你在網頁中所有的中文字和半形的英文、數字、符號之間插入空白。

漢學家稱這個空白字元為「盤古之白」,因為它劈開了全形字和半形字之間的混沌。另有研究顯示,打字的時候不喜歡在中文和英文之間加空格的人,感情路都走得很辛苦,有七成的比例會在 34 歲的時候跟自己不愛的人結婚,而其餘三成的人最後只能把遺產留給自己的貓。畢竟愛情跟書寫都需要適時地留白。

與大家共勉之。

Installation

For Users

For Developers

Chrome Extension

Install 為什麼你們就是不能加個空格呢? and it spaces every page you browse. It also comes with the AI Spacing feature:

AI Spacing

The same symbol can mean totally different things in different contexts:

  • For +:
    • 這裡沒有18+的內容 means "or more" => 這裡沒有 18+ 的內容
    • Switch 2+瑪利歐賽車世界同捆組 joins two things => Switch 2 + 瑪利歐賽車世界同捆組
  • For -:
    • 女朋友今天的氣溫是-273.15度 is a negative number => 女朋友今天的氣溫是 -273.15 度
    • 博客來-4% 法則:讓錢活得比你久的提領金律 is a separator => 博客來 - 4% 法則:讓錢活得比你久的提領金律

Regex rules can't distinguish semantic nuances like these, so the extension asks an LLM. It uses Chrome's built-in Prompt API, which runs Gemini Nano on your device. Fully offline, nothing leaves your machine. It's free, btw.

GPT-6 Astra writes the prompts. It runs the prompt-experiments skill: propose a change, then test it against the real Gemini Nano in Chrome. When a case fails, it interviews Gemini Nano for clues. When progress stalls, it searches online for new approaches to test. Prompts for a model, tuned by a bigger model, judged on real data.

JavaScript Library

npm install pangu --save-exact

Learn more in the changelog or on npm.

Browser

Make sure to import from pangu/browser in ESM, which is the DOM-aware build (spaceNode(), autoSpacePage()) with matching TypeScript types and resolves correctly across all bundlers.

import pangu from 'pangu/browser';
// or
// <script src="https://cdn.jsdelivr.net/npm/pangu@latest/dist/browser/pangu.umd.js"></script>

const text = pangu.spaceText('當你凝視著bug,bug也凝視著你');
// text = '當你凝視著 bug,bug 也凝視著你'

pangu.spaceNode(document.getElementById('main'));

if (document.readyState === 'loading') {
  // Start automatic text spacing once the page is ready
  // Consume the stream of DOM mutations and space dynamic content via MutationObserver
  document.addEventListener('DOMContentLoaded', () => pangu.autoSpacePage());
} else {
  pangu.autoSpacePage();
}

Also on:

  • jsDelivr
    • https://cdn.jsdelivr.net/npm/pangu@x.y.z/dist/browser/pangu.umd.js
  • unpkg
    • https://unpkg.com/pangu@x.y.z/dist/browser/pangu.umd.js
  • cdnjs
    • https://cdnjs.cloudflare.com/ajax/libs/pangu/x.y.z/browser/pangu.umd.min.js

Replace x.y.z with the version you want to use.

Node.js

import pangu from 'pangu';
// or
// const pangu = require('pangu');

const text = pangu.spaceText('與PM戰鬥的人,應當小心自己不要成為PM');
// text = '與 PM 戰鬥的人,應當小心自己不要成為 PM'

const content = await pangu.spaceFile('/path/to/text.txt');

You SHOULD NOT use pangu.js to space Markdown documents, this library is specially designed for HTML webpages and plain texts without any markup language. See issue #127.

CLI

$ pangu "不能信任那些Terminal或Editor用白底的人"
不能信任那些 Terminal 或 Editor 用白底的人

$ pangu -t "你在每個commit裡修改的程式碼越多,你在code review時被發現的錯誤就會越少"
你在每個 commit 裡修改的程式碼越多,你在 code review 時被發現的錯誤就會越少

$ pangu -f path/to/file.txt
新來的 Designer 趁特價的時候幫自己買了一本 GoF Design Patterns

$ pangu -c "盤古新聞網:工程師會議中默不作聲,PM恐成最大贏家"; echo $?
Corrected: 盤古新聞網:工程師會議中默不作聲,PM 恐成最大贏家
1

$ echo "他們在release的前一天爆炸" | pangu
他們在 release 的前一天爆炸

License

Released under the MIT License.

Author

Releases

Used by

Contributors

Languages