These are previous ToDo_ and Wishlist items that have been implemented. ------------ InheritanceNonintuitive_ ------------ *One-line #def syntax* I'd like to be able to write:: #def title = 'a title of some sort' Or even:: #def title = $htTitle #attr provides this syntax, but is semantically different from #def. -- IanBicking_ - 07 Nov 2001 #attr provides this already. If it doesn't suit your needs use #settings. #def is for defining methods, period. -- TavisRudd_ - 07 Nov 2001 ``#def title = $htTitle`` *is* a method. You couldn't meaningfully do that with #attr. I'm not proposing that #def should create anything other than methods. But there's nothing (except the current syntax) stopping it from creating one-line methods. Specifically, I find this awkward:: #def title A title#slurp #end def When compared to this:: #def title = 'A title' -- IanBicking_ - 07 Nov 2001 If the body is a constant, you don't lost anything with #attr because the $placeholder will be identical anyway thanks to autocalling. If the body contains $placeholders and/or #directives, I think it _should_ be multi-line to reinforce this fact, and it shouldn't be on the right side of an equal sign. -- MikeOrr_ - 08 Nov 2001 Yes, you do lose something -- methods are semantically different from attributes. I expect to use these interfaces outside of Cheetah, where I don't have autocalling. I'd rather have everything be a #def, because that gives me a consistent interface. -- IanBicking_ - 09 Nov 2001 OK. I agree now. Let's add it before 1.0. -- TavisRudd_ - 07 Dec 2001 It was added to Cheetah 0.9.9. The syntax and semantics are different: see the User's Guide. The separator is a colon (:), and the right side is Cheetah syntax (like in a multi-line #def), not an expression. The change was also implemented in #block. -- MikeOrr_ - 16 Dec 2001