A. S. Budden wrote:
>
> Clearly I was (I'm sure there's something wrong with answering my own
> email): the comparison is purely a text comparison, so the sort is
> struggling with numbers. Perhaps adding a converter and changing the
> comparator as follows would be a good idea?
>
> " If the entry looks like a hex string, a number or
> " a float, convert to a number representation
> function! s:ChangeToNumberIfApplicable(entry)
> if match(a:entry, '^0x\x\+$') != -1
> let result = str2nr(a:entry, 16)
> elseif match(a:entry, '^[+-]\?\d\+\.\d\+$') != -1
> let result = str2float(a:entry)
> elseif match(a:entry, '^[+-]\?\d\+$') != -1
> let result = str2nr(a:entry)
> else
> let result = a:entry
> endif
> return result
> endfunc
>
>
> " Compare two lines based on the highlighted column.
> function! s:CompareLines(line1, line2)
> let col1 = matchstr(a:line1, s:GetExpr(b:csv_column_sort))
> let col2 = matchstr(a:line2, s:GetExpr(b:csv_column_sort))
> let comp1 = s:ChangeToNumberIfApplicable(col1)
> let comp2 = s:ChangeToNumberIfApplicable(col2)
> return comp1 > comp2
> endfunction
>
> I'm sure all of that could be written better, but it seems to work for me.
>
> Al
>
After the patch csv.vim work for the sample above correctly, but still work
wrong with my sample below:
========START==========
md51,fullpath_filename,path,fullname1,fullname2,md52,name2,ext2,size2,ts2,tu,tc,
44029A87AD3484711FACB7945D242A95,X:\I386\0401.CS_,X:\I386\,0401.CS_,0401.csv,61A84549F0F229D536FAE510512CD17E,0401,.csv,64746,99-10-05
14:43 ,,,
FFFBC075AA7E1756E35B5AF2E8BE7DEB,X:\I386\DISK.SY_,X:\I386\,DISK.SY_,disk.sys,322B9A3774DBF119F6635A476B0EB058,disk,.sys,30768,03-06-19
12:05 ,,,
FFF68CFBFA883D81731A6B344A25B782,X:\I386\CGA80852.FO_,X:\I386\,CGA80852.FO_,cga80852.fon,85A2B00160B440C990405CBF5FBE67D0,cga80852,.fon,5200,99-02-01
20:00 ,,,
FFF5CBFC71FB5C80AAD9F834B3FB5062,X:\I386\IMESHARE.DL_,X:\I386\,IMESHARE.DL_,imeshare.dll,00E1A17FB6843C6EC0537397C1EABA2D,imeshare,.dll,32768,99-12-10
09:19 ,,,
FF9BDB807FC99B2B6156742AC2F9F2AB,X:\I386\COADMIN.DL_,X:\I386\,COADMIN.DL_,coadmin.dll,56175F4BFCB31006B250C0CF91D3F090,coadmin,.dll,40720,03-06-19
12:05 ,,,
FFE31887684AED0F7B124378D942D3AC,X:\I386\CB32.EX_,X:\I386\,CB32.EX_,cb32.exe,B24E88B56A26CA2E649EB21FC04F6D4E,cb32,.exe,4880,99-12-10
09:19 ,,,
FF5EA7161307D7170C39D31629239CDF,X:\I386\BOPOMOFO.UC_,X:\I386\,BOPOMOFO.UC_,bopomofo.UCE,405E1EF8E3C88E9BCD2853382BB12430,bopomofo,.UCE,22984,98-06-28
16:31 ,,,
FF762A792EFCB11C917A2682352F71D1,X:\I386\HPCRDP.CA_,X:\I386\,HPCRDP.CA_,hpcrdp.cat,DA8532F518611521F82CE80845FA0F49,hpcrdp,.cat,11863,00-01-06
15:04 ,,,
FF04598C86B5DF9B78F122ABCB266790,X:\I386\AGT0419.HL_,X:\I386\,AGT0419.HL_,Agt0419.hlp,7BF84005A0547DC9112A51E885E65215,Agt0419,.hlp,8799,99-07-23
16:53 ,,,
FF39047446FC1C46FC0C1FA4071063CB,X:\I386\DG18D50.IC_,X:\I386\,DG18D50.IC_,Dg18d50.icm,969A3A6AE9B8824A20CD73DD20FB8136,Dg18d50,.icm,614,98-12-22
15:37 ,,,
10D0BA441255894A51C8B3308EB11638,X:\I386\0410.CS_,X:\I386\,0410.CS_,0410.csv,E0480BFD4042E8CACC604F0C995AE8AF,0410,.csv,66190,99-10-05
14:43 ,,,
FF36362448658F15D2B6E3B593CA1B3F,X:\I386\BUSY_I.CU_,X:\I386\,BUSY_I.CU_,busy_i.cur,1F713B29884F54956498C73CDCA0705F,busy_i,.cur,326,97-07-11
20:59 ,,,
FECC01645D83F150EBE2924887E30B91,X:\I386\DMUTIL.DL_,X:\I386\,DMUTIL.DL_,dmutil.dll,2000EFE7D4339C3B7F56A973B99BD38F,dmutil,.dll,43280,03-06-19
12:05 ,,,
FF6223C000741845CE8CD0C6336021D1,X:\I386\D3DXOF.DL_,X:\I386\,D3DXOF.DL_,d3dxof.dll,65553FE4E819865DD3742552DD676EB8,d3dxof,.dll,49424,99-12-10
09:19 ,,,
45158FF10F952BCFC590ECB2C80D487E,X:\I386\0414.CS_,X:\I386\,0414.CS_,0414.csv,870C30FC4F7DB033AC9FDECC1AC9EECF,0414,.csv,65390,99-10-05
14:43 ,,,
FF32B826D2F3C5E41DCAF8B272AB0BF3,X:\I386\INETSRV.MI_,X:\I386\,INETSRV.MI_,inetsrv.mib,8FDA485946897BFD248D5452628CC231,inetsrv,.mib,698,99-01-14
18:47 ,,,
3ECA13B43EF48F80F0179856A73A3BA6,X:\I386\0416.CS_,X:\I386\,0416.CS_,0416.csv,F1FED2848449B78B0EA00A578B7CA3A2,0416,.csv,66784,99-10-05
14:43 ,,,
59D691289820021216E6CDCAD74743D4,X:\I386\0419.CS_,X:\I386\,0419.CS_,0419.csv,4E3BB73463D89BA0007DE92C2F81209F,0419,.csv,66080,99-10-05
14:43 ,,,
FEC5273EB05873C93DA9BE16A94AEE94,X:\I386\AGT0401.DL_,X:\I386\,AGT0401.DL_,Agt0401.dll,D0615C180965DA0B91AC24F3C33B1D45,Agt0401,.dll,19456,99-12-10
09:14 ,,,
FE82CCD0D5BD8F6FDE7D48252C25F271,X:\I386\CATSRVUT.DL_,X:\I386\,CATSRVUT.DL_,catsrvut.dll,E1972901C273AB8C0ACE28D9F50DD125,catsrvut,.dll,591120,03-06-19
12:05 ,,,
FE97D798B2BC6CB4306B21E078AA6214,X:\I386\C_437.NL_,X:\I386\,C_437.NL_,c_437.nls,0BD539284D746E022BDA27C1F85A525A,c_437,.nls,66594,97-12-12
17:12 ,,,
FE0399122F5DB5158E28AF73A1ED94A1,X:\I386\CDOSYS.DL_,X:\I386\,CDOSYS.DL_,cdosys.dll,61FA41471EFBCD89BABA57201205FF4C,cdosys,.dll,2531088,03-06-19
12:05 ,,,
FE385CA3249BF6D30C031DEACE045AD3,X:\I386\DBMSRPCN.DL_,X:\I386\,DBMSRPCN.DL_,DBmsRPCn.dll,D74F057E5BF61CE333877D8B1A71DE2C,DBmsRPCn,.dll,28944,03-06-19
12:05 ,,,
========END==========
How can I deal with it?
--
View this message in context:
http://www.nabble.com/Vim-Tips-wiki-celebrates-with-a-CSV-tip-tp18768619p19873579.html
Sent from the Vim - General mailing list archive at Nabble.com.
--~--~---------~--~----~------------~-------~--~----~
You received this message from the "vim_use" maillist.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---