I've not run into the problem you're solving, but it sounds like a good 
idea. The end result sounds like stack usage will be easier for the end 
user.

Rick

On Sunday, September 30, 2012 10:46:50 AM UTC-4, ringmaster wrote:
>
> I added a very basic test to the test suite for the intended working of 
> a fix for #290. 
>
> Issue #290: 
> https://github.com/habari/habari/issues/290 
>
> The added test: 
> http://asym.us/VeyBrM 
>
> There is a branch for the solution in-progress, and a branch for the new 
> test in the suite. 
>
> The basic idea is to have this new class, StackItem, represent a thing 
> that can be added to a Stack.  You would register new StackItems with 
> Habari when you had some standard, named library that you wanted to make 
> common use of.  A StackItem can optionally be registered with a version 
> number, which would help satisfy specific version requirements.  Plugins 
> and themes could register new StackItems or override existing ones (to 
> make use of CDN-hosted or compressed versions, or what-have-you). 
>
> Habari itself would register a named StackItem for each vendor script 
> that it provides.  Instead of providing the full URL of a script (CSS 
> would work similarly) to Stack::add(), you would use StackItem::get() to 
> return a registered StackItem object with a specific name (and possibly 
> version) to be added to the Stack.  For example: 
>
> Stack::add( 'test_stack', StackItem::get('jquery') ); 
>
> A StackItem will already have been assigned a name and dependencies when 
> it is registered, so there is no need to include those in the call to 
> Stack::add().  Current code that passes a string or array as an item to 
> Stack::add() as the $value parameter will simply be registered as a new 
> StackItem at that time, and added to the stack. 
>
> New functionality could also allow lambdas to be passed as the $value 
> parameter in Stack::add() or the $resource parameter to 
> StackItem::register().  These lambdas would be called when the stack is 
> built, and their return values would be used in the stack.  This would 
> make it possible to define StackItems that have conditions, so that you 
> would always add them to the stack using the simple Stack::add() call 
> above, but they would only appear in output or contain different output 
> based on internal criteria checked at runtime. 
>
> I know that one thing that seemed ideal was to target a specific 
> directory to register all of the scripts in it as StackItems.  For 
> example, StackItem::register_dir($path) could glob() the whole $path and 
> register each file there as a StackItem under its filename.  This would 
> make StackItem registration pretty simple, and similar to the use of the 
> assets directory in themes.  Yet, I'm not sure how or if this would 
> accumulate version numbers on those resources. 
>
> Some thoughts as to the workings of this would be appreciated, as I am 
> in the middle of implementation and don't want it to fail to address the 
> issues presented. 
>
> Owen 
>

-- 
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at http://groups.google.com/group/habari-dev

Reply via email to