# rat -E only matches filename components
# All matches are anchored automatically to who string

# /
\.clang-format
\.clang-tidy
\.gitignore
\.ratignore
\.lgtm.yml
\.lcovrc
\.cpackignore

# dependencies/*/
patches

# packer/*/
.*\.cloud-init
.*\.json

# docs/
Gemfile.lock
package-list
.*\.md
.*\.md.erb

# contrib/pdxautoserializer
# public domain sources
CPPDictionary.hpp
CPPSymbol.hpp
CPP_parser.g
DictEntry.hpp
Dictionary.cpp
Dictionary.hpp
STDCTokenTypes.txt
Support.cpp

# well known build directories
build
cmake-build-.*
