Empty Block

Advanced Markup Generator


Funcdown
Playground

About Funcdown

Funcdown is a `C-function-syntax alike`, markup language generator primarely existing as extension within larger project `HardcoderNG Toolset`, but nonetheless, Funcdown can be easily used as standalone tool for any reasonable purpose.

The idea for the name came as a parody/play over well known and widely adopted Markdown, which is text-to-HTML conversion-tool originally written in Perl, where Funcdown is a xml/html5(*ml) generator, written in PHP.

To avoid possible missunderstandings concerning the nature of the idea it self, Funcdown is actually a serious tool than can be quite useful, just as markdown is proven as - brilliant.

Funcdown in it's current, beta stage is extremely stable. Should You use it in production, be the judge by Your self, as the entire *ml for this website (every single character) is generated with - Funcdown.

This very page for instance is utilizing sequental Fundcdown calls. Main skeleton html (head tags + body tag with all elements except Section and Aside tags and all within), then Section and Aside content separatedly and then Funcdown Playground area broken into phases, which are later on exposed on demand.

Funcdown In Action

TOGGLE
  • Saved Funcdown Playground content will remain saved until you manually clear localStorage, and once when saved, changes will be reflected in preview window - ASAP.

  • Due to various server-setup restrictions, there's no option for someone to executre native (PHP) source code within playgound area. As soon as those factors are changed and become more permissive, Funcdown Playground will become fully functional, Funcdown Parser Area. Because of that, although files with *.fncd.phtml extension all act like a regular *.php file, each and every portion of PHP source code within funcdown Playground Area will be replaced with no_backend phrase.

Backend Phases

Once when Plaground is opened, PENGUIN (🐧) button (Ctrl + NumPad 2) can be seen, sitting on the bottom bar. Backend Phases are hiding behind it. Phases reflected onto tabbed pages are those currently active within playground area. While code in Playground Area updates automatically, phases won't get updated automatically. In order to see last changes (if phases were already shown and viewed), clicking on desired tab will force re-draw, particular phase reload in other words.

Unlike other buttons in a row, Penguin is the only one that is independant and standalone, beside main bottom-right corner Playground button. That means You can Pop/Glue-In Backend Phases over this very Box. How to do that ? Once when Backend Phases are shown, try Toggling Plaground (ctrl + Numpad Enter) without closing Backend Phases. Toggling Playground again, and closing Backend Phases afterwards will restore "normal" Layout.


Valid Structure

Funcdown is composed in such manner that NOT a single error is allowed, and this associative/indexed hashmap represents 100% valid funcdown input in it's most raw and barely readable form. Once when it becomes readable, it means that funcdown syntax sugar has passed and that there are no braces mismatch found anywhere in the provided input where - left side is numerical combo holder for the `real line number : how many tabs before *ml line` and the right side represents node/tag string value it self, packed and encoded into a single line.

Structure Info

STRUCTURE INFO is a transformed Valid Structure classifying which type of tags/node objects are provided from the source input. Think of this stage as Native PHP Dom-parser-alike (only much simpler) association. Here's blueprint type -> value definition:

"REAL_LINE_NUMBER:[for each node-list entry]" = [ 'name' => 'User provided Tag/Node Name', 'type' => 'can be: DTD | TAG | TEXT | COMMENT', 'role' => 'can be: STRING | PARENT | SELF | END', 'tabs' => 'Real String representation of calculated tabs.', 'text' => '*base64 - Representational text.', 'attr' => '*base64 - Attributes, if found.', ];

Tongue

Entire text found within tags/DOMnodes (including attributes (attribute values only)) is extracted/decoded from `Structure info`, keys [text, attr] and packed into multi-dimensional hashmap which represents tongue values with their indexed categories. In other words, this hashmap insight is where readable web page text/content resides.

Puzzle

Each and every string:number or number:number wrapped with 'weird' characters represents a place for the missing PIECE (tongue) of a PUZZLE. The next stage after this one is GENERATED HTML.

Valid Structure
Structure Info
Tongue
Puzzle
Empty Block
Empty Block
Empty Block