Feature #11529
Updated by nobu (Nobuyoshi Nakada) about 10 years ago
The ruby syntax provides for declaring literals by using the % escapes: 
 - %q(foo) => 'foo' 
 - %Q(foo) => "foo" 
 - %w(foo bar) => ['foo', 'bar'] 
 - %i(foo bar) => [:foo, :bar] 
 It should be possible to define new % escapes. 
 *Use cases:* 
 I currently use: 
     %q{select foo from bar} 
 to quote my sql statements. 
 It would improve readability to spell that: 
     %sql{select foo from bar} 
 (with %sql being an alias of %q [see parsing problems below]) 
 But there could be more interesting uses: 
     %hash[ 
        a 1 
        b 2] 
     %triples[ 
         a b c 
         1 2 3] 
     %json/{"foo":"bar", "zip":"zap"}/ 
     %octal_data[012 345 677] 
 and the extension code would be something like 
     def %hash(s) 
         return ... 
     end 
 Notes: 
 - I did expect this to be a problem. But it's not. 
 - in my faint memory, old ruby versions were rumoured to parse `%sqfooq %sqfooq => "foo"` "foo" 
    but this is no longer true:    `%sqfooq %sqfooq => SyntaxError: (eval):2: unknown type of %string` %string 
 - the characters used for enclosing should be clearly defined 
 - we have two classes: 
   - 
 -- paired chars like `() () [] {} <>` 
   - <> 
 -- quoting chars like `' ' " / @ _ # $ %` % 
 My Suggestion: 
 
 - the quoting chars should be deprecated (try this:    `%Q%%%%`) %Q%%%%) 
 - the set of    paired chars should be extended to include selected pairs from unicode math symbols 
   - unicode does not yet define a plane for open-close-brackets 
    - see http://stackoverflow.com/questions/13535172/list-of-all-unicodes-open-close-brackets