<s> from __future__ import division <EOL> import json <EOL> import uuid <EOL> class OptionsMixin ( object ) : <EOL> def get_options ( self , specs ) : <EOL> options = { } <EOL> for spec in specs : <EOL> convert_f = None <EOL> use_default = False <EOL> if type ( spec ) == tuple : <EOL> key = spec [ <NUM_LIT:0> ] <EOL> if len ( spec ) > <NUM_LIT:1> : <EOL> convert_f = spec [ <NUM_LIT:1> ] <EOL> if len ( spec ) > <NUM_LIT:2> : <EOL> use_default = spec [ <NUM_LIT:2> ] <EOL> else : <EOL> key = spec <EOL> if self . has_input ( key ) or use_default : <EOL> val = self . get_input ( key ) <EOL> if convert_f is not None : <EOL> val = convert_f ( val ) <EOL> options [ key ] = val <EOL> return options <EOL> class RawJavaScriptText ( object ) : <EOL> def __init__ ( self , jstext = None ) : <EOL> self . jstext = jstext <EOL> def get_jstext ( self ) : <EOL> return self . jstext <EOL> class GMapLatLng ( RawJavaScriptText ) : <EOL> def __init__ ( self , lat , lng ) : <EOL> RawJavaScriptText . __init__ ( self ) <EOL> self . lat = lat <EOL> self . lng = lng <EOL> def get_jstext ( self ) : <EOL> return "<STR_LIT>" % ( self . lat , self . lng ) <EOL> class GMapColor ( RawJavaScriptText ) : <EOL> def __init__ ( self , r , g , b , a = <NUM_LIT:1> ) : <EOL> RawJavaScriptText . __init__ ( self ) <EOL> self . r = r <EOL> self . g = g <EOL> self . b = b <EOL> self . a = a <EOL> def get_jstext ( self ) : <EOL> return "<STR_LIT>" % ( self . r , self . g , self . b , self . a ) <EOL> class GMapWeightedLoc ( RawJavaScriptText ) : <EOL> def __init__ ( self , lat , lng , val ) : <EOL> RawJavaScriptText . __init__ ( self ) <EOL> self . lat = lat <EOL> self . lng = lng <EOL> self . val = val <EOL> def get_jstext ( self ) : <EOL> return "<STR_LIT>" % ( self . lat , self . lng , self . val ) <EOL> class RawJsJSONEncoder ( json . JSONEncoder ) : <EOL> def __init__ ( self , * args , ** kwargs ) : <EOL> json . JSONEncoder . __init__ ( self , * args , ** kwargs ) <EOL> self . _replacement_map = { } <EOL> def default ( self , o ) : <EOL> if isinstance ( o , RawJavaScriptText ) : <EOL> key = uuid . uuid4 ( ) . hex <EOL> self . _replacement_map [ key ] = o . get_jstext ( ) <EOL> return key <EOL> else : <EOL> return json . JSONEncoder . default ( self , o ) <EOL> def encode ( self , o ) : <EOL> result = json . JSONEncoder . encode ( self , o ) <EOL> for k , v in self . _replacement_map . iteritems ( ) : <EOL> result = result . replace ( '<STR_LIT>' % k , v ) <EOL> return result </s>
