47 """ |
47 """ |
48 pyVer = determinePythonVersion(filename, source) |
48 pyVer = determinePythonVersion(filename, source) |
49 if pyVer: |
49 if pyVer: |
50 return 'Python{0}'.format(pyVer) |
50 return 'Python{0}'.format(pyVer) |
51 |
51 |
52 for lang, (getArgs, getExt) in self.__supportedLanguages.items(): |
52 for lang, (env, getArgs, getExt) in self.__supportedLanguages.items(): |
53 if filename.endswith(tuple(getExt())): |
53 if filename.endswith(tuple(getExt())): |
54 return lang |
54 return lang |
55 |
55 |
56 return None |
56 return None |
57 |
57 |
58 def addLanguage( |
58 def addLanguage( |
59 self, lang, path, module, getArgs, getExt, callback, onError): |
59 self, lang, env, path, module, getArgs, getExt, callback, onError): |
60 """ |
60 """ |
61 Register the new language to the supported languages. |
61 Register the new language to the supported languages. |
62 |
62 |
63 @param lang new language to check syntax (str) |
63 @param lang new language to check syntax (str) |
|
64 @param env the environment in which the checker is implemented (str) |
64 @param path full path to the module (str) |
65 @param path full path to the module (str) |
65 @param module name to import (str) |
66 @param module name to import (str) |
66 @param getArgs function to collect the required arguments to call the |
67 @param getArgs function to collect the required arguments to call the |
67 syntax checker on client side (function) |
68 syntax checker on client side (function) |
68 @param getExt function that returns the supported file extensions of |
69 @param getExt function that returns the supported file extensions of |
69 the syntax checker (function) |
70 the syntax checker (function) |
70 @param callback function on service response (function) |
71 @param callback function on service response (function) |
71 @param onError callback function if client or service isn't available |
72 @param onError callback function if client or service isn't available |
72 (function) |
73 (function) |
73 """ |
74 """ |
74 self.__supportedLanguages[lang] = getArgs, getExt |
75 self.__supportedLanguages[lang] = env, getArgs, getExt |
75 # Connect to the background service |
76 # Connect to the background service |
76 self.backgroundService.serviceConnect( |
77 self.backgroundService.serviceConnect( |
77 'syntax', lang, path, module, callback, onError) |
78 '{0}Syntax'.format(lang), env, path, module, callback, onError) |
78 |
79 |
79 def getLanguages(self): |
80 def getLanguages(self): |
80 """ |
81 """ |
81 Return the supported language names. |
82 Return the supported language names. |
82 |
83 |
89 Remove the language from syntax check. |
90 Remove the language from syntax check. |
90 |
91 |
91 @param lang language to remove (str) |
92 @param lang language to remove (str) |
92 """ |
93 """ |
93 self.__supportedLanguages.pop(lang, None) |
94 self.__supportedLanguages.pop(lang, None) |
94 self.backgroundService.serviceDisconnect('syntax', lang) |
95 self.backgroundService.serviceDisconnect( |
|
96 '{0}Syntax'.format(lang), lang) |
95 |
97 |
96 def getExtensions(self): |
98 def getExtensions(self): |
97 """ |
99 """ |
98 Return all supported file extensions for the syntax checker dialog. |
100 Return all supported file extensions for the syntax checker dialog. |
99 |
101 |
100 @return set of all supported file extensions (set of str) |
102 @return set of all supported file extensions (set of str) |
101 """ |
103 """ |
102 extensions = set() |
104 extensions = set() |
103 for getArgs, getExt in self.__supportedLanguages.values(): |
105 for env, getArgs, getExt in self.__supportedLanguages.values(): |
104 for ext in getExt(): |
106 for ext in getExt(): |
105 extensions.add(ext) |
107 extensions.add(ext) |
106 return extensions |
108 return extensions |
107 |
109 |
108 def syntaxCheck(self, lang, filename, source): |
110 def syntaxCheck(self, lang, filename, source): |
119 lang = self.__determineLanguage(filename, source) |
121 lang = self.__determineLanguage(filename, source) |
120 if lang not in self.getLanguages(): |
122 if lang not in self.getLanguages(): |
121 return |
123 return |
122 data = [source] |
124 data = [source] |
123 # Call the getArgs function to get the required arguments |
125 # Call the getArgs function to get the required arguments |
124 args = self.__supportedLanguages[lang][0]() |
126 env, args, getExt = self.__supportedLanguages[lang] |
125 data.extend(args) |
127 data.extend(args()) |
126 self.backgroundService.enqueueRequest('syntax', lang, filename, data) |
128 self.backgroundService.enqueueRequest( |
|
129 '{0}Syntax'.format(lang), env, filename, data) |