import itertools
import sys
from TexSoup import TexEnv,TexNode, RArg
from collections.abc import Iterable
def nodify(TexArray,envName="[tex]",parent=None):  
  env=TexEnv(envName,TexArray)
  node=TexNode(env)
  node.parent=parent
  return node
def desarg(tex):
  lst=[]
  for item in tex.contents:
    if type(item) is RArg:
      myitem=item.contents
      if type(myitem) is list:
        for myit in myitem:
          lst.append(myit)
      else:
        lst.append(myit)
    else:
      myitem=item      
      lst.append(myitem)  
  return nodify(lst,tex.name,tex.parent)
def getValFromCell(cell):
    unsafe=False
    lst= list(cell.contents)
    val= lst[0]
    if type(val) is TexNode and str(val.expr)=='$\sim$' :
      unsafe=True
      val = lst[1]
      val=checkFloat(str(val))
    elif type(val) is TexNode and val.name=='emph':
      unsafe=True
      val=val.string
      val=checkFloat(str(val))
    return (val,unsafe)

def checkFloat(x):
  try:
    float(x)
    return x
  except ValueError:
    return None