I have put together a rough, working example of a parser that could grow
to support this ASP.NET-style development we've been talking about.

I can post what I have, but it's only about 50 lines and wouldn't help
anyone much.  Another couple weeks of free time on this project should
yield more progress.

The parser I have written works for the following code.

---- test.aspx -----
<%@ Register prefix="test" class="MyLibs::ASP::Test" %>
<html>
<head>
  <title>Testing</title>
</head>
<body>
  <test:header id="hd1" runat="server" arg1="foo" stuff="bar">
    <test:hlink runat="server" id="bob">Click Me.</test:hlink>
  </test:header>
</body>
</html>
---- end test.aspx ----

Then, in MyLibs/ASP/Test.pm, I do this:

---- MyLibs/ASP/Test.pm ----
package MyLibs::ASP::Test;
use strict;

#====================================================
sub header
{
  my ($s, $args, $html) = @_;
  qq{<span class="header" id="$args->{id}">$html</span>};
}# end header

#====================================================
sub hlink
{
  my ($s, $args, $html) = @_;
  return "<a href=\"" . $s->_link($args) . "\">$html</a>";
}# end hlink

#====================================================
sub _link
{
  my ($s,$args) = @_;
  # Do something special with $args, return a URI
}# end _link
---- end MyLibs/ASP/Test.pm ----


