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
예제 #2
0
 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)
예제 #4
0
    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 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()
예제 #6
0
 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 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
예제 #9
0
 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)
 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)