forked from solderpunk/AV-98
get_link now in ansirenderer
This commit is contained in:
parent
12c61f4317
commit
4f6ab9225b
|
@ -448,6 +448,14 @@ class AbstractRenderer():
|
||||||
for l in self.get_subscribe_links()[1:]:
|
for l in self.get_subscribe_links()[1:]:
|
||||||
self.links[mode].append(l[0])
|
self.links[mode].append(l[0])
|
||||||
return self.links[mode]
|
return self.links[mode]
|
||||||
|
def get_link(self,nb):
|
||||||
|
links = self.get_links()
|
||||||
|
if len(links) < nb:
|
||||||
|
print("Index too high! No link %s for %s" %(nb,self.url))
|
||||||
|
return None
|
||||||
|
else:
|
||||||
|
return links[nb-1]
|
||||||
|
|
||||||
#get_title is about the "content title", so the title in the page itself
|
#get_title is about the "content title", so the title in the page itself
|
||||||
def get_title(self):
|
def get_title(self):
|
||||||
return "Abstract title"
|
return "Abstract title"
|
||||||
|
|
59
offpunk.py
59
offpunk.py
|
@ -286,16 +286,6 @@ class GeminiItem():
|
||||||
toreturn.append(None)
|
toreturn.append(None)
|
||||||
return toreturn
|
return toreturn
|
||||||
|
|
||||||
#TODO: should be in ansirenderer
|
|
||||||
def get_link(self,nb):
|
|
||||||
# == None allows to return False, even if the list is empty
|
|
||||||
links = self.get_links()
|
|
||||||
if len(links) < nb:
|
|
||||||
print("Index too high! No link %s for %s" %(nb,self.url))
|
|
||||||
return None
|
|
||||||
else:
|
|
||||||
return links[nb-1]
|
|
||||||
|
|
||||||
#TODO: should be in ansirenderer
|
#TODO: should be in ansirenderer
|
||||||
def get_subscribe_links(self):
|
def get_subscribe_links(self):
|
||||||
if self.renderer:
|
if self.renderer:
|
||||||
|
@ -595,7 +585,9 @@ class GeminiClient(cmd.Cmd):
|
||||||
def complete_move(self,text,line,begidx,endidx):
|
def complete_move(self,text,line,begidx,endidx):
|
||||||
return self.complete_add(text,line,begidx,endidx)
|
return self.complete_add(text,line,begidx,endidx)
|
||||||
|
|
||||||
def get_renderer(self,url):
|
def get_renderer(self,url=None):
|
||||||
|
# If launched without argument, we return the renderer for the current URL
|
||||||
|
if not url: url = self.url
|
||||||
# reuse existing renderer if any
|
# reuse existing renderer if any
|
||||||
if url in self.rendererdic.keys():
|
if url in self.rendererdic.keys():
|
||||||
renderer = self.rendererdic[url]
|
renderer = self.rendererdic[url]
|
||||||
|
@ -818,17 +810,19 @@ class GeminiClient(cmd.Cmd):
|
||||||
print("What?")
|
print("What?")
|
||||||
return
|
return
|
||||||
# if we have no GeminiItem, there's nothing to do
|
# if we have no GeminiItem, there's nothing to do
|
||||||
if self.gi is None:
|
if self.current_url is None:
|
||||||
print("No links to index")
|
print("No links to index")
|
||||||
return
|
return
|
||||||
try:
|
else:
|
||||||
gi = self.gi.get_link(n)
|
r = self.get_renderer()
|
||||||
except IndexError:
|
if r:
|
||||||
print ("Index too high!")
|
url = r.get_link(n)
|
||||||
return
|
else:
|
||||||
|
print("No page with links")
|
||||||
|
return
|
||||||
|
|
||||||
self.index_index = n
|
self.index_index = n
|
||||||
self._go_to_gi(gi)
|
self._go_to_url(url)
|
||||||
|
|
||||||
### Settings
|
### Settings
|
||||||
def do_redirect(self,line):
|
def do_redirect(self,line):
|
||||||
|
@ -1157,18 +1151,18 @@ Current tour can be listed with `tour ls` and scrubbed with `tour clear`."""
|
||||||
if len(pair) == 1:
|
if len(pair) == 1:
|
||||||
# Just a single index
|
# Just a single index
|
||||||
n = int(index)
|
n = int(index)
|
||||||
gi = self.gi.get_link(n)
|
url = self.get_renderer().get_link(n)
|
||||||
self.list_add_line("tour",gi=gi,verbose=False)
|
self.list_add_line("tour",gi=GeminiItem(url),verbose=False)
|
||||||
elif len(pair) == 2:
|
elif len(pair) == 2:
|
||||||
# Two endpoints for a range of indices
|
# Two endpoints for a range of indices
|
||||||
if int(pair[0]) < int(pair[1]):
|
if int(pair[0]) < int(pair[1]):
|
||||||
for n in range(int(pair[0]), int(pair[1]) + 1):
|
for n in range(int(pair[0]), int(pair[1]) + 1):
|
||||||
gi = self.gi.get_link(n)
|
url = self.get_renderer().get_link(n)
|
||||||
self.list_add_line("tour",gi=gi,verbose=False)
|
self.list_add_line("tour",gi=GeminiItem(url),verbose=False)
|
||||||
else:
|
else:
|
||||||
for n in range(int(pair[0]), int(pair[1]) - 1, -1):
|
for n in range(int(pair[0]), int(pair[1]) - 1, -1):
|
||||||
gi = self.gi.get_link(n)
|
url = self.get_renderer().get_link(n)
|
||||||
self.list_add_line("tour",gi=gi,verbose=False)
|
self.list_add_line("tour",gi=GeminiItem(url),verbose=False)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
# Syntax error
|
# Syntax error
|
||||||
|
@ -1198,7 +1192,7 @@ Marks are temporary until shutdown (not saved to disk)."""
|
||||||
"""Display information about current page."""
|
"""Display information about current page."""
|
||||||
print("current url: %s" %self.current_url)
|
print("current url: %s" %self.current_url)
|
||||||
print("current renderer: %s" %self.rendererdic)
|
print("current renderer: %s" %self.rendererdic)
|
||||||
renderer = self.get_renderer(self.current_url)
|
renderer = self.get_renderer()
|
||||||
url = self.current_url
|
url = self.current_url
|
||||||
out = renderer.get_page_title() + "\n\n"
|
out = renderer.get_page_title() + "\n\n"
|
||||||
out += "URL : " + url + "\n"
|
out += "URL : " + url + "\n"
|
||||||
|
@ -1446,8 +1440,8 @@ see "handler" command to set your handler."""
|
||||||
if index:
|
if index:
|
||||||
last_gi = self.gi
|
last_gi = self.gi
|
||||||
try:
|
try:
|
||||||
gi = self.gi.get_link(index)
|
url = self.get_renderer().get_link(index)
|
||||||
self._go_to_gi(gi, update_hist = False, handle = False)
|
self._go_to_url(url, update_hist = False, handle = False)
|
||||||
except IndexError:
|
except IndexError:
|
||||||
print ("Index too high!")
|
print ("Index too high!")
|
||||||
self.gi = last_gi
|
self.gi = last_gi
|
||||||
|
@ -1589,7 +1583,7 @@ archives, which is a special historical list limited in size. It is similar to `
|
||||||
if deleted:
|
if deleted:
|
||||||
print("Removed from %s"%li)
|
print("Removed from %s"%li)
|
||||||
self.list_add_top("archives",limit=self.options["archives_size"])
|
self.list_add_top("archives",limit=self.options["archives_size"])
|
||||||
print("Archiving: %s"%self.get_renderer(self.current_url).get_page_title())
|
print("Archiving: %s"%self.get_renderer().get_page_title())
|
||||||
print("\x1b[2;34mCurrent maximum size of archives : %s\x1b[0m" %self.options["archives_size"])
|
print("\x1b[2;34mCurrent maximum size of archives : %s\x1b[0m" %self.options["archives_size"])
|
||||||
|
|
||||||
def list_add_line(self,list,gi=None,verbose=True):
|
def list_add_line(self,list,gi=None,verbose=True):
|
||||||
|
@ -1708,11 +1702,12 @@ archives, which is a special historical list limited in size. It is similar to `
|
||||||
elif not line.isnumeric():
|
elif not line.isnumeric():
|
||||||
print("go_to_line requires a number as parameter")
|
print("go_to_line requires a number as parameter")
|
||||||
else:
|
else:
|
||||||
gi = GeminiItem("list:///%s"%list)
|
r = self.get_renderer("list:///%s"%list)
|
||||||
gi = gi.get_link(int(line))
|
url = r.get_lin(int(line))
|
||||||
display = not self.sync_only
|
display = not self.sync_only
|
||||||
if gi:
|
if url:
|
||||||
self._go_to_gi(gi,handle=display)
|
self._go_to_url(url,handle=display)
|
||||||
|
#TODO url_mode ?
|
||||||
return gi.url_mode()
|
return gi.url_mode()
|
||||||
|
|
||||||
def list_show(self,list):
|
def list_show(self,list):
|
||||||
|
|
Loading…
Reference in New Issue