# -*- coding: utf-8 -*-
from random import randint


class StaticAnswers:
	"""
	collection of callable static/ semi-static strings
	"""
	def __init__(self, nick=""):
		self.nickname = nick
		self.helpfile = {
			'help':		'!help -- display this text',
			'version':	'!version domain.tld  -- receive XMPP server version',
			'uptime':	'!uptime domain.tld -- receive XMPP server uptime',
			'contact':	'!contact domain.tld -- receive XMPP server contact address info',
			'xep': 		'!xep XEP Number -- recieve information about the specified XEP'
		}
		self.possible_answers = {
			'1': 'I heard that, %s.',
			'2': 'I am sorry for that %s.',
			'3': '%s did you try turning it off and on again?'
		}
		self.error_messages = {
			'1': 'not reachable',
			'2': 'not a valid target'
		}
		self.keywords = {
			"keywords": ["!help", "!uptime", "!version", "!contact", "!xep"],
			"domain_keywords": ["!uptime", "!version", "!contact"],
			"no_arg_keywords": ["!help"],
			"number_keywords": ["!xep"]
		}

	def keys(self, key=""):
		# if specific keyword in referenced return that
		if key in self.keywords.keys():
			return self.keywords[key]

		# in any other case return the whole dict
		return self.keywords["keywords"]

	def gen_help(self):
		helpdoc = "\n".join(['%s' % value for (_, value) in self.helpfile.items()])
		return helpdoc

	def gen_answer(self):
		possible_answers = self.possible_answers
		return possible_answers[str(randint(1, possible_answers.__len__()))] % self.nickname

	def error(self,code):
		try:
			text = self.error_messages[str(code)]
		except KeyError:
			return 'unknown error'
		return text
