JSXProp
Abstract representation of TSX/JSX prop, e.g <Component prop="value" />
.
Inherits from
HasValue, Expression, HasName, Editable
Properties
expression
Retrieves the JSX expression associated with this JSX prop.
Returns the JSX expression node if this prop has one, e.g., for props like prop=. For boolean props or string literal props, returns None.
Returns: JSXExpression | None: The JSX expression node if present, None otherwise.
extended
Returns a SymbolGroup of all extended nodes associated with this element.
Creates a SymbolGroup that provides a common interface for editing all extended nodes, such as decorators, modifiers, and comments associated with the element.
Args: None
Returns: SymbolGroup: A group containing this node and its extended nodes that allows batch modification through a common interface.
extended_source
Returns the source text representation of all extended nodes.
Gets the source text of all extended nodes combined. This property allows reading the source text of all extended nodes (e.g. decorators, export statements) associated with this node.
Returns: str: The combined source text of all extended nodes.
file
The file object that this Editable instance belongs to.
Retrieves or caches the file object associated with this Editable instance.
Returns: File: The File object containing this Editable instance.
filepath
The file path of the file that this Editable instance belongs to.
Returns a string representing the absolute file path of the File that contains this Editable instance.
Returns: str: The absolute file path.
full_name
Returns the full name of the object, including the namespace path.
Returns the complete qualified name of an object, including any parent class or namespace paths. For class methods, this returns the parent class’s full name followed by the method name. For chained attributes (e.g., ‘a.b’), this returns the full chained name.
Args: None
Returns: str | None: The complete qualified name of the object. Returns None if no name is available. For class methods, returns ‘ParentClass.method_name’. For chained attributes, returns the full chain (e.g., ‘a.b’). For simple names, returns just the name.
function_calls
Returns a list of all function calls contained within this expression.
Traverses the extended nodes of this expression to find all function calls within it. This is useful for tasks like analyzing call patterns or renaming function invocations.
Returns: list[FunctionCall]: A list of FunctionCall objects representing all function calls contained within this expression.
name
Retrieves the name of the object excluding any namespace prefixes.
Returns the “base” name of the object without any namespace or module prefix. For instance, for an object ‘a.b’, this method returns ‘b’.
Returns: str | None: The base name of the object as a string, or None if there is no associated name node.
parent_class
Find the class this node is contained in
parent_function
Find the function this node is contained in
parent_statement
Find the statement this node is contained in
resolved_value
Returns the resolved type of an Expression.
Returns the inferred type of the expression. For example a function call’s resolved value will be it’s definition.
Returns: Union[Expression, list[Expression]]: The resolved expression type(s). Returns a single Expression if there is only one resolved type, or a list of Expressions if there are multiple resolved types. Returns self if the expression is not resolvable or has no resolved types.
source
Text representation of the Editable instance.
Returns the source text of the Editable instance. This is the main property used to access the text content of any code element in GraphSitter.
Returns: str: The text content of this Editable instance.
value
Gets the value node of the object.
Returns the value node of the object implementing the HasValue interface. This node can represent various types of values, such as list elements, dictionary values, or expressions.
Returns: Expression | None: The value node of the object. None if no value is set.
variable_usages
Returns Editables for all TreeSitter node instances of variable usages within this node’s scope.
This method finds all variable identifier nodes in the TreeSitter AST, excluding:
- Function names in function calls
- Import names in import statements
- Property access identifiers (except the base object)
- Keyword argument names (in Python and TypeScript)
This is useful for variable renaming and usage analysis within a scope.
Returns: list[Editable]: A list of Editable nodes representing variable usages. Each Editable corresponds to a TreeSitter node instance where the variable is referenced.
Methods
ancestors
Find all ancestors of the node of the given type. Does not return itself
edit
Replace the source of this Editable
with new_src
.
Replaces the text representation of this Editable instance with new text content. The method handles indentation adjustments and transaction management.
Args:
new_src (str): The new source text to replace the current text with.
fix_indentation (bool): If True, adjusts the indentation of new_src
to match the current text’s indentation level. Defaults to False.
priority (int): The priority of the edit transaction. Higher priority edits are applied first. Defaults to 0.
dedupe (bool): If True, deduplicates identical transactions. Defaults to True.
Returns: None
find
Find and return matching nodes or substrings within an Editable instance.
This method searches through the extended_nodes of the Editable instance and returns all nodes or substrings that match the given search criteria.
Args: strings_to_match (Union[list[str], str]): One or more strings to search for. exact (bool): If True, only return nodes whose source exactly matches one of the strings_to_match. If False, return nodes that contain any of the strings_to_match as substrings. Defaults to False.
Returns: list[Editable]: A list of Editable instances that match the search criteria.
find_string_literals
Returns a list of string literals within this node’s source that match any of the given strings.
Args: strings_to_match (list[str]): A list of strings to search for in string literals. fuzzy_match (bool): If True, matches substrings within string literals. If False, only matches exact strings. Defaults to False.
Returns: list[Editable]: A list of Editable objects representing the matching string literals.
flag
Adds a visual flag comment to the end of this Editable’s source text.
Flags this Editable by appending a comment with emoji flags at the end of its source text. This is useful for visually highlighting specific nodes in the source code during development and debugging.
Returns: None
get_name
Returns the Name node of the object.
Retrieves the name node of the object which can be used for modification operations.
Returns: Name | ChainedAttribute | None: The name node of the object. Can be a Name node for simple names, a ChainedAttribute for names with namespaces (e.g., a.b), or None if the object has no name.
get_variable_usages
Returns Editables for all TreeSitter nodes corresponding to instances of variable usage that matches the given variable name.
Retrieves a list of variable usages that match a specified name, with an option for fuzzy matching. By default, excludes property identifiers and argument keywords.
Args: var_name (str): The variable name to search for. fuzzy_match (bool): If True, matches variables where var_name is a substring. If False, requires exact match. Defaults to False.
Returns: list[Editable]: List of Editable objects representing variable usage nodes matching the given name.
insert_after
Inserts source code after a JSX prop in a TypeScript/JSX file.
Inserts the provided source code after the current JSX prop, adding necessary spacing.
Args: new_src (str): The source code to insert after the prop. fix_indentation (bool, optional): Whether to fix the indentation of the inserted code. Defaults to False. newline (bool, optional): Whether to add a newline after the inserted code. Defaults to True. priority (int, optional): The priority of the insertion. Defaults to 0. dedupe (bool, optional): Whether to prevent duplicate insertions. Defaults to True.
Returns: None
insert_before
Insert a new source code string before a JSX prop in a React component.
Inserts a new string of source code before a JSX prop, maintaining proper spacing. Automatically adds a trailing space after the inserted code.
Args: new_src (str): The source code string to insert before the prop. fix_indentation (bool, optional): Whether to adjust the indentation of the inserted code. Defaults to False. newline (bool, optional): Whether to add a newline after the inserted code. Defaults to True. priority (int, optional): Priority of this insertion relative to others. Defaults to 0. dedupe (bool, optional): Whether to avoid duplicate insertions. Defaults to True.
Returns: None
is_wrapped_in
Check if this node is contained another node of the given class
parent_of_type
Find the first ancestor of the node of the given type. Does not return itself
reduce_condition
Reduces an editable to the following condition
remove
Deletes this Node and its related extended nodes (e.g. decorators, comments).
Removes the current node and its extended nodes (e.g. decorators, comments) from the codebase. After removing the node, it handles cleanup of any surrounding formatting based on the context.
Args: delete_formatting (bool): Whether to delete surrounding whitespace and formatting. Defaults to True. priority (int): Priority of the removal transaction. Higher priority transactions are executed first. Defaults to 0. dedupe (bool): Whether to deduplicate removal transactions at the same location. Defaults to True.
Returns: None
rename
Sets the name of an object and updates all its usages throughout the codebase.
This method renames a symbol (like a class, function, variable) and automatically updates all references to this symbol throughout the codebase, ensuring consistency across all usages.
Args: name (str): The new name to assign to the object.
Returns: None
replace
Search and replace occurrences of text within this node’s source and its extended nodes.
This method performs string replacement similar to Python’s string.replace(), with support for regex patterns. It operates on both the main node and any extended nodes (e.g. decorators, exports).
Args: old (str): The text or pattern to search for. new (str): The text to replace matches with. count (int, optional): Maximum number of replacements to make. Defaults to -1 (replace all). is_regex (bool, optional): Whether to treat ‘old’ as a regex pattern. Defaults to False. priority (int, optional): Priority of the replacement operation. Defaults to 0.
Returns: int: The total number of replacements made.
Raises: ValueError: If there are multiple occurrences of the substring in a node’s source.
search
Returns a list of all regex match of regex_pattern
, similar to python’s re.search().
Searches for matches of a regular expression pattern within the text of this node and its extended nodes.
Args: regex_pattern (str): The regular expression pattern to search for. include_strings (bool): When False, excludes the contents of string literals from the search. Defaults to True. include_comments (bool): When False, excludes the contents of comments from the search. Defaults to True.
Returns: list[Editable]: A list of Editable objects corresponding to the matches found.
set_name
Sets the name of a code element.
Modifies the name of the object’s underlying name node. Works with both simple names and chained attributes (e.g., ‘a.b’).
Args: name (str): The new name to set for the object.
Returns: None
set_value
Sets the value of the node’s value Expression.
Updates the value of the underlying Expression node if it exists. No action is taken if the value node is None.
Args: value (str): The new value to set.
Returns: None
Was this page helpful?