class interface PERLISH_FORMAT

creation
   make (h, b, t: FUNCTION[ANY,TUPLE,ARRAY[STRING]])
      -- create a perlish format object with up to three
      -- agents. The agent "b" (body) must be present. The
      -- other two, "h" (heading) and "t" (tail or footer)
      -- are optional.
      -- When called, the agent is expected to provide a list
      -- of picture strings with parameter fields and strings
      -- containing values that go into those fields.
      -- Sets the default page size to 60 lines.
      require
         has_body: b /= Void

feature(s) from PERLISH_FORMAT
   make (h, b, t: FUNCTION[ANY,TUPLE,ARRAY[STRING]])
      -- create a perlish format object with up to three
      -- agents. The agent "b" (body) must be present. The
      -- other two, "h" (heading) and "t" (tail or footer)
      -- are optional.
      -- When called, the agent is expected to provide a list
      -- of picture strings with parameter fields and strings
      -- containing values that go into those fields.
      -- Sets the default page size to 60 lines.
      require
         has_body: b /= Void

feature(s) from PERLISH_FORMAT
   write
      -- Apply the agents we received on creation and
      -- write out their results to std_output
      require
         is_valid

feature(s) from PERLISH_FORMAT
   apply
      -- Apply the agents we received on creation and
      -- write out their results to std_output
      require
         is_valid

   prefix "#$%%": INTEGER
      -- Returns the page number.
      -- Example: 
      -- format : PERLISH_FORMAT
      -- ... 
      -- print ( "page:" + #$%% format + "%N")

   prefix "#$%%++"
      -- Increment the page number
      -- I'm surprised that I don't get compilation errors

   page_number: INTEGER

   set_page_length (new_size: INTEGER)
      require
         legal_size: new_size > 0 and new_size <= 1000

   inc_page_number

   is_valid: BOOLEAN
      -- verify that we have a body agent for printing


end of PERLISH_FORMAT