CPS 108: hyperwag

Spring 1999

Due February 8

Your company will implement a program that processes a file representing a weekly schedule, and generates a hypertext (HTML) table or text list that shows a Week At a Glance (wag). A sample hyperwag table is shown below. This table has colors that will not be visible when the table is printed, but will be visible when then table is viewed by a browser like Netscape or Internet Explorer.
 
time Mon Tue Wed Thu Fri
9:00 - 10:00 sleep  CPS 110  breakfast  CPS 110  running 
10:00 - 11:00 breakfast  CPS 108  free CPS 108 
11:00 - 12:00
12:00 - 1:00 lunch  lunch  lunch  lunch  lunch 
1:00 - 2:00 free free free free free
2:00 - 3:00
3:00 - 4:00
4:00 - 5:00
5:00 - 6:00

You can see the text that generates the table by using the View menu/Source, or see the source section.

Specification

You must write a C++ program that reads an appointment file (written in one of several appointment languages) and generates an HTML table/web page that represents, in tabular format, the appointments in the file. At a minimum, your hyperwag program must support a business week of Monday through Friday, with hourly time-slots from 9:00 am to 6:00 pm as shown in the sample table above.

Wagalang

Your hyperwag program must support the following wagalang (week-at-glance appointment language) features. Each appointment in wagalang consists of three white-space delimited strings (the appointment string extends to the end of the line):
  DAYTAGS  TIMESLOT  APPOINTMENT
DAYTAGS letters from M, T, W, H, F, in either upper or lower case
TIMESLOT the format is the beginning time and then the ending time where the two times  are separated by either a comma or a dash: i.e., a ',' or a '-'.  The times can be in military/24 hour HH:MM format, but only HH is necessary for minimal wagalang. 
APPOINTMENT An abitrary string that extends to the end of the line, and can include whitespace 

For example, the sample hyperwag table above could be generated from the following wagalang text.

 m      9,12    sleep
 th     9,10    CPS 110
 w      9,10    breakfast
 f      9,10    running
 mtwhf  12,13   lunch
 wf     10,12   CPS 108
 t      10,12   breakfast
Any line of a wagalang file beginning with a # should be treated as a comment line and ignored. Any blank line, or a line consisting of just white space, should be ignored.

YAWL

An apointment in YAWL (Yet Another Week-at-a-glance Language) is spread over several lines, and consists of at least three lines. The general format follows:
dayname
hour range
appointment description
%%END-YAWL%%
Just as in wagalang, any line beginning with a # should be treated as a comment and ignored. Blank lines should be ignored as well.

Table Format

The time column of the table should be in a color different from the other cells in the table. Any time period for which no appointments are scheduled is marked as free as shown above, in a color different from time or appointment cells. Some spacing and padding should be used to make the table cells visible.

Sizes and colors of the table (and other parameters) should be changeable by embedding HTML commands in the appointment file, or by reading a .hyperrc file, or by command line arguments.  How you choose to do this should be documented by the second deliverable so that the class can agree on a standard.

Wagalang Extensions

You can support many wagalang extensions. An important goal of this project is to differentiate your hyperwag program from others in your attempt to make your program capture the market. Some suggested extensions follow:

Deliverables

  1. Wednesday, January 29. One to two page description of of classes you envision as part of implementing hyperwag; a list of issues that arise as you try to pin down the requirements, e.g., vague, ambiguous, conflicting requirements; issues in what's asked of you. You will use this list of classes when you meet with your group. Groups will be assigned randomly on January 29. You will have one deliverable per group, but the best design/specification document will emerge as a result of a discussion that takes place between people who have thought about the issues.
  2. Friday, February 5. A program that proceses wagalang and prints out a textual description of all appointments. No table is necessary, there should be something output for each appointment in the input file. You must demo this program with your hypewag mentor (UTA, TA, Prof). The program should include the beginnings of a user manual and a programmer manual (for the group that takes over hyperwag when you have cashed in your stock options).
  3. Wednesday, February 10. The final program, design document, and user manual must be submitted electronically. This should be release 1.0. After you demo your program, during the end of this week, you will have a chance to make final revision to the program and the documentation, but if major revisions are required you will lose market-share (and your grade will decline as well).
  4. Monday, February 15. The really final program, design document, and user manual must be submitted electronically. This should be release 2.0.

Comments?