From 83641dfb103afd296f9161902afa8759c99db2d9 Mon Sep 17 00:00:00 2001 From: Halfwit Date: Sun, 10 Jan 2016 17:49:59 -0700 Subject: [PATCH 1/2] zsh completion --- jshon_zsh_completion | 58 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 jshon_zsh_completion diff --git a/jshon_zsh_completion b/jshon_zsh_completion new file mode 100644 index 0000000..7d2dbcb --- /dev/null +++ b/jshon_zsh_completion @@ -0,0 +1,58 @@ +#compdef jshon + +typeset -A opt_args +setopt extendedglob + +# general operations +_jshon_opts_operations=( + -t'[returns type]' + -l'[returns length (integer)]' + -k'[returns newline seperated list of keys]' + -p'[pops the last manipulation from the stack]' + -a'[maps the remaining actions across the selected element]' + -j'[returns encoded json]' + -u'[returns decoded string]' + -n'[returns a json element to be inserted into a structure]' + -s'[returns a json encoded string]' +) + +_jshon_opts_index=( + -e'[returns json value at index]' + -i'[insert item into array at index]' + -d'[removes item in array or object]' +) + +# options for passing to _arguments: options common to all operations +_jshon_opts_common=( + -P'[strips a jsonp callback]' + -S'[returns output sorted by key]' + -Q'[disables error reporting on stderr]' + -V'[enables pass by value on the edit stack]' + -F'[ read from a file instead of stdin]:Path to file:_files -./' + -I'[In place editing (only works with -F)]' + -C'[continue on potentially recoverable errors]' + -0'[null delimiters - changes delimiter of -u from newline to null]' #only works for -u + --version'[returns a YYYYMMDD timestamp and exits]' +) + +_jshon_action_none() { + _arguments -s : \ + "$_jshon_opts_operations[@]" \ + "$_jshon_opts_common[@]" \ + "$_jshon_opts_index[@]" \ +} + +# main dispatcher +_jshon() { + local -a args cmds; + local tmp + args=( ${${${(M)words:#-*}#-}:#-*} ) + for tmp in $words; do + cmds+=("${${_jshon_opts_operations[(r)*$tmp\[*]%%\[*}#*\)}") + done + case $args in #$words[2] in + *) _jshon_action_none ;; + esac +} + +_jshon "$@" From 1f3b1e05006805006a024da5b4db6c0d647ca867 Mon Sep 17 00:00:00 2001 From: Halfwit Date: Sun, 10 Jan 2016 18:14:17 -0700 Subject: [PATCH 2/2] Adding completion to makefile --- Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Makefile b/Makefile index 60dbd47..c4be286 100644 --- a/Makefile +++ b/Makefile @@ -8,6 +8,8 @@ MANDIR=$(DESTDIR)/usr/share/man/man1/ TARGET_PATH=$(DESTDIR)/usr/bin DISTFILES=jshon MANFILE=jshon.1 +ZSHSRC=jshon_zsh_completion +ZSHCOMP=$(DESTDIR)/usr/share/zsh/site-functions/_pbpst #VERSION=$(shell date +%Y%m%d) VERSION=$(shell git show -s --format="%ci" HEAD | cut -d ' ' -f 1 | tr -d '-') @@ -27,6 +29,7 @@ clean: install: $(INSTALL) -D $(DISTFILES) $(TARGET_PATH)/$(DISTFILES) $(INSTALL) -D $(MANFILE) $(MANDIR)/$(MANFILE) + $(INSTALL) -D $(ZSHSRC) $(ZSHCOMP) dist: clean sed -i "s/#define JSHONVER .*/#define JSHONVER ${VERSION}/" jshon.c