From 7d37b8cc1f0bc5738c6fe95043277250a0a8d4a3 Mon Sep 17 00:00:00 2001 From: Igor Chubin Date: Sat, 16 Feb 2019 21:12:52 +0100 Subject: [PATCH] rosetta output format fixed --- lib/adapter/adapter.py | 5 ++++- lib/adapter/rosetta.py | 23 +++++++++++++++++++---- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/lib/adapter/adapter.py b/lib/adapter/adapter.py index b3d7671..84f0299 100644 --- a/lib/adapter/adapter.py +++ b/lib/adapter/adapter.py @@ -37,6 +37,9 @@ class Adapter(object): """ pass + def _get_output_format(self, _topic): + return self._output_format + def get_page_dict(self, topic, request_options=None): """ Return page dict for `topic` @@ -45,6 +48,6 @@ class Adapter(object): 'topic': topic, 'topic_type': self._adapter_name, 'answer': self._get_page(topic, request_options=request_options), - 'format': self._output_format, + 'format': self._get_output_format(topic), } return answer_dict diff --git a/lib/adapter/rosetta.py b/lib/adapter/rosetta.py index 67c7a26..8b6e7c2 100644 --- a/lib/adapter/rosetta.py +++ b/lib/adapter/rosetta.py @@ -59,14 +59,29 @@ class Rosetta(Adapter): answer = "".join("%s\n" % x for x in sorted(answer)) return answer - def _get_task(self, lang, query): - if lang not in self._rosetta_code_name: - return "" - + @staticmethod + def _parse_query(query): if '/' in query: task, subquery = query.split('/', 1) else: task, subquery = query, None + return task, subquery + + def _get_output_format(self, topic): + if '/' in topic: + subquery = topic.split('/')[-1] + else: + subquery = topic + + if subquery in [':list']: + return 'text' + return self._output_format + + def _get_task(self, lang, query): + if lang not in self._rosetta_code_name: + return "" + + task, subquery = self._parse_query(query) if task == ':list': return self._rosetta_get_list(lang)