def __init__(
        self,
        value=None,
        font_height=FIRA_MONO_BOLD_FONT_HEIGHT,
        width=155,
        no_of_visible_lines=7,
        show_line_number=False,
        name="literal_display",
        command=empty_function,
        coordinates_name="topleft",
        coordinates_value=(0, 0),
    ):
        """Store data and perform setups.

        Parameters
        ==========

        value (string)
            text used as value of the widget.
        show_line_number (bool)
            indicates whether to show the line numbers
            or not, when editing the text.
        width (integer)
            width of the widget.
        no_of_visible_lines (positive integer)
            number of lines that can be seen in the
            widget.
        name (string)
            an arbitrary name to help identify the widget;
            it is assigned to the 'name' attribute.
        coordinates_name (string)
            represents attribute name of a pygame.Rect
            instance wherein to store the position
            information from the coordinates value parameter.
        coordinates_value (sequence w/ 2 integers)
            represents the x and y coordinates of a
            position in 2d space.
        """
        ### ensure value argument received is a python
        ### literal

        if not is_python_literal(repr(value)):
            raise TypeError("'value' received must be a python" " literal")

        ### ensure there is at least one visible line

        if no_of_visible_lines < 1:

            raise ValueError("'no_of_visible_lines' must be >= 1")

        ### store other arguments

        self.value = value
        self.font_height = font_height

        self.show_line_number = show_line_number

        self.width = width
        self.no_of_visible_lines = no_of_visible_lines

        self.command = command
        self.name = name

        ### create a surface to clean the image attribute
        ### surface every time the value changes

        height = ICON_HEIGHT + (font_height * no_of_visible_lines) + 3

        self.clean_surf = render_rect(width, height, LITERAL_DISPLAY_BG)

        ### use blit aligned to blit icon aligned to the
        ### topleft

        blit_aligned(
            ICON_SURF,
            self.clean_surf,
            retrieve_pos_from="topleft",
            assign_pos_to="topleft",
            offset_pos_by=(1, 1),
        )

        ### create an image from the clean surf
        self.image = self.clean_surf.copy()

        ### prepare style data
        self.prepare_style_data()

        ### update the image contents with the value
        self.update_image()

        ### create rect from the image attribute and
        ### position it

        self.rect = self.image.get_rect()
        setattr(self.rect, coordinates_name, coordinates_value)
Store data and perform setups.

        Parameters
        ==========

        value (string)
            text used as value of the widget.
        show_line_number (bool)
            indicates whether to show the line numbers
            or not, when editing the text.
        width (integer)
            width of the widget.
        no_of_visible_lines (positive integer)
            number of lines that can be seen in the
            widget.
        name (string)
            an arbitrary name to help identify the widget;
            it is assigned to the 'name' attribute.
        coordinates_name (string)
            represents attribute name of a pygame.Rect
            instance wherein to store the position
            information from the coordinates value parameter.
        coordinates_value (sequence w/ 2 integers)
            represents the x and y coordinates of a
            position in 2d space.
        
nodezator/widget/literaldisplay.py