parameters: (self, attrs)
docstring: Beautiful Soup can detect a charset included in a META tag,
          try to convert the document to that charset, and re-parse the
          document from the beginning.
docstring_summary: Beautiful Soup can detect a charset included in a META tag,
          try to convert the document to that charset, and re-parse the
          document from the beginning.
docstring_tokens: Beautiful Soup can detect a charset included in a META tag try to convert the document to that charset and re - parse the document from the beginning .
function: def start_meta(self, attrs):
          """Beautiful Soup can detect a charset included in a META tag,
          try to convert the document to that charset, and re-parse the
          document from the beginning."""
          httpEquiv = None
          contentType = None
          contentTypeIndex = None
          tagNeedsEncodingSubstitution = False
  
          for i in xrange(0, len(attrs)):
              key, value = attrs[i]
              key = key.lower()
              if key == 'http-equiv':
                  httpEquiv = value
              elif key == 'content':
                  contentType = value
                  contentTypeIndex = i
  
          if httpEquiv and contentType: # It's an interesting meta tag.
              match = self.CHARSET_RE.search(contentType)
              if match:
                  if (self.declaredHTMLEncoding is not None or
                      self.originalEncoding == self.fromEncoding):
                      # An HTML encoding was sniffed while converting
                      # the document to Unicode, or an HTML encoding was
                      # sniffed during a previous pass through the
                      # document, or an encoding was specified
                      # explicitly and it worked. Rewrite the meta tag.
                      def rewrite(match):
                          return match.group(1) + "%SOUP-ENCODING%"
                      newAttr = self.CHARSET_RE.sub(rewrite, contentType)
                      attrs[contentTypeIndex] = (attrs[contentTypeIndex][0],
                                                 newAttr)
                      tagNeedsEncodingSubstitution = True
                  else:
                      # This is our first pass through the document.
                      # Go through it again with the encoding information.
                      newCharset = match.group(3)
                      if newCharset and newCharset != self.originalEncoding:
                          self.declaredHTMLEncoding = newCharset
                          self._feed(self.declaredHTMLEncoding)
                          raise StopParsing
                      pass
          tag = self.unknown_starttag("meta", attrs)
          if tag and tagNeedsEncodingSubstitution:
              tag.containsSubstitutions = True
function_tokens: def start_meta ( self , attrs ) : httpEquiv = None contentType = None contentTypeIndex = None tagNeedsEncodingSubstitution = False for i in xrange ( 0 , len ( attrs ) ) : key , value = attrs [ i ] key = key . lower ( ) if key == 'http-equiv' : httpEquiv = value elif key == 'content' : contentType = value contentTypeIndex = i if httpEquiv and contentType : # It's an interesting meta tag. match = self . CHARSET_RE . search ( contentType ) if match : if ( self . declaredHTMLEncoding is not None or self . originalEncoding == self . fromEncoding ) : # An HTML encoding was sniffed while converting # the document to Unicode, or an HTML encoding was # sniffed during a previous pass through the # document, or an encoding was specified # explicitly and it worked. Rewrite the meta tag. def rewrite ( match ) : return match . group ( 1 ) + "%SOUP-ENCODING%" newAttr = self . CHARSET_RE . sub ( rewrite , contentType ) attrs [ contentTypeIndex ] = ( attrs [ contentTypeIndex ] [ 0 ] , newAttr ) tagNeedsEncodingSubstitution = True else : # This is our first pass through the document. # Go through it again with the encoding information. newCharset = match . group ( 3 ) if newCharset and newCharset != self . originalEncoding : self . declaredHTMLEncoding = newCharset self . _feed ( self . declaredHTMLEncoding ) raise StopParsing pass tag = self . unknown_starttag ( "meta" , attrs ) if tag and tagNeedsEncodingSubstitution : tag . containsSubstitutions = True