diff --git a/lib/galaxy/datatypes/data.py b/lib/galaxy/datatypes/data.py index 945065c4371..f74227c47e5 100644 --- a/lib/galaxy/datatypes/data.py +++ b/lib/galaxy/datatypes/data.py @@ -742,13 +742,13 @@ class Text( Data ): data_lines += 1 return data_lines - def set_peek( self, dataset, line_count=None, is_multi_byte=False, WIDTH=256, skipchars=None ): + def set_peek( self, dataset, line_count=None, is_multi_byte=False, WIDTH=256, skipchars=None, line_wrap=True ): """ Set the peek. This method is used by various subclasses of Text. """ if not dataset.dataset.purged: # The file must exist on disk for the get_file_peek() method - dataset.peek = get_file_peek( dataset.file_name, is_multi_byte=is_multi_byte, WIDTH=WIDTH, skipchars=skipchars ) + dataset.peek = get_file_peek( dataset.file_name, is_multi_byte=is_multi_byte, WIDTH=WIDTH, skipchars=skipchars, line_wrap=line_wrap ) if line_count is None: # See if line_count is stored in the metadata if dataset.metadata.data_lines: @@ -950,7 +950,7 @@ def get_test_fname( fname ): return full_path -def get_file_peek( file_name, is_multi_byte=False, WIDTH=256, LINE_COUNT=5, skipchars=None ): +def get_file_peek( file_name, is_multi_byte=False, WIDTH=256, LINE_COUNT=5, skipchars=None, line_wrap=True ): """ Returns the first LINE_COUNT lines wrapped to WIDTH @@ -971,8 +971,9 @@ def get_file_peek( file_name, is_multi_byte=False, WIDTH=256, LINE_COUNT=5, skip file_type = None data_checked = False temp = open( file_name, "U" ) + last_line = '' while count <= LINE_COUNT: - line = temp.readline( WIDTH ) + line = last_line + temp.readline( WIDTH - len( last_line ) ) if line and not is_multi_byte and not data_checked: # See if we have a compressed or binary file if line[0:2] == util.gzip_magic: @@ -986,6 +987,17 @@ def get_file_peek( file_name, is_multi_byte=False, WIDTH=256, LINE_COUNT=5, skip data_checked = True if file_type in [ 'gzipped', 'binary' ]: break + if not line_wrap: + if '\n' in line: + i = line.index( '\n' ) + last_line = line[i:] + line = line[:i] + else: + last_line = '' + while True: + i = temp.read(1) + if not i or i == '\n': + break skip_line = False for skipchar in skipchars: if line.startswith( skipchar ): diff --git a/lib/galaxy/datatypes/tabular.py b/lib/galaxy/datatypes/tabular.py index c9161747af1..ebc10108878 100644 --- a/lib/galaxy/datatypes/tabular.py +++ b/lib/galaxy/datatypes/tabular.py @@ -39,7 +39,7 @@ class TabularData( data.Text ): MetadataElement( name="delimiter", default='\t', desc="Data delimiter", readonly=True, visible=False, optional=True, no_value=[] ) def set_peek( self, dataset, line_count=None, is_multi_byte=False, WIDTH=256, skipchars=None ): - super(TabularData, self).set_peek( dataset, line_count=line_count, is_multi_byte=is_multi_byte, WIDTH=WIDTH, skipchars=skipchars) + super(TabularData, self).set_peek( dataset, line_count=line_count, is_multi_byte=is_multi_byte, WIDTH=WIDTH, skipchars=skipchars, line_wrap=False ) if dataset.metadata.comment_lines: dataset.blurb = "%s, %s comments" % ( dataset.blurb, util.commaify( str( dataset.metadata.comment_lines ) ) ) @@ -180,6 +180,9 @@ class TabularData( data.Text ): out.append( '