Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py

branch
Py2 comp.
changeset 3525
66f4b8646622
parent 3418
27ab90e0f25e
child 3591
2f2a4a76dd22
equal deleted inserted replaced
3524:c6141071339a 3525:66f4b8646622
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)

eric ide

mercurial