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')
|
||||
|
||||
|
||||
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):
|
||||
data = {}
|
||||
data['url_full'] = 'www.test.com'
|
||||
|
||||
@@ -3,6 +3,7 @@ from __future__ import unicode_literals
|
||||
|
||||
import re
|
||||
import time
|
||||
from urllib.parse import urlparse
|
||||
|
||||
from . import docs
|
||||
from .content import SubredditContent
|
||||
@@ -251,6 +252,15 @@ class SubredditPage(Page):
|
||||
else:
|
||||
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):
|
||||
if data['url_full'] in self.config.history:
|
||||
return self.term.attr('LinkSeen')
|
||||
@@ -331,7 +341,8 @@ class SubredditPage(Page):
|
||||
lambda data: self.term.attr('SubmissionSubreddit'),
|
||||
first))
|
||||
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":
|
||||
form.append((lambda data: data['url'],
|
||||
lambda data: self._url_attr(data), first))
|
||||
|
||||
@@ -84,7 +84,7 @@ hide_username = False
|
||||
; %E absolute edit time (NotImplemented)
|
||||
; %a author
|
||||
; %S subreddit
|
||||
; %u short url - 'self.reddit' or 'gfycat.com' (NotImplemented)
|
||||
; %u short url - 'self.reddit' or 'gfycat.com' for example
|
||||
; %U full url
|
||||
; %A saved
|
||||
; %h hidden
|
||||
|
||||
Reference in New Issue
Block a user