By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
 440,675 Members | 2,270 Online
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 440,675 IT Pros & Developers. It's quick & easy.

# Seeking author of script which generated HTML pages from pictures of them

 P: n/a On reddit.com, many moons ago, I downloaded some code which generated a page using HTML tables from a picture of the page you wanted. However, I dont have any author information in the code and wanted to stay in touch which she/he... does anyone know who wrote this code below? # Box geometry. class Box(object): def __init__(self, x, y, right, bottom): self.x, self.y, self.right, self.bottom = x, y, right, bottom def box_x_delimeters(boxes): return sorted(set(box.right for box in boxes)) def box_y_delimiters(boxes): return sorted(set(box.bottom for box in boxes)) def box_rowspans(boxes): rowspans = dict((box, 0) for box in boxes) for delim in box_y_delimiters(boxes): for box in boxes: if box.y < delim and box.bottom >= delim: rowspans[box] += 1 return rowspans def box_colspans(boxes): colspans = dict((box, 0) for box in boxes) for delim in box_x_delimeters(boxes): for box in boxes: if box.x < delim and box.right >= delim: colspans[box] += 1 return colspans def box_rows(boxes): rows, boxes_left = [], set(boxes) for delim in box_y_delimiters(boxes): boxes_in_row = set(box for box in boxes_left if box.y < delim) boxes_left -= boxes_in_row rows.append(sorted(boxes_in_row, key=lambda box: box.x)) return rows # Rendering and parsing tables. def render_html_table(boxes): rowspans, colspans = box_rowspans(boxes), box_colspans(boxes) table = '\n' for row in box_rows(boxes): table += '
%s
\n' for box in row: table += ' \n' % (rowspans[box], colspans[box], 'blank
' * (box.bottom - box.y)) table += ' \n' table += '\n' return table def parse_ascii_table(table): def char(x, y): if 0 <= y < len(grid) and 0 <= x < len(grid[y]): return grid[y][x] else: return " " def box_right(x, y): for right in range(x, len(grid[y + 1])): if char(right + 1, y + 1) == '|': return right raise RuntimeError("Unterminated box.") def box_bottom(x, y): for bottom in range(y, len(grid)): if char(x + 1, bottom + 1) == '-': return bottom raise RuntimeError("Unterminated box.") grid = table.splitlines() boxes = [] for y in range(len(grid)): for x in range(len(grid[y])): if char(x, y) in ('-', '|') and char(x, y + 1) == '|' and char(x + 1, y) == '-': boxes.append(Box(x, y, box_right(x, y), box_bottom(x, y))) return boxes # Tests. table = \ """ ----------------------------------------------------------------------------- | adsafasf | | | | | | | | ----------------------------------------------------------------------------- | | | | | | | | | ----------------------------------------------------------------------------- | | | | | | | | | ----------------------------------------------------------------------------- """ open("test.html", "w").write('\n\n%s\n\n' % (render_html_table(parse_ascii_table(table)),)) May 17 '07 #1
Share this Question
1 Reply

 P: n/a I found him! http://programming.reddit.com/info/k9dx/comments May 29 '07 #2

### This discussion thread is closed

Replies have been disabled for this discussion.