@@ -86,12 +86,8 @@ def show_repositories(self, repos: List[Dict[str, str]], date_range: str):
8686 print (f"🌟 Discover the hottest projects on GitHub" .center (self .terminal_width ))
8787 print (f"{ header_line } " )
8888
89- # Repository list with enhanced formatting
90- for i , repo in enumerate (repos , 1 ):
91- self ._print_repository_summary (i , repo )
92- # Add separator between repos (except for the last one)
93- if i < len (repos ):
94- print ("─" * min (60 , self .terminal_width - 10 ))
89+ # Paginate repository list
90+ self ._paginate_repositories (repos )
9591
9692 # Footer with stats
9793 print (f"\n { header_line } " )
@@ -254,6 +250,39 @@ def _paginate_content(self, lines: List[str]):
254250 print ("\n 📖 README reading interrupted." )
255251 break
256252
253+ def _paginate_repositories (self , repos : List [Dict [str , str ]]):
254+ """Display repositories with pagination."""
255+ repos_per_page = 5 # Show 5 repositories per page
256+ current_repo = 0
257+
258+ while current_repo < len (repos ):
259+ # Display current page of repositories
260+ end_repo = min (current_repo + repos_per_page , len (repos ))
261+
262+ for i in range (current_repo , end_repo ):
263+ repo = repos [i ]
264+ self ._print_repository_summary (i + 1 , repo )
265+ # Add separator between repos (except for the last one on the page)
266+ if i < end_repo - 1 :
267+ print ("─" * min (60 , self .terminal_width - 10 ))
268+
269+ current_repo = end_repo
270+
271+ # Check if there are more repositories
272+ if current_repo < len (repos ):
273+ remaining_repos = len (repos ) - current_repo
274+ print (f"\n --- More repositories available ({ remaining_repos } remaining) ---" )
275+
276+ try :
277+ user_input = input ("📋 Press Enter to see more repositories, 'q' to stop browsing: " ).strip ().lower ()
278+ if user_input == 'q' :
279+ print ("📋 Repository browsing stopped." )
280+ break
281+ print () # Add spacing before next page
282+ except KeyboardInterrupt :
283+ print ("\n 📋 Repository browsing interrupted." )
284+ break
285+
257286 def show_error (self , message : str ):
258287 """Display an error message."""
259288 print (f"❌ Error: { message } " )
0 commit comments