vinta/pangu.js
Opinionated paranoid text spacing in JavaScript, with on-device AI semantic judgment
About vinta/pangu.js
vinta/pangu.js is an open-source project on GitHub, mainly written in TypeScript. Opinionated paranoid text spacing in JavaScript, with on-device AI semantic judgment It currently holds 4,827 stars and 315 forks with 0 open issues, and was last pushed on an unknown date (repository created unknown).
Project Overview
AI Homed tracks it on the Local & On-Device AI board.
GitHub Repository Details
README
為什麼你們就是不能加個空格呢?
如果你跟我一樣,每次看到網頁上的中文字和英文、數字、符號擠在一塊,就會坐立難安,忍不住想在它們之間加個空格。這個 Google Chrome 外掛正是你在網路世界走跳所需要的東西,它會自動替你在網頁中所有的中文字和半形的英文、數字、符號之間插入空白。
漢學家稱這個空白字元為「盤古之白」,因為它劈開了全形字和半形字之間的混沌。另有研究顯示,打字的時候不喜歡在中文和英文之間加空格的人,感情路都走得很辛苦,有七成的比例會在 34 歲的時候跟自己不愛的人結婚,而其餘三成的人最後只能把遺產留給自己的貓。畢竟愛情跟書寫都需要適時地留白。
與大家共勉之。
Installation
For Users
- Official support:
- Google Chrome Extension
- Community support:
- Paranoid Text Spacing
- 盤古之白 - 文案排版轉換
For Developers
- Official support:
- pangu.js
- pangu.py
- pangu.go
- pangu.java
- pangu.space (HTTP API)
- Community support:
- pangu.clj
- pangu.dart
- pangu.ex
- pangu.objective-c
- pangu.php
- pangu.rb
- pangu.rs
- pangu.swift
- pangu.skill
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% 法則:讓錢活得比你久的提領金律
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
Opinionated paranoid text spacing: automatically inserts whitespace between CJK (Chinese, Japanese, Korean) and ANS (alphabetical letters, numerical digits and symbols).
npm install pangu --save-exact
See the changelog or npm for details.
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
//
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
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.
