Merge branch 'mfussenegger-search-engine-syntax'

https://github.com/The-Compiler/qutebrowser/pull/284
This commit is contained in:
Florian Bruhin 2014-11-27 22:19:44 +01:00
commit 1f666b2b2e
3 changed files with 23 additions and 14 deletions

View File

@ -115,6 +115,7 @@ Contributors, sorted by the number of commits in descending order:
* Claude * Claude
* rikn00 * rikn00
* Brian Jackson * Brian Jackson
* Mathias Fussenegger
* Peter Vilim * Peter Vilim
// QUTE_AUTHORS_END // QUTE_AUTHORS_END

View File

@ -91,22 +91,29 @@ class SearchUrlTests(unittest.TestCase):
self.assertEqual(url.host(), 'www.example.com') self.assertEqual(url.host(), 'www.example.com')
self.assertEqual(url.query(), 'q=testfoo') self.assertEqual(url.query(), 'q=testfoo')
def test_engine_post(self): def test_engine_pre(self):
"""Test search engine with an appended !hasbang.""" """Test first word is search engine name"""
url = urlutils._get_search_url('testfoo !test') url = urlutils._get_search_url('test testfoo')
self.assertEqual(url.host(), 'www.qutebrowser.org') self.assertEqual(url.host(), 'www.qutebrowser.org')
self.assertEqual(url.query(), 'q=testfoo') self.assertEqual(url.query(), 'q=testfoo')
def test_engine_pre(self): def test_engine_pre_whitespace_at_end(self):
"""Test search engine with a prepended !hasbang.""" """Test first word is search engine name"""
url = urlutils._get_search_url('!test testfoo') url = urlutils._get_search_url('test testfoo ')
self.assertEqual(url.host(), 'www.qutebrowser.org') self.assertEqual(url.host(), 'www.qutebrowser.org')
self.assertEqual(url.query(), 'q=testfoo') self.assertEqual(url.query(), 'q=testfoo')
def test_engine_with_bang_pre(self):
"""Test search engine with a prepended !hasbang."""
url = urlutils._get_search_url('!python testfoo')
self.assertEqual(url.host(), 'www.example.com')
self.assertEqual(url.query(), 'q=%21python testfoo')
def test_engine_wrong(self): def test_engine_wrong(self):
"""Test with wrong search engine.""" """Test with wrong search engine."""
with self.assertRaises(urlutils.FuzzyUrlError): url = urlutils._get_search_url('blub testfoo')
_ = urlutils._get_search_url('!blub testfoo') self.assertEqual(url.host(), 'www.example.com')
self.assertEqual(url.query(), 'q=blub testfoo')
def tearDown(self): def tearDown(self):
urlutils.config = self.config urlutils.config = self.config

View File

@ -46,17 +46,18 @@ def _get_search_url(txt):
The search URL as a QUrl. The search URL as a QUrl.
""" """
log.url.debug("Finding search engine for '{}'".format(txt)) log.url.debug("Finding search engine for '{}'".format(txt))
r = re.compile(r'(^|\s+)!(\w+)($|\s+)') r = re.compile(r'(^\w+)\s+(\w+)($|\s+)')
m = r.search(txt) m = r.search(txt)
if m: if m:
engine = m.group(2) engine = m.group(1)
try: try:
template = config.get('searchengines', engine) template = config.get('searchengines', engine)
except config.NoOptionError: except config.NoOptionError:
raise FuzzyUrlError("Search engine {} not found!".format( template = config.get('searchengines', 'DEFAULT')
engine)) term = txt
term = r.sub('', txt) else:
log.url.debug("engine {}, term '{}'".format(engine, term)) term = m.group(2)
log.url.debug("engine {}, term '{}'".format(engine, term))
else: else:
template = config.get('searchengines', 'DEFAULT') template = config.get('searchengines', 'DEFAULT')
term = txt term = txt