def process_page()

in src/dfcx_scrapi/agent_extract/pages.py [0:0]


    def process_page(self, page: types.Page, stats: types.AgentData):
        """Process a Single Page file."""
        page.display_name = self.common.parse_filepath(page.page_file, "page")
        page.display_name = self.common.clean_display_name(page.display_name)

        stats.graph.add_node(page.display_name)
        page.flow.graph.add_node(page.display_name)

        page.flow.all_pages.add(page.display_name)

        with open(page.page_file, "r", encoding="UTF-8") as page_file:
            page.data = json.load(page_file)
            page.entry = page.data.get("entryFulfillment", None)
            page.events = page.data.get("eventHandlers", None)
            page.form = page.data.get("form", None)
            page.routes = page.data.get("transitionRoutes", None)
            page.route_groups = page.data.get("transitionRouteGroups", None)
            page.resource_id = page.data.get("name", None)

            # Order of linting is important here
            stats = self.routes.process_entry(page, stats)
            stats = self.routes.process_routes(page, stats)
            stats = self.routes.process_events(page, stats)
            stats = self.process_form(page, stats)

            if page.route_groups:
                page, stats = self.routes.set_route_group_targets(page, stats)

            page_file.close()

        full_flow_id = f"{stats.agent_id}/flows/{page.flow.resource_id}"
        full_page_id = f"{full_flow_id}/pages/{page.resource_id}"
        stats.pages[page.flow.display_name].append(page.data)
        stats.flow_page_map[
            page.flow.display_name]["pages"][page.display_name] = full_page_id

        return stats