Use urlmatch to verify that URLs conform to certain patterns. The library and match patterns are based heavily on the Google Chrome Extension match patterns.
from urlmatch import urlmatch
match_pattern = 'http://*.example.com/*'
urlmatch(match_pattern, 'http://subdomain.example.com/') # True
urlmatch(match_pattern, 'http://sub.subdomain.example.com/') # True
urlmatch(match_pattern, 'https://example.com/') # False
urlmatch(match_pattern, 'http://bad.com/') # FalseThere are a few options that affect how the match patterns work.
path_required(default is True) - aboolwhich dictates whether the match pattern must have pathfuzzy_scheme(default is False) - aboolwhich dictates whether the scheme should be matched "fuzzily." if this is true, then any valid scheme (*,http,https) will match bothhttpandhttpshttp_auth_allowed(default is True) -boolwhich dictates whether URLs with HTTP Authentication in the URL should be allowed or not
The basic match pattern syntax is simple:
<url-pattern> := <scheme>://<host><path>
<scheme> := '*' | 'http' | 'https'
<host> := '*' | '*.' <any char except '/' and '*'>+
<path> := '/' <any chars>
http://*/*- matches any URL that uses the http schemehttps://*/*- matches any URL that uses the https schemehttp://*/test*- matches any URL that uses the http scheme and has a path that starts withtest*://test.com/*- matches any url with the domaintest.comhttp://*.test.com- matchestest.comand any subdomain oftest.comhttp://test.com/foo/bar.html- matches the exact URL
If you find an issue, let me know in the issues section!
From the Rubinius contribution page:
Writing code and participating should be fun, not an exercise in perseverance. Stringent commit polices, for whatever their other qualities may bring, also mean longer turnaround times.
Submit a patch and once it's accepted, you'll get commit access to the repository. Feel free to fork the repository and send a pull request, once it's merged in you'll get added. If not, feel free to bug jessepollak about it.
- Clone:
git@github.com:jessepollak/urlmatch.git - Create a topic branch:
git checkout -b awesome_feature - Commit away (and add unit tests for any code your write).
- Keep up to date:
git fetch && git rebase origin/master. - Run the tests:
python setup.py test
Once you're ready:
- Fork the project on GitHub
- Add your repository as a remote:
git remote add your_remote your_repo - Push up your branch:
git push your_remote awesome_feature - Create a Pull Request for the topic branch, asking for review.
Once it's accepted:
- If you want access to the core repository feel free to ask! Then you can change origin to point to the Read+Write URL:
git remote set-url origin git@github.com:jessepollak/urlmatch.git
Otherwise, you can continue to hack away in your own fork.