diff options
Diffstat (limited to 'template/encdb.h.tmpl')
-rw-r--r-- | template/encdb.h.tmpl | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/template/encdb.h.tmpl b/template/encdb.h.tmpl index 9de29bebde..06afb5dbe1 100644 --- a/template/encdb.h.tmpl +++ b/template/encdb.h.tmpl @@ -40,20 +40,28 @@ encdirs.each do |encdir| files[fn] = true open(File.join(encdir,fn)) do |f| name = nil + skip_ifndef_ruby = false + encoding_def = false f.each_line do |line| - if (/^#ifndef RUBY/ =~ line)..(/^#endif/ =~ line) - elsif (/^OnigEncodingDefine/ =~ line)..(/"(.*?)"/ =~ line) - if $1 - if name - lines << %[ENC_SET_BASE("#$1", "#{name}");] - else - name = $1 - end - check_duplication(defs, $1, fn, $.) - next if BUILTIN_ENCODINGS[name] - encodings << $1 - count += 1 + case line + when /^#ifndef RUBY/ + skip_ifndef_ruby = true + when /^#endif/ + skip_ifndef_ruby = false + end + next if skip_ifndef_ruby + encoding_def = true if /^OnigEncodingDefine/ =~ line + if encoding_def && /"(.*?)"/ =~ line + encoding_def = false + if name + lines << %[ENC_SET_BASE("#$1", "#{name}");] + else + name = $1 end + check_duplication(defs, $1, fn, $.) + next if BUILTIN_ENCODINGS[name] + encodings << $1 + count += 1 else case line when /^\s*rb_enc_register\(\s*"([^"]+)"/ |