From: shyouhei@... Date: 2014-02-14T09:37:32+00:00 Subject: [ruby-core:60727] [ruby-trunk - Feature #7309] [Rejected] HEREDOC end of line or similar Issue #7309 has been updated by Shyouhei Urabe. Status changed from Assigned to Rejected "def increase(~str)" is technically impossible so please let me reject this. However I think "<<<" can be possible. If you still need that, please open another ticket for that part. ---------------------------------------- Feature #7309: HEREDOC end of line or similar https://bugs.ruby-lang.org/issues/7309#change-45149 * Author: Juergen Mangler * Status: Rejected * Priority: Normal * Assignee: Yukihiro Matsumoto * Category: * Target version: next minor ---------------------------------------- example: writing a dsl that expresses some facts increase "coding" experience one level until 'next summer' This can right now be done in different ways * make the whole thing a string and parse it * increase.experience('coding').one_level.until('next summer') * increase "'coding' experience one level until 'next summer'" Another nice alternative would be a heredoc type that operates to the end of the line (i couldn't find existing implementations for perl and ruby) Example1: increase <<* "coding" experience one level until "next summer" Example2: increase <<< "coding" experience one level until "next summer" def increase(str) # the rest of the line is passed as a string Although it looks not very elegant for a DSL it would to the job. of course something more unobtrusive would be better, but i don't know how difficult this would be for the parser. e.g.: def increase(~str); end * When a method has ~ attribute it could automatically read the rest of the line as string when invoked (or when used with method call brackets to the closing bracket). Invoke like: increase "coding" experience one level until "next summer" OR increase("coding" experience one level until "next summer") * ~ attributes always as last attribute: def increase(a,b,~str); end ** Invoke like: increase "val1", "val2", the rest is a string ** In this case the rest str should have a leading " " ------- Summary: First possibility (heredoc like) would allow for neat(er) looking dsl's. The second possibility (~attributes, not sure if this is doable) would allow for a VERY neat looking DSL's. Both for sure also would increase the interest in string parsing ;-) -- http://bugs.ruby-lang.org/