mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Merge pull request #1500 from blankenberg/peek-fix
[16.01] Fix line wrapping for peek of tabular files.
This commit is contained in:
@@ -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 ):
|
||||
|
||||
@@ -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( '<tr><td colspan="100%%">%s</td></tr>' % escape( line ) )
|
||||
elif line:
|
||||
elems = line.split( dataset.metadata.delimiter )
|
||||
# pad shortened elems, since lines could have been truncated by width
|
||||
if len( elems ) < columns:
|
||||
elems.extend( [''] * ( columns - len( elems ) ) )
|
||||
# we may have an invalid comment line or invalid data
|
||||
if len( elems ) != columns:
|
||||
out.append( '<tr><td colspan="100%%">%s</td></tr>' % escape( line ) )
|
||||
|
||||
Reference in New Issue
Block a user