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 O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.