parameters: (unicode_file)
docstring: If you want to understand how this wonderful file format works checkout
            Unicode Standard Annex #44 - Unicode Character Database
            http://www.unicode.org/reports/tr44/
docstring_summary: If you want to understand how this wonderful file format works checkout
            Unicode Standard Annex #44 - Unicode Character Database
            http://www.unicode.org/reports/tr44/
docstring_tokens: If you want to understand how this wonderful file format works checkout Unicode Standard Annex #44 - Unicode Character Database http : // www . unicode . org / reports / tr44 /
function: def read_unicode_data(unicode_file):
      """
          If you want to understand how this wonderful file format works checkout
            Unicode Standard Annex #44 - Unicode Character Database
            http://www.unicode.org/reports/tr44/
      """
  
      reader = csv.reader(unicode_data, delimiter=';')
  
      while True:
          row = reader.next()
          name = row[1]
  
          # We need to expand the UAX #44 4.2.3 Code Point Range
          if name.startswith('<') and name.endswith('First>'):
              next_row = reader.next()
  
              for i in range(int(row[0], 16), int(next_row[0], 16) + 1):
                  row[0] = i
                  row[1] = name[1:-8]
  
                  yield row
          else:
              row[0] = int(row[0], 16)
              yield row
function_tokens: def read_unicode_data ( unicode_file ) : reader = csv . reader ( unicode_data , delimiter = ';' ) while True : row = reader . next ( ) name = row [ 1 ] # We need to expand the UAX #44 4.2.3 Code Point Range if name . startswith ( '<' ) and name . endswith ( 'First>' ) : next_row = reader . next ( ) for i in range ( int ( row [ 0 ] , 16 ) , int ( next_row [ 0 ] , 16 ) + 1 ) : row [ 0 ] = i row [ 1 ] = name [ 1 : - 8 ] yield row else : row [ 0 ] = int ( row [ 0 ] , 16 ) yield row