#!/usr/bin/env python3
#coding=utf-8

import re



class Parse:
	
	
	
	def __init__(self, radek):
		self.radek = radek
		self.PWM = False
		self.W = False
		self.A = False
		self.V = False
		self.ur = False
		self.ur0 = False
		self.ur1 = False
		self.ADCV = False
		self.ADCA = False
		self.WH = False
		self.T = False
		
		
	def isEmpty(self):
		self.radek = self.radek.replace('b\'', '')
		self.radek = self.radek.replace('\n', '')
		
		if(len(self.radek) == 0):
			return 1
		return 0
	
	def getMode(self):
		self.mod = re.findall(r'.*M:([0-9]*).*', self.radek)
		if len(self.mod) == 0:
			return False
		else:
			self.mod = self.mod[0]
			return self.mod
			
	def getMeze(self):
		pomocne = re.findall(r'U:([0-9]*):([0-9]*):([0-9]*)', self.radek)
		if len(pomocne) == 0:
			return False
		if len(pomocne[0]) != 3:
			return False
		else:
			self.ur = pomocne[0][1]
			self.ur0 = pomocne[0][0]
			self.ur1 = pomocne[0][2]
			return True
			
	def getV(self):
		pom = self.getVal(r'M.*?([0-9]*)V')
		#print pom
		if pom == False:
			return False
		else:
			self.V = pom
			return self.V
			
	def getT(self):
		pom = self.getVal(r'M:.*?([0-9]*)C')
		
		if pom == False:
			return False
		else:
			self.T = pom
			return self.T
		
	def getA(self):
		pom = self.getVal(r'M:.*?([0-9]*)mA')
		if pom == False:
			return False
		else:
			self.A = pom
			return self.A
			
	def getW(self):
		pom = self.getVal(r'M:.*?([0-9]*)W')
		if pom == False:
			return False
		else:
			self.W = pom
			return self.W
			
	def getPWM(self):
		pom = self.getVal(r'M:.*?([0-9]*)us')
		if pom == False:
			return False
		else:
			self.PWM = pom
			return self.PWM
	
	def getWH(self):
		pom = self.getVal(r'M:.*?([0-9]*)Wh')
		if pom == False:
			return False
		else:
			self.WH = pom
			return self.WH
		
	def getVal(self, regular):
		pom = re.findall(regular, self.radek)
		#print regular, self.radek, pom, len(pom)
		if len(pom) == 0:
			return False
		else:
			vys = pom[0]
			return vys
			
	def getADCV(self):
		pom = self.getVal(r'M:.*?([0-9]*)[|][0-9]*V')
		if pom == False:
			return False
		else:
			self.ADCV = pom
			return self.ADCV
			
	def getADCA(self):
		pom = self.getVal(r'M:.*?([0-9]*)[|][0-9]*mA')
		if pom == False:
			return False
		else:
			self.ADCA = pom
			return self.ADCA
                        
	def getRESET(self):
		pom = self.getVal(r'RESET')
		if pom == False:
			return False
		else:
			return True
	
	def getSAVE(self):
		pom = self.getVal(r'SAVE')
		if pom == False:
			return False
		else:
			return True
		
	def isValues(self):
		self.getV()
		self.getA()
		self.getW()
		self.getPWM()
		self.getWH()
		self.getT()
		
		return self.V and self.A and self.W and self.PWM and self.WH and self.T
		
	def isMeze(self):
		self.getMeze()
		print self.ur, self.ur1
		return self.ur and self.ur0 and self.ur1

