Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Added more tests for strip_tags utility

Refs #19237.
  • Loading branch information...
commit a01361b5ae9df5220c0ce7b42c5ff36094d5718c 1 parent b474ffe
@claudep claudep authored
View
1,302 tests/utils_tests/files/strip_tags1.html
@@ -0,0 +1,1302 @@
+<!DOCTYPE html>
+<html>
+ <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# githubog: http://ogp.me/ns/fb/githubog#">
+ <meta charset='utf-8'>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <title>Improved regex in strip_tags · d7504a3 · django/django</title>
+ <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub" />
+ <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub" />
+ <link rel="apple-touch-icon" sizes="57x57" href="/apple-touch-icon-114.png" />
+ <link rel="apple-touch-icon" sizes="114x114" href="/apple-touch-icon-114.png" />
+ <link rel="apple-touch-icon" sizes="72x72" href="/apple-touch-icon-144.png" />
+ <link rel="apple-touch-icon" sizes="144x144" href="/apple-touch-icon-144.png" />
+ <link rel="logo" type="image/svg" href="http://github-media-downloads.s3.amazonaws.com/github-logo.svg" />
+ <meta name="msapplication-TileImage" content="/windows-tile.png">
+ <meta name="msapplication-TileColor" content="#ffffff">
+
+ <link rel="icon" type="image/x-icon" href="/favicon.ico" />
+
+ <meta content="authenticity_token" name="csrf-param" />
+<meta content="Vbmuc30dLLFdm7POIe3xfTa4nODYc/la/wLrI1OLEOI=" name="csrf-token" />
+
+ <link href="https://a248.e.akamai.net/assets.github.com/assets/github-f70e4783e00fd4884a9e5e651a43933c9881caa8.css" media="all" rel="stylesheet" type="text/css" />
+ <link href="https://a248.e.akamai.net/assets.github.com/assets/github2-0d31290d073dea4d8671e2b8c747629aeb074034.css" media="all" rel="stylesheet" type="text/css" />
+
+
+
+ <script src="https://a248.e.akamai.net/assets.github.com/assets/frameworks-d76b58e749b52bc47a4c46620bf2c320fabe5248.js" type="text/javascript"></script>
+ <script src="https://a248.e.akamai.net/assets.github.com/assets/github-67b55380cff8d6766b298e6935a3c1db7d5c6d5d.js" type="text/javascript"></script>
+
+ <meta http-equiv="x-pjax-version" content="1212ad79754350a805cefbcd08a3dadf">
+
+ <link data-pjax-transient rel='alternate' type='text/plain+diff' href="&#x2F;django&#x2F;django&#x2F;commit&#x2F;d7504a3d7b8645bdb979bab7ded0e9a9b6dccd0e.diff">
+ <link data-pjax-transient rel='alternate' type='text/plain+patch' href="&#x2F;django&#x2F;django&#x2F;commit&#x2F;d7504a3d7b8645bdb979bab7ded0e9a9b6dccd0e.patch">
+ <link data-pjax-transient rel='permalink' type='text/html' href="&#x2F;django&#x2F;django&#x2F;commit&#x2F;d7504a3d7b8645bdb979bab7ded0e9a9b6dccd0e">
+ <meta property="og:title" content="django"/>
+ <meta property="og:type" content="githubog:gitrepository"/>
+ <meta property="og:url" content="https://github.com/django/django"/>
+ <meta property="og:image" content="https://secure.gravatar.com/avatar/fd542381031aa84dca86628ece84fc07?s=420&amp;d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
+ <meta property="og:site_name" content="GitHub"/>
+ <meta property="og:description" content="django - The Web framework for perfectionists with deadlines."/>
+ <meta property="twitter:card" content="summary"/>
+ <meta property="twitter:site" content="@GitHub">
+ <meta property="twitter:title" content="django/django"/>
+
+ <meta name="description" content="django - The Web framework for perfectionists with deadlines." />
+
+ <link href="https://github.com/django/django/commits/d7504a3d7b8645bdb979bab7ded0e9a9b6dccd0e.atom" rel="alternate" title="Recent Commits to django:d7504a3d7b8645bdb979bab7ded0e9a9b6dccd0e" type="application/atom+xml" />
+
+ </head>
+
+
+ <body class="logged_in linux vis-public env-production ">
+ <div id="wrapper">
+
+ <div class="header header-logged-in true">
+ <div class="container clearfix">
+
+ <a class="header-logo-blacktocat" href="https://github.com/">
+ <span class="mega-icon mega-icon-blacktocat"></span>
+</a>
+
+ <div class="divider-vertical"></div>
+
+ <a href="/django/django/notifications" class="notification-indicator tooltipped downwards contextually-unread" title="You have unread notifications in this repository">
+ <span class="mail-status unread"></span>
+ </a>
+ <div class="divider-vertical"></div>
+
+
+ <div class="command-bar js-command-bar ">
+ <form accept-charset="UTF-8" action="/search" class="command-bar-form" id="top_search_form" method="get">
+ <a href="/search/advanced" class="advanced-search-icon tooltipped downwards command-bar-search" id="advanced_search" title="Advanced search"><span class="mini-icon mini-icon-advanced-search "></span></a>
+
+ <input type="text" name="q" id="js-command-bar-field" placeholder="Search or type a command" tabindex="1" data-username="claudep" autocapitalize="off">
+
+ <span class="mini-icon help tooltipped downwards" title="Show command bar help">
+ <span class="mini-icon mini-icon-help"></span>
+ </span>
+
+ <input type="hidden" name="ref" value="commandbar">
+
+ <div class="divider-vertical"></div>
+</form>
+ <ul class="top-nav">
+ <li class="explore"><a href="https://github.com/explore">Explore</a></li>
+ <li><a href="https://gist.github.com">Gist</a></li>
+ <li><a href="/blog">Blog</a></li>
+ <li><a href="http://help.github.com">Help</a></li>
+ </ul>
+ </div>
+
+
+
+
+ <ul id="user-links">
+ <li>
+ <a href="https://github.com/claudep" class="name">
+ <img height="20" src="https://secure.gravatar.com/avatar/cf4198670f0073174b475634964b576b?s=140&amp;d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png" width="20" /> claudep
+ </a>
+ </li>
+ <li>
+ <a href="/new" id="new_repo" class="tooltipped downwards" title="Create a new repo">
+ <span class="mini-icon mini-icon-create"></span>
+ </a>
+ </li>
+ <li>
+ <a href="/settings/profile" id="account_settings"
+ class="tooltipped downwards"
+ title="Account settings ">
+ <span class="mini-icon mini-icon-account-settings"></span>
+ </a>
+ </li>
+ <li>
+ <a href="/logout" data-method="post" id="logout" class="tooltipped downwards" title="Sign out">
+ <span class="mini-icon mini-icon-logout"></span>
+ </a>
+ </li>
+ </ul>
+
+
+
+
+ </div>
+</div>
+
+ <div class="site hfeed" itemscope itemtype="http://schema.org/WebPage">
+ <div class="hentry">
+
+ <div class="pagehead repohead instapaper_ignore readability-menu ">
+ <div class="container">
+ <div class="title-actions-bar">
+
+
+
+<ul class="pagehead-actions">
+
+ <li class="nspr">
+ <a href="/django/django/pull/new/d7504a3d7b8645bdb979bab7ded0e9a9b6dccd0e" class="button minibutton btn-pull-request" icon_class="mini-icon-pull-request"><span class="mini-icon mini-icon-pull-request"></span>Pull Request</a>
+ </li>
+
+ <li class="subscription">
+ <form accept-charset="UTF-8" action="/notifications/subscribe" data-autosubmit="true" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="authenticity_token" type="hidden" value="Vbmuc30dLLFdm7POIe3xfTa4nODYc/la/wLrI1OLEOI=" /></div> <input id="repository_id" name="repository_id" type="hidden" value="4164482" />
+
+ <div class="select-menu js-menu-container js-select-menu">
+ <span class="minibutton select-menu-button js-menu-target">
+ <span class="js-select-button">
+ <span class="mini-icon mini-icon-watching"></span>
+ Watch
+ </span>
+ </span>
+
+ <div class="select-menu-modal-holder js-menu-content">
+ <div class="select-menu-modal">
+ <div class="select-menu-header">
+ <span class="select-menu-title">Notification status</span>
+ <span class="mini-icon mini-icon-remove-close js-menu-close"></span>
+ </div> <!-- /.select-menu-header -->
+
+ <div class="select-menu-list js-navigation-container">
+
+ <div class="select-menu-item js-navigation-item js-navigation-target selected">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <div class="select-menu-item-text">
+ <input checked="checked" id="do_included" name="do" type="radio" value="included" />
+ <h4>Not watching</h4>
+ <span class="description">You only receive notifications for discussions in which you participate or are @mentioned.</span>
+ <span class="js-select-button-text hidden-select-button-text">
+ <span class="mini-icon mini-icon-watching"></span>
+ Watch
+ </span>
+ </div>
+ </div> <!-- /.select-menu-item -->
+
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <div class="select-menu-item-text">
+ <input id="do_subscribed" name="do" type="radio" value="subscribed" />
+ <h4>Watching</h4>
+ <span class="description">You receive notifications for all discussions in this repository.</span>
+ <span class="js-select-button-text hidden-select-button-text">
+ <span class="mini-icon mini-icon-unwatch"></span>
+ Unwatch
+ </span>
+ </div>
+ </div> <!-- /.select-menu-item -->
+
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <div class="select-menu-item-text">
+ <input id="do_ignore" name="do" type="radio" value="ignore" />
+ <h4>Ignoring</h4>
+ <span class="description">You do not receive any notifications for discussions in this repository.</span>
+ <span class="js-select-button-text hidden-select-button-text">
+ <span class="mini-icon mini-icon-mute"></span>
+ Stop ignoring
+ </span>
+ </div>
+ </div> <!-- /.select-menu-item -->
+
+ </div> <!-- /.select-menu-list -->
+
+ </div> <!-- /.select-menu-modal -->
+ </div> <!-- /.select-menu-modal-holder -->
+ </div> <!-- /.select-menu -->
+
+</form>
+ </li>
+
+ <li class="js-toggler-container js-social-container starring-container on">
+ <a href="/django/django/unstar" class="minibutton js-toggler-target star-button starred upwards" title="Unstar this repo" data-remote="true" data-method="post" rel="nofollow">
+ <span class="mini-icon mini-icon-remove-star"></span>
+ <span class="text">Unstar</span>
+ </a>
+ <a href="/django/django/star" class="minibutton js-toggler-target star-button unstarred upwards" title="Star this repo" data-remote="true" data-method="post" rel="nofollow">
+ <span class="mini-icon mini-icon-star"></span>
+ <span class="text">Star</span>
+ </a>
+ <a class="social-count js-social-count" href="/django/django/stargazers">5,939</a>
+ </li>
+
+ <li>
+ <a href="/django/django/fork_select" class="minibutton js-toggler-target fork-button lighter upwards" title="Fork this repo" rel="facebox nofollow">
+ <span class="mini-icon mini-icon-branch-create"></span>
+ <span class="text">Fork</span>
+ </a>
+ <a href="/django/django/network" class="social-count">1,909</a>
+ </li>
+
+
+</ul>
+
+ <h1 itemscope itemtype="http://data-vocabulary.org/Breadcrumb" class="entry-title public">
+ <span class="repo-label"><span>public</span></span>
+ <span class="mega-icon mega-icon-public-repo"></span>
+ <span class="author vcard">
+ <a href="/django" class="url fn" itemprop="url" rel="author">
+ <span itemprop="title">django</span>
+ </a></span> /
+ <strong><a href="/django/django" class="js-current-repository">django</a></strong>
+ </h1>
+ </div>
+
+
+ <ul class="tabs">
+ <li><a href="/django/django" class="selected" highlight="repo_source repo_downloads repo_commits repo_tags repo_branches">Code</a></li>
+ <li><a href="/django/django/network" highlight="repo_network">Network</a></li>
+ <li><a href="/django/django/pulls" highlight="repo_pulls">Pull Requests <span class='counter'>177</span></a></li>
+
+
+
+
+ <li><a href="/django/django/graphs" highlight="repo_graphs repo_contributors">Graphs</a></li>
+
+ <li>
+ <a href="/django/django/settings">Settings</a>
+ </li>
+
+ </ul>
+
+<div class="tabnav">
+
+ <span class="tabnav-right">
+ <ul class="tabnav-tabs">
+ <li><a href="/django/django/tags" class="tabnav-tab" highlight="repo_tags">Tags <span class="counter ">39</span></a></li>
+ </ul>
+
+ </span>
+
+ <div class="tabnav-widget scope">
+
+
+ <div class="select-menu js-menu-container js-select-menu js-branch-menu">
+ <a class="minibutton select-menu-button js-menu-target" data-hotkey="w" data-ref="">
+ <span class="mini-icon mini-icon-tree"></span>
+ <i>tree:</i>
+ <span class="js-select-button">d7504a3d7b</span>
+ </a>
+
+ <div class="select-menu-modal-holder js-menu-content js-navigation-container">
+
+ <div class="select-menu-modal">
+ <div class="select-menu-header">
+ <span class="select-menu-title">Switch branches/tags</span>
+ <span class="mini-icon mini-icon-remove-close js-menu-close"></span>
+ </div> <!-- /.select-menu-header -->
+
+ <div class="select-menu-filters">
+ <div class="select-menu-text-filter">
+ <input type="text" id="commitish-filter-field" class="js-filterable-field js-navigation-enable" placeholder="Find or create a branch…">
+ </div>
+ <div class="select-menu-tabs">
+ <ul>
+ <li class="select-menu-tab">
+ <a href="#" data-tab-filter="branches" class="js-select-menu-tab">Branches</a>
+ </li>
+ <li class="select-menu-tab">
+ <a href="#" data-tab-filter="tags" class="js-select-menu-tab">Tags</a>
+ </li>
+ </ul>
+ </div><!-- /.select-menu-tabs -->
+ </div><!-- /.select-menu-filters -->
+
+ <div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket css-truncate" data-tab-filter="branches">
+
+ <div data-filterable-for="commitish-filter-field" data-filterable-type="substring">
+
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/attic/boulder-oracle-sprint" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="attic/boulder-oracle-sprint" rel="nofollow" title="attic/boulder-oracle-sprint">attic/boulder-oracle-sprint</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/attic/full-history" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="attic/full-history" rel="nofollow" title="attic/full-history">attic/full-history</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/attic/generic-auth" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="attic/generic-auth" rel="nofollow" title="attic/generic-auth">attic/generic-auth</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/attic/gis" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="attic/gis" rel="nofollow" title="attic/gis">attic/gis</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/attic/i18n" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="attic/i18n" rel="nofollow" title="attic/i18n">attic/i18n</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/attic/magic-removal" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="attic/magic-removal" rel="nofollow" title="attic/magic-removal">attic/magic-removal</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/attic/multi-auth" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="attic/multi-auth" rel="nofollow" title="attic/multi-auth">attic/multi-auth</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/attic/multiple-db-support" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="attic/multiple-db-support" rel="nofollow" title="attic/multiple-db-support">attic/multiple-db-support</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/attic/new-admin" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="attic/new-admin" rel="nofollow" title="attic/new-admin">attic/new-admin</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/attic/newforms-admin" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="attic/newforms-admin" rel="nofollow" title="attic/newforms-admin">attic/newforms-admin</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/attic/per-object-permissions" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="attic/per-object-permissions" rel="nofollow" title="attic/per-object-permissions">attic/per-object-permissions</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/attic/queryset-refactor" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="attic/queryset-refactor" rel="nofollow" title="attic/queryset-refactor">attic/queryset-refactor</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/attic/schema-evolution" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="attic/schema-evolution" rel="nofollow" title="attic/schema-evolution">attic/schema-evolution</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/attic/schema-evolution-ng" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="attic/schema-evolution-ng" rel="nofollow" title="attic/schema-evolution-ng">attic/schema-evolution-ng</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/attic/search-api" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="attic/search-api" rel="nofollow" title="attic/search-api">attic/search-api</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/attic/sqlalchemy" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="attic/sqlalchemy" rel="nofollow" title="attic/sqlalchemy">attic/sqlalchemy</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/attic/unicode" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="attic/unicode" rel="nofollow" title="attic/unicode">attic/unicode</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/master" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="master" rel="nofollow" title="master">master</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/soc2009/admin-ui" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="soc2009/admin-ui" rel="nofollow" title="soc2009/admin-ui">soc2009/admin-ui</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/soc2009/http-wsgi-improvements" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="soc2009/http-wsgi-improvements" rel="nofollow" title="soc2009/http-wsgi-improvements">soc2009/http-wsgi-improvements</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/soc2009/i18n-improvements" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="soc2009/i18n-improvements" rel="nofollow" title="soc2009/i18n-improvements">soc2009/i18n-improvements</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/soc2009/model-validation" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="soc2009/model-validation" rel="nofollow" title="soc2009/model-validation">soc2009/model-validation</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/soc2009/multidb" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="soc2009/multidb" rel="nofollow" title="soc2009/multidb">soc2009/multidb</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/soc2009/test-improvements" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="soc2009/test-improvements" rel="nofollow" title="soc2009/test-improvements">soc2009/test-improvements</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/soc2010/app-loading" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="soc2010/app-loading" rel="nofollow" title="soc2010/app-loading">soc2010/app-loading</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/soc2010/query-refactor" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="soc2010/query-refactor" rel="nofollow" title="soc2010/query-refactor">soc2010/query-refactor</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/soc2010/test-refactor" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="soc2010/test-refactor" rel="nofollow" title="soc2010/test-refactor">soc2010/test-refactor</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/stable/0.90.x" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="stable/0.90.x" rel="nofollow" title="stable/0.90.x">stable/0.90.x</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/stable/0.91.x" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="stable/0.91.x" rel="nofollow" title="stable/0.91.x">stable/0.91.x</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/stable/0.95.x" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="stable/0.95.x" rel="nofollow" title="stable/0.95.x">stable/0.95.x</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/stable/0.96.x" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="stable/0.96.x" rel="nofollow" title="stable/0.96.x">stable/0.96.x</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/stable/1.0.x" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="stable/1.0.x" rel="nofollow" title="stable/1.0.x">stable/1.0.x</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/stable/1.1.x" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="stable/1.1.x" rel="nofollow" title="stable/1.1.x">stable/1.1.x</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/stable/1.2.x" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="stable/1.2.x" rel="nofollow" title="stable/1.2.x">stable/1.2.x</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/stable/1.3.x" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="stable/1.3.x" rel="nofollow" title="stable/1.3.x">stable/1.3.x</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/stable/1.4.x" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="stable/1.4.x" rel="nofollow" title="stable/1.4.x">stable/1.4.x</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/stable/1.5.x" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="stable/1.5.x" rel="nofollow" title="stable/1.5.x">stable/1.5.x</a>
+ </div> <!-- /.select-menu-item -->
+ </div>
+
+ <form accept-charset="UTF-8" action="/django/django/branches" class="js-create-branch select-menu-item select-menu-new-item-form js-navigation-item js-navigation-target js-new-item-form" method="post"><div style="margin:0;padding:0;display:inline"><input name="authenticity_token" type="hidden" value="Vbmuc30dLLFdm7POIe3xfTa4nODYc/la/wLrI1OLEOI=" /></div>
+
+ <span class="mini-icon mini-icon-branch-create select-menu-item-icon"></span>
+ <div class="select-menu-item-text">
+ <h4>Create branch: <span class="js-new-item-name"></span></h4>
+ <span class="description">from ‘d7504a3’</span>
+ </div>
+ <input type="hidden" name="name" id="name" class="js-new-item-submit" />
+ <input type="hidden" name="branch" id="branch" value="d7504a3d7b8645bdb979bab7ded0e9a9b6dccd0e" />
+ <input type="hidden" name="path" id="branch" value="" />
+ </form> <!-- /.select-menu-item -->
+
+ </div> <!-- /.select-menu-list -->
+
+
+ <div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket css-truncate" data-tab-filter="tags">
+ <div data-filterable-for="commitish-filter-field" data-filterable-type="substring">
+
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.5c2" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.5c2" rel="nofollow" title="1.5c2">1.5c2</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.5c1" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.5c1" rel="nofollow" title="1.5c1">1.5c1</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.5b2" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.5b2" rel="nofollow" title="1.5b2">1.5b2</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.5b1" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.5b1" rel="nofollow" title="1.5b1">1.5b1</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.5a1" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.5a1" rel="nofollow" title="1.5a1">1.5a1</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.5.1" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.5.1" rel="nofollow" title="1.5.1">1.5.1</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.5" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.5" rel="nofollow" title="1.5">1.5</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.4.5" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.4.5" rel="nofollow" title="1.4.5">1.4.5</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.4.4" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.4.4" rel="nofollow" title="1.4.4">1.4.4</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.4.3" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.4.3" rel="nofollow" title="1.4.3">1.4.3</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.4.2" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.4.2" rel="nofollow" title="1.4.2">1.4.2</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.4.1" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.4.1" rel="nofollow" title="1.4.1">1.4.1</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.4" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.4" rel="nofollow" title="1.4">1.4</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.3.7" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.3.7" rel="nofollow" title="1.3.7">1.3.7</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.3.6" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.3.6" rel="nofollow" title="1.3.6">1.3.6</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.3.5" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.3.5" rel="nofollow" title="1.3.5">1.3.5</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.3.4" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.3.4" rel="nofollow" title="1.3.4">1.3.4</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.3.3" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.3.3" rel="nofollow" title="1.3.3">1.3.3</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.3.2" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.3.2" rel="nofollow" title="1.3.2">1.3.2</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.3.1" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.3.1" rel="nofollow" title="1.3.1">1.3.1</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.3" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.3" rel="nofollow" title="1.3">1.3</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.2.7" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.2.7" rel="nofollow" title="1.2.7">1.2.7</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.2.6" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.2.6" rel="nofollow" title="1.2.6">1.2.6</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.2.5" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.2.5" rel="nofollow" title="1.2.5">1.2.5</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.2.4" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.2.4" rel="nofollow" title="1.2.4">1.2.4</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.2.3" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.2.3" rel="nofollow" title="1.2.3">1.2.3</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.2.2" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.2.2" rel="nofollow" title="1.2.2">1.2.2</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.2.1" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.2.1" rel="nofollow" title="1.2.1">1.2.1</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.2" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.2" rel="nofollow" title="1.2">1.2</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.1.4" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.1.4" rel="nofollow" title="1.1.4">1.1.4</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.1.3" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.1.3" rel="nofollow" title="1.1.3">1.1.3</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.1.2" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.1.2" rel="nofollow" title="1.1.2">1.1.2</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.1.1" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.1.1" rel="nofollow" title="1.1.1">1.1.1</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.1" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.1" rel="nofollow" title="1.1">1.1</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.0.4" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.0.4" rel="nofollow" title="1.0.4">1.0.4</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.0.3" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.0.3" rel="nofollow" title="1.0.3">1.0.3</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.0.2" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.0.2" rel="nofollow" title="1.0.2">1.0.2</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.0.1" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.0.1" rel="nofollow" title="1.0.1">1.0.1</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <a href="/django/django/commit/1.0" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="1.0" rel="nofollow" title="1.0">1.0</a>
+ </div> <!-- /.select-menu-item -->
+ </div>
+
+ <div class="select-menu-no-results">Nothing to show</div>
+
+ </div> <!-- /.select-menu-list -->
+
+ </div> <!-- /.select-menu-modal -->
+ </div> <!-- /.select-menu-modal-holder -->
+ </div> <!-- /.select-menu -->
+
+ </div> <!-- /.scope -->
+
+ <ul class="tabnav-tabs">
+ <li><a href="/django/django" class="tabnav-tab" highlight="repo_source">Files</a></li>
+ <li><a href="/django/django/commits/" class="selected tabnav-tab" highlight="repo_commits">Commits</a></li>
+ <li><a href="/django/django/branches" class="tabnav-tab" highlight="repo_branches" rel="nofollow">Branches <span class="counter ">37</span></a></li>
+ </ul>
+
+</div>
+
+
+
+
+
+
+
+ </div>
+ </div><!-- /.repohead -->
+
+ <div id="js-repo-pjax-container" class="container context-loader-container" data-pjax-container>
+
+
+
+ <div class="commit full-commit ">
+ <a href="/django/django/tree/d7504a3d7b8645bdb979bab7ded0e9a9b6dccd0e" class="browse-button" title="Browse the code at this point in the history" rel="nofollow">Browse code</a>
+
+ <p class="commit-title">
+ Improved regex in strip_tags
+ </p>
+
+ <div class="commit-desc"><pre>Thanks Pablo Recio for the report. Refs #19237.</pre></div>
+
+ <div class="commit-meta clearfix">
+ <span class="sha-block">commit <span class="sha js-selectable-text">d7504a3d7b8645bdb979bab7ded0e9a9b6dccd0e</span></span>
+
+ <span class="sha-block" data-pjax>
+ 1 parent
+
+ <a href="/django/django/commit/afa3e1633431137f4e76c7efc359b579f4d9c08e" class="sha" data-hotkey="p">afa3e16</a>
+ </span>
+
+ <div class="authorship">
+ <img class="gravatar" height="24" src="https://secure.gravatar.com/avatar/cf4198670f0073174b475634964b576b?s=140&amp;d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png" width="24" />
+ <span class="author-name"><a href="/claudep" rel="author">claudep</a></span>
+ authored <time class="js-relative-date" datetime="2013-02-06T12:20:43-08:00" title="2013-02-06 12:20:43">February 06, 2013</time>
+
+ </div>
+ </div>
+ </div>
+
+ <a name="diff-stat"></a>
+
+<div id='toc' class="details-collapse js-details-container ">
+ <p class="explain">
+ <span class="mini-icon mini-icon-diff"></span>Showing <strong>2 changed files</strong>
+ with <strong>2 additions</strong>
+ and <strong>1 deletion</strong>.
+ <a href="#" class="minibutton show-diff-stats js-details-target">Show Diff Stats</a>
+ <a href="#" class="minibutton hide-diff-stats js-details-target">Hide Diff Stats</a></p>
+
+ <ol class="content collapse js-transitionable">
+ <li>
+ <span class="diffstat">
+ <a href="#diff-0" class="tooltipped leftwards" title="1 addition &amp; 1 deletion">
+ 2
+ <span class="diffstat-bar"> <i class='plus'>&#xf053;</i><i class='minus'>&#xf053;</i>&#xf053;&#xf053;&#xf053; </span>
+ </a>
+ </span>
+ <span class='mini-icon mini-icon-modified' title='modified'></span> <a href="#diff-0">django/utils/html.py</a>
+ </li>
+ <li>
+ <span class="diffstat">
+ <a href="#diff-1" class="tooltipped leftwards" title="1 addition &amp; 0 deletions">
+ 1
+ <span class="diffstat-bar"> <i class='plus'>&#xf053;</i>&#xf053;&#xf053;&#xf053;&#xf053; </span>
+ </a>
+ </span>
+ <span class='mini-icon mini-icon-modified' title='modified'></span> <a href="#diff-1">tests/regressiontests/utils/html.py</a>
+ </li>
+ </ol>
+</div>
+
+
+<div id="files" class="diff-view commentable">
+ <div id="diff-0" class="file js-details-container">
+ <div class="meta" data-path="django/utils/html.py">
+ <div class="info">
+ <span class="diffstat tooltipped rightwards" title="1 addition &amp; 1 deletion">2 <span class="diffstat-bar"><i class='plus'>&#xf053;</i><i class='minus'>&#xf053;</i>&#xf053;&#xf053;&#xf053;</span></span>
+
+ <span class="js-selectable-text css-truncate css-truncate-target" title="django/utils/html.py">
+ django/utils/html.py
+ </span>
+
+ </div>
+ <div class="actions">
+ <span class="show-inline-notes">
+ <label>
+ <input type="checkbox" checked="checked" class="js-show-inline-comments-toggle">
+ show inline notes
+ </label>
+ </span>
+ <div class="button-group">
+ <a href="/django/django/blob/d7504a3d7b8645bdb979bab7ded0e9a9b6dccd0e/django/utils/html.py" class="minibutton" rel="nofollow">View file @ <code>d7504a3</code></a>
+ </div>
+ </div>
+ </div>
+
+ <div class="data highlight ">
+ <table class="diff-table">
+ <tr id="django-utils-html-py-P0" data-position='0'>
+ <td id="L0L32" class="line_numbers linkable-line-number">
+ <span class="line-number-content">...</span>
+ </td>
+ <td id="L0R32" class="line_numbers linkable-line-number">
+ <span class="line-number-content">...</span>
+ </td>
+ <td class="gc diff-line line">
+ <b class="add-bubble mini-icon mini-icon-add-comment" data-remote="/django/django/commit_comment/form?commit_id=d7504a3d7b8645bdb979bab7ded0e9a9b6dccd0e&amp;path=django/utils/html.py&amp;position=0&amp;line=32"></b>
+ @@&nbsp;-33,7&nbsp;+33,7&nbsp;@@
+ </td>
+ </tr>
+ <tr id="django-utils-html-py-P1" data-position='1'>
+ <td id="L0L33" class="line_numbers linkable-line-number">
+ <span class="line-number-content">33</span>
+ </td>
+ <td id="L0R33" class="line_numbers linkable-line-number">
+ <span class="line-number-content">33</span>
+ </td>
+ <td class=" diff-line line">
+ <b class="add-bubble mini-icon mini-icon-add-comment" data-remote="/django/django/commit_comment/form?commit_id=d7504a3d7b8645bdb979bab7ded0e9a9b6dccd0e&amp;path=django/utils/html.py&amp;position=1&amp;line=33"></b>
+ &nbsp;html_gunk_re&nbsp;=&nbsp;re.compile(r&#39;(?:&lt;br&nbsp;clear=&quot;all&quot;&gt;|&lt;i&gt;&lt;\/i&gt;|&lt;b&gt;&lt;\/b&gt;|&lt;em&gt;&lt;\/em&gt;|&lt;strong&gt;&lt;\/strong&gt;|&lt;\/?smallcaps&gt;|&lt;\/?uppercase&gt;)&#39;,&nbsp;re.IGNORECASE)
+ </td>
+ </tr>
+ <tr id="django-utils-html-py-P2" data-position='2'>
+ <td id="L0L34" class="line_numbers linkable-line-number">
+ <span class="line-number-content">34</span>
+ </td>
+ <td id="L0R34" class="line_numbers linkable-line-number">
+ <span class="line-number-content">34</span>
+ </td>
+ <td class=" diff-line line">
+ <b class="add-bubble mini-icon mini-icon-add-comment" data-remote="/django/django/commit_comment/form?commit_id=d7504a3d7b8645bdb979bab7ded0e9a9b6dccd0e&amp;path=django/utils/html.py&amp;position=2&amp;line=34"></b>
+ &nbsp;hard_coded_bullets_re&nbsp;=&nbsp;re.compile(r&#39;((?:&lt;p&gt;(?:%s).*?[a-zA-Z].*?&lt;/p&gt;\s*)+)&#39;&nbsp;%&nbsp;&#39;|&#39;.join([re.escape(x)&nbsp;for&nbsp;x&nbsp;in&nbsp;DOTS]),&nbsp;re.DOTALL)
+ </td>
+ </tr>
+ <tr id="django-utils-html-py-P3" data-position='3'>
+ <td id="L0L35" class="line_numbers linkable-line-number">
+ <span class="line-number-content">35</span>
+ </td>
+ <td id="L0R35" class="line_numbers linkable-line-number">
+ <span class="line-number-content">35</span>
+ </td>
+ <td class=" diff-line line">
+ <b class="add-bubble mini-icon mini-icon-add-comment" data-remote="/django/django/commit_comment/form?commit_id=d7504a3d7b8645bdb979bab7ded0e9a9b6dccd0e&amp;path=django/utils/html.py&amp;position=3&amp;line=35"></b>
+ &nbsp;trailing_empty_content_re&nbsp;=&nbsp;re.compile(r&#39;(?:&lt;p&gt;(?:&amp;nbsp;|\s|&lt;br&nbsp;\/&gt;)*?&lt;/p&gt;\s*)+\Z&#39;)
+ </td>
+ </tr>
+ <tr id="django-utils-html-py-P4" data-position='4'>
+ <td id="L0L36" class="line_numbers linkable-line-number">
+ <span class="line-number-content">36</span>
+ </td>
+ <td id="L0R35" class="line_numbers linkable-line-number empty-cell">
+ <span class="line-number-content">&nbsp;</span>
+ </td>
+ <td class="gd diff-line line">
+ <b class="add-bubble mini-icon mini-icon-add-comment" data-remote="/django/django/commit_comment/form?commit_id=d7504a3d7b8645bdb979bab7ded0e9a9b6dccd0e&amp;path=django/utils/html.py&amp;position=4&amp;line=36"></b>
+ -strip_tags_re&nbsp;=&nbsp;re.compile(r&#39;&lt;/?\S([^=<span class="x"></span>]*=(\s*&quot;[^&quot;]*&quot;|\s*\&#39;[^\&#39;]*\&#39;|\S*)|[^&gt;])*?&gt;&#39;,&nbsp;re.IGNORECASE)
+ </td>
+ </tr>
+ <tr id="django-utils-html-py-P5" data-position='5'>
+ <td id="L0L36" class="line_numbers linkable-line-number empty-cell">
+ <span class="line-number-content">&nbsp;</span>
+ </td>
+ <td id="L0R36" class="line_numbers linkable-line-number">
+ <span class="line-number-content">36</span>
+ </td>
+ <td class="gi diff-line line">
+ <b class="add-bubble mini-icon mini-icon-add-comment" data-remote="/django/django/commit_comment/form?commit_id=d7504a3d7b8645bdb979bab7ded0e9a9b6dccd0e&amp;path=django/utils/html.py&amp;position=5&amp;line=36"></b>
+ +strip_tags_re&nbsp;=&nbsp;re.compile(r&#39;&lt;/?\S([^=<span class="x">&gt;</span>]*=(\s*&quot;[^&quot;]*&quot;|\s*\&#39;[^\&#39;]*\&#39;|\S*)|[^&gt;])*?&gt;&#39;,&nbsp;re.IGNORECASE)
+ </td>
+ </tr>
+ <tr id="django-utils-html-py-P6" data-position='6'>
+ <td id="L0L37" class="line_numbers linkable-line-number">
+ <span class="line-number-content">37</span>
+ </td>
+ <td id="L0R37" class="line_numbers linkable-line-number">
+ <span class="line-number-content">37</span>
+ </td>
+ <td class=" diff-line line">
+ <b class="add-bubble mini-icon mini-icon-add-comment" data-remote="/django/django/commit_comment/form?commit_id=d7504a3d7b8645bdb979bab7ded0e9a9b6dccd0e&amp;path=django/utils/html.py&amp;position=6&amp;line=37"></b>
+ &nbsp;
+ </td>
+ </tr>
+ <tr id="django-utils-html-py-P7" data-position='7'>
+ <td id="L0L38" class="line_numbers linkable-line-number">
+ <span class="line-number-content">38</span>
+ </td>
+ <td id="L0R38" class="line_numbers linkable-line-number">
+ <span class="line-number-content">38</span>
+ </td>
+ <td class=" diff-line line">
+ <b class="add-bubble mini-icon mini-icon-add-comment" data-remote="/django/django/commit_comment/form?commit_id=d7504a3d7b8645bdb979bab7ded0e9a9b6dccd0e&amp;path=django/utils/html.py&amp;position=7&amp;line=38"></b>
+ &nbsp;
+ </td>
+ </tr>
+ <tr id="django-utils-html-py-P8" data-position='8'>
+ <td id="L0L39" class="line_numbers linkable-line-number">
+ <span class="line-number-content">39</span>
+ </td>
+ <td id="L0R39" class="line_numbers linkable-line-number">
+ <span class="line-number-content">39</span>
+ </td>
+ <td class=" diff-line line">
+ <b class="add-bubble mini-icon mini-icon-add-comment" data-remote="/django/django/commit_comment/form?commit_id=d7504a3d7b8645bdb979bab7ded0e9a9b6dccd0e&amp;path=django/utils/html.py&amp;position=8&amp;line=39"></b>
+ &nbsp;def&nbsp;escape(text):
+ </td>
+ </tr>
+ </table>
+ </div>
+
+ <div class="file-comments-place-holder" data-path="django/utils/html.py"></div>
+ </div>
+ <div id="diff-1" class="file js-details-container">
+ <div class="meta" data-path="tests/regressiontests/utils/html.py">
+ <div class="info">
+ <span class="diffstat tooltipped rightwards" title="1 addition &amp; 0 deletions">1 <span class="diffstat-bar"><i class='plus'>&#xf053;</i>&#xf053;&#xf053;&#xf053;&#xf053;</span></span>
+
+ <span class="js-selectable-text css-truncate css-truncate-target" title="tests/regressiontests/utils/html.py">
+ tests/regressiontests/utils/html.py
+ </span>
+
+ </div>
+ <div class="actions">
+ <span class="show-inline-notes">
+ <label>
+ <input type="checkbox" checked="checked" class="js-show-inline-comments-toggle">
+ show inline notes
+ </label>
+ </span>
+ <div class="button-group">
+ <a href="/django/django/blob/d7504a3d7b8645bdb979bab7ded0e9a9b6dccd0e/tests/regressiontests/utils/html.py" class="minibutton" rel="nofollow">View file @ <code>d7504a3</code></a>
+ </div>
+ </div>
+ </div>
+
+ <div class="data highlight ">
+ <table class="diff-table">
+ <tr id="tests-regressiontests-utils-html-py-P0" data-position='0'>
+ <td id="L1L67" class="line_numbers linkable-line-number">
+ <span class="line-number-content">...</span>
+ </td>
+ <td id="L1R67" class="line_numbers linkable-line-number">
+ <span class="line-number-content">...</span>
+ </td>
+ <td class="gc diff-line line">
+ <b class="add-bubble mini-icon mini-icon-add-comment" data-remote="/django/django/commit_comment/form?commit_id=d7504a3d7b8645bdb979bab7ded0e9a9b6dccd0e&amp;path=tests/regressiontests/utils/html.py&amp;position=0&amp;line=67"></b>
+ @@&nbsp;-68,6&nbsp;+68,7&nbsp;@@&nbsp;def&nbsp;test_strip_tags(self):
+ </td>
+ </tr>
+ <tr id="tests-regressiontests-utils-html-py-P1" data-position='1'>
+ <td id="L1L68" class="line_numbers linkable-line-number">
+ <span class="line-number-content">68</span>
+ </td>
+ <td id="L1R68" class="line_numbers linkable-line-number">
+ <span class="line-number-content">68</span>
+ </td>
+ <td class=" diff-line line">
+ <b class="add-bubble mini-icon mini-icon-add-comment" data-remote="/django/django/commit_comment/form?commit_id=d7504a3d7b8645bdb979bab7ded0e9a9b6dccd0e&amp;path=tests/regressiontests/utils/html.py&amp;position=1&amp;line=68"></b>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(&#39;a&lt;p&nbsp;onclick=&quot;alert(\&#39;&lt;test&gt;\&#39;)&quot;&gt;b&lt;/p&gt;c&#39;,&nbsp;&#39;abc&#39;),
+ </td>
+ </tr>
+ <tr id="tests-regressiontests-utils-html-py-P2" data-position='2'>
+ <td id="L1L69" class="line_numbers linkable-line-number">
+ <span class="line-number-content">69</span>
+ </td>
+ <td id="L1R69" class="line_numbers linkable-line-number">
+ <span class="line-number-content">69</span>
+ </td>
+ <td class=" diff-line line">
+ <b class="add-bubble mini-icon mini-icon-add-comment" data-remote="/django/django/commit_comment/form?commit_id=d7504a3d7b8645bdb979bab7ded0e9a9b6dccd0e&amp;path=tests/regressiontests/utils/html.py&amp;position=2&amp;line=69"></b>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(&#39;a&lt;p&nbsp;a&nbsp;&gt;b&lt;/p&gt;c&#39;,&nbsp;&#39;abc&#39;),
+ </td>
+ </tr>
+ <tr id="tests-regressiontests-utils-html-py-P3" data-position='3'>
+ <td id="L1L70" class="line_numbers linkable-line-number">
+ <span class="line-number-content">70</span>
+ </td>
+ <td id="L1R70" class="line_numbers linkable-line-number">
+ <span class="line-number-content">70</span>
+ </td>
+ <td class=" diff-line line">
+ <b class="add-bubble mini-icon mini-icon-add-comment" data-remote="/django/django/commit_comment/form?commit_id=d7504a3d7b8645bdb979bab7ded0e9a9b6dccd0e&amp;path=tests/regressiontests/utils/html.py&amp;position=3&amp;line=70"></b>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(&#39;d&lt;a:b&nbsp;c:d&gt;e&lt;/p&gt;f&#39;,&nbsp;&#39;def&#39;),
+ </td>
+ </tr>
+ <tr id="tests-regressiontests-utils-html-py-P4" data-position='4'>
+ <td id="L1L70" class="line_numbers linkable-line-number empty-cell">
+ <span class="line-number-content">&nbsp;</span>
+ </td>
+ <td id="L1R71" class="line_numbers linkable-line-number">
+ <span class="line-number-content">71</span>
+ </td>
+ <td class="gi diff-line line">
+ <b class="add-bubble mini-icon mini-icon-add-comment" data-remote="/django/django/commit_comment/form?commit_id=d7504a3d7b8645bdb979bab7ded0e9a9b6dccd0e&amp;path=tests/regressiontests/utils/html.py&amp;position=4&amp;line=71"></b>
+ +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(&#39;&lt;strong&gt;foo&lt;/strong&gt;&lt;a&nbsp;href=&quot;http://example.com&quot;&gt;bar&lt;/a&gt;&#39;,&nbsp;&#39;foobar&#39;),
+ </td>
+ </tr>
+ <tr id="tests-regressiontests-utils-html-py-P5" data-position='5'>
+ <td id="L1L71" class="line_numbers linkable-line-number">
+ <span class="line-number-content">71</span>
+ </td>
+ <td id="L1R72" class="line_numbers linkable-line-number">
+ <span class="line-number-content">72</span>
+ </td>
+ <td class=" diff-line line">
+ <b class="add-bubble mini-icon mini-icon-add-comment" data-remote="/django/django/commit_comment/form?commit_id=d7504a3d7b8645bdb979bab7ded0e9a9b6dccd0e&amp;path=tests/regressiontests/utils/html.py&amp;position=5&amp;line=72"></b>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)
+ </td>
+ </tr>
+ <tr id="tests-regressiontests-utils-html-py-P6" data-position='6'>
+ <td id="L1L72" class="line_numbers linkable-line-number">
+ <span class="line-number-content">72</span>
+ </td>
+ <td id="L1R73" class="line_numbers linkable-line-number">
+ <span class="line-number-content">73</span>
+ </td>
+ <td class=" diff-line line">
+ <b class="add-bubble mini-icon mini-icon-add-comment" data-remote="/django/django/commit_comment/form?commit_id=d7504a3d7b8645bdb979bab7ded0e9a9b6dccd0e&amp;path=tests/regressiontests/utils/html.py&amp;position=6&amp;line=73"></b>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;value,&nbsp;output&nbsp;in&nbsp;items:
+ </td>
+ </tr>
+ <tr id="tests-regressiontests-utils-html-py-P7" data-position='7'>
+ <td id="L1L73" class="line_numbers linkable-line-number">
+ <span class="line-number-content">73</span>
+ </td>
+ <td id="L1R74" class="line_numbers linkable-line-number">
+ <span class="line-number-content">74</span>
+ </td>
+ <td class=" diff-line line">
+ <b class="add-bubble mini-icon mini-icon-add-comment" data-remote="/django/django/commit_comment/form?commit_id=d7504a3d7b8645bdb979bab7ded0e9a9b6dccd0e&amp;path=tests/regressiontests/utils/html.py&amp;position=7&amp;line=74"></b>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.check_output(f,&nbsp;value,&nbsp;output)
+ </td>
+ </tr>
+ </table>
+ </div>
+
+ <div class="file-comments-place-holder" data-path="tests/regressiontests/utils/html.py"></div>
+ </div>
+</div>
+
+
+<div id="all_commit_comments">
+
+
+ <h2 class="commit-comments-header">
+ 0 notes
+ on commit <code class="commit-comments-header-sha">d7504a3</code>
+ <span class="commit-comments-toggle-line-notes-wrapper"><label><input id="js-inline-comments-toggle" class="commit-comments-toggle-line-notes" type="checkbox">Show line notes below</label></span>
+ </h2>
+ <div id="comments" class="only-commit-comments comment-holder commit-comments">
+ </div>
+
+ <div class="discussion-bubble js-comment-container">
+ <img class="discussion-bubble-avatar" height="48" src="https://secure.gravatar.com/avatar/cf4198670f0073174b475634964b576b?s=140&amp;d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png" width="48" />
+
+ <form accept-charset="UTF-8" action="/django/django/commit_comment/create" method="post"><div style="margin:0;padding:0;display:inline"><input name="authenticity_token" type="hidden" value="Vbmuc30dLLFdm7POIe3xfTa4nODYc/la/wLrI1OLEOI=" /></div>
+ <div class="discussion-bubble-content bubble">
+ <div class="discussion-bubble-inner">
+ <input type='hidden' name='commit_id' value='d7504a3d7b8645bdb979bab7ded0e9a9b6dccd0e'>
+
+
+<div class="js-previewable-comment-form previewable-comment-form write-selected" data-preview-url="/preview?repository=4164482">
+ <div class="comment-form-head tabnav">
+ <ul class="tabnav-tabs">
+ <li><a href="#write_bucket_525" class="tabnav-tab write-tab js-write-tab selected">Write</a></li>
+ <li><a href="#preview_bucket_525" class="tabnav-tab preview-tab js-preview-tab">Preview</a></li>
+ </ul>
+ <span class="tabnav-right">
+ <span class="tabnav-widget text">Comments are parsed with <a href="http://github.github.com/github-flavored-markdown/" class="gfm-help" target="_blank">GitHub Flavored Markdown</a></span>
+ </span>
+ </div>
+ <div class="comment-form-error js-comment-form-error" style="display:none;"></div>
+
+ <div id="write_bucket_525" class="write-content js-write-bucket js-uploadable-container upload-enabled is-default" data-model="asset">
+
+<a href="#fullscreen_comment_body_525" class="enable-fullscreen js-enable-fullscreen tooltipped
+ leftwards " title="Zen Mode">
+ <span class="mini-icon mini-icon-fullscreen"></span>
+</a>
+
+ <textarea name="comment[body]"
+ tabindex="2"
+ id="comment_body_525"
+ placeholder="Leave a comment"
+ class="js-comment-field js-size-to-fit input-with-fullscreen-icon"
+ data-suggester="525_new_preview_suggester"
+ required></textarea>
+
+
+ <p class="drag-and-drop">
+ <span class="default">
+ Attach images by dragging &amp; dropping them or
+ <input type="file" multiple="multiple" class="manual-file-chooser js-manual-file-chooser">
+ <a class="manual-file-chooser-text" href="#">choose an image</a>
+ </span>
+ <span class="loading">
+ <img alt="Octocat-spinner-32" height="16" src="https://a248.e.akamai.net/assets.github.com/images/spinners/octocat-spinner-32.gif?1338945075" width="16" /> Uploading your images now…
+ </span>
+ <span class="error bad-file">
+ Unfortunately we don't support that file type yet. Try image files less than 5MB.
+ </span>
+ <span class="error bad-browser">
+ This browser doesn't support image attachments.
+ </span>
+ <span class="error failed-request">
+ Something went really wrong and we can't process that image.
+ </span>
+ </p>
+
+ </div>
+ <div id="preview_bucket_525" class="preview-content js-preview-bucket">
+
+<div id="openstruct-163168300" class="js-comment comment">
+ <div class="comment-header normal-comment-header">
+ <img class="comment-header-gravatar" height="22" src="https://secure.gravatar.com/avatar/cf4198670f0073174b475634964b576b?s=140&amp;d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png" width="22" />
+ <a href="/claudep" class="comment-header-author">claudep</a>
+ <span class='comment-header-action-text'>
+ <a href="#openstruct-163168300">
+ commented
+ </a>
+ </span>
+
+ <span class="comment-header-right">
+ <a href="#openstruct-163168300" class="comment-header-date"><time class="js-relative-date" datetime="2013-04-01T06:45:26-07:00" title="2013-04-01 06:45:26">April 01, 2013</time></a>
+ </span>
+ </div> <!-- /.comment-header -->
+
+
+ <div class="comment-content">
+ <div class="edit-comment-hide">
+ <div class="js-comment-body comment-body markdown-body " data-body-version="">
+ <p>Nothing to preview</p>
+ </div>
+ </div>
+ </div> <!-- /.comment-content -->
+</div> <!-- /.comment -->
+
+ </div>
+
+ <div class="suggester-container">
+ <div class="suggester js-navigation-container" id="525_new_preview_suggester"
+ data-url="/django/django/suggestions/commit">
+ </div>
+ </div>
+</div>
+
+ </div>
+ </div>
+
+ <div class="form-actions">
+ <div class="tip">
+ <img alt="Commit_comment_tip" height="35" src="https://a248.e.akamai.net/assets.github.com/images/modules/commit/commit_comment_tip.gif?1347524281" width="95" />
+ <p><strong>Tip:</strong> You can also add notes to lines in a file. Hover to the left of a line to make a note</p>
+ </div>
+ <button type="submit" class="button primary" tabindex="2" data-disable-invalid data-disable-with>Comment on this commit</button>
+ </div>
+</form> </div><!-- /.discussion-bubble -->
+
+
+
+</div>
+
+
+
+<div class="thread-subscription-status clearfix">
+ <span class="mega-icon mega-icon-notifications"></span>
+
+ <div class="select-menu js-menu-container js-select-menu">
+
+ <form accept-charset="UTF-8" action="/notifications/thread" data-autosubmit="true" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="authenticity_token" type="hidden" value="Vbmuc30dLLFdm7POIe3xfTa4nODYc/la/wLrI1OLEOI=" /></div> <input id="repository_id" name="repository_id" type="hidden" value="4164482" />
+ <input id="thread_id" name="thread_id" type="hidden" value="d7504a3d7b8645bdb979bab7ded0e9a9b6dccd0e" />
+ <input id="thread_class" name="thread_class" type="hidden" value="c" />
+
+ <span class="minibutton select-menu-button js-menu-target">
+ <span class="js-select-button">
+ <span class="mini-icon mini-icon-watching"></span>
+ Watch thread
+ </span>
+ </span>
+
+ <div class="select-menu-modal-holder js-menu-content js-navigation-container">
+ <div class="select-menu-modal">
+ <div class="select-menu-header">
+ <span class="select-menu-title">Thread notifications</span>
+ <span class="mini-icon mini-icon-remove-close js-menu-close"></span>
+ </div> <!-- /.select-menu-header -->
+
+ <div class="select-menu-list">
+
+ <div class="select-menu-item js-navigation-item js-navigation-target selected">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <div class="select-menu-item-text">
+ <input checked="checked" id="id_unsubscribe" name="id" type="radio" value="unsubscribe" />
+ <h4>Not watching</h4>
+ <span class="description">You only receive notifications for this thread if you participate or are @mentioned.</span>
+ <span class="js-select-button-text hidden-select-button-text">
+ <span class="mini-icon mini-icon-watching"></span>
+ Watch thread
+ </span>
+ </div>
+ </div> <!-- /.select-menu-item -->
+
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <div class="select-menu-item-text">
+ <input checked="checked" id="id_subscribe" name="id" type="radio" value="subscribe" />
+ <h4>Watching</h4>
+ <span class="description">Receive all notifications for this thread.</span>
+ <span class="js-select-button-text hidden-select-button-text">
+ <span class="mini-icon mini-icon-unwatch"></span>
+ Unwatch thread
+ </span>
+ </div>
+ </div> <!-- /.select-menu-item -->
+
+ <div class="select-menu-item js-navigation-item js-navigation-target ">
+ <span class="select-menu-item-icon mini-icon mini-icon-confirm"></span>
+ <div class="select-menu-item-text">
+ <input checked="checked" id="id_mute" name="id" type="radio" value="mute" />
+ <h4>Ignoring</h4>
+ <span class="description">You do not receive notifications for this thread.</span>
+ <span class="js-select-button-text hidden-select-button-text">
+ <span class="mini-icon mini-icon-mute ignored"></span>
+ Stop ignoring thread
+ </span>
+ </div>
+ </div> <!-- /.select-menu-item -->
+
+ </div> <!-- /.select-menu-list -->
+ </div> <!-- /.select-menu-modal -->
+ </div> <!-- /.select-menu-modal-holder -->
+</form> </div> <!-- /.select-menu -->
+
+ <p class="reason">You only receive notifications for this thread when you participate or are @mentioned.</p>
+</div>
+
+
+
+<!-- COMMENTS -->
+<div id='diff-comment-data' style='display:none'>
+</div>
+
+
+ </div>
+ </div>
+ <div class="context-overlay"></div>
+ </div>
+
+ <div id="footer-push"></div><!-- hack for sticky footer -->
+ </div><!-- end of wrapper - hack for sticky footer -->
+
+ <!-- footer -->
+ <div id="footer">
+ <div class="container clearfix">
+
+ <dl class="footer_nav">
+ <dt>GitHub</dt>
+ <dd><a href="https://github.com/about">About us</a></dd>
+ <dd><a href="https://github.com/blog">Blog</a></dd>
+ <dd><a href="https://github.com/contact">Contact &amp; support</a></dd>
+ <dd><a href="http://enterprise.github.com/">GitHub Enterprise</a></dd>
+ <dd><a href="http://status.github.com/">Site status</a></dd>
+ </dl>
+
+ <dl class="footer_nav">
+ <dt>Applications</dt>
+ <dd><a href="http://mac.github.com/">GitHub for Mac</a></dd>
+ <dd><a href="http://windows.github.com/">GitHub for Windows</a></dd>
+ <dd><a href="http://eclipse.github.com/">GitHub for Eclipse</a></dd>
+ <dd><a href="http://mobile.github.com/">GitHub mobile apps</a></dd>
+ </dl>
+
+ <dl class="footer_nav">
+ <dt>Services</dt>
+ <dd><a href="http://get.gaug.es/">Gauges: Web analytics</a></dd>
+ <dd><a href="http://speakerdeck.com">Speaker Deck: Presentations</a></dd>
+ <dd><a href="https://gist.github.com">Gist: Code snippets</a></dd>
+ <dd><a href="http://jobs.github.com/">Job board</a></dd>
+ </dl>
+
+ <dl class="footer_nav">
+ <dt>Documentation</dt>
+ <dd><a href="http://help.github.com/">GitHub Help</a></dd>
+ <dd><a href="http://developer.github.com/">Developer API</a></dd>
+ <dd><a href="http://github.github.com/github-flavored-markdown/">GitHub Flavored Markdown</a></dd>
+ <dd><a href="http://pages.github.com/">GitHub Pages</a></dd>
+ </dl>
+
+ <dl class="footer_nav">
+ <dt>More</dt>
+ <dd><a href="http://training.github.com/">Training</a></dd>
+ <dd><a href="https://github.com/edu">Students &amp; teachers</a></dd>
+ <dd><a href="http://shop.github.com">The Shop</a></dd>
+ <dd><a href="/plans">Plans &amp; pricing</a></dd>
+ <dd><a href="http://octodex.github.com/">The Octodex</a></dd>
+ </dl>
+
+ <hr class="footer-divider">
+
+
+ <p class="right">&copy; 2013 <span title="0.09734s from fe2.rs.github.com">GitHub</span>, Inc. All rights reserved.</p>
+ <a class="left" href="https://github.com/">
+ <span class="mega-icon mega-icon-invertocat"></span>
+ </a>
+ <ul id="legal">
+ <li><a href="https://github.com/site/terms">Terms of Service</a></li>
+ <li><a href="https://github.com/site/privacy">Privacy</a></li>
+ <li><a href="https://github.com/security">Security</a></li>
+ </ul>
+
+ </div><!-- /.container -->
+
+</div><!-- /.#footer -->
+
+
+ <div class="fullscreen-overlay js-fullscreen-overlay" id="fullscreen_overlay">
+ <div class="fullscreen-container js-fullscreen-container">
+ <div class="textarea-wrap">
+ <textarea name="fullscreen-contents" id="fullscreen-contents" class="js-fullscreen-contents" placeholder="" data-suggester="fullscreen_suggester"></textarea>
+ <div class="suggester-container">
+ <div class="suggester fullscreen-suggester js-navigation-container" id="fullscreen_suggester"
+ data-url="/django/django/suggestions/commit">
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="fullscreen-sidebar">
+ <a href="#" class="exit-fullscreen js-exit-fullscreen tooltipped leftwards" title="Exit Zen Mode">
+ <span class="mega-icon mega-icon-normalscreen"></span>
+ </a>
+ <a href="#" class="theme-switcher js-theme-switcher tooltipped leftwards"
+ title="Switch themes">
+ <span class="mini-icon mini-icon-brightness"></span>
+ </a>
+ </div>
+</div>
+
+
+
+ <div id="ajax-error-message" class="flash flash-error">
+ <span class="mini-icon mini-icon-exclamation"></span>
+ Something went wrong with that request. Please try again.
+ <a href="#" class="mini-icon mini-icon-remove-close ajax-error-dismiss"></a>
+ </div>
+
+
+
+ <span id='server_response_time' data-time='0.09780' data-host='fe2'></span>
+
+ </body>
+</html>
+
View
118 tests/utils_tests/files/strip_tags2.txt
@@ -0,0 +1,118 @@
+_**Prerequisite**: You are already aware of the [basics of building a HelloWorld](http://developer.android.com/training/index.html) in Android and know [how to use the APIs provided in the support library](http://developer.android.com/training/basics/fragments/support-lib.html)._
+
+_The code example is available on [github](http://github.com/iontech/Fragments_Example "Fragments Example")._
+_____________________________________________________________
+Ever wanted a code snippet from an Activity to be available to other activities? Perhaps a Button or a ListView, maybe a Layout or any View/ViewGroup for that matter? Fragments let us do just that.
+
+Necessity is the mother of invention.
+Before understanding what Fragments are and how they work, we must first realize their existence in the first place.
+
+The Problem
+-----------
+Suppose we have an Android app with two Activities- [*FirstActivity*](https://github.com/iontech/Fragments_Example/blob/master/src/main/java/com/github/iontech/fragments_example/FirstActivity.java) and [*SecondActivity*](https://github.com/iontech/Fragments_Example/blob/master/src/main/java/com/github/iontech/fragments_example/SecondActivity.java).
+*FirstActivity* contains two Views, a `TextView` (*textView*) and a `Button` (*button1*); and *button1* has an `onClick()` callback that `Toast`'s a simple message "Button pressed".
+*SecondActivity* contains both the Views present in *FirstActivity* and a `Button` (*button2*).
+
+Now we want to utilize the two layout components(Views) of *FirstActivity* in *SecondActivity*, we can go about this with two approaches:
+
+1. Copy and Paste the xml elements of the two Views.
+2. Create a separate layout for common Views and reuse it using `` layout element.
+ More about this [here](http://developer.android.com/training/improving-layouts/reusing-layouts.html).
+
+Electing the second approach makes sense cause it enables us to make reusable layouts. Everything seems great till now. We are able to make reusable layouts and use them as many times as we want.
+
+Now recollect that we have an `onClick()` callback assigned to *button1*. How do we reuse the same callback functionality of *button1* across multiple Activities? `` lets us reuse layouts and not the Activity source.
+This is where Fragments come into play.
+
+Fragments
+---------
+<center> ![image](http://iontech.files.wordpress.com/2013/01/androidfragmentation1-264x300.png) </center>
+Fragments encompass both layout resource and Java source. Hence, unlike ``, they allow us to reuse the View components along with their functionality, if needed.
+Fragments were first introduced in Honeycomb(API 11), living under the `android.app` package.
+**Note**: API 11 implies that Fragments have no support for devices less than Honeycomb and, for the record, as of writing this post, [more than 50% of Android devices worldwide run versions of Android below Honeycomb](http://developer.android.com/about/dashboards/index.html). Developer dissapointed? You don't have to be, cause google has been cautious enough to add the Fragment APIs to the support library. Yay!
+
+In the support library Fragment APIs sit in the `android.support.v4.app` package. This post assumes that your `minSdk` support is below API 11. Hence we concentrate on the Fragment APIs of the support library.
+
+### Diving into code
+
+Performing code reuse with Fragments involves three major steps:
+
+1. Creating reusable View components - Creating a layout for the fragment.
+2. Creating reusable Java source - Writing the layout's corresponding Fragment class.
+3. Employing the reusable components in Activity - Making an Activity to host this Fragment.
+
+#### 1. Creating reusable View components
+##### Creating a layout for the Fragment
+This is done precisely as we do it for our activity layouts. The layout contains a root element (ViewGroup) defining the layout, For instance in our example we use a LinearLayout and its child elements(the reusable Views) that we want to have in our fragment.
+
+> [fragment_common.xml](https://github.com/iontech/Fragments_Example/blob/master/res/layout/fragment_common.xml)
+
+
+
+
+
+ <button>
+
+
+
+#### 2. Creating reusable Java source
+##### Writing the layout's corresponding Fragment class
+
+> [CommonFragment.java](https://github.com/iontech/Fragments_Example/blob/master/src/main/java/com/github/iontech/fragments_example/CommonFragment.java)
+
+This class will inherit `Fragment` class and must override the `onCreateView()` method.
+In this method we inflate the fragment layout using the following line of code.
+
+ View view = inflater.inflate(R.layout.fragment_common, container, false);
+
+*container* is the parent ViewGroup that the fragment's UI should be attached to.
+Once inflation is done, we can perform various operations on the component views of the fragment.
+Accessing the view elements from the layout is done exactly as we do in an Activity (using `findViewById()`) except that we use the `View` for the fragment's UI or an instance of the host Activity.
+
+In Activity we access Views(a Button for our example) as follows
+
+ Button button1 = (Button) findViewById(R.id.button1);
+In Fragment, we need to use the inflated view(if in `onCreateView()`) or get the instance of the host activity and access the views through this instance(when in a [lifecycle callback](http://developer.android.com/guide/components/fragments.html#Lifecycle "Fragment lifecycle callbacks") after `onCreateView()`, I generally do it in `onActivityCreated()`).
+
+ Button button1 = (Button) view.findViewById(R.id.button1);
+or
+
+ Button button1 = (Button) getActivity().findViewById(R.id.button1);
+`getActivity()` returns the instance of the Activity that is hosting this Fragment.
+
+Finally, in `onCreateView()` we must return the View for the fragment's UI.
+
+ return view;
+
+#### 3. Employing the reusable components in Activity
+##### Making an Activity to host this Fragment
+This is done in two ways, statically by adding `` elements into the Activity layout or dynamically, at run time, by using `FragmentTransaction`s.
+**Note**: First thing we need to ensure is that our Activity extends `FragmentActivity` class instead of the regular `Activity`.
+If the `minSdk` is API 11 or higher, then we can leave our inheritance to `Activity` class and not bother about `FragmentActivity`.
+
+##### a. Static approach to hosting the Fragments
+###### Adding `` element in activity layout
+
+> [activity_static.xml](https://github.com/iontech/Fragments_Example/blob/master/res/layout/activity_static.xml)
+
+Inorder to statically add a Fragment into your Activity, just add `` element with the necessary layout attributes and the `android:name` attribute set to the fully qualified class name of the corresponding Fragment.
+
+
+##### b. Dynamic approach
+###### Using `FragmentTransaction`s
+
+> [ADynamicFragmentActivity.java](https://github.com/iontech/Fragments_Example/blob/master/src/main/java/com/github/iontech/fragments_example/ADynamicFragmentActivity.java)
+
+Can be done using `FragmentManager` and `FragmentTransaction` classes. We call `add()`, in our FragmentActivity implementation, on an instance of `FragmentTransaction` to add a fragment to the host Activity. But that is not enough to show the fragment on the screen, i.e. the FragmentTransaction is not complete. We must call `commit()` to finish the transaction.
+
+ CommonFragment fragment = new CommonFragment();
+ FragmentManager manager = getSupportFragmentManager();
+ FragmentTransaction transaction = manager.beginTransaction();
+ transaction.add(R.id.dynamicFragmentLayout, fragment);
+ transaction.commit();
+
+Similarly Fragments can be removed(`remove()`) as well as replaced(`replace()`) from the activity all at runtime.
+
+Congratulations, now you can use Fragments to write reusable code and easily host them over multiple activities.
+
+Please try again. Till next time.
View
16 tests/utils_tests/html.py
@@ -1,8 +1,12 @@
from __future__ import unicode_literals
+from datetime import datetime
+import os
import unittest
from django.utils import html
+from django.utils._os import upath
+
class TestUtilsHtml(unittest.TestCase):
@@ -73,6 +77,18 @@ def test_strip_tags(self):
for value, output in items:
self.check_output(f, value, output)
+ # Test with more lengthy content (also catching performance regressions)
+ for filename in ('strip_tags1.html', 'strip_tags2.txt'):
+ path = os.path.join(os.path.dirname(upath(__file__)), 'files', filename)
+ with open(path, 'r') as fp:
+ start = datetime.now()
+ stripped = html.strip_tags(fp.read())
+ elapsed = datetime.now() - start
+ self.assertEqual(elapsed.seconds, 0)
+ self.assertLess(elapsed.microseconds, 100000)
+ self.assertIn("Please try again.", stripped)
+ self.assertNotIn('<', stripped)
+
def test_strip_spaces_between_tags(self):
f = html.strip_spaces_between_tags
# Strings that should come out untouched.
Please sign in to comment.
Something went wrong with that request. Please try again.