On Wed, Nov 21, 2001 at 12:55:29PM -0600, Mike Renfro wrote:
Now, some of the issues with structured text are being addressed (http://structuredtext.sourceforge.net/), but for our immediate crisis, who wants to come up with a solution that will:
a) keep my code intact -- no extra line breaks, spaces, etc. unless I say so. No removals, either. If I print out a snippet of Python code that's been mis-indented because someone wanted a narrower page, I'll be irked.
It's a very tough problem. All these pages use table layouts; and even if you specify table width as 100%, that doesn't *really* mean 100% of the browser window - it means "100% of the browser window if everything fits, otherwise, expand outside the window as necessary." There's no way to prevent that from happening if an element of the table is too big. And browsers aren't smart enough to allow one really wide cell and still fit the rest of the table in the browser window. There are 3 ways to get a row too wide for the browser window: 1) include a really wide image 2) include a "pre" tag with a really long line 3) include a really long string with no whitespace 4) specify table width as a really large number of pixels. #4 is unlikely. On zope.org I think most of the problems are due to #2, with possibly some screenshots accounting for #1. #3 might come up if there's a link to a gargantuan URL. We *can't* prevent all of these from happening. For one thing, we never know what "really wide" means; somebody might be browsing on a portable device with a 200x300 display. You can find out with javascript ... *if* the client has javascript ... and *if* they haven't turned it off ... and *if* it works... Without knowing the display size, the best we can do is pick a reasonable width and try to force most things to fit that width. Two possible hacks that might help: 1) Modify stx such that normal (non-code) paragraphs are wrapped in a table cell with an explicit width of reasonable size. Pick this reasonable size empirically based on common browsers and displays. It'll look better sometimes, and worse sometimes. 2) Modify stx such that normal (non-code) paragraphs do explicit line wrapping using <br> tags. Again, pick a reasonable size empirically based on common browsers and displays. This has the disadvantage that it doesn't work if the user's preferences include some funky font size. Here's an example function: import string def explicit_wrap(paragraph, maxlength): input_words = string.split(paragraph) lines = [] while input_words: line = input_words[:] while len(string.join(line, ' ')) > maxlength: line.pop() input_words = input_words[len(line):] lines.append(string.join(line, ' ')) # handle the last line if len(string.join(input_words, ' ')) <= maxlength: lines.append(string.join(input_words, ' ')) break result = string.join(lines, '<br>\n') return result -- paul winkler home: http://www.slinkp.com music: http://www.reacharms.com calendars: http://www.calendargalaxy.com