12.1. Fancy Reports

Sam looked at the first version of the rental contract. "Well, it looks pretty plain to me," he stated.

"OK," I replied. "What else would you like on it?"

"How about a few graphics and making the due date stand out in bold with a larger font?" he queried. "Is that too much trouble?"

"No trouble at all," I answered. "What's the charge limit on your American Express?"

"I don't have a limit," Sam replied.

"Good, then there should be enough money to do it," I stated.

12.1.1. More Is Less

Handling graphics and different fonts, and laying out pages containing them, is a time-consuming process using procedural-driven code. We need to calculate the sizes of strings and compute where to position them. Fortunately, languages and modules are available that provide these necessary operations. These components contain a lot more than we need, but they make a lot less work for us ("More Is Sometimes Less").

One language that does the trick is the Hypertext Markup Language (HTML). The display modules are browsers and HTML-aware edit widgets. The create_report( ) method can create HTML-formatted text. We can display that text using an HTML-aware display module. We change our DisplayReport class to include a method for displaying an HTML report:

    class DisplayReport
        void display_report_plain_text_format(
            ReportPlainTextFormat report_plain_text_format)
        void display_report_html_format(
            ReportHTMLFormat report_html_format)

ReportHTMLFormat contains HTMLString. HTMLString consists ...

Get Prefactoring now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.