Skip to content

Commit 2bb9fa3

Browse files
author
Panos
committed
pagination on the front page
1 parent 90e3486 commit 2bb9fa3

File tree

1 file changed

+35
-6
lines changed

1 file changed

+35
-6
lines changed

github_trending/display.py

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)