# 2

Kai Willadsen
kai.willadsen@gmail.com 2012

# Odfiltrování textu

Když porovnáváte několik souborů, můžete v nich mít části textu, ve kterých nejsou rozdíly důležité. Například se můžete chtít zaměřit na změny v části s kódem a ignorovat změny v řádcích s komentáři. Díky textovým filtrům stačí aplikaci Meld říci, aby při zobrazování rozdílů mezi soubory ignorovala text, který vyhovuje nějakému vzoru (tj. regulárnímu výrazu).

Textové filtry neovlivňují jen porovnání souborů, ale i porovnání složek. Více podrobností najdete v poznámkách k filtrování souborů.

# Přidávání a používání textových filtrů

Textové filtry můžete zapínat a vypínat na kartě Filtry textu v dialogovém okně Předvolby. Meld má předdefinováno několik jednoduchých filtrů, které mohou být užitečné, a k tomu si můžete vytvořit své vlastní.

V aplikaci Meld nejsou textové filtry nic jiného, než regulární výrazy spouštěné vůči textu nebo souborům, které porovnáváte. Text, který regulárnímu výrazu vyhovuje, je během porovnávání ignorován. V zobrazení porovnání sice takovýto text stále uvidíte, ale nebude brán v úvahu při hledání rozdílů. Textové filtry se použijí v určeném pořadí, takže je možné, aby první filtr odebral text tak, aby zbytek vyhovoval druhému filtru atd.

Jestli nejste v regulárních výrazech zběhlí, můžete se podívat na JAK NA regulární výrazy v dokumentaci jazyka Python (odkazovaný text je v angličtině).

# Aby textové filtry fungovaly správně

Udělat chybu v definici filtrování textu je lehké a podpora filtrování ze strany aplikace Meld také není úplně dodělaná. Jedním z problémů třeba je, že filtr nedokáže měnit počet řádků v souboru. Kupříkladu mějme zapnutý zabudovaný filtr Script comment a porovnejme následující soubory:

## poznámky1.txt

`a b#poznámka c d`

## poznámky2.txt

`a b c #poznámka`

potom by řádky začínající `b` měly být zobrazeny jako shodné (komentář je zahozen), ale řádek `d` by měl být zobrazen jako lišící se od řádku s komentářem napravo. To je způsobeno tím, že na pravé straně je odstraněno `#comment`, ale řádek jako takový zůstává. Meld pak zobrazuje, že řádek `d` se liší od toho, co je na druhé straně zobrazeno, jako prázdný řádek.

# Prázdné řádky a filtry

Předvolba Ignorovat změny, které přidávají nebo odstraňují prázdné řádky na kartě Filtry textu si vyžaduje vysvětlení. Když je tento speciální filtr zapnutý, pak jsou změny spočívající jen v prázdných řádcích zcela ignorovány. To může nastat, když byly současné bílé znaky v textu změněny, ale také když váš aktivní textový filtr odstranil ze změny všechen ostatní obsah a ponechal jen prázdné řádky.

Tuto volbu můžete použít k obejití některých problémů a omezení vyplývajících z toho, že filtry nejsou schopné odstraňovat celé řádky, ale může být užitečná i sama o sobě.