【iPhone】クリップボードにスタックを構築するショートカット [実験&メモ]

異なるショートカット間でのデータの受け渡し(複数)をクリップボード経由で行ってみようじゃないかという試み。

クリップボードにJSONを使ってスタックを構築し、データをpushしたり、popしたりできるようにする。

作ったショートカットのダウンロードリンクも貼っておく。(使いたい人がいたらどうぞ)


1. ショートカットのダウンロードリンク

ClipboardStack


2. 基本的な使い方

命令(cmd)とデータ(data)を渡して実行する。使える命令は、start, end, push, pop, sizeの5種類。なお、何も指定せず普通に実行すると使い方説明が表示されるようになっている。

Usage

画像1


基本的には以下の手順のようにして使う。

(1)
以下のようにしてスタックを初期化

画像2


すると、クリップボードの内容が以下のようになる。

クリップボード

{"size":0,"orig":""}
※ "orig"には、初期化時のクリップボードの内容をbase64エンコードしたものが入る(ないなら空)

※ "size"は現在のスタックのデータ数を表す


(2)
以下のようにしてデータをpushする

画像3


すると、クリップボードの内容が以下のようになる。

クリップボード

{"size":2,"1":"1番目!","orig":"","2":"2番目!"}


(3)
以下のようにしてデータをpopする

画像4


すると、最後に追加した値を取り出すことができる。

この時、クリップボードの値は以下のように更新される。("size"の値がデクリメントされる)

クリップボード

{"size":1,"1":"1番目!","orig":"","2":"2番目!"}


(4)
再度pushする

画像5


すると、クリップボードの内容は以下のようになる。

{"size":2,"1":"1番目!","orig":"","2":"3番目!"}


(5)
連続してpopする。size命令で現在
のスタックのデータ数がわかるので、
その分繰り返してpopできる。

画像6


実行結果は勿論以下のようになる。

実行結果

3番目!
1番目!

そして、クリップボードの値は以下のように更新される。

クリップボード

{"size":0,"1":"1番目!","orig":"","2":"3番目!"}


(6)
使い終わったら、end命令を呼んで、
origの内容をbase64デコードして
クリップボードに戻して復元

画像7


もし、最初に(start実行前に)クリップボードが空ではなく、以下の値が入っていた場合、

こんにちは

こんばんは

上の手順(1)〜(6) で、クリップボードの内容は以下のように変化することになる。

(1)

{"size":0,"orig":"44GT44KT44Gr44Gh44GvCgrjgZPjgpPjgbDjgpPjga8="}

(2)

{"size":2,"1":"1番目!","orig":"44GT44KT44Gr44Gh44GvCgrjgZPjgpPjgbDjgpPjga8=","2":"2番目!"}

(3)

{"size":1,"1":"1番目!","orig":"44GT44KT44Gr44Gh44GvCgrjgZPjgpPjgbDjgpPjga8=","2":"2番目!"}

(4)

{"size":2,"1":"1番目!","orig":"44GT44KT44Gr44Gh44GvCgrjgZPjgpPjgbDjgpPjga8=","2":"3番目!"}

(5)

{"size":0,"1":"1番目!","orig":"44GT44KT44Gr44Gh44GvCgrjgZPjgpPjgbDjgpPjga8=","2":"3番目!"}

(6)

こんにちは

こんばんは


なお、最初に入っている値が画像でもbase64エンコードしてから保存するから、復元できる。復元できるのは、画像orプレーンテキストだけ。(多分)


3. ショートカット間でのデータの受け渡し

一方のショートカットでデータを積んで、もう一方のショートカットでデータを取り出してみる。

push

画像8


pop

画像9


実行結果その1

Popped data : 4
Current size : 3
---------------------------
Popped data : 3
Current size : 2
---------------------------
Popped data : 2
Current size : 1
---------------------------
Popped data : 1
Current size : 0
---------------------------

実行結果その2 (復元されたクリップボード)

元々クリップボードに入っているテキスト。

これを復元したい。

_:(´ཀ`」 ∠):


4. まとめ

テキトーに作ったけど思ったように動いてくれてるっぽい。

そのうち使える命令を増やしたい。例えば全内容をリストで返すとか。

キューも作れないかなあ。

では。

この記事が気に入ったらサポートをしてみませんか?