<div dir="ltr">Hi, Antranig:<div><br></div><div>Certainly.  I generally set aside a little time each morning for things like this, and will put the tutorial on my calendar for early next week.</div><div><br></div><div>Cheers,</div><div><br></div><div><br></div><div>Tony</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Mar 11, 2015 at 6:01 PM, Antranig Basman <span dir="ltr"><<a href="mailto:antranig.basman@colorado.edu" target="_blank">antranig.basman@colorado.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Thanks for taking the time to write this up, ADTKINS - it will be very helpful to other uses of the API. Do you think you might have time to make a markdown pull request for a mini-tutorial with the contents of the main section of this mail?<br>
<br>
We have a growing set of tutorials in our github docs such as this one -<br>
<a href="https://github.com/fluid-project/infusion-docs/blob/master/src/documents/tutorial-userInterfaceOptions/UserInterfaceOptions.md" target="_blank">https://github.com/fluid-<u></u>project/infusion-docs/blob/<u></u>master/src/documents/tutorial-<u></u>userInterfaceOptions/<u></u>UserInterfaceOptions.md</a><br>
<br>
As for the Framework Function API - there has been work on producing an automatically generated version of this from the code and doc comments by a certain S. Githens - unfortunately the integration work for publishing this along with our main docs site appears to have stalled. Perhaps some of the OCAD team could chime in with an update of where this work currently stands - I know that Steve has said he would be happy to complete the work at his end if we can give him a summary of what we need from him before we can make this work live.<br>
<br>
I'm not sure which repo the doc generator lives in, sgithens - has it been checked in?<br>
<br>
Cheers,<br>
<br>
A<span class=""><br>
<br>
<br>
On 11/03/2015 11:00, Tony Atkins wrote:<br>
</span><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
Hi, All:<br>
<br>
Antranig and I have been discussing template handling in various client<br>
and server-side components.  Although there are many other requirements,<br>
there are two requirements I'd like to talk about:<br>
<br></span>
 1. Users should be able to change the location of one or more templates.<br>
 2. Users should not have to make an "all or nothing" choice, i.e. they<span class=""><br>
    should be able to use the default location for some templates and<br>
    override others as needed.<br>
<br>
To support this level of flexibility, the location of individual<br>
templates needs to be specified as a full path.  Ideally, the repeating<br>
parts of these paths should be expressed as variables.<br>
<br>
I see from Cindy's recent work that there is an emerging pattern of<br></span>
expanding /%variable/ references:<span class=""><br>
<br>
<a href="https://github.com/cindyli/infusion/commit/033d9eadea896f43d640e5f386b2d8f59753ad75" target="_blank">https://github.com/cindyli/<u></u>infusion/commit/<u></u>033d9eadea896f43d640e5f386b2d8<u></u>f59753ad75</a><br>
<br>
If you're anything like me, it will take a while to drill down to the<br>
base bits of infusion that make this possible.  I thought I would share<br></span>
a simple demonstration of /fluid.templateString/ usage.  Here is demo<br>
code that wires in the existing /fluid.templateString/ and<br>
</blockquote>
<br>
<br>
Nb - stringTemplate, not templateString<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
/fluid.transform/ functions to make a new expander that results in<div><div class="h5"><br>
parsed content with variables interleaved:<br>
<br>
        // Sample demonstration of fluid.stringTemplate to parse<br>
        %variable references...<br>
<br>
        "use strict";<br>
<br>
        var fluid = fluid || require("infusion");<br>
<br>
        var gpii  = fluid.registerNamespace("gpii"<u></u>);<br>
<br>
<br>
        fluid.registerNamespace("gpii.<u></u>sandbox.variables.base");<br>
<br>
        fluid.defaults("gpii.sandbox.<u></u>variables.base", {<br>
<br>
             gradeNames: ["autoInit", "fluid.eventedComponent"],<br>
<br>
             terms:      {<br>
<br>
                 one: "base one",<br>
<br>
                 two: "base two"<br>
<br>
             },<br>
<br>
             templates: {<br>
<br>
                 one: "The term named 'one' is set to '%one'.",<br>
<br>
                 two: "The term named 'two' is set to '%two'."<br>
<br>
             },<br>
<br>
             listeners: {<br>
<br>
                 onCreate: [<br>
<br>
                     {<br>
<br>
                         funcName: "gpii.sandbox.variables.base.<u></u>logState",<br>
<br>
                         args:     ["{that}", {expander: {func:<br>
        "{that}.parseTemplates"}}]<br>
<br>
                     }<br>
<br>
                 ]<br>
<br>
             },<br>
<br>
             invokers: {<br>
<br>
                 parseTemplates: {<br>
<br>
                     funcName: "fluid.transform",<br>
<br>
                     args:<br>
        ["{that}.options.templates","{<u></u>that}.transformTemplate"]<br>
<br>
                 },<br>
<br>
                 transformTemplate: {<br>
<br>
                     funcName: "fluid.stringTemplate",<br>
<br>
                     args: ["{arguments}.0", "{that}.options.terms"]<br>
<br>
                 }<br>
<br>
             }<br>
<br>
        });<br>
