]> src.twobees.de Git - dotfiles.git/blob - stow/oh-my-zsh/.oh-my-zsh/plugins/emotty/emotty.plugin.zsh
...
[dotfiles.git] / stow / oh-my-zsh / .oh-my-zsh / plugins / emotty / emotty.plugin.zsh
1 # ------------------------------------------------------------------------------
2 #          FILE: emotty.plugin.zsh
3 #   DESCRIPTION: Return an emoji for the current $TTY number.
4 #        AUTHOR: Alexis Hildebrandt (afh[at]surryhill.net)
5 #       VERSION: 1.0.0
6 #       DEPENDS: emoji plugin
7 #       
8 # There are different sets of emoji characters available, to choose a different
9 # set export emotty_set to the name of the set you would like to use, e.g.:
10 # % export emotty_set=nature
11 # ------------------------------------------------------------------------------
12
13 # Handle $0 according to the standard:
14 # https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html
15 0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}"
16 0="${${(M)0:#/*}:-$PWD/$0}"
17
18 typeset -gAH _emotty_sets
19 local _emotty_plugin_dir="${0:h}"
20 source "$_emotty_plugin_dir/emotty_stellar_set.zsh"
21 source "$_emotty_plugin_dir/emotty_floral_set.zsh"
22 source "$_emotty_plugin_dir/emotty_zodiac_set.zsh"
23 source "$_emotty_plugin_dir/emotty_nature_set.zsh"
24 source "$_emotty_plugin_dir/emotty_emoji_set.zsh"
25 source "$_emotty_plugin_dir/emotty_love_set.zsh"
26 unset _emotty_plugin_dir
27
28 emotty_default_set=emoji
29
30 function emotty() {
31   # Use emotty set defined by user, fallback to default
32   local emotty=${_emotty_sets[${emotty_set:-$emotty_default_set}]}
33
34   # Parse tty number via prompt expansion. %l equals:
35   # - N      if tty = /dev/ttyN
36   # - pts/N  if tty = /dev/pts/N
37   local tty=${${(%):-%l}##pts/}
38   # Normalize it to an emotty set index
39   (( tty = (tty % ${#${=emotty}}) + 1 ))
40
41   local character_name=${${=emotty}[tty]}
42   echo "${emoji[${character_name}]}${emoji2[emoji_style]}"
43 }
44
45 function display_emotty() {
46   local name=${1:-$emotty_set}
47   echo $name
48   for i in ${=_emotty_sets[$name]}; do
49     printf "${emoji[$i]}${emoji2[emoji_style]}  "
50   done
51   print
52   for i in ${=_emotty_sets[$name]}; do
53     print "${emoji[$i]}${emoji2[emoji_style]}  = $i"
54   done
55 }