数字展開

作成理由

  • 5ch秀丸スレで連番を展開できないかって話題が出たので作ってみる。

使い方

  • rubyをインストールして利用して下さい。
  • ruby 2.6.5p114 にて動作確認してます。
  • ……[1-10].htmlをのようなのを ……1.html,……2.html,……,……10.htmlのような形で展開します。
//数字展開.mac

disabledraw;begingroupundo;
if(!selecting)selectall;
cut;
openfile "/h";paste;
saveas currentmacrodirectory+"\\tmp1.txt";
#h=hidemaruhandle(0);
setactivehidemaru 1;
closehidemaruforced #h;
runsync2 "rubyw -x "+currentmacrofilename;
insertfile "tmp2.txt";
enabledraw;endgroupundo;endmacro;

/*
#/
#! ruby

$stdout=open("tmp.txt","w")
$stderr=open("tmp_err.txt","w")

t1=open("tmp1.txt").read
t2=open("tmp2.txt","w")
t1=t1.gsub(%r|(.*)\[(\d+)-(\d+)\](.*)|){|s|
  s1=$1;d1=$2.to_i;d2=$3.to_i;s2=$4;s3=""
  if d1<d2
    (d1..d2).each{|e| s3+=s1+e.to_s+s2+"\n"}
    s=s3
  end
  s}
t2.print t1
__END__
*/


追記(2023.05.13)

いまいち使いづらかったので魔改造を施す

  • 範囲の指示を「-」をやめて「..」にする(ruby っぽく)
  • 範囲の指示がおかしい場合は無変換
  • 数字だけじゃなく文字列にも対応
  • クリップボードを汚さない(使わない)
//数字展開.mac

disabledraw;begingroupundo;
if(!selecting)selectline 1;
$s=getselectedtext();delete;
openfile "/h";insert $s;
saveas directory+"\\tmp1.txt";
#h=hidemaruhandle(0);
setactivehidemaru 1;
closehidemaruforced #h;
runsync2 "rubyw -x "+currentmacrofilename;
insertfile "tmp2.txt";
enabledraw;endgroupundo;endmacro;

/*
#/
#! ruby
# encoding: utf-8
Encoding.default_external = 'UTF-8'

$stdout=open("tmp.txt","w")
$stderr=open("tmp_err.txt","w")

t1=open("tmp1.txt").read.chomp
t2=open("tmp2.txt","w")
s=""
a=t1.split("..")
(a[0]..a[1]).map{|e|s+=e+"\n"}
s=t1+"\n" if s==""
t2.print s
__END__
*/

コメント