sample.RandomColor.bash (1563B)
1 # ble/contrib/layer/sample.RandomColor.bash (C) 2015, akinomyoga 2 # 3 # This is a sample implementation of a highlighting layer. This defines a 4 # random-color layer named `RandomColor'. To use the layer, the layer name can 5 # be inserted in the array `_ble_highlight_layer_list`: 6 # 7 # ```bash 8 # ble-import layer/sample.RandomColor 9 # ble/array#insert-before _ble_highlight_layer_list syntax RandomColor 10 # ``` 11 # 12 # Note: This code was first introduced in commit ec3f3661b@akinomyoga/ble.sh 13 # (2015-02-23) but later moved to contrib in refactoring on 2023-09-19. 14 15 _ble_highlight_layer_RandomColor_buff=() 16 17 function ble/highlight/layer:RandomColor/update { 18 local text=$1 ret i 19 _ble_highlight_layer_RandomColor_buff=() 20 for ((i=0;i<${#text};i++)); do 21 # _ble_highlight_layer_RandomColor_buff[i] に "<sgr><表示文字>" を設定する。 22 # "<表示文字>" は ${_ble_highlight_layer_plain_buff[i]} でなければならない 23 # (或いはそれと文字幅が同じ物…ただそれが反映される保証はない)。 24 ble/color/gspec2sgr "fg=$((RANDOM%256))" 25 _ble_highlight_layer_RandomColor_buff[i]=$ret${_ble_highlight_layer_plain_buff[i]} 26 done 27 PREV_BUFF=_ble_highlight_layer_RandomColor_buff 28 ((PREV_UMIN=0,PREV_UMAX=${#text})) 29 } 30 function ble/highlight/layer:RandomColor/getg { 31 # ここでは乱数を返しているが、実際は 32 # PREV_BUFF=_ble_highlight_layer_RandomColor_buff 33 # に設定した物に対応する物を指定しないと表示が変になる。 34 local ret; ble/color/gspec2g "fg=$((RANDOM%256))"; g=$ret 35 }