Coverage for zzdummy.py: 61%
32 statements
« prev ^ index » next coverage.py v7.2.5, created at 2023-05-11 13:22 -0700
« prev ^ index » next coverage.py v7.2.5, created at 2023-05-11 13:22 -0700
1"""Example extension, also used for testing.
3See extend.txt for more details on creating an extension.
4See config-extension.def for configuring an extension.
5"""
7from idlelib.config import idleConf
8from functools import wraps
11def format_selection(format_line):
12 "Apply a formatting function to all of the selected lines."
14 @wraps(format_line)
15 def apply(self, event=None):
16 head, tail, chars, lines = self.formatter.get_region()
17 for pos in range(len(lines) - 1):
18 line = lines[pos]
19 lines[pos] = format_line(self, line)
20 self.formatter.set_region(head, tail, chars, lines)
21 return 'break'
23 return apply
26class ZzDummy:
27 """Prepend or remove initial text from selected lines."""
29 # Extend the format menu.
30 menudefs = [
31 ('format', [
32 ('Z in', '<<z-in>>'),
33 ('Z out', '<<z-out>>'),
34 ] )
35 ]
37 def __init__(self, editwin):
38 "Initialize the settings for this extension."
39 self.editwin = editwin
40 self.text = editwin.text
41 self.formatter = editwin.fregion
43 @classmethod
44 def reload(cls):
45 "Load class variables from config."
46 cls.ztext = idleConf.GetOption('extensions', 'ZzDummy', 'z-text')
48 @format_selection
49 def z_in_event(self, line):
50 """Insert text at the beginning of each selected line.
52 This is bound to the <<z-in>> virtual event when the extensions
53 are loaded.
54 """
55 return f'{self.ztext}{line}'
57 @format_selection
58 def z_out_event(self, line):
59 """Remove specific text from the beginning of each selected line.
61 This is bound to the <<z-out>> virtual event when the extensions
62 are loaded.
63 """
64 zlength = 0 if not line.startswith(self.ztext) else len(self.ztext)
65 return line[zlength:]
68ZzDummy.reload()
71if __name__ == "__main__": 71 ↛ 72line 71 didn't jump to line 72, because the condition on line 71 was never true
72 import unittest
73 unittest.main('idlelib.idle_test.test_zzdummy', verbosity=2, exit=False)