! Info.h - A Library Extention For Consultation And Conversation
! By Jesse Burneko
!
! Purpose:
! The idea for this library extention has been brewing around my mind
! for quite some time.  The idea is to allow Consult, Ask, Tell, and
! Answer to access a database of topic objects rathen than having to
! parse the information themselves.  As a mock up version of this
! library file I had taken Gareth Rees' Frobozzica.inf example, edited
! it to handle Tell and Answer as well as Ask, and then transformed it
! into an include file.  As inform has developed I began to suspect
! that there was a much simpler way of doing things.  This library file
! is the fruit of my labor.
!
! Usage:
! 1) Create a Topics object to be the parent object of all topics.
! 2) Create a series of topic objects.  The only requirements being that
!    they are a child of the Topics object, inherit from the
!    Topic class, provide the name and/or parse_name property for
!    identification in the usual way.
! 3) In the usual manner trap the Consult, Ask, Tell, and/or Answer
!    action in the before or life routine of the target object.  The topic
!    being refered to will be held in the second variable.
!
! Example:
!
! Object Topics;
!
! Topic -> Virginia_Woolf
!   with   name "virgina" "woolf",
!
! Topic -> Orlando
!   with   name "orlando" "novel" "book",
!
! Object Encyclopedia "Encyclopedia Of English Literature",
!   with   name "encyclopedia" "of" "english" "literature" "book",
!   before
!   [;
!      Consult:
!        switch(second)
!        {
!         Virginia_Woolf:
!            "~Woolf, Virginia (1182-1941), English novelist and
!            essayist.  The daughter of Sir Leslie Stephen, she
!            married the critic Leonard Sidney Woolf (1880-1969) and
!            they established the Hogarth Press (1917).  Novels using
!            stream of consciousness, such as Mrs. Dalloway (1925), To
!            the Lighthouse (1927) and The Waves (1931), concern her
!            characters' thoughs and feelings about common
!            experiences.  Some of her brilliant criticism was
!            published in The Common Reader (1925).  Subject to fits
!            of mental instability, she finally drowned herself.~";
!         Orlando:
!            "~A novel written in 1928 by Virgina Woolf outlining the
!            unual life of Orlando, an individual who lives for 400
!            years and is at one time male and another time female.
!            She also: Woolf, Virgina.~";
!         }
!   ];
!
! Note: Topics created need not initially be a child of the Topics
! object.  This allows for topics to begin out of scope and then as
! the player gains more information topics can be moved in and out of
! the Topics object at will.

[ TopicScope;
   switch(scope_stage)
   {
    1: rfalse;
    2: ScopeWithin(Topics);
       rtrue;
    3: "Error: Parsing should have matched previous grammar line.";
   }
];

Class   Topic
with   short_name "that",
has    proper;

Extend 'look' first
   *                                   -> Look
   * 'up' scope = TopicScope 'in' noun -> Consult reverse;

Extend 'consult' first
   * noun 'about' scope = TopicScope   -> Consult;

Extend 'ask' first
   * creature 'about' scope = TopicScope -> Ask;

Extend 'tell' first
   * creature 'about' scope = TopicScope -> Tell;

Extend 'answer' first
   * scope = TopicScope 'to' creature  -> Answer;