From 6096efceeaa36523761c237a57e528587fc0ce26 Mon Sep 17 00:00:00 2001 From: Oliver Huuhtanen Date: Tue, 8 May 2018 14:58:30 +0300 Subject: [PATCH] Added support for multiple suffixes. Added support for scandinavian alphabet. --- commands/jump_to_keyword.py | 2 +- commands/scan.py | 8 +++++--- commands/scan_open_tab.py | 10 +++++----- dataparser/data_parser/data_parser.py | 17 ++++++++++++++++- dataparser/index/index.py | 8 ++++++-- dataparser/queue/scanner.py | 9 +++++++-- 6 files changed, 40 insertions(+), 14 deletions(-) diff --git a/commands/jump_to_keyword.py b/commands/jump_to_keyword.py index c1c9c59..6507b27 100644 --- a/commands/jump_to_keyword.py +++ b/commands/jump_to_keyword.py @@ -20,7 +20,7 @@ def run(self, edit): db_dir = get_setting(SettingObject.table_dir) index_db = get_setting(SettingObject.index_dir) rf_cell = get_rf_table_separator(self.view) - rf_extension = get_setting(SettingObject.extension) + rf_extension = tuple(get_setting(SettingObject.extension)) index_file = get_index_file(open_tab) jump_to_file = JumpToFile() line, column = get_line(self.view) diff --git a/commands/scan.py b/commands/scan.py index 4d389f4..4716130 100644 --- a/commands/scan.py +++ b/commands/scan.py @@ -14,8 +14,9 @@ def scan_popen_arg_parser(mode): arg_list.append(mode) arg_list.append('--db_path') arg_list.append(get_setting(SettingObject.table_dir)) - arg_list.append('--extension') - arg_list.append(get_setting(SettingObject.extension)) + for ext in get_setting(SettingObject.extension): + arg_list.append('--extension') + arg_list.append(ext) arg_list.append('--path_to_lib_in_xml') arg_list.append(get_setting(SettingObject.lib_in_xml)) arg_list.append('--module_search_path') @@ -48,6 +49,7 @@ def run_scan(self, log_file): p_args = scan_popen_arg_parser('all') p_args.append('--workspace') p_args.append(get_setting(SettingObject.workspace)) + print("This is the log file: %s" % log_file) p = subprocess.Popen( p_args, stderr=subprocess.STDOUT, @@ -58,6 +60,6 @@ def run_scan(self, log_file): if rc != 0: print('See log file from database directory for details') raise ValueError('Error in scanning result code: {0}'.format(rc)) - message = 'Scaning done with rc: {0}'.format(rc) + message = 'Scanning done with rc: {0}'.format(rc) sublime.status_message(message) print(message) diff --git a/commands/scan_open_tab.py b/commands/scan_open_tab.py index 98c4015..769cbcd 100644 --- a/commands/scan_open_tab.py +++ b/commands/scan_open_tab.py @@ -51,7 +51,7 @@ def run_single_scan(self, open_tab, log_file): if not rc == 0: print('See log file from database directory for details') raise ValueError('Error in scanning result code: {0}'.format(rc)) - message = 'Scaning done with rc: {0}'.format(rc) + message = 'Scanning done with rc: {0}'.format(rc) sublime.status_message(message) print(message) @@ -60,7 +60,7 @@ def file_in_workspace(self, open_tab): workspace = path.normcase(workspace) open_tab = path.normcase(open_tab) extension = get_setting(SettingObject.extension) - if open_tab.endswith(extension): - return open_tab.startswith(workspace) - else: - return False + for ext in extension: + if open_tab.endswith(ext): + return open_tab.startswith(workspace) + return False diff --git a/dataparser/data_parser/data_parser.py b/dataparser/data_parser/data_parser.py index 60fbbd2..46e9b28 100644 --- a/dataparser/data_parser/data_parser.py +++ b/dataparser/data_parser/data_parser.py @@ -10,11 +10,13 @@ from os import path import xml.etree.ElementTree as ET from tempfile import mkdtemp +import sys import logging import inspect from parser_utils.util import normalise_path from db_json_settings import DBJsonSetting + logging.basicConfig( format='%(levelname)s:%(asctime)s: %(message)s', level=logging.DEBUG) @@ -110,7 +112,7 @@ def parse_library(self, library, args=None): else: raise ValueError('Unknown library') else: - data[DBJsonSetting.library_module] = library + library, data = self._locate_file_from_path(library, data) data[DBJsonSetting.keywords] = self._parse_python_lib( library, data[DBJsonSetting.arguments]) if data[DBJsonSetting.keywords] is None: @@ -118,6 +120,19 @@ def parse_library(self, library, args=None): else: return data + @staticmethod + def _locate_file_from_path(library, data): + file_name = path.basename(library) + for path_ in sys.path: + file_path = path.join(path_, file_name) + if path.isfile(file_path): + data[DBJsonSetting.file_name] = path.basename(file_path) + data[DBJsonSetting.library_module] = path.splitext( + data[DBJsonSetting.file_name])[0] + return file_path, data + data[DBJsonSetting.library_module] = library + return library, data + def register_console_logger(self): ROBOT_LOGGER.register_console_logger() diff --git a/dataparser/index/index.py b/dataparser/index/index.py index b90cc4f..63b818e 100644 --- a/dataparser/index/index.py +++ b/dataparser/index/index.py @@ -112,7 +112,7 @@ def create_index(self, db_path, t_name, table_name): logging.warning('Error finding: %s', path.join(db_path, t_name)) logging.debug('When creating index for: %s', table_name) elif read_status == 2: - logging.error('Unknow ValueError on %s', t_name) + logging.error('Unknown ValueError on %s', t_name) if data: logging.debug(data) else: @@ -195,6 +195,7 @@ def get_library_imports(self, data): lib_import, lib_args ) + logging.info("Library import successful. %s" % lib_import) except ValueError: message = ('Unable to parse library "{0}"' ', with args: "{1}"'.format(lib_import, lib_args)) @@ -232,7 +233,9 @@ def get_kw_arguments(self, kw_args): """Formats keyword arguments to suite completions""" pattern = re.compile('(?:[\@\$\&]\{)(.+)(?:\})') comletion_args = [] + for arg in kw_args: + arg_name, arg_default = self.split_arg(arg) match = pattern.search(arg_name) if not match: @@ -242,7 +245,8 @@ def get_kw_arguments(self, kw_args): if arg.startswith('$') and arg_default: comletion_args.append( '{}={}'.format( - arg_text, arg_default + arg_text.encode("utf-8"), + arg_default.encode("utf-8") ) ) elif arg.startswith('$') and not arg_default: diff --git a/dataparser/queue/scanner.py b/dataparser/queue/scanner.py index 382bc3a..407d892 100644 --- a/dataparser/queue/scanner.py +++ b/dataparser/queue/scanner.py @@ -48,8 +48,13 @@ def scan(self, workspace, ext, db_path): self.add_builtin() if self.xml_libraries: self.add_xml_libraries(self.xml_libraries) - for f in finder(workspace, ext): - self.queue.add(normalise_path(f), None, None) + if isinstance(type(ext), list): + for extension in ext: + for f in finder(workspace, extension): + self.queue.add(normalise_path(f), None, None) + else: + for f in finder(workspace, ext): + self.queue.add(normalise_path(f), None, None) while True: item = self.get_item() if not item: