Skip to content

Instantly share code, notes, and snippets.

@2nd-player
Created February 5, 2019 10:36
Show Gist options
  • Save 2nd-player/8b3ea436bb54b95adb12f618f9abb613 to your computer and use it in GitHub Desktop.
Save 2nd-player/8b3ea436bb54b95adb12f618f9abb613 to your computer and use it in GitHub Desktop.
#!/usr/local/bin/vim -S
"(C) 2nd-player
" this script is licensed under CC BY-NC-SA 2.1 JP
" https://creativecommons.org/licenses/by-nc-sa/2.1/jp/
"180902 auto bolder
"180902 illus
let s:dexfile = getcwd()."/data/dex-jedf.txt"
function! Cardmkr()
let s:keepmouse = &mouse
set mouse=""
if !exists("s:expold")
let s:expold = ""
endif
let s:exp = input("パック = ", s:expold)
let s:tmpary = split(s:exp)
let s:exp = s:tmpary[0]
if !strlen(s:exp)
let &mouse=s:keepmouse
return
endif
let s:titlesuf = s:exp
if len(s:tmpary) > 1 && strlen(s:tmpary[1])
let s:titlesuf .= "_".s:tmpary[1]
endif
if s:exp != s:expold
"load exp data
if !filereadable("exp/".s:exp.".txt")
let &mouse=s:keepmouse
return
endif
exe "view exp/".s:exp.".txt"
let s:fullname = split(getline(search('商品記事名\s*=')),'=\s*',2)[1]
let s:ser = split(getline(search('シリーズ\s*=')),'=\s*',2)[1]
let s:cnmax = split(getline(search('総数\s*=')),'=\s*',2)[1]
let s:cat = split(getline(search('カテゴリ\s*=')),'=\s*',2)[1]
let s:enexp = split(getline(search('en\s*=')),'=\s*',2)[1]
let s:deexp = split(getline(search('de\s*=')),'=\s*',2)[1]
let s:tmp=""
"let s:tmp = search('総数\s*=')
"if (s:tmp)
" let s:cnmax = split(getline(s:tmp),'=\s*',2)[1]
"endif
let s:frar = search("レアリティ")"
let s:expold = s:exp
endif
echo s:fullname
let s:cardname = input("カード名 = ")
if !strlen(s:cardname)
let &mouse=s:keepmouse
return
endif
let s:tmpary = split(s:cardname)
let s:cardname = s:tmpary[0]
if len(s:tmpary) > 1
let s:titlesuf .= "_".s:tmpary[1]
endif
let s:cardname = substitute(s:cardname, '[PP][RR]$', '◇', "")
let s:pkmn = s:cardname
let s:pkmn2 = ""
let s:pre=""
let s:suf=""
let s:evo=""
let s:tagteam=""
if strpart(s:pkmn, 0, 1) == "M"
let s:pre = "M"
let s:evo = "M進化"
let s:pkmn = strpart(s:pkmn, 1)
elseif strcharpart(s:pkmn, 0, 4) == "アローラ"
let s:pre = "アローラ"
let s:pkmn = strcharpart(s:pkmn, 4)
elseif strcharpart(s:pkmn, 0, 3) == "ひかる"
let s:pre = "ひかる"
let s:pkmn = strcharpart(s:pkmn, 3)
endif
if strridx(s:pkmn, "◇") == strlen(s:pkmn)-3
"FIXME
" '◇' is three byted char
let s:suf = "◇"
let s:pkmn = strcharpart(s:pkmn, 0, strchars(s:pkmn)- 1)
elseif strridx(s:pkmn,"GX") == strlen(s:pkmn)-2
let s:suf = "GX"
let s:pkmn = strpart(s:pkmn, 0, strlen(s:pkmn)-2)
elseif strridx(s:pkmn,"EX") == strlen(s:pkmn)-2
let s:suf = "EX"
let s:pkmn = strpart(s:pkmn, 0, strlen(s:pkmn)-2)
elseif strridx(s:pkmn,"BREAK") == strlen(s:pkmn)-5
let s:suf = "BREAK"
let s:evo = "BREAK進化"
let s:pkmn = strpart(s:pkmn, 0, strlen(s:pkmn)-5)
endif
if stridx(s:pkmn,"&") > 0
let s:pkmn2 = strpart(s:pkmn, stridx(s:pkmn, '&')+1)
let s:pkmn = strpart(s:pkmn, 0, stridx(s:pkmn, '&'))
let s:tagteam = 1
endif
let s:dexent = system("grep '\|".s:pkmn."\|' data/dex-jedf.txt")
if !strlen(s:dexent)
let s:pkmn = input("ポケモン名 = ")
let s:dexent = system("grep '\|".s:pkmn."\|' data/dex-jedf.txt")
if !strlen(s:dexent)
let &mouse=s:keepmouse
echohl WarningMsg | "no valid pokemon specified."
return
endif
if stridx(s:cardname,s:pkmn) > strlen(s:pre)
let s:pre = strpart(s:cardname, 0, stridx(s:cardname,s:pkmn) )
endif
if strlen(s:pre)+strlen(s:pkmn)+strlen(s:suf) < strlen(s:cardname)
let s:suf = strpart(s:cardname, stridx(s:cardname, s:pkmn)+strlen(s:pkmn))
endif
endif
let s:dexenta = split(s:dexent, '|')
let s:dexnum = s:dexenta[0]
let s:enpkmn = s:dexenta[2]
let s:depkmn = s:dexenta[3]
let s:zhpkmn = s:dexenta[5]
let s:dexnum = printf("%03d",s:dexnum)
"open targetfile
exe "e new/".s:cardname."_(".s:titlesuf.").txt"
"ensure our canvas is blank
%d
setl fenc=utf8
call setline(1, ["{{ポケモンのカード", "| ナンバー = ".s:dexnum, "| ポケモン名 = ".s:pkmn])
if strlen(s:pkmn2)
call append("$", "| ポケモン名2 = ".s:pkmn2)
endif
if strlen(s:pre)
call append("$", "| 名前の前 = ".s:pre)
endif
if strlen(s:suf)
call append("$", "| 名前の後 = ".s:suf)
endif
if strlen(s:evo)
call append("$", "| 種類 = ".s:evo)
elseif s:suf != "EX"
let s:evo = tr(input("種類 = "),"12","12")
if s:evo =~ "1"
let s:evo = "1進化"
elseif s:evo =~ "2"
let s:evo = "2進化"
elseif s:evo =~ "復"
let s:evo = "復元"
endif
if strlen(s:evo)
call append("$", "| 種類 = ".s:evo)
if s:evo != "復元"
let s:evo = system("head -n".s:dexnum." data/dex-jedf.txt|tail -n1")
let s:evo = split(s:evo, '|', 3)[1]
echo "\r<!--#default =" s:evo "-->\n"
else
let s:evo=""
endif
let s:evo = input("進化前 = ", s:evo)
call append("$", "| 進化前 = ".s:evo)
if strcharpart(s:evo, 0, 4) == "アローラ"
let s:evo = strcharpart(s:evo, 4)
call append("$", "| 進化前ポケモン名 = ".s:evo)
endif
endif
endif
let s:tmp=0
while !s:tmp
let s:tmp = tr(input("HP = "),"1234567890","1234567890")
endw
call append("$", "| HP = ".s:tmp)
let s:tmp = input("\r色 = ")
if s:tmp =~ '無'
let s:tmp = '無色'
elseif s:tmp =~ '竜\|龍'
let s:tmp = 'ドラゴン'
elseif s:tmp =~ '妖'
let s:tmp = 'フェアリー'
endif
call append("$", "| 色 = ".s:tmp)
let s:tmp = input("\r特性 = ")
if strlen(s:tmp)
call append("$", "| 特性 = ".s:tmp)
call append("$", "| 特性説明 = ".input("\r特性説明 = "))
call s:autobold()
endif"ability
let s:m = 1
while 1
let s:tmp = input("\rワザ".s:m." = ")
if !strlen(s:tmp)
break
endif
call append("$", "| ワザ".s:m." = ".s:tmp)
let s:tmp = input("\rワザ".s:m."エネルギー = ")
if !strlen(s:tmp)
let s:tmp = " "
endif
call append("$", "| ワザ".s:m."エネルギー = ".s:tmp)
let s:tmp = input("\rワザ".s:m."ダメージ = ")
if !strlen(s:tmp)
let s:tmp = " "
endif
call append("$", "| ワザ".s:m."ダメージ = ".s:tmp)
let s:tmp = input("\rワザ".s:m."説明 = ")
if !strlen(s:tmp)
let s:tmp = " "
endif
call append("$", "| ワザ".s:m."説明 = ".s:tmp)
call s:autobold()
let s:m += 1
endw"moves
if s:suf == "GX"
let s:tmp = input("\rGXワザ = ")
call append("$", "| GXワザ = ".s:tmp)
let s:tmp = input("\rGXワザエネルギー = ")
if !strlen(s:tmp)
let s:tmp = " "
endif
call append("$", "| GXワザエネルギー = ".s:tmp)
let s:tmp = input("\rGXワザダメージ = ")
if !strlen(s:tmp)
let s:tmp = " "
endif
call append("$", "| GXワザダメージ = ".s:tmp)
let s:tmp = input("\rGXワザ説明 = ")
if !strlen(s:tmp)
let s:tmp = " "
endif
call append("$", "| GXワザ説明 = ".s:tmp)
call s:autobold()
endif"GX
if s:tmp != "BREAK"
let s:tmp = tr(input("\rにげるコスト = "),"1234567890","1234567890")
if s:tmp <=0
let s:tmp = 0
endif
call append("$", "| にげるコスト = ".s:tmp)
let s:tmp = input("\r弱点 = ")
if strlen(s:tmp)
if s:tmp !~ "×\|+"
let s:tmp .= "×2"
endif
call append("$", "| 弱点 = ".s:tmp)
endif"weakness
let s:tmp = input("\r抵抗力 = ")
if strlen(s:tmp)
if s:tmp !~ "÷\|-"
let s:tmp .= "-20"
endif
call append("$", "| 抵抗力 = ".s:tmp)
endif"resistance
else
call append("$", "| にげるコスト = 0")
endif
call append("$", "| イラスト担当 = ".input("\rイラスト担当 = "))
call s:autoillus()
call append("$", "| シリーズ = ".s:ser)
if s:frar
call append("$", "| レアリティ = ".input("\rレアリティ = "))
endif
echo "\r<!--XXX/".s:cnmax."-->\n"
let s:cn = input("コレクションナンバー = ")
call append("$", "| コレクションナンバー = ".s:cn."/".s:cnmax)
if s:cnmax == "SM-P"
let s:tmp = "ポケモンのカード、[[プロモーションカード]]。"
else
let s:tmp = "[[".s:fullname."]]に収録されているポケモンのカード。"
endif
call append("$", ["}}", "'''".s:cardname."'''は".s:tmp])
if !strlen(s:suf) && s:suf != "◇"
call append("$", "== 解説文 ==")
echo "\r== 解説文 =="
call append("$", input(''))
endif"flavor
if s:cnmax == "SM-P"
call append("$", "== 備考 ==")
echo "\r== 備考 =="
call append("$", substitute(input('*'), "^\**", "*", ""))
endif
let s:suf = substitute(s:suf, "BREAK", "-TURBO",'')
let s:suf = substitute(s:suf, "◇", " ◇",'')
let s:suf = substitute(s:suf, "EX", "-EX",'')
let s:suf = substitute(s:suf, "GX", "-GX",'')
let s:pre = substitute(s:pre, "^M", "M-",'')
let s:pre = substitute(s:pre, "^アローラ", "Alola-",'')
let s:pre = substitute(s:pre, "^ポンチョを着た", "Poncho o Kita ",'')
call append("$", "[[Category:".s:cat."]]")
call append("$", "[[de:".s:pre.s:depkmn.s:suf." (".s:deexp." ".s:cn.")]]")
let s:cn = substitute(s:cn, "^0*", "",'')
let s:suf = substitute(s:suf, "-TURBO", " BREAK",'')
let s:suf = substitute(s:suf, "◇", "♢",'')
let s:pre = substitute(s:pre, "^M-", "M ",'')
let s:pre = substitute(s:pre, "^Alola-", "Alolan ",'')
let s:pre = substitute(s:pre, "^Poncho o Kita", "Poncho-wearing",'')
call append("$", "[[en:".s:pre.s:enpkmn.s:suf." (".s:enexp." ".s:cn.")]]")
let s:suf = substitute(s:suf, " BREAK", "BREAK",'')
let s:suf = substitute(s:suf, " ♢", "◇", '')
let s:suf = substitute(s:suf, "-EX", "EX",'')
let s:suf = substitute(s:suf, "-GX", "GX",'')
let s:pre = substitute(s:pre, "^M ", "M",'')
let s:pre = substitute(s:pre, "^Alolan ", "阿罗拉",'')
let s:pre = substitute(s:pre, "^Poncho-wearing ", "穿着斗篷的",'')
if s:exp == "SM-P"
let s:cn = printf("%03d", s:cn)
call append("$", "[[zh:".s:pre.s:zhpkmn.s:suf."(SM-P ".s:cn.")]]")
else
call append("$", "[[zh:".s:pre.s:zhpkmn.s:suf."(".s:titlesuf.")]]")
endif
let &mouse=s:keepmouse
endfunction
function! s:autoillus()
$s/= *Ken\s*$/= Ken Sugimori/ie
$s/= *Shin\s*$/= Shin Nagasawa/ie
$s/= *SATOSHI.*$/= SATOSHI NAKAI/e
$s/= *Arita.*/= Mitsuhiro Arita/ie
$s/= *Chiaki.*/= Suwama Chiaki/ie
$s/= *Nishida.*/= Atsuko Nishida/ie
$s/= *5ban.*/= 5ban Graphics/ie
$s/= *Asako.*/= Asako Ito/ie
$s/= *Akira.*/= Akira Komayama/ie
$s/= *Anesaki.*/= Anesaki Dynamic/ie
$s/= *Atsuko.*/= Atsuko Nishida/ie
$s/= *Ayaka.*/= Ayaka Yoshida/ie
$s/= *Demizu.*/= DemizuPosuka/ie
$s/= *Hitoshi.*/= Hitoshi Ariga/ie
$s/= *Kanako.*/= Kanako Eo/ie
$s/= *Kagemaru.*/= Kagemaru Himeno/ie
$s/= *Kyoko.*/= Kyoko Umemoto/ie
$s/= *Masakazu.*/= Masakazu Fukuda/ie
$s/= *Midori.*/= Midori Harada/ie
$s/= *Mitsuhiro.*/= Mitsuhiro Arita/ie
$s/= *Naoyo.*/= Naoyo Kimura/ie
$s/= *Sanosuke.*/= Sanosuke Sakuma/ie
$s/= *Sumiyoshi.*/= Sumiyoshi Kizuki/ie
$s/= *Suwama.*/= Suwama Chiaki/ie
$s/= *Shigenori.*/= Shigenori Negishi/ie
$s/= *tetsuya.*/= tetsuya koizumi/ie
$s/= *Yukiko.*/= Yukiko Baba/ie
endfunction
function! s:autobold()
$s/'*にげる'*/'''にげる'''/ge
$s/'*きぜつ'*/'''きぜつ'''/ge
$s/'*こんらん'*\([とにな]\)/'''こんらん'''\1/ge
$s/'*マヒ'*\([とにな]\)/'''マヒ'''\1/ge
$s/'*どく'*\([とにな]\)/'''どく'''\1/ge
$s/'*ねむり'*\([とにな]\)/'''ねむり'''\1/ge
$s/'*やけど'*\([とにな]\)/'''やけど'''\1/ge
$s/'*\([12]進化\)'*/'''\1'''/ge
endfunction
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment