diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2021-07-27 09:11:23 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2021-07-27 15:40:27 +0900 |
commit | 0754cc4888bf96c77504c385d7aab0068202aa8f (patch) | |
tree | 1a2cae956d33733ca521a96db75677bf1a7b8722 /defs | |
parent | 13f8521c630a15c87398dee0763e95f59c032a94 (diff) |
Added intern_ids.rb
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/4684
Diffstat (limited to 'defs')
-rw-r--r-- | defs/id.def | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/defs/id.def b/defs/id.def index fc7a04ffbc..cf359c12b1 100644 --- a/defs/id.def +++ b/defs/id.def @@ -138,6 +138,21 @@ class KeywordError < RuntimeError end end +def id2varname(token, prefix = nil) + if /#/ =~ token + token = "_#{token.gsub(/\W+/, '_')}" + else + token = token.sub(/\?/, 'P') + token = prefix + token if prefix + token.sub!(/\A[a-z]/) {$&.upcase} + token.sub!(/\A\$/, "_G_") + token.sub!(/\A@@/, "_C_") + token.sub!(/\A@/, "_I_") + token.gsub!(/\W+/, "") + end + token +end + predefined_ids = {} preserved_ids = [] local_ids = [] @@ -153,16 +168,7 @@ predefined.split(/^/).each_with_index do |line, num| line.sub!(/\s+#.*/, '') name, token = line.split next unless name - token ||= name - if /#/ =~ token - token = "_#{token.gsub(/\W+/, '_')}" - else - token = token.sub(/\?/, 'P').sub(/\A[a-z]/) {$&.upcase} - token.sub!(/\A\$/, "_G_") - token.sub!(/\A@@/, "_C_") - token.sub!(/\A@/, "_I_") - token.gsub!(/\W+/, "") - end + token = id2varname(token || name) if name == '-' preserved_ids << token next |