[Pas2js] Initial resource linking support added.

Sven Barth pascaldragon at googlemail.com
Mon Oct 28 07:38:50 CET 2019


Am 27.10.2019 um 14:33 schrieb Michael Van Canneyt:
>
> Hello,
>
> I have added initial support for resource linking.
>
> This means that directives like
>
> {$R *.html}
>
> or
>
> {$R left.png}
>
> {$R right.png}
>
> {$R up.png}
>
> {$R down.png}
>
>
> Will now actually do something.
>
> The mechanism is pluggable, and the compiler currently supports 2 
> mechanisms:
>
> - The resources are added to a javascript structure in the generated
>   javascript.
>
> - The resources are emitted to a file with html snippet.
>   this will look like this:
>
>     <link rel="preload" id="resource-testres" data-unit="consoledemo" 
> href="data:text/html;base64,PGgzPlRlc3QgcmVzb3VyY2UgaW4gSFRNTDwvaDM+ClRoaXMgaXMgYSBtYWluIHByb2dyYW0gZmlsZSByZXNvdXJjZSBpbiBIVE1MLgo=" 
> />
>     <link rel="preload" id="resource-testb" data-unit="unitb" 
> href="data:text/html;base64,PGgzPkhlbGxvIFJlc291cmNlIFdvcmxkIFBhcnQgQjwvaDM+CjxwPgpUaGlzIG1lc3NhZ2UgaXMgc2F2ZWQgaW4gYSByZXNvdXJjZSBmaWxlIChQYXJ0IEIpLgo8L3A+Cgo=" 
> />
>     <link rel="preload" id="resource-testa" data-unit="unita" 
> href="data:text/html;base64,PGgzPkhlbGxvIFJlc291cmNlIFdvcmxkIFBhcnQgQTwvaDM+CjxwPgpUaGlzIG1lc3NhZ2UgaXMgc2F2ZWQgaW4gYSByZXNvdXJjZSBmaWxlIChQYXJ0IEEpLgo8L3A+Cgo=" 
> />
>
>   This html can be pasted into the HTML file of your project.
>   Or the HTML snippet can be loaded dynamically.
>
> In both cases, the resource is base64-encoded before including it.
>
> Other mechanisms can probably be invented, but I thought the above 2 
> are the simplest and easiest.
>
> There are 3 "bare bones" demoes:
>
> Using javascript-embedded resources:
>
> https://www.freepascal.org/~michael/pas2js-demos/resources/htmldemo.html
>
> Using HTML <link> resources:
>
> https://www.freepascal.org/~michael/pas2js-demos/resources/htmllinkdemo.html 
>
>
> Using dynamically loaded HTML <link> resources:
>
> https://www.freepascal.org/~michael/pas2js-demos/resources/htmlloadlinkdemo.html 
>
>
> As you can see in these demoes, there is an API (unit p2jsres) for 
> getting resource
> information, as well as a calll to dynamically load the resources from 
> the
> compiler-generated snippet. The API is the same for both kind of 
> resources,
> this is transparant.
>
> There is also a nodejs demo, but this one needs to be compiled from 
> source
> and run on your local machine.
>
> This is just an initial implementation.
>
> Planned:
>
> - Support {$R *.res}
>   This will need to extract the actual resources from the *.res file 
> and add them separately to the JS/HTML.
>   I only plan this for the native pas2js compiler, not yet for the 
> javascript version.
>
> - Add support in the Lazarus IDE to specify what resources you want to 
> use,
>   and automatically include the generated HTML snippet into the 
> project HTML.
>
> - Any suggestions you may have...
>
> Enjoy !

Cool! Seems like I should retry/rework that widgets example from a few 
months back :D

Regards,
Sven


More information about the Pas2js mailing list