<br>
<br>
        gpii.sandbox.variables.base.<u></u>logState = function (that, parsed) {<br>
<br>
             console.log("\nMy friends call me '" + that.nickName + "'...");<br>
<br>
             console.log("terms -> one: " + that.options.terms.one);<br>
<br>
             console.log("terms -> two: " + that.options.terms.two);<br>
<br>
             console.log("template one: " + that.options.templates.one);<br>
<br>
             console.log("template two: " + that.options.templates.two);<br>
<br>
             console.log("one, parsed : " + parsed.one);<br>
<br>
             console.log("two, parsed : " + parsed.two);<br>
<br>
        };<br>
<br>
<br>
        fluid.registerNamespace("gpii.<u></u>sandbox.variables.child");<br>
<br>
        fluid.defaults("gpii.sandbox.<u></u>variables.child", {<br>
<br>
             gradeNames: ["autoInit", "gpii.sandbox.variables.base"]<u></u>,<br>
<br>
             templates: {<br>
<br>
                 one: "The term named one is set to '%one', also, I am a<br>
        custom template."<br>
<br>
             },<br>
<br>
             terms:      {<br>
<br>
                 two: "child two"<br>
<br>
             }<br>
<br>
        });<br>
<br>
<br>
        gpii.sandbox.variables.base({}<u></u>);<br>
<br>
        gpii.sandbox.variables.child({<u></u>});<br>
<br>
<br>
When run, this demo produces output like:<br>
<br>
        My friends call me 'base'...<br>
<br>
        terms -> one: base one<br>
<br>
        terms -> two: base two<br>
<br>
        template one: The term named 'one' is set to '%one'.<br>
<br>
        template two: The term named 'two' is set to '%two'.<br>
<br>
        one, parsed : The term named 'one' is set to 'base one'.<br>
<br>
        two, parsed : The term named 'two' is set to 'base two'.<br>
<br>
<br>
        My friends call me 'child'...<br>
<br>
        terms -> one: base one<br>
<br>
        terms -> two: child two<br>
<br>
        template one: The term named one is set to '%one', also, I am a<br>
        custom template.<br>
<br>
        template two: The term named 'two' is set to '%two'.<br>
<br>
        one, parsed : The term named one is set to 'base one', also, I<br>
        am a custom template.<br>
<br>
        two, parsed : The term named 'two' is set to 'child two'.<br>
<br>
<br>
Anyway, I hope that specific example is of interest to at least one<br>
other person.<br>
<br>
Since I learned about a handful of framework functions in my reading<br>
that would be of use in my work, I went through the docs to see what I<br>
might have missed in earlier reading.  It looks like the framework<br>
function documentation<br></div></div>
<<a href="http://wiki.fluidproject.org/display/Infusion14/Framework+API" target="_blank">http://wiki.fluidproject.org/<u></u>display/Infusion14/Framework+<u></u>API</a>>has not<span class=""><br>
yet been migrated from the wiki.  Since I plan to review these functions<br>
in more depth over the next few days, I would like to offer to migrate<br>
over what we have, and add documentation for at least the undocumented<br></span>
functions I already am aware of (such as /fluid.templateString/).<span class=""><br>
<br>
  Before I do that, I want to make sure I'm targeting the right place.<br>
  This is the closest I could find in the GitHub documentation repo:<br>
<a href="https://github.com/fluid-project/infusion-docs/blob/master/src/documents/to-do/FrameworkAPI.md" target="_blank">https://github.com/fluid-<u></u>project/infusion-docs/blob/<u></u>master/src/documents/to-do/<u></u>FrameworkAPI.md</a><br>
<br>
The placeholder content in that page points to a more general version of<br></span>
the API docs <<a href="http://wiki.fluidproject.org/display/docs/Framework+API" target="_blank">http://wiki.fluidproject.org/<u></u>display/docs/Framework+API</a>><span class=""><br>
which does not include function documentation, but it still seems like<br>
the right place.  I would appreciate quick confirmation from the team<br>
before I start the pull request, as it will save time.<br>
<br>
Cheers,<br>
<br>
<br>
Tony<br>
<br>
<br>
<br>
<br>
<br>
</span></blockquote>
<br>
______________________________<u></u>_________________________<br>
fluid-work mailing list - <a href="mailto:fluid-work@fluidproject.org" target="_blank">fluid-work@fluidproject.org</a><br>
To unsubscribe, change settings or access archives,<br>
see <a href="http://lists.idrc.ocad.ca/mailman/listinfo/fluid-work" target="_blank">http://lists.idrc.ocad.ca/<u></u>mailman/listinfo/fluid-work</a><br>
</blockquote></div><br></div>