2525import argparse
2626import re
2727from pathlib import Path
28+ from importlib .metadata import version , PackageNotFoundError
2829
2930from enchant .checker import SpellChecker
3031from enchant .tokenize import EmailFilter , URLFilter
3132from enchant import Dict
3233
3334from comment_parser import comment_parser
3435
35- from importlib . metadata import version , PackageNotFoundError
36+ from lib import bibtex_loader
3637
3738__version__ = "unknown"
3839
@@ -378,6 +379,13 @@ def parse_args():
378379 help = "Set file mime type. File name suffix will be ignored." ,
379380 )
380381
382+ parser .add_argument (
383+ "--bibtex" ,
384+ action = "append" ,
385+ dest = "bibtex" ,
386+ help = "Bibtex file to load for additional dictionary words." ,
387+ )
388+
381389 parser .add_argument ("--version" , action = "version" , version = f"{ __version__ } " )
382390
383391 args = parser .parse_args ()
@@ -404,11 +412,38 @@ def add_dict(enchant_dict, filename, verbose=False):
404412 enchant_dict .add (wrd )
405413
406414
415+ def create_spell_checker (args , output_lvl ):
416+ """Create a SpellChecker."""
417+
418+ my_dict = Dict ("en_US" )
419+
420+ # Load the dictionary files
421+ #
422+ initial_dct = Path (__file__ ).parent / "additional_dictionary.txt"
423+ if not initial_dct .exists ():
424+ initial_dct = None
425+ else :
426+ add_dict (my_dict , str (initial_dct ), any ([args .brief , output_lvl >= 0 ]))
427+
428+ if args .dict is not None :
429+ for d in args .dict :
430+ add_dict (my_dict , d , any ([args .brief , output_lvl >= 0 ]))
431+
432+ # Load the bibliography files
433+ #
434+ if args .bibtex is not None :
435+ for bib in args .bibtex :
436+ bibtex_loader .add_bibtex (my_dict , bib , any ([args .brief , output_lvl >= 0 ]))
437+
438+ # Create the SpellChecker
439+ spell_checker = SpellChecker (my_dict , filters = [EmailFilter , URLFilter ])
440+
441+ return spell_checker
442+
443+
407444def main ():
408445 args = parse_args ()
409446
410- sitk_dict = Dict ("en_US" )
411-
412447 # Set the amount of debugging messages to print.
413448 output_lvl = 1
414449 if args .brief :
@@ -419,19 +454,7 @@ def main():
419454 if args .miss :
420455 output_lvl = - 1
421456
422- # Load the dictionary files
423- #
424- initial_dct = Path (__file__ ).parent / "additional_dictionary.txt"
425- if not initial_dct .exists ():
426- initial_dct = None
427- else :
428- add_dict (sitk_dict , str (initial_dct ), any ([args .brief , output_lvl >= 0 ]))
429-
430- if args .dict is not None :
431- for d in args .dict :
432- add_dict (sitk_dict , d , any ([args .brief , output_lvl >= 0 ]))
433-
434- spell_checker = SpellChecker (sitk_dict , filters = [EmailFilter , URLFilter ])
457+ spell_checker = create_spell_checker (args , output_lvl )
435458
436459 file_list = []
437460 if len (args .filenames ):
0 commit comments