introduction to surlex
play

Introduction to Surlex Cody Soyland Djangocon 2009 Purpose - PowerPoint PPT Presentation

Introduction to Surlex Cody Soyland Djangocon 2009 Purpose Alternative to regex matching/capturing Actually, a regex generator Concise syntax Designed for data extraction Why reinvent the wheel? Regex vs. Surlex Basic matching:


  1. Introduction to Surlex Cody Soyland Djangocon 2009

  2. Purpose ● Alternative to regex matching/capturing ● Actually, a regex generator ● Concise syntax ● Designed for data extraction

  3. Why reinvent the wheel?

  4. Regex vs. Surlex Basic matching: Surlex: <var> Regex: (?P<var>.+) Makes easy-to-read URL patterns: Surlex: /blog/<year>/<month>/<slug>/ Regex: /blog/(?P<year>.+)/(?P<month>.+)/(?P<slug>.+)/

  5. Embedded Regex Allows Specificity ● Specific is better than general ● T arget: the string “2009” ● Bad: .+ ● Better: \d+ ● Perfect: \d{4} ● Surlex Equivalents: ● <year> ● <year=\d+> ● <year=\d{4}>

  6. Wait, I'm back to writing regular expressions?!

  7. Macros ease common tasks surlex: <slug:s> == surlex: <slug=[\w-]+> == regex: (?P<slug>[\w-]+)

  8. Macros shorten things a lot Built-in date and slug macros enable conciseness: /blog/<year:Y>/<month:M>/<day:d>/<slug:s>/ == /blog/(?P<year>\d{4})/(?P<month>(jan|feb|mar| apr|may|jun|jul|aug|sep|oct|nov|dec))/(? P<day>\d{1,2})/ (?P<slug>[\w-]+)/

  9. Matching without capturing Simply omit the variable name Macro matching a slug: <:s> (regex: [\w-]+) Regex matching a digit: <=\d> (regex: \d)

  10. Other features Optional strings in parentheses: Surlex: “/blog/(<year:Y>/)” Regex: “/blog/((?P<year>\d{4})/)?” Wildcards: Surlex: “/*.*” Regex: “/.*\..*” Start and end of string: “^” and “$” work just like regex

  11. Django Integration from surlex.dj import surl urlpatterns = patterns('', surl(r'^blog/<year:Y>/<month:M>/<day:d>/<slug:s>/$', blog.views.post_detail, name='blog_post_detail'), )

  12. Try it yourself! pip install surlex or git clone git://github.com/codysoyland/surlex.git Thanks! Cody Soyland codysoyland@gmail.com http://www.codysoyland.com/ http://www.github.com/codysoyland/

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend