OSSP CVS Repository

ossp - Check-in [3377]
Not logged in
[Honeypot]  [Browse]  [Home]  [Login]  [Reports
[Search]  [Ticket]  [Timeline
  [Patchset]  [Tagging/Branching

Check-in Number: 3377
Date: 2003-May-23 14:03:21 (local)
2003-May-23 12:03:21 (UTC)
User:rse
Branch:
Comment: add ABSTRACT part for CPAN
Tickets:
Inspections:
Files:
ossp-pkg/string-divert/README      1.1 -> 1.2     40 inserted, 0 deleted

ossp-pkg/string-divert/README 1.1 -> 1.2

--- README       2003/05/22 18:56:50     1.1
+++ README       2003/05/23 12:03:21     1.2
@@ -1,6 +1,46 @@
 String::Divert
 ==============
 
+ABSTRACT
+
+String::Divert is small Perl 5 module providing a scalar-like string
+object with some overloaded operators, supporting the concept of Fold-
+ing and Diversion. This allows nested generation of structured output.
+The idea is to decouple the sequential generation of output from the
+nested and non-sequential structure of the output.
+
+The two most prominent examples are the generation of code in SGML/XML
+based languages like [X]HTML (where large and deeply nested structures
+occur) and the generation of code in typed 3GL procedural languages
+like C/C++ (where symbols have to be declared before usage). Here
+String::Divert allows you to generate the code in steps from the outer
+to the inner level or to append code to already generated previous or
+later inserted parts.
+
+This is achieved by leveraging two basic concepts: content folding and
+operation diversion.
+
+Content Folding
+
+The concept of content folding allows you to fold the content at the
+current output position by inserting a placeholder corresponding to a
+sub-output and just proceeding with the output generation. The sub-out-
+put initially is empty. Once output is appended to it (see diversion
+below), it will occur at the placeholder position if the content is
+unfolded later. Folding can be applied to the sub-object again and this
+way allowing arbitrary nested structures. A sub-output even can be
+unfolded into multiple placeholder positions.
+
+Operation Diversion
+
+The concept of operation diversion allows you to automatically divert
+an operation to one object to another object. Usually this is used for
+diverting output generation operations on a top-level string object to
+folded sub-objects without having to deal with multiple object vari-
+ables and without having to know that you are actually operating on a
+sub-object. Diversions are applied in a stacked fashion, allowing the
+stepping back to the previous active diversion.
+
 INSTALLATION
 
 To install this module type the following:

CVSTrac 2.0.1