Ok, guys I have read and digested (and been grateful for) all of the above comments. I know that from your end the probability that I have created something worth looking at is very low, and that in all likelyhood it appears I have simply reinvented a perfectly good wheel.

Appearances can be deceptive.

Yes there are real similarities between what I have and the systems mentioned above, but none of those do what my system does, and I have looked at them.

All I can say is that I feel immensely constrained when working with any other language, and I would love to find an existing wheel which does exactly as my wheel does, but it doesn't seem to exist.

Now from what I have given above it is difficult to explain why that is, because I haven't given you the whole story yet it was just an inroad, an attempt to start explaining something I don't know how to explain, and yet as a strong believer in the opensource principle, dearly wish to share with the world.

The only solution I can see right now, is to continue trying to explain what I have, and hope that I don't bore the pants off you guys before the picture becomes clear and you can objectively judge the merits of thing.

Ok, if your still with me, I will elaborate further...

The definitions of the tags are usually stored in a plugins folder, one file for each tag the filename corresponding to the tag name and containing the code to run for that tag.

I have about 50 definitions in all which cover just about everything I can think of, and typically as I move from project to project I don't make any changes to the core engine or the tag set.

So when I start a new project I simply build (or copy) an existing barebones template file accross, and then start building the pages. Thus I can have something up and running in minutes.

My implementation handles all the database level shash etc, leaving me free to simply design the tables, queries and UI. for a typical project I may not have to write any plugins or code at all, since all the functions needed are covered by the existing plugins and the unique method I found to stack them together in many different ways.

It is this "unique method" which is the bit I most want to share, since the rest of the framework I have built around it and indeed the plugins are just icing on the proverbial cake, and moreover it's a cake that needs refinement to improve efficiency.

I would LOVE it, if Template Toolkit or similar allowed me to use the "unique method", but it doesn't nor does any other system I can find.

My schema has very simple set of rules and 3 types of tag delimiters, which indicate process priority over child tags. This may seem arbitary but once you see the reasons for it, it becomes very useful.

Rule 1 : Child tags are computed prior to parent tags.

Rule 2 : The $result of the computation of a child tag, becomes the $data of the parent tag.

Rule 3 : Tags delimited by ( ) type brackets, are computed prior to their children unless the child tags are also of the type ( ).

Rule 4 : Tags delimited by [ ] type brackets, are computed last.

Rule 5 : The system only computes tags which it recognises and are syntactically valid, whilst ignoring everything else.

So with those rules in mind consider this action page;
listing of /actions/default/main.aXML <table width="50%"> (DB) <query> SELECT * FROM latestnews; </query> <mask> <tr> <td> <d>news_title</d> </td> <td> <d>news_headline</d> </td> <td>[link action="readnews" newsitem="<d>news_id</d>" ]Read More...[/link] </td> </tr> </mask> (/DB) </table>
Because the DB tag is of type ( ), it is computed prior to its child tags, and produces a list of news items and links. Because the link tag is of type [ ], the links are processed last to become standard hyperlinks to the news items.

It's not a framework, I am not trying to plug a replacement to template toolkit etc, I am just trying to show you the "unique method" I found and why it saves me huge amounts of time and effort. In the length of time it has taken me to tap up this essay, I could of built a whole news system complete with validation and presentation etc, because I've already done the grunt work on previous jobs and now I can just mix and match the components using the simple rules to create endless variations.


In reply to Re^2: RFC : Abstraction Markup by simonodell
in thread RFC : Abstraction Markup by simonodell

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.