def get_resource_import_name_token(ast, token):
    """
    If the given ast node is a library import and the token is its name, return
    the name token, otherwise, return None.
    """
    from robocorp_ls_core.basic import isinstance_name

    if (token.type == token.NAME and isinstance_name(ast, "ResourceImport")
            and ast.name == token.value  # I.e.: match the name, not the alias.
        ):
        return token
    return None
Beispiel #2
0
def get_keyword_name_token(ast, token):
    """
    If the given token is a keyword, return the token, otherwise return None.
    
    :note: this goes hand-in-hand with iter_keyword_usage_tokens.
    """
    from robocorp_ls_core.basic import isinstance_name

    if token.type == token.KEYWORD or (
        token.type == token.NAME and isinstance_name(ast, ("Fixture", "TestTemplate"))
    ):
        return _strip_token_bdd_prefix(token)
    return None
def create_keyword_usage_info(stack, node) -> Optional[KeywordUsageInfo]:
    """
    If this is a keyword usage node, return information on it, otherwise, 
    returns None.
    
    :note: this goes hand-in-hand with get_keyword_name_token.
    """
    from robot.api import Token
    from robocorp_ls_core.basic import isinstance_name

    if node.__class__.__name__ == "KeywordCall":
        token = _strip_token_bdd_prefix(node.get_token(Token.KEYWORD))
        if token is not None:
            node = _copy_of_node_replacing_token(node, token, Token.KEYWORD)
            keyword_name = token.value
            return KeywordUsageInfo(tuple(stack), node, token, keyword_name)

    elif isinstance_name(node, ("Fixture", "TestTemplate")):
        node, token = _strip_node_and_token_bdd_prefix(node, Token.NAME)
        keyword_name = token.value
        return KeywordUsageInfo(tuple(stack), node, token, keyword_name)

    return None
Beispiel #4
0
def test_isinstance_name():
    from robocorp_ls_core.basic import isinstance_name

    class A(object):
        pass

    class B(A):
        pass

    class C(B):
        pass

    for _ in range(2):
        assert isinstance_name(B(), "B")
        assert isinstance_name(B(), "A")
        assert isinstance_name(B(), "object")

        assert isinstance_name(B(), ("A", "C"))

        assert not isinstance_name(B(), "C")
        assert not isinstance_name(B(), ("C", "D"))