view mpsplit.rb @ 8:3db7524d3dea

Add default images
author HIROSE Yuuji <yuuji@gentei.org>
date Mon, 20 Jul 2015 11:30:39 +0900
parents b8a890828283
children 3565d93c2fb1
line wrap: on
line source

#!/usr/bin/env ruby21
# coding: binary
require 'nkf'
Encoding.default_external = Encoding::BINARY
Encoding.default_internal = Encoding::BINARY

boundary="--"+ARGV[0] # +"\r\n"
tmpdir=(ARGV[1] || "tmp").dup
tmpdir.untaint
test(?d, tmpdir) or Dir.mkdir(tmpdir)
stream=STDIN.readlines.join
stream.split(boundary)[1..-2].each do |x|
  header = x.sub(/\r\n\r\n.*/, "")
  name = header.scan(/\bname=([\"']?)(.*?)\1/)[0][1]
  body = x.sub(/.*?\r\n\r\n/m, "").sub(/\r\n$/, "")
STDERR.printf("body[%s]=[%s]\n", name, body.length)
  if /filename=(['\"]?)(.*?)\1/ =~ header && $2 > ""
    fn = $2
    fn.untaint if File.dirname(fn)=="."
    open(File.expand_path(fn, tmpdir).untaint, "w") do |out|
      out.write body
    end
    printf("%s:filename=%s\n", name, fn)
  elsif /name=(['\"]?)(.*?)\1/ =~ header
    v=$2
    out=NKF::nkf("-w -MQ", body).gsub(/([^=])\n/, "\\1=0a").gsub(/=\n/, "")
    printf("%s=%s\n", v, out)
  end
end

yatex.org