On May 6, 12:24 pm, Yarko Tymciurak <[email protected]>
wrote:
> On May 6, 12:14 pm, Thadeus Burgess <[email protected]> wrote:
>
> > But default/index.html does choose its builder! By {{extends}} it
> > CHOOSES to be included inside of layout.
>
> I don't think that is a useful metaphor - in fact, I don't believe it
> is strictly correct: to choose to be in layout, YOU would have to
> insert the include, and the include point (what we are trying to get
> to enable).
>
> As it is, you are not in your own house, but only "visiting" the
> builders home.
> With the current layout.html, and handling of {{include}} within it,
> layout has the responsibility - which is wrong: main() should then
> call layout.html to create the view, and pass it the parameter
> (default/index) so that layout can include it (or perhaps more than
> index...) I would not want to write an app that way, because to go
> this way, I think all of the machinery would become tedious (how much
> would your controller have to know about what is involved in composing
> a view!?!!!???? --- too much like decaying to global knowledge for
> everythings --- opposite of data hiding, which is needed, natural,
> appropriate).
>
> If you buy the house from the builder, you certainly do not move into
> his house, or invite your guests to his house.
... that is, your guests come to the address of your house (default/
index.html is what main() comes to ), NOT to the model the builder
showed you (main does not go to views/layout.html)...
> You buy a _model_ that he built, represented by his house ( {{extend
> layout.html}} ), but then you move in your furniture, add your
> carpets, paint your walls, and invite your friends to dinner at
> _your_ house, to walk on _your_ carpet, and see _your_ pictures on
> _your_ walls.... of the house that has the shape of {{extend
> layout.html}}....
>
> Hope this makes sense. I am sure it is the right (and needed) way to
> go.
>
> - Yarko
>
>
>
> > It does not have to, it can extend any other template, or none at all!
> > The choice is up to the originally called template.
>
> > By {{extends}} the template decides that it will subjugate itself to
> > the object of extension.
>
> > I see we can already do everything that you are thinking out loud ?
> > --
> > Thadeus
>
> > On Thu, May 6, 2010 at 12:06 PM, mdipierro <[email protected]> wrote:
> > > Yarko, I just remind you my attention span is 5 lines top. ;-)
> > > Good that Thadeus seems to be able to read further down.
>
> > > On May 6, 12:02 pm, Yarko Tymciurak <[email protected]>
> > > wrote:
> > >> On May 6, 10:59 am, Thadeus Burgess <[email protected]> wrote:
>
> > >> > Ok. But the purpose of layout.html is to define the "layout". It is
> > >> > effectively the parent who pays for the house and determines what room
> > >> > the child gets.
>
> > >> I think that is the wrong metaphor:
>
> > >> When you are handed the keys (called by main()), it is your house.
> > >> The layout is by the architect / builder (in this case, the app says
> > >> here's my model for a view.... )
>
> > >> You pick the model, and decorate it as you want; even add bedrooms
> > >> etc. - skin it.
>
> > >> I think that is a more appropriate metaphor...
>
> > >> In any case, responsibility is the key anchor here: who is
> > >> responsible for collecting the view (decorating the house, if you
> > >> will) --- who got "called" by main? not layout ---- default/index;
>
> > >> if there were no default/index, main would have asked the "generic
> > >> standin" to take responsibility for generating this view: generic
> > >> (which, as it is in the default app, is given the "architect", the
> > >> helper in this construction, of layout - but _your_ app could pick
> > >> another file name as the builder - get it? you could even change
> > >> builders during construction --- i.e. customize views by extending a
> > >> different file; then enhance / decorate that particular view with
> > >> minor tweaks.
>
> > >> Does this make more sense? The "layout == parent" metaphor I don't
> > >> think is the correct one; the "responsibility lies with who was called
> > >> - they pick the builder (i.e. the {{extends}}) is more to the point.
>
> > >> > I don't think I am quite fully grasping the concept that you have.
> > >> > Could you provide me with a code example of how you would like it to
> > >> > look, and I hope that will give me a better idea of what you are
> > >> > thinking about.
>
> > >> I am certain of this: the metaphors, the structures, and the
> > >> orthogonality of operations and behaviors likely to be needed (what
> > >> should be in the mix)....
>
> > >> I am less clear on the code, because - Thadeus - as you ask questions,
> > >> and I try to answer, I realize issues.
>
> > >> For example, the concepts of $block, �...@block, &block I am fairly
> > >> certain are needed concepts; I am less certain about the notation
> > >> ( $block particularly)...
>
> > >> Given the excellent suggestions you've made in response to my
> > >> "thinking out loud", I would ask you how you would like to write the
> > >> code.
>
> > >> I like (for example) block.super notation.
>
> > >> Have a look at the named tuple library, and see if you were to use
> > >> that (I'm not necessarily suggesting you do - but try it, for the
> > >> suggestion of notations that could be used). If you could actually
> > >> use the notation directly (i.e. from a named.tuple object) of
> > >> block.* to just give back the argument of that {{block.something
> > >> pair}}, how would you name:
>
> > >> - block.super ?
> > >> - block.position (change the address of the block in the tree, not
> > >> it's content)
> > >> - block.contents (override the value of a block, but not it's current
> > >> position in the tree)
> > >> - block.decorate (ammend the value of a block, but only decorate it's
> > >> value; do not change it's current position)
>
> > >> This suggests at least one more useful idiom:
>
> > >> - block.exists (only do the enclosed if the named block exists)
>
> > >> ...i.e. don't decorate something if the user preferences said "I don't
> > >> want to display my calendar"; but if it is there, apply the colors to
> > >> it.
>
> > >> Now that I've written this, I like this notation, the look of it.
> > >> ........
>
> > >> NOW I am starting to see skins, and dynamic ones. It will be up to
> > >> the application programmer to pick the right time to change builders
> > >> to most easily achieve results:
>
> > >> i.e. who will I extend?
>
> > >> and with the easy-css layout style content way of gross positioning of
> > >> major page pieces, how will I extend?
>
> > >> and with this: how will I "paint my house" ---- i.e., you will not
> > >> want to do too much in trying to layout the page from within, say, an
> > >> index file ---- but with this, you will have all the control you need
> > >> to go as far as you think is useful for you dynamically, before it
> > >> would just be simpler to change your extend file.
>
> > >> I like this.
>
> > >> But I also think it is experimental - and once we have a prototype
> > >> that will render something, we will need to gain some experience -
> > >> play around with it (obviously, I will want to - I am very interested
> > >> to see how this will affect ability of an app to apply skinning... but
> > >> I'll look at basics, and stuff under the covers; others will need to
> > >> play / try too).
>
> > >> - Yarko
>
> > >> > --
> > >> > Thadeus
>
> > >> > On Thu, May 6, 2010 at 2:45 AM, Yarko Tymciurak
>
> > >> > <[email protected]> wrote:
> > >> > > Location-only modification:
> > >> > > -1- {{&block name}} (reminsicent of C's "address of", to suggest
> > >> > > "this location ....
> > >> > > This block would insert it's location in the emit tree; it would
> > >> > > not alter the token's value
> > >> > > It would probably make sense to not have an {{end}} for this
> > >> > > occurrence.
> > >> > > Let's call having an {{end}} fore this an error!
>
> > >> > > Value-only modification:
> > >> > > -2- {{$block name}} (reminiscent of shell notation to emit value)
> > >> > > This block would alter the token for this block, but would not
> > >> > > alter the token's position on the emit tree.
> > >> > > This block would require and {{end}}
>
> > >> > > I have to think about this one, but think it is needed...
> > >> > > -3- �...@block name}} - this is the last uncovered case (reminiscent
> > >> > > of
> > >> > > pythons wrapper notation)
> > >> > > This block would alter the value of the token for this block,
> > >> > > but would not alter the token's position on the emit tree.
> > >> > > While syntactically not required, stylistically, this token
> > >> > > belongs inside the {{extend}} block