Viewing contents of file '../idllib/jhuapls1r/usr/detab.pro'
;-------------------------------------------------------------
;+
; NAME:
;       DETAB
; PURPOSE:
;       Replace tab characters by spaces.
; CATEGORY:
; CALLING SEQUENCE:
;       out = detab(in)
; INPUTS:
;       in = input text string.              in
; KEYWORD PARAMETERS:
;       Keywords:
;         TAB=tb  number of spaces per tab (def=8).
; OUTPUTS:
;       out = processed output text string.  out
; COMMON BLOCKS:
; NOTES:
; MODIFICATION HISTORY:
;       R. Sterner, 1995 Nov 3
;
; Copyright (C) 1995, Johns Hopkins University/Applied Physics Laboratory
; This software may be used, copied, or redistributed as long as it is not
; sold and this copyright notice is reproduced on each copy made.  This
; routine is provided as is without any express or implied warranties
; whatsoever.  Other limitations apply as described in the file disclaimer.txt.
;-
;-------------------------------------------------------------
	function detab, in, tab=tab, help=hlp
 
	if (n_params(0) lt 1) or keyword_set(hlp) then begin
	  print,' Replace tab characters by spaces.'
	  print,' out = detab(in)'
	  print,'   in = input text string.              in'
	  print,'   out = processed output text string.  out'
	  print,' Keywords:'
	  print,'   TAB=tb  number of spaces per tab (def=8).'
	  return,''
	endif
 
	if n_elements(tab) eq 0 then tab=8	; Default tab setting.
 
	;------  Check if any tabs occur  --------
	b = byte(in)
	w = where(b eq 9, cnt)
	if cnt eq 0 then return,in	; No tabs.
 
	;------  Process tabs  -------------------
	out = ''				; Output string.
	p = 0					; Pointer.
	for i=0,cnt-1 do begin			; Loop through tabs.
	  ii = w(i)				; Tab position.
	  out = out + strmid(in,p,ii-p)		; Move text before tab.
	  jj = strlen(out)			; Effective position of nxt tab.
	  n = tab*(floor(jj/tab)+1) - jj	; Expand to n spaces.
	  out = out + spc(n)			; Add tab spaces.
	  p = ii+1				; Next pointer position.
	endfor
 
	;-------  Text after last tab  ----------
	out = out + strmid(in,p,strlen(in)-p)	; Handle end of string.
 
	return, out
	end