| -----Original Message-----
| From: Josh Chamas [mailto:[EMAIL PROTECTED]
| Sent: Thursday, April 08, 2004 11:02 PM
| To: John Drago
| Cc: [EMAIL PROTECTED]
| Subject: Re: .NET-style components and development
| 
| John Drago wrote:
| > If anyone is interested,
| >
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/h
| > tml/frlrfSystemWebUI.asp?frame=true is the msdn section dealing with
the
| > System.Web.UI namespace.
| >
| > My guess is that 80% of what's there is unnecessary to get the
desired
| > functionality.  By chance or fate, 80% of what's there has no place
in a
| > perl implementation of similar functionality, because of the tools
| > already available within perl.
| 
| Sorry I have not gotten back to you on this yet.  I wanted to give the
| Net stuff a good read first before I started an informed discussion
| with you about this, which I still have not done :( .  I would like to
| extend the Apache::ASP framework to be able to handle extensions that
| can fully replicate the .NET taglibs, and I understand that the
XMLSubs
| falls well short of that.  I am not sure about other aspects of the
| newer objects architecture, but there may be a place for those also.
| 
| To help focus the discussion, it may be useful to know exactly what
| feature(s) would be useful for you to begin work on as a shorter term
| goal.
| It seemed like the dynamic list boxes was a place you wanted to start
| at, but more input here would be good.
| 
| Regards,
| 
| Josh
| 
| >
| > -------------------------------------------------------------------
| > I figure we would need to emulate the functionality of:
System.Web.UI
| > (as a base class, and defining certain constants).
| >
| > o  System.Web.UI.Control (base class, inherited by all default and
| > custom controls).
| >
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/h
| > tml/frlrfSystemWebUIControlClassTopic.asp?frame=true
| >
| > o  System.Web.UI.ControlCollection (this functionality could be
rolled
| > into System.Web.UI.Control).
| >
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/h
| > tml/frlrfSystemWebUIControlCollectionClassTopic.asp?frame=true
| >
| > o  System.Web.UI.IPostBackDataHandler & IPostBackEventHandler
| > (inheritable interface that allows controls to handle how their
postback
| > data is handled).
| >
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/h
| > tml/frlrfSystemWebUIIPostBackDataHandlerClassTopic.asp?frame=true
| >
| > o  System.Web.UI.Page (represents an .aspx file, and is used as a
base
| > class when creating a web forms class in codebehind mode).
| >
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/h
| > tml/frlrfSystemWebUIPageClassTopic.asp?frame=true
| >
| > o  System.Web.UI.PageParser (parses .aspx files).
| >
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/h
| > tml/frlrfSystemWebUIPageParserClassTopic.asp?frame=true
| >
| > o  System.Web.UI.TemplateBuilder (supports the PageParser in
building a
| > template and the child controls it contains).
| >
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/h
| > tml/frlrfSystemWebUITemplateBuilderClassTopic.asp?frame=true
| >
| > o  System.Web.UI.TemplateControl (inheritable base class.  Provides
the
| > Page class and UserControl class a base set of functionality).
| >
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/h
| > tml/frlrfSystemWebUITemplateControlClassTopic.asp?frame=true
| >
| > o  System.Web.UI.UserControl (represents an .ascx file which
implements
| > and/or extends the TemplateControl class to produce some
functionality
| > or html).
| >
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/h
| > tml/frlrfSystemWebUIUserControlClassTopic.asp?frame=true
| >
| > o  System.Web.UI.UserControlControlBuilder (Does a recursive descent
| > into the sub-controls contained within a UserControl, building them
as
| > it goes, so that UserControls can contain other controls inside
them).
| >
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/h
| >
tml/frlrfSystemWebUIUserControlControlBuilderClassTopic.asp?frame=true
| >
| > -------------------------------------------------------------------
| >
| > Let me make myself clear.  I do not want to duplicate the entire
ASP.NET
| > thing in perl.  I merely wish to skim the good stuff off the top and
| > move along.  In fact, there's more I dislike about ASP.NET than
there is
| > I *do* like about it.  However, I recognize some things there that
could
| > save me loads of time on a large-scale project.
| >
| > Mason has some similar functionality with its *.mas components
| > http://www.masonbook.com/book/chapter-1.mhtml#TOC-ANCHOR-3 but lacks
the
| > PostBack way of dealing with round-trip forms (as with server-side
form
| > validation).  It also lacks the built-in ability to do things like
| > append listitems to a <select> tag.
| >
| > _______________________________________________________________
| >
| > John Drago | Chief Architect of Software Development
| > E-com Media Group, Inc. [www.e-commedia.com]
| > office
| > ::
| >  303.790.7940 x25
| > email
| > ::
| >  [EMAIL PROTECTED]
| >
| >
| >
| > E - b u s i n e s s   w i t h   D i m e n s i o n TM
| >
| >
| > | -----Original Message-----
| > | From: Josh Chamas [mailto:[EMAIL PROTECTED]
| > | Sent: Monday, March 15, 2004 5:19 PM
| > | To: [EMAIL PROTECTED]
| > | Subject: Re: .NET-style components and development
| > |
| > | John Drago wrote:
| > | >
| > | > What I want to do would look something like so:
| > | > ---------------------------------------------------------------
| > | > [listbox.asp]
| > | >
| > | > <asp:listbox id="list1">
| > | >         <asp:listitem>Select One</asp:listitem>
| > | > </asp:listbox>
| > | >
| > | > <%
| > | >   # Dynamically add items to the list before it's rendered:
| > | >   $Page->list1->Items->add(
| > | >     asp::listitem->new( Value => "1", Text => "Blue" ) );
| > | >   $Page->list1->Items->add(
| > | >     asp::listitem->new( Value => "2", Text => "Red" ) );
| > | >
| > | >   # or, iterate through items within the listbox:
| > | >   foreach my $item ( $Page->list1->Items )
| > | >   {
| > | >     if( $item->Value == 1 )
| > | >     {
| > | >       $item->Text = "Blue [this is my favorite...isn't it
yours?]";
| > | >     }# end if()
| > | >   }# end foreach()
| > | >
| > | > %>
| > | > ---------------------------------------------------------------
| > | >
| > | > Something tells me that this isn't too far away from what we
already
| >
| > | > have with Apache::ASP...that with some extra methods inherited
from
| > | > a package subclassed by asp::listbox and asp::listitem, it is
100%
| > | > possible.
| > | >
| > | > I would need some help with where to bless the $Page object into
the
| >
| > | > namespace the ASP pages are executed in.
| > | >
| > |
| > | If you set up a $List object in global.asa, it will be seen in
| > | includes and scripts, but not in the scope of the XMLSubs
packages.
| > | So you might create it in the main package to reference from like
| > | this:
| > |
| > | # global.asa
| > | use vars qw($List);
| > | sub Script_OnStart {
| > |      $List = $main::List = List->new();
| > | }
| > | sub Script_OnEnd {
| > |      $List->can('DESTROY') && $List->DESTROY;
| > |      $List = $main::List = undef;
| > | }
| > |
| > | Then in the script, you can:
| > |
| > |   <%
| > |     $List->->add('list1',
| > |       ListItem->new( Value => "1", Text => "Blue" )
| > |     );
| > |   %>
| > |
| > | And then you can:
| > |
| > |   <asp:listbox id="list1">
| > |           <asp:listitem>Select One</asp:listitem>
| > |   </asp:listbox>
| > |
| > | And have XMLSubs defined to handle asp:listbox & asp:listitem
| > | properly, looking at the $main::List object.
| > |
| > | If you really want to build objects through code though, you might
| > | check out CGI.pm, which has plenty of methods for doing exactly
this.
| >
| > | Output from a CGI.pm object should be compatible with Apache::ASP.
| > |
| > | > Apache::ASP does *almost* everything I want it to do, and this
kind
| > | > of extension would make it a lot more powerful in my opinion.
| > |
| > | What is the extension in particular that you are looking for? Is
there
| >
| > | something particular about <asp:listbox /> handling that you like
in
| > | ASP.NET that you want implemented as is?  Particularly what
features
| > | of ASP.NET do you think should make it into Apache::ASP ?
| > |
| > | Regards,
| > |
| > | Josh
| > |
| > |
| >
________________________________________________________________________
| > | Josh Chamas, Founder    | NodeWorks - http://www.nodeworks.com
| > | Chamas Enterprises Inc. | NodeWorks Directory -
| > http://dir.nodeworks.com
| > | http://www.chamas.com   | Apache::ASP - http://www.apache-asp.org
| > |
| > |
| > |
| > |
| > |
---------------------------------------------------------------------
| > | To unsubscribe, e-mail: [EMAIL PROTECTED]
| > | For additional commands, e-mail: [EMAIL PROTECTED]
| >
| >
| >
| >
---------------------------------------------------------------------
| > To unsubscribe, e-mail: [EMAIL PROTECTED]
| > For additional commands, e-mail: [EMAIL PROTECTED]
| >
| >
| 
| 
| 
| ---------------------------------------------------------------------
| To unsubscribe, e-mail: [EMAIL PROTECTED]
| For additional commands, e-mail: [EMAIL PROTECTED]
| 



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to