pro mg_tm_firstline_gettext, firstline, tree, done=done
compile_opt strictarr
if (obj_isa(tree, 'MGtmText')) then begin
tree->getProperty, text=text
dotpos = stregex(text, '\.([[:space:]]|$)')
new_text = dotpos eq -1L ? text : strmid(text, 0, dotpos + 1L)
text_node = obj_new('MGtmText', text=new_text)
firstline->addChild, text_node
done = dotpos ne -1L
endif else if (obj_isa(tree, 'MGtmTag')) then begin
tree->getProperty, n_children=nChildren
for c = 0L, nChildren - 1L do begin
child = tree->getChild(c)
mg_tm_firstline_gettext, firstline, child, done=done
if (done) then break
endfor
endif
end
function mg_tm_firstline, tree
compile_opt strictarr
firstline = obj_new('MGtmTag', type='paragraph')
firstpara = tree
firstpara->getProperty, type=type
nchildren = 1
while (obj_class(firstpara) eq 'MGTMTAG' $
&& type ne 'paragraph' $
&& nChildren gt 0) do begin
firstpara->getProperty, n_children=nChildren
if (nChildren gt 0) then begin
firstpara = firstpara->getChild(0)
firstpara->getProperty, type=type
endif
endwhile
if (type eq 'paragraph') then begin
mg_tm_firstline_gettext, firstline, firstpara, done=done
endif
return, firstline
end