straliasの登録と値取得を楽に。

タイトル通り。nslua側から、stralias等を楽に登録したい。

導入

末尾のスクリプトをコピペし保存する。たとえば、stralias.luaとか。で、それを読み込む。

NL_dofile("stralias.lua")

すると、以下の物が生成されるので、これらには手を加えないこと。

stralias
straliasを設定する命令。
St
straliasを取得する命令。

使い方

-- 新しいstraliasを作成する。
stralias.abc("ごらっしゃー")
-- ※numaliasと違って、自動採番はできない。

-- straliasの取得
local str = St.abc -- abcを返す。この場合は"ごらっしゃー"

※Stは、stralias()で設定した以外のstraliasも扱えます。

スクリプト

do
	local ob1 = {}
	setmetatable(ob1, {__index=function(t, k)
		local shelter = NSGetStrValue(0)
		NSExec("mov $0,"..k)
		rawset(t, k, NSGetStrValue(0))
		NSSetStrValue(0, shelter)
		return rawget(t, k)
	end})
	_G.St = ob1

	local ob2 = {}
	setmetatable(ob2, {__index=function(t, stralias) return function(str)
		local temp = rawget(ob1, stralias)
		if type(temp) == "nil" then
			if str then
				rawset(ob1, stralias, str)
				NSExec("stralias "..stralias..",\""..rawget(ob1, stralias).."\"")
			else
				NSOkBox("値が設定されていません。", "stralias")
			end
		else
			NSOkBox(stralias.."は既に定義されています。", "stralias")
			NSEnd()
		end
		return rawget(ob1, stralias)
	end end})
	_G.stralias = ob2
end