Sha256: 0178d97492b5e3af50aaf7471a7ba4bfd052188474f1f7e7af2ff4f93bd82515

Contents?: true

Size: 1.34 KB

Versions: 8

Compression:

Stored size: 1.34 KB

Contents

#! /usr/bin/ruby
require 'rbconfig'
require 'optparse'

# http://www.ctan.org/get/macros/texinfo/texinfo/gnulib/lib/config.charset
# Tue, 25 Dec 2007 00:00:00 GMT

HEADER = <<SRC
require 'iconv.so'

class Iconv < Data
  case RUBY_PLATFORM
SRC

def charset_alias(config_charset, mapfile = nil)
  found = nil
  src = [HEADER]
  open(config_charset) do |input|
    input.find {|line| /^case "\$os" in/ =~ line} or return
    input.each do |line|
      case line
      when /^\s*([-\w\*]+(?:\s*\|\s*[-\w\*]+)*)(?=\))/
        (s = "  when ") << $&.split('|').collect {|targ|
          targ.strip!
          tail = targ.chomp!("*") ? '' : '\z'
          head = targ.slice!(/\A\*/) ? '' : '\A'
          targ.gsub!(/\*/, '.*')
          "/#{head}#{targ}#{tail}/"
        }.join(", ")
        src << s
        found = {}
      when /^\s*echo "(?:\$\w+\.)?([-\w*]+)\s+([-\w]+)"/
        sys, can = $1, $2
        can.downcase!
        unless found[can] or (/\Aen_(?!US\z)/ =~ sys && /\ACP437\z/i =~ can)
          found[can] = true
          src << "    charset_map['#{can}'] = '#{sys}'.freeze"
        end
      when /^\s*;;/
        found = nil
      end
    end
  end
  src << "  end" << "end"
  if mapfile
    open(mapfile, "wb") {|f| f.puts(*src)}
  else
    puts(*src)
  end
end

(1..2) === ARGV.size or abort "usage: #{$0} config_charset [mapfile]"
charset_alias(*ARGV)

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
iconv-1.1.0 ext/iconv/mkwrapper.rb
iconv-1.0.8 ext/iconv/mkwrapper.rb
iconv-1.0.7 ext/iconv/mkwrapper.rb
iconv-1.0.6 ext/iconv/mkwrapper.rb
iconv-1.0.5 ext/iconv/mkwrapper.rb
iconv-1.0.4 ext/iconv/mkwrapper.rb
iconv-1.0.3 ext/iconv/mkwrapper.rb
iconv-1.0.2 ext/iconv/mkwrapper.rb