ó
    Ë<i´  ã                   óª   • S r SSKJr  SSKrSSKJr  SSKrSSKJr  SSK	J
r
  SSKJr  SS	KJr  SS	KJr  \4S
 jr\SS4S jrS r\S:X  a  \" 5         gg)z?
Validates a user entered pattern against STIXPattern grammar.
é    )Úprint_functionN)ÚInputStreamé   )ÚDEFAULT_VERSION)ÚSTIXPatternErrorListener)Úbrackets_check)Úrun_validatorc                 ó   • [        U [        R                  5      (       a  U n[        U 5      n O!U R	                  5       nU R                  S5        US:X  a  [        U 5      nO[        U 5      n[        U5      (       d  UR                  SS5        U$ )z
Validates a pattern against the STIX Pattern grammar.  Error messages are
returned in a list.  The test passed if the returned list is empty.
r   z2.1z?FAIL: Error found at line 1:0. input is missing square brackets)
Ú
isinstanceÚsixÚstring_typesr   ÚreadlineÚseekÚrun_validator21Úrun_validator20r   Úinsert)ÚpatternÚstix_versionÚpattern_strÚerr_messagess       ÚQ/home/james-whalen/.local/lib/python3.13/site-packages/stix2patterns/validator.pyr	   r	      s„   € ô
 'œ3×+Ñ+×,Ñ,ØˆÜ˜gÓ&‰ð ×&Ñ&Ó(ˆØ‰QŒàuÓÜ& wÓ/‰ä& wÓ/ˆä˜+×&Ñ&Ø×ÑØØMô	
ð
 Ðó    Fc                 ó‚   • [        X5      n[        U5      S:H  nU(       a  U H  n[        U5        M     U(       a  XT4$ U$ )zà
Wrapper for run_validator function that returns True if the user_input
contains a valid STIX pattern or False otherwise. The error messages may
also be returned or printed based upon the ret_errs and print_errs arg
values.
r   )r	   ÚlenÚprint)Ú
user_inputr   Úret_errsÚ
print_errsÚerrsÚpassedÚerrs          r   Úvalidater"   .   sA   € ô ˜Ó2€DÜ‹Y˜!‰^€FæÛˆCÜ#ŽJñ ö Øˆ|Ðà€Mr   c                  óN  • [         R                  " SS9n U R                  SSS[         R                  " S5      S9  U R                  SS	[        S
S9  U R                  5       nS=p#SSKnUR                  (       a  UR                  R                  nO*UR                  [        R                  R                  S5      n  U" 5       nU(       d  OO[        XaR                  S5      u  pxU(       a  [        SU-  5        US-  nOU H  n	[        U	S5        M     US-  nM^  UR                  (       a  UR                  R%                  5         [        SUS5        [        SUS5        g! [         ["        4 a     NXf = f! UR                  (       a  UR                  R%                  5         f f = f)zp
Continues to validate patterns until it encounters EOF within a pattern
file or Ctrl-C is pressed by the user.
zValidate STIX Patterns.)Údescriptionz-fz--filez.Specify this arg to read patterns from a file.Úr)ÚhelpÚtypez-vz	--versionz<Specify version of STIX 2 specification to validate against.)Údefaultr&   r   NzEnter a pattern to validate: Tz	
PASS: %sr   Ú
z
PASSED:z	 patternszFAILED:)ÚargparseÚArgumentParserÚadd_argumentÚFileTyper   Ú
parse_argsÚ	functoolsÚfiler   Úpartialr   ÚmovesÚinputr"   Úversionr   ÚEOFErrorÚKeyboardInterruptÚclose)
ÚparserÚargsÚ
pass_countÚ
fail_countr/   Únextpatternr   Útests_passedÚerr_stringsr!   s
             r   Úmainr?   C   sv  € ô
 ×$Ò$Ð1JÑK€FØ
×Ñ˜˜hØMÜ%×.Ò.¨sÓ3ð ñ 5ð ×Ñ˜˜kÜ /Ø[ð ñ ]ð ×ÑÓ€DàÐ€Jó Ø‡y‡yØ—i‘i×(Ñ(‰à×'Ñ'¬¯	©	¯©Ð9XÓYˆðØÙ!“mˆGÞØÜ(0°¿,¹,ÈÓ(MÑ%ˆLæÜl WÑ,Ô-Ø˜a‘‘
ó 'CÜ˜#˜tÖ$ñ 'à˜a‘
ñ ð" 99ØI‰IO‰OÔä	ˆ+z ;Ô/Ü	ˆ)Z Õ-øô Ô'Ð(ó Ùðûð 99ØI‰IO‰OÕð ús1   Â;E  Ã
E6 ÃAE  Å E3Å0E6 Å2E3Å3E6 Å6.F$Ú__main__)Ú__doc__Ú
__future__r   r*   Úantlr4r   r   Ú r   Ú
exceptionsr   Úhelpersr   Úv20.validatorr	   r   Úv21.validatorr   r"   r?   Ú__name__© r   r   Ú<module>rK      sZ   ðñõ &ã å Û 
å Ý 0Ý #Ý ;Ý ;ð )8ô ð6 '6ÀÐRWô ò*0.ðf ˆzÓÙ…Fð r   