I always end up never quite believing it when, once again, it dawns on me that I can’t complete a project the way I visualise due to ASP Classic’s lack of support for dynamic includes.
This time, I was creating a CMS-like site, which included mixed HTML/ASP files automatically. I tried pretty much every other solution — including server.execute (no go — doesn’t preserve variables/functions), and other examples of using ASP’s execute() command to parse files (didn’t work for mixed HTML/ASP).
So, the only thing left was to write my own. It’s fairly simple, and due to ASP/VBScript’s horribly limited feature set, very low-level. It steps through a file one character at a time, and decides if it is in “HTML mode” or “ASP mode” at an given time, and then uses this staus to convert the file into a set of executable lines.
It should handle most things correctly, with the exception of defines, and <!--#
-style directives. It handles short ASP write tags (<%= %>
) just fine. Variable scope is preserved inside the include file, and variables/functions set inside the include file continue to exist outside it after it is included — in other words, just as they should.
To use it, simply include the file, and use it just as you would in a sane language:
include("relative_path_to_local_file.asp")
The function returns false if the file doesn’t exist, or true otherwise.
If you fix any bugs in this, please let me have them.
Download it here: ASP Dynamic Includes