mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
enc-unicode.rb: ifdef blocks
* tool/enc-unicode.rb (Unifdef#ifdef): enclose conditional blocks in blocks. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58066 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
8083a359d0
commit
d77214e8a3
1 changed files with 73 additions and 65 deletions
|
@ -336,23 +336,30 @@ class Unifdef
|
||||||
def ifdef(sym)
|
def ifdef(sym)
|
||||||
if @kwdonly
|
if @kwdonly
|
||||||
@stdout.puts "#ifdef #{sym}"
|
@stdout.puts "#ifdef #{sym}"
|
||||||
return
|
else
|
||||||
end
|
|
||||||
@stack << @top
|
@stack << @top
|
||||||
@top << tmp = [sym]
|
@top << tmp = [sym]
|
||||||
@top = tmp
|
@top = tmp
|
||||||
end
|
end
|
||||||
|
if block_given?
|
||||||
|
begin
|
||||||
|
return yield
|
||||||
|
ensure
|
||||||
|
endif(sym)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
def endif(sym)
|
def endif(sym)
|
||||||
if @kwdonly
|
if @kwdonly
|
||||||
@stdout.puts "#endif /* #{sym} */"
|
@stdout.puts "#endif /* #{sym} */"
|
||||||
return
|
else
|
||||||
end
|
|
||||||
unless sym == @top[0]
|
unless sym == @top[0]
|
||||||
restore
|
restore
|
||||||
raise ArgumentError, "#{sym} unmatch to #{@top[0]}"
|
raise ArgumentError, "#{sym} unmatch to #{@top[0]}"
|
||||||
end
|
end
|
||||||
@top = @stack.pop
|
@top = @stack.pop
|
||||||
end
|
end
|
||||||
|
end
|
||||||
def show(dest, *syms)
|
def show(dest, *syms)
|
||||||
_show(dest, @output, syms)
|
_show(dest, @output, syms)
|
||||||
end
|
end
|
||||||
|
@ -390,6 +397,7 @@ props, data = parse_unicode_data(get_file('UnicodeData.txt'))
|
||||||
categories = {}
|
categories = {}
|
||||||
props.concat parse_scripts(data, categories)
|
props.concat parse_scripts(data, categories)
|
||||||
aliases = parse_aliases(data)
|
aliases = parse_aliases(data)
|
||||||
|
ages = blocks = graphemeBreaks = nil
|
||||||
define_posix_props(data)
|
define_posix_props(data)
|
||||||
POSIX_NAMES.each do |name|
|
POSIX_NAMES.each do |name|
|
||||||
if name == 'XPosixPunct'
|
if name == 'XPosixPunct'
|
||||||
|
@ -400,7 +408,7 @@ POSIX_NAMES.each do |name|
|
||||||
make_const(name, data[name], "[[:#{name}:]]")
|
make_const(name, data[name], "[[:#{name}:]]")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
output.ifdef :USE_UNICODE_PROPERTIES
|
output.ifdef :USE_UNICODE_PROPERTIES do
|
||||||
props.each do |name|
|
props.each do |name|
|
||||||
category = categories[name] ||
|
category = categories[name] ||
|
||||||
case name.size
|
case name.size
|
||||||
|
@ -410,25 +418,25 @@ props.each do |name|
|
||||||
end
|
end
|
||||||
make_const(name, data[name], category)
|
make_const(name, data[name], category)
|
||||||
end
|
end
|
||||||
output.ifdef :USE_UNICODE_AGE_PROPERTIES
|
output.ifdef :USE_UNICODE_AGE_PROPERTIES do
|
||||||
ages = parse_age(data)
|
ages = parse_age(data)
|
||||||
output.endif :USE_UNICODE_AGE_PROPERTIES
|
end
|
||||||
graphemeBreaks = parse_GraphemeBreakProperty(data)
|
graphemeBreaks = parse_GraphemeBreakProperty(data)
|
||||||
blocks = parse_block(data)
|
blocks = parse_block(data)
|
||||||
output.endif :USE_UNICODE_PROPERTIES
|
end
|
||||||
puts(<<'__HEREDOC')
|
puts(<<'__HEREDOC')
|
||||||
|
|
||||||
static const OnigCodePoint* const CodeRanges[] = {
|
static const OnigCodePoint* const CodeRanges[] = {
|
||||||
__HEREDOC
|
__HEREDOC
|
||||||
POSIX_NAMES.each{|name|puts" CR_#{name},"}
|
POSIX_NAMES.each{|name|puts" CR_#{name},"}
|
||||||
output.ifdef :USE_UNICODE_PROPERTIES
|
output.ifdef :USE_UNICODE_PROPERTIES do
|
||||||
props.each{|name| puts" CR_#{name},"}
|
props.each{|name| puts" CR_#{name},"}
|
||||||
output.ifdef :USE_UNICODE_AGE_PROPERTIES
|
output.ifdef :USE_UNICODE_AGE_PROPERTIES do
|
||||||
ages.each{|name| puts" CR_#{constantize_agename(name)},"}
|
ages.each{|name| puts" CR_#{constantize_agename(name)},"}
|
||||||
output.endif :USE_UNICODE_AGE_PROPERTIES
|
end
|
||||||
graphemeBreaks.each{|name| puts" CR_#{constantize_Grapheme_Cluster_Break(name)},"}
|
graphemeBreaks.each{|name| puts" CR_#{constantize_Grapheme_Cluster_Break(name)},"}
|
||||||
blocks.each{|name|puts" CR_#{name},"}
|
blocks.each{|name|puts" CR_#{name},"}
|
||||||
output.endif :USE_UNICODE_PROPERTIES
|
end
|
||||||
|
|
||||||
puts(<<'__HEREDOC')
|
puts(<<'__HEREDOC')
|
||||||
};
|
};
|
||||||
|
@ -453,7 +461,7 @@ POSIX_NAMES.each do |name|
|
||||||
name_to_index[name] = i
|
name_to_index[name] = i
|
||||||
puts"%-40s %3d" % [name + ',', i]
|
puts"%-40s %3d" % [name + ',', i]
|
||||||
end
|
end
|
||||||
output.ifdef :USE_UNICODE_PROPERTIES
|
output.ifdef :USE_UNICODE_PROPERTIES do
|
||||||
props.each do |name|
|
props.each do |name|
|
||||||
i += 1
|
i += 1
|
||||||
name = normalize_propname(name)
|
name = normalize_propname(name)
|
||||||
|
@ -465,14 +473,14 @@ aliases.each_pair do |k, v|
|
||||||
next unless v = name_to_index[v]
|
next unless v = name_to_index[v]
|
||||||
puts "%-40s %3d" % [k + ',', v]
|
puts "%-40s %3d" % [k + ',', v]
|
||||||
end
|
end
|
||||||
output.ifdef :USE_UNICODE_AGE_PROPERTIES
|
output.ifdef :USE_UNICODE_AGE_PROPERTIES do
|
||||||
ages.each do |name|
|
ages.each do |name|
|
||||||
i += 1
|
i += 1
|
||||||
name = "age=#{name}"
|
name = "age=#{name}"
|
||||||
name_to_index[name] = i
|
name_to_index[name] = i
|
||||||
puts "%-40s %3d" % [name + ',', i]
|
puts "%-40s %3d" % [name + ',', i]
|
||||||
end
|
end
|
||||||
output.endif :USE_UNICODE_AGE_PROPERTIES
|
end
|
||||||
graphemeBreaks.each do |name|
|
graphemeBreaks.each do |name|
|
||||||
i += 1
|
i += 1
|
||||||
name = "graphemeclusterbreak=#{name.delete('_').downcase}"
|
name = "graphemeclusterbreak=#{name.delete('_').downcase}"
|
||||||
|
@ -485,7 +493,7 @@ blocks.each do |name|
|
||||||
name_to_index[name] = i
|
name_to_index[name] = i
|
||||||
puts "%-40s %3d" % [name + ',', i]
|
puts "%-40s %3d" % [name + ',', i]
|
||||||
end
|
end
|
||||||
output.endif :USE_UNICODE_PROPERTIES
|
end
|
||||||
puts(<<'__HEREDOC')
|
puts(<<'__HEREDOC')
|
||||||
%%
|
%%
|
||||||
static int
|
static int
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue