%%HP: T(3)A(R)F(.);
@ @ @  V RETEZCI OPTIONS PONECHANY PLATNE ZNAKY
@ Binary String ENVOPTS(String options);
@ Binary String ENVOPTS(Gobname options);
\<<			@	'WE'
  \->STR			@	"'WE'"
  "PNWE"		@	"PNWE"	"'WE'"
  \-> optchrs
  \<<			@	"'WE'"
@ Zatim prazdny seznam indexu platnych znaku
    { }			@	{ }	"'WE'"
    SWAP		@	"'WE'"	{ }
    WHILE
      DUP		@	"'WE'"	"'WE'"	{ }
      SIZE		@	4.	"'WE'"	{ }
    REPEAT		@	"'WE'"	{ }
      optchrs		@	"PNWE"	"'WE'"	{ }
      OVER		@	"'WE'"	"PNWE"	"'WE'"	{ }
      HEAD		@	"'"	"PNWE"	"'WE'"	{ }
      POS		@	0.|3.	"'WE'"	{ }
@ Aktualni znak nalezen ve vzorovem retezci?
      IF
        DUP		@	0.|3.	0.|3.	"'WE'"	{ }
      THEN		@	3.	"'WE'"	{ }
        ROT		@	{ }	3.	"'WE'"
        SWAP		@	3.	{ }	"'WE'"
        +		@	{ 3. }	"'WE'"
        SWAP		@	"'WE'"	{3.}
      ELSE		@	3.	"'WE'"	{ }
        DROP		@	"'WE'"	{ }
      END
      TAIL		@	"E'"	{3.}
    END
@ Nasbiraly se nejake indexy znaku?
    IF
      OVER		@	{3. 4.}	""	{3. 4.}
      SIZE		@	1.	""	{3. 4.}
    THEN		@	""	{3. 4.}
@ Ano, sestavi se retezec...
      OVER		@	{3. 4.}	""	{3. 4.}
      1.		@	1.	{3. 4.}	""	{3. 4.}
      \<< optchrs SWAP DUP SUB +
      \>> 		@	\<< \>>	1.	{3.}	""	{3. 4.}
      DOLIST		@	"WE"	{3. 4.}
@ ...a pole bitovych priznaku
      SWAP		@	{3. 4.}	"WE"
      # 0h		@	# 0h	{3. 4.}	"WE"
      SWAP		@	{3. 4.}	# 0h	"WE"
      1.		@	1.	{3. 4.}	# 0h	"WE"
      \<< 2. SWAP ^ R\->B SR OR
      \>> 		@	\<< \>>	1.	{3. 4.}	# 0h	"WE"
      DOLIST		@	# Ch	"WE"
    ELSE		@	""	{3. 4.}
@ Nebyly platne znaky
      NIP		@	""
      # 0h		@	# 0h	""
    END
  \>>
\>>
