Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Source file lTerm_resources.ml
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040(*
* lTerm_resources.ml
* ------------------
* Copyright : (c) 2011, Jeremie Dimino <jeremie@dimino.org>
* Licence : BSD3
*
* This file is a part of Lambda-Term.
*)(* little hack to maintain 4.02.3 compat with warnings *)moduleString=struct[@@@ocaml.warning"-3-32"]letlowercase_ascii=StringLabels.lowercaseincludeStringendlet(>>=)=Lwt.(>>=)lethome=trySys.getenv"HOME"withNot_found->try(Unix.getpwuid(Unix.getuid())).Unix.pw_dirwithUnix.Unix_error_|Not_found->ifSys.win32thentrySys.getenv"AppData"withNot_found->""else""typexdg_location=Cache|Config|DatamoduleXDGBD=structlet(/)=Filename.concatletgetenv_varunix_defaultwin32_default=trySys.getenvenv_varwithNot_found->ifSys.win32thenwin32_defaultelseunix_defaultletcache=get"XDG_CACHE_HOME"(home/".cache")(home/"Local Settings"/"Cache")letconfig=get"XDG_CONFIG_HOME"(home/".config")(home/"Local Settings")letdata=get"XDG_DATA_HOME"(home/".local"/"share")(trySys.getenv"AppData"withNot_found->"")letuser_dir=function|Cache->cache|Config->config|Data->dataendletxdgbd_warninglocfile_name=letloc_name=matchlocwith|Cache->"$XDG_CACHE_HOME"|Config->"$XDG_CONFIG_HOME"|Data->"$XDG_DATA_HOME"inPrintf.eprintf"Warning: it is recommended to move `%s` to `%s`, see:\n%s\n"file_nameloc_name"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"letxdgbd_file~loc?(allow_legacy_location=false)name=lethome_file=Filename.concathomenameinifallow_legacy_location&&Sys.file_existshome_filethenlet()=xdgbd_warninglochome_fileinhome_fileelseFilename.concat(XDGBD.user_dirloc)name(* +-----------------------------------------------------------------+
| Types |
+-----------------------------------------------------------------+ *)typepattern=stringlist(* Type of a pattern. For example the pattern ["foo*bar*"] is
represented by the list [["foo"; "bar"; ""]]. *)typet=(pattern*string)list(* +-----------------------------------------------------------------+
| Pattern matching |
+-----------------------------------------------------------------+ *)letsub_equalstrofspatt=letstr_len=String.lengthstrandpatt_len=String.lengthpattinletrecloopofsofs_patt=ofs_patt=patt_len||(str.[ofs]=patt.[ofs_patt]&&loop(ofs+1)(ofs_patt+1))inofs+patt_len<=str_len&&loopofs0letpattern_matchpatternstring=letlength=String.lengthstringinletrecloopoffsetpattern=ifoffset=lengththenpattern=[]||pattern=[""]elsematchpatternwith|[]->false|literal::pattern->letliteral_length=String.lengthliteralinletmax_offset=length-literal_lengthinletrecsearchoffset=offset<=max_offset&&((sub_equalstringoffsetliteral&&loop(offset+literal_length)pattern)||search(offset+1))insearchoffsetinmatchpatternwith|[]->string=""|literal::pattern->sub_equalstring0literal&&loop(String.lengthliteral)pattern(* +-----------------------------------------------------------------+
| Pattern creation |
+-----------------------------------------------------------------+ *)letsplitpattern=letlen=String.lengthpatterninletrecloopofs=ifofs=lenthen[""]elsematchtrySome(String.index_frompatternofs'*')withNot_found->Nonewith|Someofs'->String.subpatternofs(ofs'-ofs)::loop(ofs'+1)|None->[String.subpatternofs(len-ofs)]inloop0(* +-----------------------------------------------------------------+
| Set operations |
+-----------------------------------------------------------------+ *)letempty=[]letrecgetkey=function|[]->""|(pattern,value)::rest->ifpattern_matchpatternkeythenvalueelsegetkeyrestletaddpatternvalueresources=(splitpattern,value)::resourcesletmerge=(@)(* +-----------------------------------------------------------------+
| Readers |
+-----------------------------------------------------------------+ *)exceptionErrorofstringleterrorstr=raise(Errorstr)letget_boolkeyresources=matchString.lowercase_ascii(getkeyresources)with|"true"->Sometrue|"false"->Somefalse|""|"none"->None|s->Printf.ksprintferror"invalid boolean value %S"slethex_of_charch=matchchwith|'0'..'9'->Char.codech-Char.code'0'|'A'..'F'->Char.codech-Char.code'A'+10|'a'..'f'->Char.codech-Char.code'a'+10|_->raiseExitletget_colorkeyresources=matchString.lowercase_ascii(getkeyresources)with(* Terminal colors. *)|"default"->SomeLTerm_style.default|"black"->SomeLTerm_style.black|"red"->SomeLTerm_style.red|"green"->SomeLTerm_style.green|"yellow"->SomeLTerm_style.yellow|"blue"->SomeLTerm_style.blue|"magenta"->SomeLTerm_style.magenta|"cyan"->SomeLTerm_style.cyan|"white"->SomeLTerm_style.white|"lblack"->SomeLTerm_style.lblack|"lred"->SomeLTerm_style.lred|"lgreen"->SomeLTerm_style.lgreen|"lyellow"->SomeLTerm_style.lyellow|"lblue"->SomeLTerm_style.lblue|"lmagenta"->SomeLTerm_style.lmagenta|"lcyan"->SomeLTerm_style.lcyan|"lwhite"->SomeLTerm_style.lwhite|"light-black"->SomeLTerm_style.lblack|"light-red"->SomeLTerm_style.lred|"light-green"->SomeLTerm_style.lgreen|"light-yellow"->SomeLTerm_style.lyellow|"light-blue"->SomeLTerm_style.lblue|"light-magenta"->SomeLTerm_style.lmagenta|"light-cyan"->SomeLTerm_style.lcyan|"light-white"->SomeLTerm_style.lwhite(* X11 colors. *)|"x-snow"->Some(LTerm_style.rgb255250250)|"x-ghost-white"->Some(LTerm_style.rgb248248255)|"x-ghostwhite"->Some(LTerm_style.rgb248248255)|"x-white-smoke"->Some(LTerm_style.rgb245245245)|"x-whitesmoke"->Some(LTerm_style.rgb245245245)|"x-gainsboro"->Some(LTerm_style.rgb220220220)|"x-floral-white"->Some(LTerm_style.rgb255250240)|"x-floralwhite"->Some(LTerm_style.rgb255250240)|"x-old-lace"->Some(LTerm_style.rgb253245230)|"x-oldlace"->Some(LTerm_style.rgb253245230)|"x-linen"->Some(LTerm_style.rgb250240230)|"x-antique-white"->Some(LTerm_style.rgb250235215)|"x-antiquewhite"->Some(LTerm_style.rgb250235215)|"x-papaya-whip"->Some(LTerm_style.rgb255239213)|"x-papayawhip"->Some(LTerm_style.rgb255239213)|"x-blanched-almond"->Some(LTerm_style.rgb255235205)|"x-blanchedalmond"->Some(LTerm_style.rgb255235205)|"x-bisque"->Some(LTerm_style.rgb255228196)|"x-peach-puff"->Some(LTerm_style.rgb255218185)|"x-peachpuff"->Some(LTerm_style.rgb255218185)|"x-navajo-white"->Some(LTerm_style.rgb255222173)|"x-navajowhite"->Some(LTerm_style.rgb255222173)|"x-moccasin"->Some(LTerm_style.rgb255228181)|"x-cornsilk"->Some(LTerm_style.rgb255248220)|"x-ivory"->Some(LTerm_style.rgb255255240)|"x-lemon-chiffon"->Some(LTerm_style.rgb255250205)|"x-lemonchiffon"->Some(LTerm_style.rgb255250205)|"x-seashell"->Some(LTerm_style.rgb255245238)|"x-honeydew"->Some(LTerm_style.rgb240255240)|"x-mint-cream"->Some(LTerm_style.rgb245255250)|"x-mintcream"->Some(LTerm_style.rgb245255250)|"x-azure"->Some(LTerm_style.rgb240255255)|"x-alice-blue"->Some(LTerm_style.rgb240248255)|"x-aliceblue"->Some(LTerm_style.rgb240248255)|"x-lavender"->Some(LTerm_style.rgb230230250)|"x-lavender-blush"->Some(LTerm_style.rgb255240245)|"x-lavenderblush"->Some(LTerm_style.rgb255240245)|"x-misty-rose"->Some(LTerm_style.rgb255228225)|"x-mistyrose"->Some(LTerm_style.rgb255228225)|"x-white"->Some(LTerm_style.rgb255255255)|"x-black"->Some(LTerm_style.rgb000)|"x-dark-slate-gray"->Some(LTerm_style.rgb477979)|"x-darkslategray"->Some(LTerm_style.rgb477979)|"x-dark-slate-grey"->Some(LTerm_style.rgb477979)|"x-darkslategrey"->Some(LTerm_style.rgb477979)|"x-dim-gray"->Some(LTerm_style.rgb105105105)|"x-dimgray"->Some(LTerm_style.rgb105105105)|"x-dim-grey"->Some(LTerm_style.rgb105105105)|"x-dimgrey"->Some(LTerm_style.rgb105105105)|"x-slate-gray"->Some(LTerm_style.rgb112128144)|"x-slategray"->Some(LTerm_style.rgb112128144)|"x-slate-grey"->Some(LTerm_style.rgb112128144)|"x-slategrey"->Some(LTerm_style.rgb112128144)|"x-light-slate-gray"->Some(LTerm_style.rgb119136153)|"x-lightslategray"->Some(LTerm_style.rgb119136153)|"x-light-slate-grey"->Some(LTerm_style.rgb119136153)|"x-lightslategrey"->Some(LTerm_style.rgb119136153)|"x-gray"->Some(LTerm_style.rgb190190190)|"x-grey"->Some(LTerm_style.rgb190190190)|"x-light-grey"->Some(LTerm_style.rgb211211211)|"x-lightgrey"->Some(LTerm_style.rgb211211211)|"x-light-gray"->Some(LTerm_style.rgb211211211)|"x-lightgray"->Some(LTerm_style.rgb211211211)|"x-midnight-blue"->Some(LTerm_style.rgb2525112)|"x-midnightblue"->Some(LTerm_style.rgb2525112)|"x-navy"->Some(LTerm_style.rgb00128)|"x-navy-blue"->Some(LTerm_style.rgb00128)|"x-navyblue"->Some(LTerm_style.rgb00128)|"x-cornflower-blue"->Some(LTerm_style.rgb100149237)|"x-cornflowerblue"->Some(LTerm_style.rgb100149237)|"x-dark-slate-blue"->Some(LTerm_style.rgb7261139)|"x-darkslateblue"->Some(LTerm_style.rgb7261139)|"x-slate-blue"->Some(LTerm_style.rgb10690205)|"x-slateblue"->Some(LTerm_style.rgb10690205)|"x-medium-slate-blue"->Some(LTerm_style.rgb123104238)|"x-mediumslateblue"->Some(LTerm_style.rgb123104238)|"x-light-slate-blue"->Some(LTerm_style.rgb132112255)|"x-lightslateblue"->Some(LTerm_style.rgb132112255)|"x-medium-blue"->Some(LTerm_style.rgb00205)|"x-mediumblue"->Some(LTerm_style.rgb00205)|"x-royal-blue"->Some(LTerm_style.rgb65105225)|"x-royalblue"->Some(LTerm_style.rgb65105225)|"x-blue"->Some(LTerm_style.rgb00255)|"x-dodger-blue"->Some(LTerm_style.rgb30144255)|"x-dodgerblue"->Some(LTerm_style.rgb30144255)|"x-deep-sky-blue"->Some(LTerm_style.rgb0191255)|"x-deepskyblue"->Some(LTerm_style.rgb0191255)|"x-sky-blue"->Some(LTerm_style.rgb135206235)|"x-skyblue"->Some(LTerm_style.rgb135206235)|"x-light-sky-blue"->Some(LTerm_style.rgb135206250)|"x-lightskyblue"->Some(LTerm_style.rgb135206250)|"x-steel-blue"->Some(LTerm_style.rgb70130180)|"x-steelblue"->Some(LTerm_style.rgb70130180)|"x-light-steel-blue"->Some(LTerm_style.rgb176196222)|"x-lightsteelblue"->Some(LTerm_style.rgb176196222)|"x-light-blue"->Some(LTerm_style.rgb173216230)|"x-lightblue"->Some(LTerm_style.rgb173216230)|"x-powder-blue"->Some(LTerm_style.rgb176224230)|"x-powderblue"->Some(LTerm_style.rgb176224230)|"x-pale-turquoise"->Some(LTerm_style.rgb175238238)|"x-paleturquoise"->Some(LTerm_style.rgb175238238)|"x-dark-turquoise"->Some(LTerm_style.rgb0206209)|"x-darkturquoise"->Some(LTerm_style.rgb0206209)|"x-medium-turquoise"->Some(LTerm_style.rgb72209204)|"x-mediumturquoise"->Some(LTerm_style.rgb72209204)|"x-turquoise"->Some(LTerm_style.rgb64224208)|"x-cyan"->Some(LTerm_style.rgb0255255)|"x-light-cyan"->Some(LTerm_style.rgb224255255)|"x-lightcyan"->Some(LTerm_style.rgb224255255)|"x-cadet-blue"->Some(LTerm_style.rgb95158160)|"x-cadetblue"->Some(LTerm_style.rgb95158160)|"x-medium-aquamarine"->Some(LTerm_style.rgb102205170)|"x-mediumaquamarine"->Some(LTerm_style.rgb102205170)|"x-aquamarine"->Some(LTerm_style.rgb127255212)|"x-dark-green"->Some(LTerm_style.rgb01000)|"x-darkgreen"->Some(LTerm_style.rgb01000)|"x-dark-olive-green"->Some(LTerm_style.rgb8510747)|"x-darkolivegreen"->Some(LTerm_style.rgb8510747)|"x-dark-sea-green"->Some(LTerm_style.rgb143188143)|"x-darkseagreen"->Some(LTerm_style.rgb143188143)|"x-sea-green"->Some(LTerm_style.rgb4613987)|"x-seagreen"->Some(LTerm_style.rgb4613987)|"x-medium-sea-green"->Some(LTerm_style.rgb60179113)|"x-mediumseagreen"->Some(LTerm_style.rgb60179113)|"x-light-sea-green"->Some(LTerm_style.rgb32178170)|"x-lightseagreen"->Some(LTerm_style.rgb32178170)|"x-pale-green"->Some(LTerm_style.rgb152251152)|"x-palegreen"->Some(LTerm_style.rgb152251152)|"x-spring-green"->Some(LTerm_style.rgb0255127)|"x-springgreen"->Some(LTerm_style.rgb0255127)|"x-lawn-green"->Some(LTerm_style.rgb1242520)|"x-lawngreen"->Some(LTerm_style.rgb1242520)|"x-green"->Some(LTerm_style.rgb02550)|"x-chartreuse"->Some(LTerm_style.rgb1272550)|"x-medium-spring-green"->Some(LTerm_style.rgb0250154)|"x-mediumspringgreen"->Some(LTerm_style.rgb0250154)|"x-green-yellow"->Some(LTerm_style.rgb17325547)|"x-greenyellow"->Some(LTerm_style.rgb17325547)|"x-lime-green"->Some(LTerm_style.rgb5020550)|"x-limegreen"->Some(LTerm_style.rgb5020550)|"x-yellow-green"->Some(LTerm_style.rgb15420550)|"x-yellowgreen"->Some(LTerm_style.rgb15420550)|"x-forest-green"->Some(LTerm_style.rgb3413934)|"x-forestgreen"->Some(LTerm_style.rgb3413934)|"x-olive-drab"->Some(LTerm_style.rgb10714235)|"x-olivedrab"->Some(LTerm_style.rgb10714235)|"x-dark-khaki"->Some(LTerm_style.rgb189183107)|"x-darkkhaki"->Some(LTerm_style.rgb189183107)|"x-khaki"->Some(LTerm_style.rgb240230140)|"x-pale-goldenrod"->Some(LTerm_style.rgb238232170)|"x-palegoldenrod"->Some(LTerm_style.rgb238232170)|"x-light-goldenrod-yellow"->Some(LTerm_style.rgb250250210)|"x-lightgoldenrodyellow"->Some(LTerm_style.rgb250250210)|"x-light-yellow"->Some(LTerm_style.rgb255255224)|"x-lightyellow"->Some(LTerm_style.rgb255255224)|"x-yellow"->Some(LTerm_style.rgb2552550)|"x-gold"->Some(LTerm_style.rgb2552150)|"x-light-goldenrod"->Some(LTerm_style.rgb238221130)|"x-lightgoldenrod"->Some(LTerm_style.rgb238221130)|"x-goldenrod"->Some(LTerm_style.rgb21816532)|"x-dark-goldenrod"->Some(LTerm_style.rgb18413411)|"x-darkgoldenrod"->Some(LTerm_style.rgb18413411)|"x-rosy-brown"->Some(LTerm_style.rgb188143143)|"x-rosybrown"->Some(LTerm_style.rgb188143143)|"x-indian-red"->Some(LTerm_style.rgb2059292)|"x-indianred"->Some(LTerm_style.rgb2059292)|"x-saddle-brown"->Some(LTerm_style.rgb1396919)|"x-saddlebrown"->Some(LTerm_style.rgb1396919)|"x-sienna"->Some(LTerm_style.rgb1608245)|"x-peru"->Some(LTerm_style.rgb20513363)|"x-burlywood"->Some(LTerm_style.rgb222184135)|"x-beige"->Some(LTerm_style.rgb245245220)|"x-wheat"->Some(LTerm_style.rgb245222179)|"x-sandy-brown"->Some(LTerm_style.rgb24416496)|"x-sandybrown"->Some(LTerm_style.rgb24416496)|"x-tan"->Some(LTerm_style.rgb210180140)|"x-chocolate"->Some(LTerm_style.rgb21010530)|"x-firebrick"->Some(LTerm_style.rgb1783434)|"x-brown"->Some(LTerm_style.rgb1654242)|"x-dark-salmon"->Some(LTerm_style.rgb233150122)|"x-darksalmon"->Some(LTerm_style.rgb233150122)|"x-salmon"->Some(LTerm_style.rgb250128114)|"x-light-salmon"->Some(LTerm_style.rgb255160122)|"x-lightsalmon"->Some(LTerm_style.rgb255160122)|"x-orange"->Some(LTerm_style.rgb2551650)|"x-dark-orange"->Some(LTerm_style.rgb2551400)|"x-darkorange"->Some(LTerm_style.rgb2551400)|"x-coral"->Some(LTerm_style.rgb25512780)|"x-light-coral"->Some(LTerm_style.rgb240128128)|"x-lightcoral"->Some(LTerm_style.rgb240128128)|"x-tomato"->Some(LTerm_style.rgb2559971)|"x-orange-red"->Some(LTerm_style.rgb255690)|"x-orangered"->Some(LTerm_style.rgb255690)|"x-red"->Some(LTerm_style.rgb25500)|"x-hot-pink"->Some(LTerm_style.rgb255105180)|"x-hotpink"->Some(LTerm_style.rgb255105180)|"x-deep-pink"->Some(LTerm_style.rgb25520147)|"x-deeppink"->Some(LTerm_style.rgb25520147)|"x-pink"->Some(LTerm_style.rgb255192203)|"x-light-pink"->Some(LTerm_style.rgb255182193)|"x-lightpink"->Some(LTerm_style.rgb255182193)|"x-pale-violet-red"->Some(LTerm_style.rgb219112147)|"x-palevioletred"->Some(LTerm_style.rgb219112147)|"x-maroon"->Some(LTerm_style.rgb1764896)|"x-medium-violet-red"->Some(LTerm_style.rgb19921133)|"x-mediumvioletred"->Some(LTerm_style.rgb19921133)|"x-violet-red"->Some(LTerm_style.rgb20832144)|"x-violetred"->Some(LTerm_style.rgb20832144)|"x-magenta"->Some(LTerm_style.rgb2550255)|"x-violet"->Some(LTerm_style.rgb238130238)|"x-plum"->Some(LTerm_style.rgb221160221)|"x-orchid"->Some(LTerm_style.rgb218112214)|"x-medium-orchid"->Some(LTerm_style.rgb18685211)|"x-mediumorchid"->Some(LTerm_style.rgb18685211)|"x-dark-orchid"->Some(LTerm_style.rgb15350204)|"x-darkorchid"->Some(LTerm_style.rgb15350204)|"x-dark-violet"->Some(LTerm_style.rgb1480211)|"x-darkviolet"->Some(LTerm_style.rgb1480211)|"x-blue-violet"->Some(LTerm_style.rgb13843226)|"x-blueviolet"->Some(LTerm_style.rgb13843226)|"x-purple"->Some(LTerm_style.rgb16032240)|"x-medium-purple"->Some(LTerm_style.rgb147112219)|"x-mediumpurple"->Some(LTerm_style.rgb147112219)|"x-thistle"->Some(LTerm_style.rgb216191216)|"x-snow1"->Some(LTerm_style.rgb255250250)|"x-snow2"->Some(LTerm_style.rgb238233233)|"x-snow3"->Some(LTerm_style.rgb205201201)|"x-snow4"->Some(LTerm_style.rgb139137137)|"x-seashell1"->Some(LTerm_style.rgb255245238)|"x-seashell2"->Some(LTerm_style.rgb238229222)|"x-seashell3"->Some(LTerm_style.rgb205197191)|"x-seashell4"->Some(LTerm_style.rgb139134130)|"x-antiquewhite1"->Some(LTerm_style.rgb255239219)|"x-antiquewhite2"->Some(LTerm_style.rgb238223204)|"x-antiquewhite3"->Some(LTerm_style.rgb205192176)|"x-antiquewhite4"->Some(LTerm_style.rgb139131120)|"x-bisque1"->Some(LTerm_style.rgb255228196)|"x-bisque2"->Some(LTerm_style.rgb238213183)|"x-bisque3"->Some(LTerm_style.rgb205183158)|"x-bisque4"->Some(LTerm_style.rgb139125107)|"x-peachpuff1"->Some(LTerm_style.rgb255218185)|"x-peachpuff2"->Some(LTerm_style.rgb238203173)|"x-peachpuff3"->Some(LTerm_style.rgb205175149)|"x-peachpuff4"->Some(LTerm_style.rgb139119101)|"x-navajowhite1"->Some(LTerm_style.rgb255222173)|"x-navajowhite2"->Some(LTerm_style.rgb238207161)|"x-navajowhite3"->Some(LTerm_style.rgb205179139)|"x-navajowhite4"->Some(LTerm_style.rgb13912194)|"x-lemonchiffon1"->Some(LTerm_style.rgb255250205)|"x-lemonchiffon2"->Some(LTerm_style.rgb238233191)|"x-lemonchiffon3"->Some(LTerm_style.rgb205201165)|"x-lemonchiffon4"->Some(LTerm_style.rgb139137112)|"x-cornsilk1"->Some(LTerm_style.rgb255248220)|"x-cornsilk2"->Some(LTerm_style.rgb238232205)|"x-cornsilk3"->Some(LTerm_style.rgb205200177)|"x-cornsilk4"->Some(LTerm_style.rgb139136120)|"x-ivory1"->Some(LTerm_style.rgb255255240)|"x-ivory2"->Some(LTerm_style.rgb238238224)|"x-ivory3"->Some(LTerm_style.rgb205205193)|"x-ivory4"->Some(LTerm_style.rgb139139131)|"x-honeydew1"->Some(LTerm_style.rgb240255240)|"x-honeydew2"->Some(LTerm_style.rgb224238224)|"x-honeydew3"->Some(LTerm_style.rgb193205193)|"x-honeydew4"->Some(LTerm_style.rgb131139131)|"x-lavenderblush1"->Some(LTerm_style.rgb255240245)|"x-lavenderblush2"->Some(LTerm_style.rgb238224229)|"x-lavenderblush3"->Some(LTerm_style.rgb205193197)|"x-lavenderblush4"->Some(LTerm_style.rgb139131134)|"x-mistyrose1"->Some(LTerm_style.rgb255228225)|"x-mistyrose2"->Some(LTerm_style.rgb238213210)|"x-mistyrose3"->Some(LTerm_style.rgb205183181)|"x-mistyrose4"->Some(LTerm_style.rgb139125123)|"x-azure1"->Some(LTerm_style.rgb240255255)|"x-azure2"->Some(LTerm_style.rgb224238238)|"x-azure3"->Some(LTerm_style.rgb193205205)|"x-azure4"->Some(LTerm_style.rgb131139139)|"x-slateblue1"->Some(LTerm_style.rgb131111255)|"x-slateblue2"->Some(LTerm_style.rgb122103238)|"x-slateblue3"->Some(LTerm_style.rgb10589205)|"x-slateblue4"->Some(LTerm_style.rgb7160139)|"x-royalblue1"->Some(LTerm_style.rgb72118255)|"x-royalblue2"->Some(LTerm_style.rgb67110238)|"x-royalblue3"->Some(LTerm_style.rgb5895205)|"x-royalblue4"->Some(LTerm_style.rgb3964139)|"x-blue1"->Some(LTerm_style.rgb00255)|"x-blue2"->Some(LTerm_style.rgb00238)|"x-blue3"->Some(LTerm_style.rgb00205)|"x-blue4"->Some(LTerm_style.rgb00139)|"x-dodgerblue1"->Some(LTerm_style.rgb30144255)|"x-dodgerblue2"->Some(LTerm_style.rgb28134238)|"x-dodgerblue3"->Some(LTerm_style.rgb24116205)|"x-dodgerblue4"->Some(LTerm_style.rgb1678139)|"x-steelblue1"->Some(LTerm_style.rgb99184255)|"x-steelblue2"->Some(LTerm_style.rgb92172238)|"x-steelblue3"->Some(LTerm_style.rgb79148205)|"x-steelblue4"->Some(LTerm_style.rgb54100139)|"x-deepskyblue1"->Some(LTerm_style.rgb0191255)|"x-deepskyblue2"->Some(LTerm_style.rgb0178238)|"x-deepskyblue3"->Some(LTerm_style.rgb0154205)|"x-deepskyblue4"->Some(LTerm_style.rgb0104139)|"x-skyblue1"->Some(LTerm_style.rgb135206255)|"x-skyblue2"->Some(LTerm_style.rgb126192238)|"x-skyblue3"->Some(LTerm_style.rgb108166205)|"x-skyblue4"->Some(LTerm_style.rgb74112139)|"x-lightskyblue1"->Some(LTerm_style.rgb176226255)|"x-lightskyblue2"->Some(LTerm_style.rgb164211238)|"x-lightskyblue3"->Some(LTerm_style.rgb141182205)|"x-lightskyblue4"->Some(LTerm_style.rgb96123139)|"x-slategray1"->Some(LTerm_style.rgb198226255)|"x-slategray2"->Some(LTerm_style.rgb185211238)|"x-slategray3"->Some(LTerm_style.rgb159182205)|"x-slategray4"->Some(LTerm_style.rgb108123139)|"x-lightsteelblue1"->Some(LTerm_style.rgb202225255)|"x-lightsteelblue2"->Some(LTerm_style.rgb188210238)|"x-lightsteelblue3"->Some(LTerm_style.rgb162181205)|"x-lightsteelblue4"->Some(LTerm_style.rgb110123139)|"x-lightblue1"->Some(LTerm_style.rgb191239255)|"x-lightblue2"->Some(LTerm_style.rgb178223238)|"x-lightblue3"->Some(LTerm_style.rgb154192205)|"x-lightblue4"->Some(LTerm_style.rgb104131139)|"x-lightcyan1"->Some(LTerm_style.rgb224255255)|"x-lightcyan2"->Some(LTerm_style.rgb209238238)|"x-lightcyan3"->Some(LTerm_style.rgb180205205)|"x-lightcyan4"->Some(LTerm_style.rgb122139139)|"x-paleturquoise1"->Some(LTerm_style.rgb187255255)|"x-paleturquoise2"->Some(LTerm_style.rgb174238238)|"x-paleturquoise3"->Some(LTerm_style.rgb150205205)|"x-paleturquoise4"->Some(LTerm_style.rgb102139139)|"x-cadetblue1"->Some(LTerm_style.rgb152245255)|"x-cadetblue2"->Some(LTerm_style.rgb142229238)|"x-cadetblue3"->Some(LTerm_style.rgb122197205)|"x-cadetblue4"->Some(LTerm_style.rgb83134139)|"x-turquoise1"->Some(LTerm_style.rgb0245255)|"x-turquoise2"->Some(LTerm_style.rgb0229238)|"x-turquoise3"->Some(LTerm_style.rgb0197205)|"x-turquoise4"->Some(LTerm_style.rgb0134139)|"x-cyan1"->Some(LTerm_style.rgb0255255)|"x-cyan2"->Some(LTerm_style.rgb0238238)|"x-cyan3"->Some(LTerm_style.rgb0205205)|"x-cyan4"->Some(LTerm_style.rgb0139139)|"x-darkslategray1"->Some(LTerm_style.rgb151255255)|"x-darkslategray2"->Some(LTerm_style.rgb141238238)|"x-darkslategray3"->Some(LTerm_style.rgb121205205)|"x-darkslategray4"->Some(LTerm_style.rgb82139139)|"x-aquamarine1"->Some(LTerm_style.rgb127255212)|"x-aquamarine2"->Some(LTerm_style.rgb118238198)|"x-aquamarine3"->Some(LTerm_style.rgb102205170)|"x-aquamarine4"->Some(LTerm_style.rgb69139116)|"x-darkseagreen1"->Some(LTerm_style.rgb193255193)|"x-darkseagreen2"->Some(LTerm_style.rgb180238180)|"x-darkseagreen3"->Some(LTerm_style.rgb155205155)|"x-darkseagreen4"->Some(LTerm_style.rgb105139105)|"x-seagreen1"->Some(LTerm_style.rgb84255159)|"x-seagreen2"->Some(LTerm_style.rgb78238148)|"x-seagreen3"->Some(LTerm_style.rgb67205128)|"x-seagreen4"->Some(LTerm_style.rgb4613987)|"x-palegreen1"->Some(LTerm_style.rgb154255154)|"x-palegreen2"->Some(LTerm_style.rgb144238144)|"x-palegreen3"->Some(LTerm_style.rgb124205124)|"x-palegreen4"->Some(LTerm_style.rgb8413984)|"x-springgreen1"->Some(LTerm_style.rgb0255127)|"x-springgreen2"->Some(LTerm_style.rgb0238118)|"x-springgreen3"->Some(LTerm_style.rgb0205102)|"x-springgreen4"->Some(LTerm_style.rgb013969)|"x-green1"->Some(LTerm_style.rgb02550)|"x-green2"->Some(LTerm_style.rgb02380)|"x-green3"->Some(LTerm_style.rgb02050)|"x-green4"->Some(LTerm_style.rgb01390)|"x-chartreuse1"->Some(LTerm_style.rgb1272550)|"x-chartreuse2"->Some(LTerm_style.rgb1182380)|"x-chartreuse3"->Some(LTerm_style.rgb1022050)|"x-chartreuse4"->Some(LTerm_style.rgb691390)|"x-olivedrab1"->Some(LTerm_style.rgb19225562)|"x-olivedrab2"->Some(LTerm_style.rgb17923858)|"x-olivedrab3"->Some(LTerm_style.rgb15420550)|"x-olivedrab4"->Some(LTerm_style.rgb10513934)|"x-darkolivegreen1"->Some(LTerm_style.rgb202255112)|"x-darkolivegreen2"->Some(LTerm_style.rgb188238104)|"x-darkolivegreen3"->Some(LTerm_style.rgb16220590)|"x-darkolivegreen4"->Some(LTerm_style.rgb11013961)|"x-khaki1"->Some(LTerm_style.rgb255246143)|"x-khaki2"->Some(LTerm_style.rgb238230133)|"x-khaki3"->Some(LTerm_style.rgb205198115)|"x-khaki4"->Some(LTerm_style.rgb13913478)|"x-lightgoldenrod1"->Some(LTerm_style.rgb255236139)|"x-lightgoldenrod2"->Some(LTerm_style.rgb238220130)|"x-lightgoldenrod3"->Some(LTerm_style.rgb205190112)|"x-lightgoldenrod4"->Some(LTerm_style.rgb13912976)|"x-lightyellow1"->Some(LTerm_style.rgb255255224)|"x-lightyellow2"->Some(LTerm_style.rgb238238209)|"x-lightyellow3"->Some(LTerm_style.rgb205205180)|"x-lightyellow4"->Some(LTerm_style.rgb139139122)|"x-yellow1"->Some(LTerm_style.rgb2552550)|"x-yellow2"->Some(LTerm_style.rgb2382380)|"x-yellow3"->Some(LTerm_style.rgb2052050)|"x-yellow4"->Some(LTerm_style.rgb1391390)|"x-gold1"->Some(LTerm_style.rgb2552150)|"x-gold2"->Some(LTerm_style.rgb2382010)|"x-gold3"->Some(LTerm_style.rgb2051730)|"x-gold4"->Some(LTerm_style.rgb1391170)|"x-goldenrod1"->Some(LTerm_style.rgb25519337)|"x-goldenrod2"->Some(LTerm_style.rgb23818034)|"x-goldenrod3"->Some(LTerm_style.rgb20515529)|"x-goldenrod4"->Some(LTerm_style.rgb13910520)|"x-darkgoldenrod1"->Some(LTerm_style.rgb25518515)|"x-darkgoldenrod2"->Some(LTerm_style.rgb23817314)|"x-darkgoldenrod3"->Some(LTerm_style.rgb20514912)|"x-darkgoldenrod4"->Some(LTerm_style.rgb1391018)|"x-rosybrown1"->Some(LTerm_style.rgb255193193)|"x-rosybrown2"->Some(LTerm_style.rgb238180180)|"x-rosybrown3"->Some(LTerm_style.rgb205155155)|"x-rosybrown4"->Some(LTerm_style.rgb139105105)|"x-indianred1"->Some(LTerm_style.rgb255106106)|"x-indianred2"->Some(LTerm_style.rgb2389999)|"x-indianred3"->Some(LTerm_style.rgb2058585)|"x-indianred4"->Some(LTerm_style.rgb1395858)|"x-sienna1"->Some(LTerm_style.rgb25513071)|"x-sienna2"->Some(LTerm_style.rgb23812166)|"x-sienna3"->Some(LTerm_style.rgb20510457)|"x-sienna4"->Some(LTerm_style.rgb1397138)|"x-burlywood1"->Some(LTerm_style.rgb255211155)|"x-burlywood2"->Some(LTerm_style.rgb238197145)|"x-burlywood3"->Some(LTerm_style.rgb205170125)|"x-burlywood4"->Some(LTerm_style.rgb13911585)|"x-wheat1"->Some(LTerm_style.rgb255231186)|"x-wheat2"->Some(LTerm_style.rgb238216174)|"x-wheat3"->Some(LTerm_style.rgb205186150)|"x-wheat4"->Some(LTerm_style.rgb139126102)|"x-tan1"->Some(LTerm_style.rgb25516579)|"x-tan2"->Some(LTerm_style.rgb23815473)|"x-tan3"->Some(LTerm_style.rgb20513363)|"x-tan4"->Some(LTerm_style.rgb1399043)|"x-chocolate1"->Some(LTerm_style.rgb25512736)|"x-chocolate2"->Some(LTerm_style.rgb23811833)|"x-chocolate3"->Some(LTerm_style.rgb20510229)|"x-chocolate4"->Some(LTerm_style.rgb1396919)|"x-firebrick1"->Some(LTerm_style.rgb2554848)|"x-firebrick2"->Some(LTerm_style.rgb2384444)|"x-firebrick3"->Some(LTerm_style.rgb2053838)|"x-firebrick4"->Some(LTerm_style.rgb1392626)|"x-brown1"->Some(LTerm_style.rgb2556464)|"x-brown2"->Some(LTerm_style.rgb2385959)|"x-brown3"->Some(LTerm_style.rgb2055151)|"x-brown4"->Some(LTerm_style.rgb1393535)|"x-salmon1"->Some(LTerm_style.rgb255140105)|"x-salmon2"->Some(LTerm_style.rgb23813098)|"x-salmon3"->Some(LTerm_style.rgb20511284)|"x-salmon4"->Some(LTerm_style.rgb1397657)|"x-lightsalmon1"->Some(LTerm_style.rgb255160122)|"x-lightsalmon2"->Some(LTerm_style.rgb238149114)|"x-lightsalmon3"->Some(LTerm_style.rgb20512998)|"x-lightsalmon4"->Some(LTerm_style.rgb1398766)|"x-orange1"->Some(LTerm_style.rgb2551650)|"x-orange2"->Some(LTerm_style.rgb2381540)|"x-orange3"->Some(LTerm_style.rgb2051330)|"x-orange4"->Some(LTerm_style.rgb139900)|"x-darkorange1"->Some(LTerm_style.rgb2551270)|"x-darkorange2"->Some(LTerm_style.rgb2381180)|"x-darkorange3"->Some(LTerm_style.rgb2051020)|"x-darkorange4"->Some(LTerm_style.rgb139690)|"x-coral1"->Some(LTerm_style.rgb25511486)|"x-coral2"->Some(LTerm_style.rgb23810680)|"x-coral3"->Some(LTerm_style.rgb2059169)|"x-coral4"->Some(LTerm_style.rgb1396247)|"x-tomato1"->Some(LTerm_style.rgb2559971)|"x-tomato2"->Some(LTerm_style.rgb2389266)|"x-tomato3"->Some(LTerm_style.rgb2057957)|"x-tomato4"->Some(LTerm_style.rgb1395438)|"x-orangered1"->Some(LTerm_style.rgb255690)|"x-orangered2"->Some(LTerm_style.rgb238640)|"x-orangered3"->Some(LTerm_style.rgb205550)|"x-orangered4"->Some(LTerm_style.rgb139370)|"x-red1"->Some(LTerm_style.rgb25500)|"x-red2"->Some(LTerm_style.rgb23800)|"x-red3"->Some(LTerm_style.rgb20500)|"x-red4"->Some(LTerm_style.rgb13900)|"x-debianred"->Some(LTerm_style.rgb215781)|"x-deeppink1"->Some(LTerm_style.rgb25520147)|"x-deeppink2"->Some(LTerm_style.rgb23818137)|"x-deeppink3"->Some(LTerm_style.rgb20516118)|"x-deeppink4"->Some(LTerm_style.rgb1391080)|"x-hotpink1"->Some(LTerm_style.rgb255110180)|"x-hotpink2"->Some(LTerm_style.rgb238106167)|"x-hotpink3"->Some(LTerm_style.rgb20596144)|"x-hotpink4"->Some(LTerm_style.rgb1395898)|"x-pink1"->Some(LTerm_style.rgb255181197)|"x-pink2"->Some(LTerm_style.rgb238169184)|"x-pink3"->Some(LTerm_style.rgb205145158)|"x-pink4"->Some(LTerm_style.rgb13999108)|"x-lightpink1"->Some(LTerm_style.rgb255174185)|"x-lightpink2"->Some(LTerm_style.rgb238162173)|"x-lightpink3"->Some(LTerm_style.rgb205140149)|"x-lightpink4"->Some(LTerm_style.rgb13995101)|"x-palevioletred1"->Some(LTerm_style.rgb255130171)|"x-palevioletred2"->Some(LTerm_style.rgb238121159)|"x-palevioletred3"->Some(LTerm_style.rgb205104137)|"x-palevioletred4"->Some(LTerm_style.rgb1397193)|"x-maroon1"->Some(LTerm_style.rgb25552179)|"x-maroon2"->Some(LTerm_style.rgb23848167)|"x-maroon3"->Some(LTerm_style.rgb20541144)|"x-maroon4"->Some(LTerm_style.rgb1392898)|"x-violetred1"->Some(LTerm_style.rgb25562150)|"x-violetred2"->Some(LTerm_style.rgb23858140)|"x-violetred3"->Some(LTerm_style.rgb20550120)|"x-violetred4"->Some(LTerm_style.rgb1393482)|"x-magenta1"->Some(LTerm_style.rgb2550255)|"x-magenta2"->Some(LTerm_style.rgb2380238)|"x-magenta3"->Some(LTerm_style.rgb2050205)|"x-magenta4"->Some(LTerm_style.rgb1390139)|"x-orchid1"->Some(LTerm_style.rgb255131250)|"x-orchid2"->Some(LTerm_style.rgb238122233)|"x-orchid3"->Some(LTerm_style.rgb205105201)|"x-orchid4"->Some(LTerm_style.rgb13971137)|"x-plum1"->Some(LTerm_style.rgb255187255)|"x-plum2"->Some(LTerm_style.rgb238174238)|"x-plum3"->Some(LTerm_style.rgb205150205)|"x-plum4"->Some(LTerm_style.rgb139102139)|"x-mediumorchid1"->Some(LTerm_style.rgb224102255)|"x-mediumorchid2"->Some(LTerm_style.rgb20995238)|"x-mediumorchid3"->Some(LTerm_style.rgb18082205)|"x-mediumorchid4"->Some(LTerm_style.rgb12255139)|"x-darkorchid1"->Some(LTerm_style.rgb19162255)|"x-darkorchid2"->Some(LTerm_style.rgb17858238)|"x-darkorchid3"->Some(LTerm_style.rgb15450205)|"x-darkorchid4"->Some(LTerm_style.rgb10434139)|"x-purple1"->Some(LTerm_style.rgb15548255)|"x-purple2"->Some(LTerm_style.rgb14544238)|"x-purple3"->Some(LTerm_style.rgb12538205)|"x-purple4"->Some(LTerm_style.rgb8526139)|"x-mediumpurple1"->Some(LTerm_style.rgb171130255)|"x-mediumpurple2"->Some(LTerm_style.rgb159121238)|"x-mediumpurple3"->Some(LTerm_style.rgb137104205)|"x-mediumpurple4"->Some(LTerm_style.rgb9371139)|"x-thistle1"->Some(LTerm_style.rgb255225255)|"x-thistle2"->Some(LTerm_style.rgb238210238)|"x-thistle3"->Some(LTerm_style.rgb205181205)|"x-thistle4"->Some(LTerm_style.rgb139123139)|"x-gray0"->Some(LTerm_style.rgb000)|"x-grey0"->Some(LTerm_style.rgb000)|"x-gray1"->Some(LTerm_style.rgb333)|"x-grey1"->Some(LTerm_style.rgb333)|"x-gray2"->Some(LTerm_style.rgb555)|"x-grey2"->Some(LTerm_style.rgb555)|"x-gray3"->Some(LTerm_style.rgb888)|"x-grey3"->Some(LTerm_style.rgb888)|"x-gray4"->Some(LTerm_style.rgb101010)|"x-grey4"->Some(LTerm_style.rgb101010)|"x-gray5"->Some(LTerm_style.rgb131313)|"x-grey5"->Some(LTerm_style.rgb131313)|"x-gray6"->Some(LTerm_style.rgb151515)|"x-grey6"->Some(LTerm_style.rgb151515)|"x-gray7"->Some(LTerm_style.rgb181818)|"x-grey7"->Some(LTerm_style.rgb181818)|"x-gray8"->Some(LTerm_style.rgb202020)|"x-grey8"->Some(LTerm_style.rgb202020)|"x-gray9"->Some(LTerm_style.rgb232323)|"x-grey9"->Some(LTerm_style.rgb232323)|"x-gray10"->Some(LTerm_style.rgb262626)|"x-grey10"->Some(LTerm_style.rgb262626)|"x-gray11"->Some(LTerm_style.rgb282828)|"x-grey11"->Some(LTerm_style.rgb282828)|"x-gray12"->Some(LTerm_style.rgb313131)|"x-grey12"->Some(LTerm_style.rgb313131)|"x-gray13"->Some(LTerm_style.rgb333333)|"x-grey13"->Some(LTerm_style.rgb333333)|"x-gray14"->Some(LTerm_style.rgb363636)|"x-grey14"->Some(LTerm_style.rgb363636)|"x-gray15"->Some(LTerm_style.rgb383838)|"x-grey15"->Some(LTerm_style.rgb383838)|"x-gray16"->Some(LTerm_style.rgb414141)|"x-grey16"->Some(LTerm_style.rgb414141)|"x-gray17"->Some(LTerm_style.rgb434343)|"x-grey17"->Some(LTerm_style.rgb434343)|"x-gray18"->Some(LTerm_style.rgb464646)|"x-grey18"->Some(LTerm_style.rgb464646)|"x-gray19"->Some(LTerm_style.rgb484848)|"x-grey19"->Some(LTerm_style.rgb484848)|"x-gray20"->Some(LTerm_style.rgb515151)|"x-grey20"->Some(LTerm_style.rgb515151)|"x-gray21"->Some(LTerm_style.rgb545454)|"x-grey21"->Some(LTerm_style.rgb545454)|"x-gray22"->Some(LTerm_style.rgb565656)|"x-grey22"->Some(LTerm_style.rgb565656)|"x-gray23"->Some(LTerm_style.rgb595959)|"x-grey23"->Some(LTerm_style.rgb595959)|"x-gray24"->Some(LTerm_style.rgb616161)|"x-grey24"->Some(LTerm_style.rgb616161)|"x-gray25"->Some(LTerm_style.rgb646464)|"x-grey25"->Some(LTerm_style.rgb646464)|"x-gray26"->Some(LTerm_style.rgb666666)|"x-grey26"->Some(LTerm_style.rgb666666)|"x-gray27"->Some(LTerm_style.rgb696969)|"x-grey27"->Some(LTerm_style.rgb696969)|"x-gray28"->Some(LTerm_style.rgb717171)|"x-grey28"->Some(LTerm_style.rgb717171)|"x-gray29"->Some(LTerm_style.rgb747474)|"x-grey29"->Some(LTerm_style.rgb747474)|"x-gray30"->Some(LTerm_style.rgb777777)|"x-grey30"->Some(LTerm_style.rgb777777)|"x-gray31"->Some(LTerm_style.rgb797979)|"x-grey31"->Some(LTerm_style.rgb797979)|"x-gray32"->Some(LTerm_style.rgb828282)|"x-grey32"->Some(LTerm_style.rgb828282)|"x-gray33"->Some(LTerm_style.rgb848484)|"x-grey33"->Some(LTerm_style.rgb848484)|"x-gray34"->Some(LTerm_style.rgb878787)|"x-grey34"->Some(LTerm_style.rgb878787)|"x-gray35"->Some(LTerm_style.rgb898989)|"x-grey35"->Some(LTerm_style.rgb898989)|"x-gray36"->Some(LTerm_style.rgb929292)|"x-grey36"->Some(LTerm_style.rgb929292)|"x-gray37"->Some(LTerm_style.rgb949494)|"x-grey37"->Some(LTerm_style.rgb949494)|"x-gray38"->Some(LTerm_style.rgb979797)|"x-grey38"->Some(LTerm_style.rgb979797)|"x-gray39"->Some(LTerm_style.rgb999999)|"x-grey39"->Some(LTerm_style.rgb999999)|"x-gray40"->Some(LTerm_style.rgb102102102)|"x-grey40"->Some(LTerm_style.rgb102102102)|"x-gray41"->Some(LTerm_style.rgb105105105)|"x-grey41"->Some(LTerm_style.rgb105105105)|"x-gray42"->Some(LTerm_style.rgb107107107)|"x-grey42"->Some(LTerm_style.rgb107107107)|"x-gray43"->Some(LTerm_style.rgb110110110)|"x-grey43"->Some(LTerm_style.rgb110110110)|"x-gray44"->Some(LTerm_style.rgb112112112)|"x-grey44"->Some(LTerm_style.rgb112112112)|"x-gray45"->Some(LTerm_style.rgb115115115)|"x-grey45"->Some(LTerm_style.rgb115115115)|"x-gray46"->Some(LTerm_style.rgb117117117)|"x-grey46"->Some(LTerm_style.rgb117117117)|"x-gray47"->Some(LTerm_style.rgb120120120)|"x-grey47"->Some(LTerm_style.rgb120120120)|"x-gray48"->Some(LTerm_style.rgb122122122)|"x-grey48"->Some(LTerm_style.rgb122122122)|"x-gray49"->Some(LTerm_style.rgb125125125)|"x-grey49"->Some(LTerm_style.rgb125125125)|"x-gray50"->Some(LTerm_style.rgb127127127)|"x-grey50"->Some(LTerm_style.rgb127127127)|"x-gray51"->Some(LTerm_style.rgb130130130)|"x-grey51"->Some(LTerm_style.rgb130130130)|"x-gray52"->Some(LTerm_style.rgb133133133)|"x-grey52"->Some(LTerm_style.rgb133133133)|"x-gray53"->Some(LTerm_style.rgb135135135)|"x-grey53"->Some(LTerm_style.rgb135135135)|"x-gray54"->Some(LTerm_style.rgb138138138)|"x-grey54"->Some(LTerm_style.rgb138138138)|"x-gray55"->Some(LTerm_style.rgb140140140)|"x-grey55"->Some(LTerm_style.rgb140140140)|"x-gray56"->Some(LTerm_style.rgb143143143)|"x-grey56"->Some(LTerm_style.rgb143143143)|"x-gray57"->Some(LTerm_style.rgb145145145)|"x-grey57"->Some(LTerm_style.rgb145145145)|"x-gray58"->Some(LTerm_style.rgb148148148)|"x-grey58"->Some(LTerm_style.rgb148148148)|"x-gray59"->Some(LTerm_style.rgb150150150)|"x-grey59"->Some(LTerm_style.rgb150150150)|"x-gray60"->Some(LTerm_style.rgb153153153)|"x-grey60"->Some(LTerm_style.rgb153153153)|"x-gray61"->Some(LTerm_style.rgb156156156)|"x-grey61"->Some(LTerm_style.rgb156156156)|"x-gray62"->Some(LTerm_style.rgb158158158)|"x-grey62"->Some(LTerm_style.rgb158158158)|"x-gray63"->Some(LTerm_style.rgb161161161)|"x-grey63"->Some(LTerm_style.rgb161161161)|"x-gray64"->Some(LTerm_style.rgb163163163)|"x-grey64"->Some(LTerm_style.rgb163163163)|"x-gray65"->Some(LTerm_style.rgb166166166)|"x-grey65"->Some(LTerm_style.rgb166166166)|"x-gray66"->Some(LTerm_style.rgb168168168)|"x-grey66"->Some(LTerm_style.rgb168168168)|"x-gray67"->Some(LTerm_style.rgb171171171)|"x-grey67"->Some(LTerm_style.rgb171171171)|"x-gray68"->Some(LTerm_style.rgb173173173)|"x-grey68"->Some(LTerm_style.rgb173173173)|"x-gray69"->Some(LTerm_style.rgb176176176)|"x-grey69"->Some(LTerm_style.rgb176176176)|"x-gray70"->Some(LTerm_style.rgb179179179)|"x-grey70"->Some(LTerm_style.rgb179179179)|"x-gray71"->Some(LTerm_style.rgb181181181)|"x-grey71"->Some(LTerm_style.rgb181181181)|"x-gray72"->Some(LTerm_style.rgb184184184)|"x-grey72"->Some(LTerm_style.rgb184184184)|"x-gray73"->Some(LTerm_style.rgb186186186)|"x-grey73"->Some(LTerm_style.rgb186186186)|"x-gray74"->Some(LTerm_style.rgb189189189)|"x-grey74"->Some(LTerm_style.rgb189189189)|"x-gray75"->Some(LTerm_style.rgb191191191)|"x-grey75"->Some(LTerm_style.rgb191191191)|"x-gray76"->Some(LTerm_style.rgb194194194)|"x-grey76"->Some(LTerm_style.rgb194194194)|"x-gray77"->Some(LTerm_style.rgb196196196)|"x-grey77"->Some(LTerm_style.rgb196196196)|"x-gray78"->Some(LTerm_style.rgb199199199)|"x-grey78"->Some(LTerm_style.rgb199199199)|"x-gray79"->Some(LTerm_style.rgb201201201)|"x-grey79"->Some(LTerm_style.rgb201201201)|"x-gray80"->Some(LTerm_style.rgb204204204)|"x-grey80"->Some(LTerm_style.rgb204204204)|"x-gray81"->Some(LTerm_style.rgb207207207)|"x-grey81"->Some(LTerm_style.rgb207207207)|"x-gray82"->Some(LTerm_style.rgb209209209)|"x-grey82"->Some(LTerm_style.rgb209209209)|"x-gray83"->Some(LTerm_style.rgb212212212)|"x-grey83"->Some(LTerm_style.rgb212212212)|"x-gray84"->Some(LTerm_style.rgb214214214)|"x-grey84"->Some(LTerm_style.rgb214214214)|"x-gray85"->Some(LTerm_style.rgb217217217)|"x-grey85"->Some(LTerm_style.rgb217217217)|"x-gray86"->Some(LTerm_style.rgb219219219)|"x-grey86"->Some(LTerm_style.rgb219219219)|"x-gray87"->Some(LTerm_style.rgb222222222)|"x-grey87"->Some(LTerm_style.rgb222222222)|"x-gray88"->Some(LTerm_style.rgb224224224)|"x-grey88"->Some(LTerm_style.rgb224224224)|"x-gray89"->Some(LTerm_style.rgb227227227)|"x-grey89"->Some(LTerm_style.rgb227227227)|"x-gray90"->Some(LTerm_style.rgb229229229)|"x-grey90"->Some(LTerm_style.rgb229229229)|"x-gray91"->Some(LTerm_style.rgb232232232)|"x-grey91"->Some(LTerm_style.rgb232232232)|"x-gray92"->Some(LTerm_style.rgb235235235)|"x-grey92"->Some(LTerm_style.rgb235235235)|"x-gray93"->Some(LTerm_style.rgb237237237)|"x-grey93"->Some(LTerm_style.rgb237237237)|"x-gray94"->Some(LTerm_style.rgb240240240)|"x-grey94"->Some(LTerm_style.rgb240240240)|"x-gray95"->Some(LTerm_style.rgb242242242)|"x-grey95"->Some(LTerm_style.rgb242242242)|"x-gray96"->Some(LTerm_style.rgb245245245)|"x-grey96"->Some(LTerm_style.rgb245245245)|"x-gray97"->Some(LTerm_style.rgb247247247)|"x-grey97"->Some(LTerm_style.rgb247247247)|"x-gray98"->Some(LTerm_style.rgb250250250)|"x-grey98"->Some(LTerm_style.rgb250250250)|"x-gray99"->Some(LTerm_style.rgb252252252)|"x-grey99"->Some(LTerm_style.rgb252252252)|"x-gray100"->Some(LTerm_style.rgb255255255)|"x-grey100"->Some(LTerm_style.rgb255255255)|"x-dark-grey"->Some(LTerm_style.rgb169169169)|"x-darkgrey"->Some(LTerm_style.rgb169169169)|"x-dark-gray"->Some(LTerm_style.rgb169169169)|"x-darkgray"->Some(LTerm_style.rgb169169169)|"x-dark-blue"->Some(LTerm_style.rgb00139)|"x-darkblue"->Some(LTerm_style.rgb00139)|"x-dark-cyan"->Some(LTerm_style.rgb0139139)|"x-darkcyan"->Some(LTerm_style.rgb0139139)|"x-dark-magenta"->Some(LTerm_style.rgb1390139)|"x-darkmagenta"->Some(LTerm_style.rgb1390139)|"x-dark-red"->Some(LTerm_style.rgb13900)|"x-darkred"->Some(LTerm_style.rgb13900)|"x-light-green"->Some(LTerm_style.rgb144238144)|"x-lightgreen"->Some(LTerm_style.rgb144238144)|""|"none"->None|strwhenstr.[0]='#'->ifString.lengthstr=7thentrySome(LTerm_style.rgb(hex_of_charstr.[1]lsl4lorhex_of_charstr.[2])(hex_of_charstr.[3]lsl4lorhex_of_charstr.[4])(hex_of_charstr.[5]lsl4lorhex_of_charstr.[6]))withExit->Printf.ksprintferror"invalid color %S"strelsePrintf.ksprintferror"invalid color %S"str|str->trySome(LTerm_style.index(int_of_stringstr))withFailure_->Printf.ksprintferror"invalid color %S"strletget_styleprefixresources={LTerm_style.bold=get_bool(prefix^".bold")resources;LTerm_style.underline=get_bool(prefix^".underline")resources;LTerm_style.blink=get_bool(prefix^".blink")resources;LTerm_style.reverse=get_bool(prefix^".reverse")resources;LTerm_style.foreground=get_color(prefix^".foreground")resources;LTerm_style.background=get_color(prefix^".background")resources;}letget_connectionkeyresources=matchString.lowercase_ascii(getkeyresources)with|"blank"->LTerm_draw.Blank|"light"->LTerm_draw.Light|"heavy"->LTerm_draw.Heavy|""->LTerm_draw.Light|str->Printf.ksprintferror"invalid connection %S"str(* +-----------------------------------------------------------------+
| Parsing |
+-----------------------------------------------------------------+ *)exceptionParse_errorofstring*int*stringletparsestr=letlexbuf=Lexing.from_stringstrinletreclooplineacc=matchLTerm_resource_lexer.linelexbufwith|`EOF->acc|`Empty->loop(line+1)acc|`Assoc(pattern,value)->loop(line+1)(addpatternvalueacc)|`Errormsg->raise(Parse_error("<string>",line,msg))inloop1[]letloadfile=Lwt_io.open_file~mode:Lwt_io.inputfile>>=funic->letreclooplinenoacc=Lwt_io.read_line_optic>>=funline->matchlinewith|None->Lwt.returnacc|Somestr->matchLTerm_resource_lexer.line(Lexing.from_stringstr)with|`EOF->loop(lineno+1)acc|`Empty->loop(lineno+1)acc|`Assoc(pattern,value)->loop(lineno+1)(addpatternvalueacc)|`Errormsg->Lwt.fail(Parse_error(file,lineno,msg))inLwt.finalize(fun()->loop1[])(fun()->Lwt_io.closeic)