summaryrefslogtreecommitdiff
path: root/defs
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2021-07-27 09:11:23 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2021-07-27 15:40:27 +0900
commit0754cc4888bf96c77504c385d7aab0068202aa8f (patch)
tree1a2cae956d33733ca521a96db75677bf1a7b8722 /defs
parent13f8521c630a15c87398dee0763e95f59c032a94 (diff)
Added intern_ids.rb
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/4684
Diffstat (limited to 'defs')
-rw-r--r--defs/id.def26
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