Skip to content

Commit 1396e53

Browse files
committed
Display multiple misspelled words on same error line
1 parent a544a42 commit 1396e53

4 files changed

Lines changed: 22 additions & 8 deletions

File tree

ChangeLog.asciidoc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
== Version 2.8 (under dev!)
88

9+
* display multiple misspelled words on same error line
910
* sort and keep unique misspelled words with option -m/--only-misspelled
1011

1112
== Version 2.7 (2014-06-28)

msgcheck/msgcheck.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,10 @@ def main():
134134
total_errors += len(reports)
135135
if not args.quiet:
136136
if args.only_misspelled:
137-
words = [report.message for report in reports
138-
if report.idmsg.startswith('spelling-')]
137+
words = []
138+
for report in reports:
139+
for word in report.get_misspelled_words():
140+
words.append(word)
139141
print('\n'.join(sorted(set(words),
140142
key=lambda s: s.lower())))
141143
else:

msgcheck/po.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,19 +71,26 @@ def __repr__(self):
7171
return self.message + '\n---'
7272
if self.idmsg == 'compile':
7373
return '{0}\n{1}'.format('=' * 70, self.message)
74-
msg = '{0}\n{1}:{2}: [{3}] {4}{5}'.format(
74+
is_list = type(self.message) is list
75+
count = '(%d)' % len(self.message) if is_list else ''
76+
msg = '{0}\n{1}:{2}: [{3}{4}] {5}{6}'.format(
7577
'=' * 70,
7678
self.filename,
7779
self.line,
7880
self.idmsg,
81+
count,
7982
'(fuzzy) ' if self.fuzzy else '',
80-
self.message)
83+
', '.join(self.message) if is_list else self.message)
8184
if self.mid:
8285
msg += '\n---\n' + self.mid
8386
if self.mstr:
8487
msg += '\n---\n' + self.mstr
8588
return msg
8689

90+
def get_misspelled_words(self):
91+
"""Return list of misspelled words."""
92+
return self.message if type(self.message) is list else []
93+
8794

8895
class PoMessage(object):
8996
"""
@@ -274,8 +281,8 @@ def check_spelling(self, spelling, checkers):
274281
break
275282
if misspelled_word:
276283
misspelled.append(err.word)
277-
for word in misspelled:
278-
errors.append(PoReport(word, 'spelling-' + spelling,
284+
if misspelled:
285+
errors.append(PoReport(misspelled, 'spelling-' + spelling,
279286
self.filename, self.line, mid, mstr))
280287
return errors
281288

tests/test_msgcheck.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,9 @@ def test_spelling_id(self):
109109
self.assertEquals(len(errors), 2)
110110
for i, word in enumerate(('Thsi', 'errro')):
111111
self.assertEquals(errors[i].idmsg, 'spelling-id')
112-
self.assertEquals(errors[i].message, word)
112+
self.assertTrue(type(errors[i].message) is list)
113+
self.assertEquals(len(errors[i].message), 1)
114+
self.assertEquals(errors[i].message[0], word)
113115

114116
def test_spelling_str(self):
115117
"""Test spelling on translated messages of gettext files."""
@@ -126,7 +128,9 @@ def test_spelling_str(self):
126128
self.assertEquals(len(errors), 2)
127129
for i, word in enumerate(('aabbcc', 'xxyyzz')):
128130
self.assertEquals(errors[i].idmsg, 'spelling-str')
129-
self.assertEquals(errors[i].message, word)
131+
self.assertTrue(type(errors[i].message) is list)
132+
self.assertEquals(len(errors[i].message), 1)
133+
self.assertEquals(errors[i].message[0], word)
130134

131135
# second file has 1 error: dict/language "xyz" not found
132136
errors = result[1][1]

0 commit comments

Comments
 (0)