Implement %u format specifier
New test function for the new SubredditPage._url_str() function added to test_subreddit.py. Being able to see the information this specifier adds makes it trivial to tell if a post is a Reddit crosspost from a SubredditPage (more trivial than manually parsing a full URL from %U, anyway).
This commit is contained in:
@@ -679,6 +679,24 @@ def test_subreddit_page__submission_attr(config, terminal, subreddit_page):
|
|||||||
terminal.attr.assert_called_with('SubmissionTitleSeen')
|
terminal.attr.assert_called_with('SubmissionTitleSeen')
|
||||||
|
|
||||||
|
|
||||||
|
def test_subreddit_page__url_str(config, terminal, subreddit_page):
|
||||||
|
data = {
|
||||||
|
'url_type': 'selfpost',
|
||||||
|
'url': 'self.AskReddit',
|
||||||
|
'url_full': 'https://www.reddit.com/r/AskReddit/comments/99eh6b/without_saying_what_the_category_is_what_are_your/'
|
||||||
|
}
|
||||||
|
|
||||||
|
assert subreddit_page._url_str(data) == 'self.AskReddit'
|
||||||
|
|
||||||
|
data['url_type'] = 'x-post subreddit'
|
||||||
|
|
||||||
|
assert subreddit_page._url_str(data) == 'self.AskReddit'
|
||||||
|
|
||||||
|
data['url_type'] = 'external'
|
||||||
|
|
||||||
|
assert subreddit_page._url_str(data) == 'https://www.reddit.com/r/AskReddit/comments/99eh6b/without_saying_what_the_category_is_what_are_your/'
|
||||||
|
|
||||||
|
|
||||||
def test_subreddit_page__url_attr(config, terminal, subreddit_page):
|
def test_subreddit_page__url_attr(config, terminal, subreddit_page):
|
||||||
data = {}
|
data = {}
|
||||||
data['url_full'] = 'www.test.com'
|
data['url_full'] = 'www.test.com'
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ from __future__ import unicode_literals
|
|||||||
|
|
||||||
import re
|
import re
|
||||||
import time
|
import time
|
||||||
|
from urllib.parse import urlparse
|
||||||
|
|
||||||
from . import docs
|
from . import docs
|
||||||
from .content import SubredditContent
|
from .content import SubredditContent
|
||||||
@@ -251,6 +252,15 @@ class SubredditPage(Page):
|
|||||||
else:
|
else:
|
||||||
return self.term.attr('SubmissionTitle')
|
return self.term.attr('SubmissionTitle')
|
||||||
|
|
||||||
|
def _url_str(self, data):
|
||||||
|
# Both of these url_types indicate a URL of a subreddit/comment, and
|
||||||
|
# self.subreddit should be used as the display url
|
||||||
|
if data['url_type'] == 'selfpost' or \
|
||||||
|
data['url_type'].startswith('x-post'):
|
||||||
|
return data['url']
|
||||||
|
else:
|
||||||
|
return urlparse(data['url']).hostname
|
||||||
|
|
||||||
def _url_attr(self, data):
|
def _url_attr(self, data):
|
||||||
if data['url_full'] in self.config.history:
|
if data['url_full'] in self.config.history:
|
||||||
return self.term.attr('LinkSeen')
|
return self.term.attr('LinkSeen')
|
||||||
@@ -331,7 +341,8 @@ class SubredditPage(Page):
|
|||||||
lambda data: self.term.attr('SubmissionSubreddit'),
|
lambda data: self.term.attr('SubmissionSubreddit'),
|
||||||
first))
|
first))
|
||||||
elif item == "%u":
|
elif item == "%u":
|
||||||
raise NotImplementedError("'%u' subreddit_format specifier not yet supported")
|
form.append((lambda data: self._url_str(data),
|
||||||
|
lambda data: self._url_attr(data), first))
|
||||||
elif item == "%U":
|
elif item == "%U":
|
||||||
form.append((lambda data: data['url'],
|
form.append((lambda data: data['url'],
|
||||||
lambda data: self._url_attr(data), first))
|
lambda data: self._url_attr(data), first))
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ hide_username = False
|
|||||||
; %E absolute edit time (NotImplemented)
|
; %E absolute edit time (NotImplemented)
|
||||||
; %a author
|
; %a author
|
||||||
; %S subreddit
|
; %S subreddit
|
||||||
; %u short url - 'self.reddit' or 'gfycat.com' (NotImplemented)
|
; %u short url - 'self.reddit' or 'gfycat.com' for example
|
||||||
; %U full url
|
; %U full url
|
||||||
; %A saved
|
; %A saved
|
||||||
; %h hidden
|
; %h hidden
|
||||||
|
|||||||
Reference in New Issue
Block a user