def get_imports(self, data): result = [] if DBJsonSetting.libraries in data: result += self.get_library_imports(data) if DBJsonSetting.variable_files in data: for var in data[DBJsonSetting.variable_files]: result.append(rf_table_name(var.keys()[0])) if DBJsonSetting.resources in data: for resource in data[DBJsonSetting.resources]: result.append(rf_table_name(resource)) return result
def get_table_name_from_index(self, object_name, keyword): """Returns the keyword table name from the index table ``keyword`` -- Keyword documentation to search from database. ``object_name`` -- Library or resource object name. """ return_kw = None return_table_name = None kw_object_name = None KwDetails = collections.namedtuple( 'KwDetails', ['table_name', 'kw', 'kw_object_name']) open_tab = normalise_path(self.open_tab) index_name = get_index_name(rf_table_name(open_tab)) index_data = get_data_from_json(path.join(self.index_dir, index_name)) for keyword_ in index_data[DBJsonSetting.keywords]: kw_canditate = keyword_[0] kw_object_name_alias = keyword_[4] kw_table_name = keyword_[3] kw_object_name = keyword_[2] if (object_name and object_name == kw_object_name_alias or object_name == kw_object_name): # Test kw if object names are equal if kw_equals_kw_candite(keyword, kw_canditate): return_kw = kw_canditate return_table_name = kw_table_name break elif not object_name: if kw_equals_kw_candite(keyword, kw_canditate): return_kw = kw_canditate return_table_name = kw_table_name break return KwDetails(table_name=return_table_name, kw=return_kw, kw_object_name=kw_object_name)
def create_view(self, new_view, view_db, index_db): """Changes the content of database/view_db/current_view.json ``new_view`` -- Path to the open tab in sublime. ``view_db`` -- Path to folder where current_view.json is. ``index_db`` -- Path in index database folder. When user changes between different robot framework data tabs, this function changes the context of the database/view_db/current_view.json. The current_view.json. is used to provide the completions for the Sublime on_query_completions API call. """ view_path = path.join(view_db, VIEW_FILE_NAME) new_view = normalise_path(new_view) index_table = 'index-{0}'.format(rf_table_name(new_view)) index_table = path.join(index_db, index_table) index_data = self.get_data(index_table) data = {} data[DBJsonSetting.variable] = index_data[DBJsonSetting.variable] data[VIEW_NAME] = new_view data[VIEW_MD5] = hashlib.md5(new_view.encode('utf-8')).hexdigest() data[KW_COMPLETION] = self.get_keyword_completions(index_data) if not path.exists(path.dirname(view_path)): mkdir(path.dirname(view_path)) f = open(view_path, 'w') json_dump(data, f, indent=4) f.close()
def put_item_to_db(self, item, db_path): """Creates the json file to self.db_path""" if DBJsonSetting.library_module in item: f_name = lib_table_name(item[DBJsonSetting.library_module]) elif DBJsonSetting.file_path in item: f_name = rf_table_name(item[DBJsonSetting.file_path]) f = open(os.path.join(db_path, f_name), 'w') json.dump(item, f) f.close()
def is_in_index(self, view_path, index_db): view_path_norm_path = normalise_path(view_path) index_table = 'index-{0:s}'.format(rf_table_name(view_path_norm_path)) try: files = listdir(index_db) except: return False if index_table in files: return True else: return False
def get_table_name_from_index(self, object_name, keyword): """Returns the keyword table name from the index table ``keyword`` -- Keyword documentation to search from database. ``object_name`` -- Library or resource object name. """ return_kw = None return_table_name = None kw_object_name = None KwDetails = collections.namedtuple( 'KwDetails', [ 'table_name', 'kw', 'kw_object_name' ] ) open_tab = normalise_path(self.open_tab) index_name = get_index_name(rf_table_name(open_tab)) index_data = get_data_from_json( path.join(self.index_dir, index_name) ) for keyword_ in index_data[DBJsonSetting.keywords]: kw_canditate = keyword_[0] kw_object_name_alias = keyword_[4] kw_table_name = keyword_[3] kw_object_name = keyword_[2] if (object_name and object_name == kw_object_name_alias or object_name == kw_object_name): # Test kw if object names are equal if kw_equals_kw_candite(keyword, kw_canditate): return_kw = kw_canditate return_table_name = kw_table_name break elif not object_name: if kw_equals_kw_candite(keyword, kw_canditate): return_kw = kw_canditate return_table_name = kw_table_name break return KwDetails( table_name=return_table_name, kw=return_kw, kw_object_name=kw_object_name )
def get_table_name_from_index(self, object_name, keyword): """Returns the keyword table name from the index table ``keyword`` -- Keyword documentation to search from database. ``object_name`` -- Library or resource object name. """ open_tab = normalise_path(self.open_tab) index_name = get_index_name(rf_table_name(open_tab)) index_data = get_data_from_json(path.join(self.index_dir, index_name)) for keyword_ in index_data[DBJsonSetting.keyword]: kw = keyword_[0] kw_object_name = keyword_[2] kw_table_name = keyword_[3] if object_name and object_name == kw_object_name: if kw_equals_kw_candite(keyword, kw): return kw_table_name elif not object_name: if kw_equals_kw_candite(keyword, kw): return kw_table_name
def get_table_name_from_index(self, object_name, keyword): """Returns the keyword table name from the index table ``keyword`` -- Keyword documentation to search from database. ``object_name`` -- Library or resource object name. """ open_tab = normalise_path(self.open_tab) index_name = get_index_name(rf_table_name(open_tab)) index_data = get_data_from_json( path.join(self.index_dir, index_name) ) for keyword_ in index_data[DBJsonSetting.keyword]: kw = keyword_[0] kw_object_name = keyword_[2] kw_table_name = keyword_[3] if object_name and object_name == kw_object_name: if kw_equals_kw_candite(keyword, kw): return kw_table_name elif not object_name: if kw_equals_kw_candite(keyword, kw): return kw_table_name
def get_table_name_from_index(self, object_name, keyword): """Returns the keyword table name from the index table ``keyword`` -- Keyword documentation to search from database. ``object_name`` -- Library or resource object name. """ open_tab = normalise_path(self.open_tab) index_name = get_index_name(rf_table_name(open_tab)) index_data = get_data_from_json( path.join(self.index_dir, index_name) ) for keyword_ in index_data[DBJsonSetting.keyword]: kw = keyword_[0] # This leaves bug in code if the there class name imported like: # com.company.object.robot In this case robot is stripped from # class name without actually checking should it be. kw_object_name = keyword_[2].rstrip('.' + self.rf_extension) kw_table_name = keyword_[3] if object_name and object_name == kw_object_name: if kw_equals_kw_candite(keyword, kw): return kw_table_name elif not object_name: if kw_equals_kw_candite(keyword, kw): return kw_table_name
def resource_a_table_name(self): return rf_table_name(self.resource_a_table_file)
def test_a_table_name(self): return rf_table_name(self.test_a_file)