src/eric7/Plugins/CheckerPlugins/SyntaxChecker/jsCheckSyntax.py

branch
eric7
changeset 9955
aa02420279fe
parent 9954
7c5fa3eef082
child 9956
5b138f996a1e
diff -r 7c5fa3eef082 -r aa02420279fe src/eric7/Plugins/CheckerPlugins/SyntaxChecker/jsCheckSyntax.py
--- a/src/eric7/Plugins/CheckerPlugins/SyntaxChecker/jsCheckSyntax.py	Fri Mar 31 13:39:51 2023 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,185 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2014 - 2023 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing the syntax check for JavaScript.
-"""
-
-import multiprocessing
-import os
-import queue
-import sys
-
-
-def initService():
-    """
-    Initialize the service and return the entry point.
-
-    @return the entry point for the background client (function)
-    """
-    path = __file__
-    for _ in range(4):
-        path = os.path.dirname(path)
-    sys.path.insert(2, os.path.join(path, "ThirdParty", "Jasy"))
-    return jsSyntaxCheck
-
-
-def initBatchService():
-    """
-    Initialize the batch service and return the entry point.
-
-    @return the entry point for the background client (function)
-    """
-    return jsSyntaxBatchCheck
-
-
-def jsSyntaxCheck(file, codestring):
-    """
-    Function to check a Javascript source file for syntax errors.
-
-    @param file source filename (string)
-    @param codestring string containing the code to check (string)
-    @return dictionary with the keys 'error' and 'warnings' which
-            hold a list containing details about the error/ warnings
-            (file name, line number, column, codestring (only at syntax
-            errors), the message, a list with arguments for the message)
-    """
-    return __jsSyntaxCheck(file, codestring)
-
-
-def jsSyntaxBatchCheck(argumentsList, send, fx, cancelled, maxProcesses=0):
-    """
-    Module function to check syntax for a batch of files.
-
-    @param argumentsList list of arguments tuples as given for jsSyntaxCheck
-    @type list
-    @param send reference to send function
-    @type func
-    @param fx registered service name
-    @type str
-    @param cancelled reference to function checking for a cancellation
-    @type func
-    @param maxProcesses number of processes to be used
-    @type int
-    """
-    if maxProcesses == 0:
-        # determine based on CPU count
-        try:
-            NumberOfProcesses = multiprocessing.cpu_count()
-            if NumberOfProcesses >= 1:
-                NumberOfProcesses -= 1
-        except NotImplementedError:
-            NumberOfProcesses = 1
-    else:
-        NumberOfProcesses = maxProcesses
-
-    # Create queues
-    taskQueue = multiprocessing.Queue()
-    doneQueue = multiprocessing.Queue()
-
-    # Submit tasks (initially two times the number of processes)
-    tasks = len(argumentsList)
-    initialTasks = min(2 * NumberOfProcesses, tasks)
-    for _ in range(initialTasks):
-        taskQueue.put(argumentsList.pop(0))
-
-    # Start worker processes
-    workers = [
-        multiprocessing.Process(target=workerTask, args=(taskQueue, doneQueue))
-        for _ in range(NumberOfProcesses)
-    ]
-    for worker in workers:
-        worker.start()
-
-    # Get and send results
-    for _ in range(tasks):
-        resultSent = False
-        wasCancelled = False
-
-        while not resultSent:
-            try:
-                # get result (waiting max. 3 seconds and send it to frontend
-                filename, result = doneQueue.get()
-                send(fx, filename, result)
-                resultSent = True
-            except queue.Empty:
-                # ignore empty queue, just carry on
-                if cancelled():
-                    wasCancelled = True
-                    break
-
-        if wasCancelled or cancelled():
-            # just exit the loop ignoring the results of queued tasks
-            break
-
-        if argumentsList:
-            taskQueue.put(argumentsList.pop(0))
-
-    # Tell child processes to stop
-    for _ in range(NumberOfProcesses):
-        taskQueue.put("STOP")
-
-    for worker in workers:
-        worker.join()
-        worker.close()
-
-    taskQueue.close()
-    doneQueue.close()
-
-
-def workerTask(inputQueue, outputQueue):
-    """
-    Module function acting as the parallel worker for the syntax check.
-
-    @param inputQueue input queue (multiprocessing.Queue)
-    @param outputQueue output queue (multiprocessing.Queue)
-    """
-    for filename, args in iter(inputQueue.get, "STOP"):
-        source = args[0]
-        result = __jsSyntaxCheck(filename, source)
-        outputQueue.put((filename, result))
-
-
-def __jsSyntaxCheck(file, codestring):
-    """
-    Function to check a Javascript source file for syntax errors.
-
-    @param file source filename (string)
-    @param codestring string containing the code to check (string)
-    @return dictionary with the keys 'error' and 'warnings' which
-            hold a list containing details about the error/ warnings
-            (file name, line number, column, codestring (only at syntax
-            errors), the message, a list with arguments for the message)
-    """
-    import jasy.script.parse.Parser as jsParser  # __IGNORE_WARNING_I102__
-    import jasy.script.tokenize.Tokenizer as jsTokenizer  # __IGNORE_WARNING_I102__
-
-    try:
-        jsParser.parse(codestring, file)
-    except (jsParser.SyntaxError, jsTokenizer.ParseError) as exc:
-        details = exc.args[0]
-        error, details = details.splitlines()
-        fn, line = details.strip().rsplit(":", 1)
-        error = error.split(":", 1)[1].strip()
-
-        cline = min(len(codestring.splitlines()), int(line)) - 1
-        code = codestring.splitlines()[cline]
-        return [{"error": (fn, int(line), 0, code, error)}]
-    except IndexError:
-        error = "Incomplete source file"
-        splittedCode = codestring.splitlines()
-        return [
-            {
-                "error": (
-                    file,
-                    len(splittedCode) + 1,
-                    len(splittedCode[-1]),
-                    splittedCode[-1],
-                    error,
-                )
-            }
-        ]
-
-    return [{}]

eric ide

mercurial