<s> """<STR_LIT>""" <EOL> from pygments . token import Token , STANDARD_TYPES <EOL> from pygments . util import add_metaclass <EOL> class StyleMeta ( type ) : <EOL> def __new__ ( mcs , name , bases , dct ) : <EOL> obj = type . __new__ ( mcs , name , bases , dct ) <EOL> for token in STANDARD_TYPES : <EOL> if token not in obj . styles : <EOL> obj . styles [ token ] = '<STR_LIT>' <EOL> def colorformat ( text ) : <EOL> if text [ <NUM_LIT:0> : <NUM_LIT:1> ] == '<STR_LIT:#>' : <EOL> col = text [ <NUM_LIT:1> : ] <EOL> if len ( col ) == <NUM_LIT:6> : <EOL> return col <EOL> elif len ( col ) == <NUM_LIT:3> : <EOL> return col [ <NUM_LIT:0> ] * <NUM_LIT:2> + col [ <NUM_LIT:1> ] * <NUM_LIT:2> + col [ <NUM_LIT:2> ] * <NUM_LIT:2> <EOL> elif text == '<STR_LIT>' : <EOL> return '<STR_LIT>' <EOL> assert False , "<STR_LIT>" % text <EOL> _styles = obj . _styles = { } <EOL> for ttype in obj . styles : <EOL> for token in ttype . split ( ) : <EOL> if token in _styles : <EOL> continue <EOL> ndef = _styles . get ( token . parent , None ) <EOL> styledefs = obj . styles . get ( token , '<STR_LIT>' ) . split ( ) <EOL> if not ndef or token is None : <EOL> ndef = [ '<STR_LIT>' , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , '<STR_LIT>' , '<STR_LIT>' , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] <EOL> elif '<STR_LIT>' in styledefs and token is not Token : <EOL> ndef = _styles [ Token ] [ : ] <EOL> else : <EOL> ndef = ndef [ : ] <EOL> _styles [ token ] = ndef <EOL> for styledef in obj . styles . get ( token , '<STR_LIT>' ) . split ( ) : <EOL> if styledef == '<STR_LIT>' : <EOL> pass <EOL> elif styledef == '<STR_LIT>' : <EOL> ndef [ <NUM_LIT:1> ] = <NUM_LIT:1> <EOL> elif styledef == '<STR_LIT>' : <EOL> ndef [ <NUM_LIT:1> ] = <NUM_LIT:0> <EOL> elif styledef == '<STR_LIT>' : <EOL> ndef [ <NUM_LIT:2> ] = <NUM_LIT:1> <EOL> elif styledef == '<STR_LIT>' : <EOL> ndef [ <NUM_LIT:2> ] = <NUM_LIT:0> <EOL> elif styledef == '<STR_LIT>' : <EOL> ndef [ <NUM_LIT:3> ] = <NUM_LIT:1> <EOL> elif styledef == '<STR_LIT>' : <EOL> ndef [ <NUM_LIT:3> ] = <NUM_LIT:0> <EOL> elif styledef [ : <NUM_LIT:3> ] == '<STR_LIT>' : <EOL> ndef [ <NUM_LIT:4> ] = colorformat ( styledef [ <NUM_LIT:3> : ] ) <EOL> elif styledef [ : <NUM_LIT:7> ] == '<STR_LIT>' : <EOL> ndef [ <NUM_LIT:5> ] = colorformat ( styledef [ <NUM_LIT:7> : ] ) <EOL> elif styledef == '<STR_LIT>' : <EOL> ndef [ <NUM_LIT:6> ] = <NUM_LIT:1> <EOL> elif styledef == '<STR_LIT>' : <EOL> ndef [ <NUM_LIT:7> ] = <NUM_LIT:1> <EOL> elif styledef == '<STR_LIT>' : <EOL> ndef [ <NUM_LIT:8> ] = <NUM_LIT:1> <EOL> else : <EOL> ndef [ <NUM_LIT:0> ] = colorformat ( styledef ) <EOL> return obj <EOL> def style_for_token ( cls , token ) : <EOL> t = cls . _styles [ token ] <EOL> return { <EOL> '<STR_LIT>' : t [ <NUM_LIT:0> ] or None , <EOL> '<STR_LIT>' : bool ( t [ <NUM_LIT:1> ] ) , <EOL> '<STR_LIT>' : bool ( t [ <NUM_LIT:2> ] ) , <EOL> '<STR_LIT>' : bool ( t [ <NUM_LIT:3> ] ) , <EOL> '<STR_LIT>' : t [ <NUM_LIT:4> ] or None , <EOL> '<STR_LIT>' : t [ <NUM_LIT:5> ] or None , <EOL> '<STR_LIT>' : bool ( t [ <NUM_LIT:6> ] ) or None , <EOL> '<STR_LIT>' : bool ( t [ <NUM_LIT:7> ] ) or None , <EOL> '<STR_LIT>' : bool ( t [ <NUM_LIT:8> ] ) or None , <EOL> } <EOL> def list_styles ( cls ) : <EOL> return list ( cls ) <EOL> def styles_token ( cls , ttype ) : <EOL> return ttype in cls . _styles <EOL> def __iter__ ( cls ) : <EOL> for token in cls . _styles : <EOL> yield token , cls . style_for_token ( token ) <EOL> def __len__ ( cls ) : <EOL> return len ( cls . _styles ) <EOL> @ add_metaclass ( StyleMeta ) <EOL> class Style ( object ) : <EOL> background_color = '<STR_LIT>' <EOL> highlight_color = '<STR_LIT>' <EOL> styles = { } </s>
