一個簡單而快速的拼寫檢查器,帶有拼寫建議和電子的整合
Simple SpellChecker是Node.js的拼寫檢查模塊,它允許檢查單詞是否拼寫錯誤並獲得拼寫建議。
它帶有英語,西班牙語,法語,德語和荷蘭語的字典,但是您可以通過簡單地定義帶有有效詞列表的文本文件來輕鬆添加更多語言。
它還具有一個CLI工具,允許從命令行檢查單詞。
為了使用模塊,您必須首先使用NPM安裝它。
npm install simple-spellchecker
然後需要該模塊,獲取一個Dictionary
對象並調用其方法。
var SpellChecker = require ( 'simple-spellchecker' ) ;
SpellChecker . getDictionary ( "fr-FR" , function ( err , dictionary ) {
if ( ! err ) {
var misspelled = ! dictionary . spellCheck ( 'maisonn' ) ;
if ( misspelled ) {
var suggestions = dictionary . getSuggestions ( 'maisonn' ) ;
}
}
} ) ;
該模塊具有三種公共方法: getDictionary()
, getDictionarySync()
和normalizeDictionary()
。
此方法允許從文件中獲取Dictionary
實例。
參數:
fileName
:字典文件的名稱。該方法將首先搜索帶有.dic
擴展名的文件,如果找不到的話,則將搜索.zip
並將其解壓縮。folderPath
:字典文件所在的文件夾。此參數是可選的,默認情況下,它假定文件在dict
文件夾中。callback
:將調用返回Dictionary
對象的函數。例子:
var SpellChecker = require ( 'simple-spellchecker' ) ;
SpellChecker . getDictionary ( "fr-FR" , function ( err , result ) {
var dictionary = result ;
} ) ;
此方法允許以同步方式從文件中獲取Dictionary
實例。
參數:
fileName
:字典文件的名稱。該文件必須具有.dic
擴展名。folderPath
:字典文件所在的文件夾。此參數是可選的,默認情況下,它假定文件在dict
文件夾中。返回:
Dictionary
對象。例子:
var SpellChecker = require ( 'simple-spellchecker' ) ;
var dictionary = SpellChecker . getDictionarySync ( "fr-FR" ) ;
此方法讀取一個UTF-8字典文件,刪除bom和r
字符並分類單詞列表。
參數:
inputPath
:字典文件的路徑。outputPath
:歸一化字典文件的路徑。此參數是可選的,deafult原始文件被覆蓋。callback
:該過程完成後將調用的函數。例子:
var SpellChecker = require ( 'simple-spellchecker' ) ;
SpellChecker . normalizeDictionary ( inputFile , outputFile , function ( err , success ) {
if ( success ) console . log ( "The file was normalized" ) ;
} ) ;
Dictionary
類有六種公共方法: getLength()
, setWordlist()
, spellCheck()
, isMisspelled()
, getSuggestions()
和checkAndSuggest()
該方法允許獲取字典所具有的單詞數量。
返回:
此方法允許設置字典的單詞。
範圍:
wordlist
:一系列字符串。此方法允許驗證是正確編寫的單詞。
範圍:
word
:要驗證的單詞。返回:
true
在字典中, false
,如果不是。 此方法允許驗證的是一個單詞是否拼寫錯誤。
範圍:
word
:要驗證的單詞。返回:
false
,如果不是的true
此方法允許獲得一個單詞的拼寫建議。
參數:
word
:用於生成建議的單詞。limit
:獲得的最大建議數(默認情況下為5)。maxDistance
:一個單詞可以從word
參數中具有的最大編輯距離,以便被視為有效的建議(默認情況下為2)。返回:
此方法允許驗證單詞是否拼寫錯誤並獲得拼寫建議。
參數:
word
:要驗證的單詞。limit
:獲得的最大建議數(默認情況下為5)。maxDistance
:一個單詞可以從word
參數中具有的最大編輯距離,以便被視為有效的建議(默認情況下為2)。返回:
misspelled
的對象,其中包含布爾值和suggestions
,其中包含一系列字符串。 此方法添加了一個正則表達式,即使在字典中不在字典中,也將用於驗證單詞是否有效。
當避免將特殊單詞標記為拼寫錯誤時,例如數字,電子郵件或URL地址時,這可能很有用。
參數:
regex
:正則表達式對象。 此方法刪除了使用方法addRegex()
添加的所有先前的正則表達式。
為了使用自定義詞典,您必須定義一個帶有有效詞列表的文本文件,其中每個單詞都被新行分開。
該文件的擴展名必須為.dic
,並且該名稱應(最好)由語言代碼和區域指定器組成( es-AR
如果語言為西班牙語,並且該地區是阿根廷)。
可選的是,您還可以將文件打包到zip軟件包中,只要.zip
文件具有相同的名稱具有.dic
文件(例如,文件es-AR.zip
該模塊將能夠解壓縮並閱讀它。其中包含文件es-AR.dic
)。
該文件必須在UTF8(無BOM)中編碼,必須用線feed (即n
)分開這些單詞,而不要使用托架返回加上線feed (即rn
),並且必須對單詞進行排序按順序排列。
如果您調用normalize()
normalize()
,則可以刪除所有不需要的字符並對單詞進行排序。
該模塊配備了一個允許將字典標準化並測試的腳本。
為了測試字典文件,您必須執行指示字典文件的文件夾和名稱以及要測試的單詞的腳本。
例如,以下句子將在dict
文件夾中搜索一個字典,該house
在文件en-GB.dic
或en-GB.zip
中搜索,並將驗證是否拼寫錯誤,並將搜索一些拼寫建議。
node cli.js check "./dict" en-GB house
為了使字典文件歸一化,您必須執行指示文件路徑的腳本:
node cli.js normalize "./dict/en-GB.dic"
如果您不想覆蓋原始文件,則可以指定輸出文件的路徑:
node cli.js normalize "./dict/en-GB.dic" "C:/output/en-GB.dic"
您可以通過幾種方式將該模塊與電子集成在一起。但是,如果您想要一個起點,以下示例顯示瞭如何啟用英語詞典:
1)將模塊作為項目的依賴性安裝( npm install simple-spellchecker --save
)。
2)在主過程中,需要模塊,加載字典並定義一個函數以訪問其方法:
// Initialization.
var SpellChecker = require ( 'simple-spellchecker' ) ;
var myDictionary = null ;
// Load dictionary.
SpellChecker . getDictionary ( "en-US" , "./node_modules/simple-spellchecker/dict" , function ( err , result ) {
if ( ! err ) {
myDictionary = result ;
}
} ) ;
// Define function for consult the dictionary.
ipcMain . on ( 'checkspell' , function ( event , word ) {
var res = null ;
if ( myDictionary != null && word != null ) {
res = myDictionary . spellCheck ( word ) ;
}
event . returnValue = res ;
} ) ;
3)在渲染器過程中,定義使用先前加載詞典的咒語檢查器提供商。
// Get web frame.
var webFrame = require ( 'electron' ) . webFrame ;
webFrame . setSpellCheckProvider ( "en-US" , false , {
spellCheck : function ( text ) {
var res = ipcRenderer . sendSync ( 'checkspell' , text ) ;
return res != null ? res : true ;
}
} ) ;
該模塊通過文件test.js
(使用Mocha和Chai )部分測試。為了運行測試,只需執行命令npm test
即可。
簡單的SpellChecker是免費軟件;您可以根據Mozilla公共許可證v2.0的條款對其進行重新分配和/或修改它。您應該已經收到了MPL 2.0和此庫的副本,否則您可以在http://mozilla.org/mpl/2.0/上獲得一份。