Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
3 2j+@s`ddlmZmZddlmZddlZddlZGdddeZGdddeZ Gdd d e Z dS) )FeatureLibErrorIncludedFeaNotFound)FeatureLibLocationNc@seZdZdZdZdZeeefZdZdZdZ dZ dZ d Z d Z d Zd Zd ZdZdZdZdZdZdZedZeedZejdZdZdZddZddZddZ ddZ!d d!Z"d"d#Z#d$d%Z$d&d'Z%d(d)Z&d*S)+LexerNUMBER HEXADECIMALOCTALFLOATSTRINGNAMEFILENAME GLYPHCLASSCIDSYMBOLCOMMENTNEWLINEANONYMOUS_BLOCKz z z,;:-+'{}[]<>()= 01234567890123456789ABCDEFabcdefZ4ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzz _+*:.^~!\z _.+*:^~!/-z^[A-Za-z_0-9.\-]+$NORMALcCs4||_d|_d|_d|_||_t||_tj|_ dS)Nr) filename_line_pos_ line_start_text_len text_length_r MODE_NORMAL_mode_)selftextfilenamer#;/tmp/pip-build-_d5lkt3n/fonttools/fontTools/feaLib/lexer.py__init__%s zLexer.__init__cCs|S)Nr#)r r#r#r$__iter__.szLexer.__iter__cCs|jS)N)__next__)r r#r#r$next1sz Lexer.nextcCs,x&|j\}}}|tjkr|||fSqWdS)N)next_rr)r token_typetokenlocationr#r#r$r'4s zLexer.__next__cCs$|j|jd}t|jpd|j|S)Nrz )rrrrr)r columnr#r#r$ location_:szLexer.location_c Cs|jtj|j}|j}|j}t|}||kr6t||}|d|krV||dnd}|dkr|jd7_|jd7_|j|_ tj d|fS|dkr|j|dkrdnd7_|jd7_|j|_ tj d|fS|dkr|j tj tj |||j|fS|jtjkr|dkr$td||j d|j|krD||jnd}|dkr\td ||jd7_tj|_tj||d|jd|fS|d kr|tjkr|jd7_|jtjtjt||d|jd |fS|d krj|jd7_|jtj||d|j}t|dkr.td |t|dkrFtd|tjj|s^td|tj||fS|tjkr|jd7_|jtj|||j}|dkrtj|_tj||fS|dkr|dkr|jd7_|jtjtjt|||jd|fS|dkrD|tjkrD|jtjtjt|||jd|fS|tjkr|jtj|j|ksx||jdkrtjt|||jd |fS|jd|jtjtj t!|||j|fS|dkr\|tjkr\|jd7_|jtj|j|ks||jdkr,tjt|||jd |fS|jd|jtjtj t!|||j|fS|tj"kr|jd7_tj#||fS|dkr|jd7_|j d|j|j$kr|j|jdkr|jd7_t%j&dd||d|jd} tj'| |fStd|td||dS)Nr  #(zExpected '(' before file name)zExpected ')' after file name\ @zExpected glyph class name?z7Glyph class names must not be longer than 63 characterszOGlyph class names must consist of letters, digits, underscore, period or hypheninclude0xX.-"z[ ]z Expected '"' to terminate stringzUnexpected character: %r)( scan_over_rCHAR_WHITESPACE_r.rrr StopIterationrrr scan_until_ CHAR_NEWLINE_rrMODE_FILENAME_rrr CHAR_DIGIT_rintCHAR_NAME_CONTINUATION_ RE_GLYPHCLASSmatchr CHAR_NAME_START_r CHAR_HEXDIGIT_rrrr float CHAR_SYMBOL_rrresubr ) r r,startr!limitZcur_charZ next_charZ glyphclassr+stringr#r#r$r)>s                                     z Lexer.next_cCs6|j}x$||jkr*|j||kr*|d7}qW||_dS)Nr)rrr)r Zvalidpr#r#r$rBs zLexer.scan_over_cCs6|j}x$||jkr*|j||kr*|d7}qW||_dS)Nr)rrr)r Zstop_atrVr#r#r$rEs zLexer.scan_until_cCs|j}|j}|jtj|jtjd|d}tj||j|j ddd}t |dkrjt d|||j t |d7_ tj |d|fS)Nz}\s*z\s*;r)maxsplitr1z-Expected '} %s;' to terminate anonymous blockr) r.striprErrFrBrQsplitrrrrr)r tagr,regexprYr#r#r$scan_anonymous_blocks     zLexer.scan_anonymous_blockN)'__name__ __module__ __qualname__rrrZNUMBERSr r r r r rrrrrrCrFrPrHrNZ CHAR_LETTER_rMrJrQcompilerKrrGr%r&r(r'r.r)rBrEr\r#r#r#r$rsD    erc@sJeZdZdZddddZddZdd Zd d Zed d Z ddZ dS)IncludingLexeraA Lexer that follows include statements. The OpenType feature file specification states that due to historical reasons, relative imports should be resolved in this order: 1. If the source font is UFO format, then relative to the UFO's font directory 2. relative to the top-level include file 3. relative to the parent include file We only support 1 (via includeDir) and 2. N) includeDircCs&|j|g|_|jdj|_||_dS)aOInitializes an IncludingLexer. Behavior: If includeDir is passed, it will be used to determine the top-level include directory to use for all encountered include statements. If it is not passed, ``os.path.dirname(featurefile)`` will be considered the include directory. rN) make_lexer_lexers_rfeaturefilepathrb)r Z featurefilerbr#r#r$r%s zIncludingLexer.__init__cCs|S)Nr#)r r#r#r$r&szIncludingLexer.__iter__cCs|jS)N)r')r r#r#r$r(szIncludingLexer.nextc CsNx@|jrB|jd}yt|\}}}Wn tk rH|jjwYnX|tjkoZ|dkr6|j\}}}|tjk rtd|tj j |r|}nB|j dk r|j } n"|j dk rtj j |j } ntj} tj j| |}t|jdkrtd|y|jj|j|Wn0tk r2} zt||| WYdd} ~ XnXq|||fSqWtdS)Nrr9zExpected file namezToo many recursive includes)rdr(rDpoprr r rospathisabsrbredirnamegetcwdjoinrappendrcFileNotFoundErrorr) r lexerr*r+r,Z fname_typeZ fname_tokenZfname_locationrjZcurpatherrr#r#r$r's6          zIncludingLexer.__next__cCsXt|dr|d}}n|d}}t|ddd}|j}t|dd}|rN|jt||S)NreadFTrzutf-8)encodingname)hasattropenrsgetattrcloser)Z file_or_pathfileobjclosingr"datar#r#r$rcs    zIncludingLexer.make_lexer_cCs|jdj|S)Nrrg)rdr\)r rZr#r#r$r\sz#IncludingLexer.scan_anonymous_block) r]r^r___doc__r%r&r(r' staticmethodrcr\r#r#r#r$ras ' rac@seZdZdZddZdS)NonIncludingLexerzBLexer that does not follow `include` statements, emits them as-is.cCst|jdS)Nr)r(rd)r r#r#r$r'szNonIncludingLexer.__next__N)r]r^r_r~r'r#r#r#r$rsr) ZfontTools.feaLib.errorrrZfontTools.feaLib.locationrrQriobjectrrarr#r#r#r$s 8[