[#70843] Re: [ruby-cvs:58952] hsbt:r51801 (trunk): * lib/rubygems: Update to RubyGems HEAD(fe61e4c112). — Eric Wong <normalperson@...>
hsbt@ruby-lang.org wrote:
3 messages
2015/09/17
[ruby-core:70842] [Ruby trunk - Feature #11529] extensible % literal declarations
From:
mame@...
Date:
2015-09-17 17:57:26 UTC
List:
ruby-core #70842
Issue #11529 has been updated by Yusuke Endoh.
I like the idea. Though, I guess it will be hard to agree with the definition syntax and precise semantics.
> and the extension code would be something like
> def %hash(s)
> return ...
> end
It conflicts with an existing definition syntax of method named `%`.
> - the quoting chars should be deprecated (try this: `%Q%%%%`)
Try this: `%Q%%%%%%`
This is one of the cutest parts of Ruby syntax that I love.
p %%%
p %%\%\%%
p %%%%%%%
puts %%:%+%%-\%s%%%%)%
See also: https://github.com/tric/trick2013/blob/master/yoshi-taka/entry.rb
Anyway. This suggestion is a completely different topic than the first idea (extensible %). We should discuss it in another thread, if really needed.
--
Yusuke Endoh <mame@ruby-lang.org>
----------------------------------------
Feature #11529: extensible % literal declarations
https://bugs.ruby-lang.org/issues/11529#change-54217
* Author: Eike Dierks
* Status: Feedback
* Priority: Normal
* Assignee:
----------------------------------------
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 => "foo"`
but this is no longer true: `%sqfooq => SyntaxError: (eval):2: unknown type of %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%%%%`)
- 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
--
https://bugs.ruby-lang.org/