src/eric7/Utilities/ClassBrowsers/__init__.py

Sat, 01 Apr 2023 11:09:00 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 01 Apr 2023 11:09:00 +0200
branch
eric7
changeset 9955
aa02420279fe
parent 9653
e67609152c5e
child 10060
b946699e9e79
permissions
-rw-r--r--

JavaScript Support
- Removed JavaScript functionality depending on the `Jasy` package because it has not been maintained for years.

0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
9653
e67609152c5e Updated copyright for 2023.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9612
diff changeset
3 # Copyright (c) 2005 - 2023 Detlev Offenbach <detlev@die-offenbachs.de>
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Package implementing class browsers for various languages.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9 Currently it offers class browser support for the following
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 programming languages.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 <ul>
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 <li>CORBA IDL</li>
5977
8a0ec75b0f73 Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5651
diff changeset
14 <li>JavaScript</li>
8a0ec75b0f73 Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5651
diff changeset
15 <li>ProtoBuf</li>
8a0ec75b0f73 Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5651
diff changeset
16 <li>Python 3</li>
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 <li>Ruby</li>
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 </ul>
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
21 import importlib
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 import os
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
24 from eric7 import Preferences
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25
9612
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
26 # The class browser registry
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
27 # Dictionary with class browser name as key. Each entry is a dictionary with
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
28 # 0. 'Extensions': list of associated file extensions with leading dot
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
29 # 1. 'ReadModule': function to read and parse a module file
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
30 # 2. 'Scan': function to parse a given source text
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
31 # 3. 'FileIcon': function to get an icon name for the file type
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
32 ClassBrowserRegistry = {}
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
33
7400
e5d62581d002 Removed use of deprecated 'imp' module in the frontend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
34 PY_SOURCE = 1
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 PTL_SOURCE = 128
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 RB_SOURCE = 129
9612
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
37 JS_SOURCE = 130
9490
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
38 UNKNOWN_SOURCE = 255
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
40 SUPPORTED_TYPES = [
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
41 PY_SOURCE,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
42 PTL_SOURCE,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
43 RB_SOURCE,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
44 JS_SOURCE,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
45 ]
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 __extensions = {
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
48 "Python": [".py", ".pyw", ".ptl"], # currently not used
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
49 "Ruby": [".rb"],
2779
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
50 "JavaScript": [".js"],
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 }
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
53
9612
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
54 def registerClassBrowser(name, readModuleFunc, scanFunc, iconFunc, extensions):
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
55 """
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
56 Function to register a class browser type.
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
57
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
58 @param name name of the class browser
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
59 @type str
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
60 @param readModuleFunc function to read and parse a file returning a dictionary
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
61 with the parsing result
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
62 @type function
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
63 @param scanFunc function to scan a given source text returning a dictionary with
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
64 the parsing result
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
65 @type function
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
66 @param iconFunc function returning an icon name for the supported files
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
67 @type function
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
68 @param extensions list of associated file extensions
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
69 @type list of str
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
70 @exception KeyError raised if the class browser to be registered is already
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
71 """
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
72 global ClassBrowserRegistry
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
73
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
74 if name in ClassBrowserRegistry:
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
75 raise KeyError('Class Browser "{0}" already registered.'.format(name))
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
76 else:
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
77 ClassBrowserRegistry[name] = {
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
78 "ReadModule": readModuleFunc,
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
79 "Scan": scanFunc,
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
80 "FileIcon": iconFunc,
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
81 "Extensions": extensions,
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
82 }
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
83
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
84
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
85 def unregisterClassBrowser(name):
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
86 """
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
87 Function to unregister a class browser type.
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
88
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
89 @param name name of the class browser
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
90 @type str
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
91 """
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
92 global ClassBrowserRegistry
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
93
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
94 if name in ClassBrowserRegistry:
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
95 del ClassBrowserRegistry[name]
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
96
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
97
9490
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
98 def getClassBrowserModule(moduleType):
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
99 """
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
100 Function to import a class browser module.
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
101
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
102 @param moduleType type of class browser to load
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
103 @type str
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
104 @return reference to the imported class browser module
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
105 @rtype module
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
106 """
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
107 typeMapping = {
9497
8beca4047c53 Modified most of the importlib.import_module() calls to use relative imports.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9490
diff changeset
108 "python": ".pyclbr",
8beca4047c53 Modified most of the importlib.import_module() calls to use relative imports.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9490
diff changeset
109 "ruby": ".rbclbr",
9490
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
110 }
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
111
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
112 if moduleType in typeMapping:
9497
8beca4047c53 Modified most of the importlib.import_module() calls to use relative imports.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9490
diff changeset
113 mod = importlib.import_module(typeMapping[moduleType], __package__)
9490
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
114 return mod
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
115
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
116 return None
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
117
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
118
5651
982465f8389c Fixed a few code style issues related to the usage of mutable types for default arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5604
diff changeset
119 def readmodule(module, path=None, isPyFile=False):
2965
d133c7edd88a Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2779
diff changeset
120 """
9490
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
121 Function to read a source file and return a dictionary of classes, functions,
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
122 modules, etc. .
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
123
2965
d133c7edd88a Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2779
diff changeset
124 The real work of parsing the source file is delegated to the individual
d133c7edd88a Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2779
diff changeset
125 file parsers.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126
5977
8a0ec75b0f73 Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5651
diff changeset
127 @param module name of the source file
8a0ec75b0f73 Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5651
diff changeset
128 @type str
8a0ec75b0f73 Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5651
diff changeset
129 @param path list of paths the file should be searched in
8a0ec75b0f73 Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5651
diff changeset
130 @type list of str
8a0ec75b0f73 Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5651
diff changeset
131 @param isPyFile flag indicating a Python file
8a0ec75b0f73 Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5651
diff changeset
132 @type bool
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 @return the resulting dictionary
5977
8a0ec75b0f73 Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5651
diff changeset
134 @rtype dict
2965
d133c7edd88a Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2779
diff changeset
135 """
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 ext = os.path.splitext(module)[1].lower()
5651
982465f8389c Fixed a few code style issues related to the usage of mutable types for default arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5604
diff changeset
137 path = [] if path is None else path[:]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
138
9612
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
139 if not isPyFile:
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
140 for classBrowserName in ClassBrowserRegistry:
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
141 if ext in ClassBrowserRegistry[classBrowserName]["Extensions"]:
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
142 return ClassBrowserRegistry[classBrowserName]["ReadModule"](
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
143 module, path
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
144 )
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
145
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
146 if ext in __extensions["Ruby"]:
9490
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
147 moduleType = "ruby"
7192
a22eee00b052 Started removing runtime support for Python2 and PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
148 elif ext in __extensions["JavaScript"]:
9490
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
149 moduleType = "javascript"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
150 elif ext in Preferences.getPython("Python3Extensions") or isPyFile:
9490
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
151 moduleType = "python"
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 # try Python if it is without extension
9490
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
154 moduleType = "python"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
155
9490
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
156 classBrowserModule = getClassBrowserModule(moduleType)
9612
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
157 dictionary = (
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
158 classBrowserModule.readmodule_ex(module, path, isTypeFile=isPyFile)
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
159 if classBrowserModule
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
160 else {}
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
161 )
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
162
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
163 return dictionary
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
164
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
165
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
166 def scan(src, filename, module, isPyFile=False):
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
167 """
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
168 Function to scan the given source text.
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
169
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
170 @param src source text to be scanned
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
171 @type str
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
172 @param filename file name associated with the source text
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
173 @type str
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
174 @param module module name associated with the source text
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
175 @type str
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
176 @param isPyFile flag indicating a Python file
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
177 @type bool
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
178 @return dictionary containing the extracted data
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
179 @rtype dict
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
180 """
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
181 ext = os.path.splitext(filename)[1]
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
182 for classBrowserName in ClassBrowserRegistry:
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
183 if ext in ClassBrowserRegistry[classBrowserName]["Extensions"]:
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
184 return ClassBrowserRegistry[classBrowserName]["Scan"](src, filename, module)
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
185
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
186 if ext in __extensions["Ruby"]:
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
187 moduleType = "ruby"
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
188 elif ext in __extensions["JavaScript"]:
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
189 moduleType = "javascript"
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
190 elif ext in Preferences.getPython("Python3Extensions") or isPyFile:
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
191 moduleType = "python"
9490
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
192 else:
9612
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
193 # try Python if it is without extension
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
194 moduleType = "python"
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
195
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
196 classBrowserModule = getClassBrowserModule(moduleType)
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
197 dictionary = (
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
198 classBrowserModule.scan(src, filename, module) if classBrowserModule else None
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
199 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
200
5604
b047181a4a33 Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
201 return dictionary
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
203
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
204 def find_module(name, path, isPyFile=False):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 """
9490
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
206 Function to extend the Python module finding mechanism.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
207
5977
8a0ec75b0f73 Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5651
diff changeset
208 This function searches for files in the given list of paths. If the
8a0ec75b0f73 Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5651
diff changeset
209 file name doesn't have an extension or an extension of .py, the normal
8a0ec75b0f73 Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5651
diff changeset
210 Python search implemented in the imp module is used. For all other
8a0ec75b0f73 Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5651
diff changeset
211 supported files only the paths list is searched.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
212
5977
8a0ec75b0f73 Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5651
diff changeset
213 @param name file name or module name to search for
8a0ec75b0f73 Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5651
diff changeset
214 @type str
8a0ec75b0f73 Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5651
diff changeset
215 @param path search paths
8a0ec75b0f73 Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5651
diff changeset
216 @type list of str
8a0ec75b0f73 Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5651
diff changeset
217 @param isPyFile flag indicating a Python file
8a0ec75b0f73 Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5651
diff changeset
218 @type bool
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 @return tuple of the open file, pathname and description. Description
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 is a tuple of file suffix, file mode and file type)
5977
8a0ec75b0f73 Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5651
diff changeset
221 @rtype tuple
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 @exception ImportError The file or module wasn't found.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
223 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224 ext = os.path.splitext(name)[1].lower()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
225
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 if ext in __extensions["Ruby"]:
9490
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
227 sourceType = RB_SOURCE
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
228 elif ext in __extensions["JavaScript"]:
9490
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
229 sourceType = JS_SOURCE
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
230 elif ext == ".ptl":
9490
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
231 sourceType = PTL_SOURCE
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
232 elif (
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
233 name.lower().endswith(tuple(Preferences.getPython("Python3Extensions")))
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
234 or isPyFile
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
235 ):
9490
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
236 sourceType = PY_SOURCE
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
237 else:
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
238 sourceType = UNKNOWN_SOURCE
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
239
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
240 if sourceType != UNKNOWN_SOURCE:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
241 for p in path: # search in path
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
242 pathname = os.path.join(p, name)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
243 if os.path.exists(pathname):
9490
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
244 return (open(pathname), pathname, (ext, "r", sourceType))
8205
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
245 # __IGNORE_WARNING_Y115__
9490
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
246 raise ImportError
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
247 else:
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
248 # standard Python module file
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
249 if name.lower().endswith(".py"):
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
250 name = name[:-3]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
251
9490
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
252 spec = importlib.machinery.PathFinder.find_spec(name, path)
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
253 if spec is None:
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
254 raise ImportError
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
255 if isinstance(spec.loader, importlib.machinery.SourceFileLoader):
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
256 ext = os.path.splitext(spec.origin)[-1]
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
257 return (open(spec.origin), spec.origin, (ext, "r", PY_SOURCE))
77b8d3a635b7 Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
258 # __IGNORE_WARNING_Y115__
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
259
7400
e5d62581d002 Removed use of deprecated 'imp' module in the frontend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
260 raise ImportError
9612
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
261
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
262
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
263 def getIcon(filename):
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
264 """
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
265 Function to get an icon name for the given file (only for class browsers provided
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
266 via plugins).
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
267
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
268 @param filename name of the file
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
269 @type str
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
270 @return icon name
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
271 @rtype str
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
272 """
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
273 ext = os.path.splitext(filename)[1].lower()
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
274
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
275 for classBrowserRegistryEntry in ClassBrowserRegistry.values():
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
276 if ext in classBrowserRegistryEntry["Extensions"]:
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
277 return classBrowserRegistryEntry["FileIcon"](filename)
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
278
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
279 return "fileMisc"
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
280
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
281
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
282 def isSupportedType(fileext):
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
283 """
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
284 Function to check, if the given file extension indicates a supported file type.
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
285
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
286 @param fileext file extension
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
287 @type str
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
288 @return flag indicating a supported file type
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
289 @rtype bool
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
290 """
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
291 supported = any(fileext in exts for exts in __extensions.values())
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
292 supported |= any(
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
293 fileext in cb["Extensions"] for cb in ClassBrowserRegistry.values()
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
294 )
93b496cc3c88 Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9609
diff changeset
295 return supported

eric ide

mercurial