I'm probably missing something, but it seems to me that a number of the nested 
tables are redundant? 
Couldn't a table cell <td></td> be thought of as a box? Boxed planes could be 
separated rows without borders - that would maintain vertical alignment of 
columns.

Below is an alternative HTML representation of the last example that uses 2 
rather than 16 tables:
thh x=: 2 2 3 $ (i.&.>i.6),<<2 5$'abcdefghij'

<style type="text/css">
table.arraydisp td {font-family:monospace; border:solid black 
1px;vertical-align: top;}
table.arraydisp tr.blank td {border:none;}
</style>

<table class="arraydisp" cellspacing="0" cellpadding="3"><tbody>
<tr>
  <td>&nbsp;<br><br><br></td>
  <td>0<br><br><br></td>
  <td>0&nbsp;1<br><br><br></td></tr>
<tr>
  <td>0&nbsp;1&nbsp;2</td>
  <td>0&nbsp;1&nbsp;2&nbsp;3</td>
  <td>0&nbsp;1&nbsp;2&nbsp;3&nbsp;4</td></tr>
<tr class="blank">
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td></tr>
<tr>
  <td>
    <table class="arraydisp" cellspacing="0" cellpadding="3"><tbody>
      <tr>
        <td>abcde<br>fghij</td></tr></tbody>
    </table></td>
  <td>&nbsp;<br><br><br></td>
  <td>0<br><br><br></td></tr>
<tr>
  <td>0&nbsp;1</td>
  <td>0&nbsp;1&nbsp;2</td>
  <td>0&nbsp;1&nbsp;2&nbsp;3</td></tr></tbody>
</table>

> From: Roger Hui
> 
> Examples to try:
> 
> thh i.2 2 3 4
> thh <"0 i.2 2 3 4
> thh 5!:2 <'assert'
> thh 2 3 4$i.&.> i.7
> thh x=: 2 2 3 $ (i.&.>i.6),<<2 5$'abcdefghij'
> 
> The last example demonstrates that vertical alignment
> between planes can not be achieved by padding with
> & nbsp; (because that can not account for the space used
> by the HTML box drawing lines).  It is probably the case
> that horizontal alignment between planes are not
> achieved either, but the naked eye can not easily tell.
> 
> I will work up a version that produces vertically aligned results,
> using width=xx in the <td> tag.  This width will depend
> on the size of the (fixed width) font used to render the output.
> 
> NB. from http://www.jsoftware.com/jwiki/Essays/Boxed_Array_Display
> sh     =: (*/@}: , {:)@(1&,)@$ ($,) ]
> rows   =: */\...@}:@$
> bl     =: }.@(,&0)@(+/)@(0&=)@(|/ i...@{.@(,&1))
> mask   =: 1&,. #&, ,.&0@>:@i...@#
> mat    =: m...@bl@rows { ' ' , sh
> 
> TPROLOG =: '<table border=1 cellspacing=0 cellpadding=3>',CRLF
> TEPILOG =: '</table>',CRLF
> BOXCHARS=: 9!:6 ''     NB. box drawing characters
> 
> thh=: 3 : 0  NB. "thorn" (array formatting) producing HTML output
>  0 0 thh y
> :
>  if. 32 ~: 3!:0 y do.  NB. y is not boxed
>  'h w'=. x
>   t=. mat ": y
>   t=. t,"1 (((*w)*w-{:$t)$' '),'<br>'
>   t=. _4}.(,t),(4*(*h)*h-#t)$'<br>'
>   t=. ; (a.i.t){(<'&nbsp;') 32}<"0 a.
>   ('<table><tr><td nowrap valign=top><tt>'),t,'</tt></td></tr></table>'
>  else.                 NB. y is boxed
>   t=. (_2&{...@$ ($,) ]) s=. ":y
>   w=. <: 2 -~/\ I. ({.   t) e. 0 1 2{BOXCHARS
>   h=. <: 2 -~/\ I. ({."1 t) e. 0 3 6{BOXCHARS
>   z=. ({h;w) <@thh2"2 ,:^:(0>.2-#$y) y
>   t=. 0 ,~ 0 -.~ bl rows y
>   z=. ; (,z),&.> ((4*t)$&.><'<br>'),&.><CRLF
>   if. >./x do.         NB. use height and width if nonzero
>    'h w'=. x
>    t=. $ mat s
>    z=. '<table><tr><td nowrap>',z,'</td>',CRLF
>    z=. z,' <td nowrap>',((6*w-{:t)$'&nbsp;'),'</td></tr></table>',CRLF
>    z=. z, _4}.(4*h-{.t)$'<br>'
>   end.
>  end.
> )
> 
> thh2=: 4 : 0  NB. rank 2 boxed argument
>  t=. ('<td nowrap>' , '</td>' ,~ ])&.> x thh&.> y
>  t=. <@('<tr>' , ('</tr>',CRLF) ,~ ; )"1 t
>  TPROLOG, (;t), TEPILOG
> )
> 
> 
> 
> ----- Original Message -----
> From: Roger Hui <[email protected]>
> Date: Sunday, March 28, 2010 16:16
> Subject: Re: [Jbeta] displaying boxed array in html
> To: Beta forum <[email protected]>
> 
> > This can be accomplished (I believe) by using <tt> </tt>
> > fixed width font and using   to pad.
> >
> > Anyway this sort of argument can be settled
> > by implementing a model.  This I intend to do.
> >
> >
> >
> > ----- Original Message -----
> > From: Raul Miller <[email protected]>
> > Date: Sunday, March 28, 2010 16:00
> > Subject: Re: [Jbeta] displaying boxed array in html
> > To: Beta forum <[email protected]>
> >
> > > On Sun, Mar 28, 2010 at 6:51 PM, Roger Hui
> > <[email protected]> wrote:
> > > > For arrays with rank greater than 2, you need to align
> > > > elements at the same row and column.  That is,
> > > > in the output x{~<i0;j;k and x{~<i1;j;k are aligned.
> > >
> > > The only way I know to attempt this requires the server
> > specify the
> > > size of each box,
> > > which would greatly increase the complexity of this approach
> > and
> > > which also
> > > might introduce new failure modes.
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to