Skip to content

Commit

Permalink
Rename PARSERS -> PARSER.
Browse files Browse the repository at this point in the history
  • Loading branch information
Roberto Reale committed Dec 22, 2016
1 parent 48ed2b6 commit 9c767cc
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 55 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ That's all!
code: |-
foo = bar

$ source bashlet parsers/yaml
$ source bashlet parser/yaml

$ bash$$ yaml get_by_key sample.yaml Stack__line
23
Expand Down
2 changes: 1 addition & 1 deletion README.md.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ That's all!
code: |-
foo = bar

$ source bashlet parsers/yaml
$ source bashlet parser/yaml

$ @printf "$BASHLETS_NAMESPACE_QUOTED"@ yaml get_by_key sample.yaml Stack__line
23
Expand Down
2 changes: 1 addition & 1 deletion examples/facilebackup/bin/facilebackup
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ source bashlet basic/myself
source bashlet datatype/integer
source bashlet datatype/string
source bashlet datatype/uuid
source bashlet parsers/yaml
source bashlet parser/yaml
source bashlet client/webdav
source bashlet ux/repl

Expand Down
90 changes: 45 additions & 45 deletions lib/parsers/json → lib/parser/json
Original file line number Diff line number Diff line change
Expand Up @@ -47,45 +47,45 @@
# Global Variables
#
#
# BASHLETS_PARSERS_JSON_ERROR_RING
# BASHLETS_PARSER_JSON_ERROR_RING
# The parser's error ring
#
# BASHLETS_PARSERS_JSON_LEAFONLY
# BASHLETS_PARSER_JSON_LEAFONLY
# Leaf only mode: only show leaf nodes, which stops data duplication
#
# BASHLETS_PARSERS_JSON_PRUNE
# BASHLETS_PARSER_JSON_PRUNE
# Prune empty mode: exclude fields with empty values
#
# BASHLETS_PARSERS_JSON_BRIEF
# BASHLETS_PARSER_JSON_BRIEF
# Combines 'Leaf only' and 'Prune empty' modes
#
# BASHLETS_PARSERS_JSON_NO_HEAD
# BASHLETS_PARSER_JSON_NO_HEAD
# Do not show nodes that have no path (lines that start with [])
#
# BASHLETS_PARSERS_JSON_NORMALIZE_SOLIDUS
# BASHLETS_PARSER_JSON_NORMALIZE_SOLIDUS
# Remove escaping of the solidus symbol (straight slash)
#
# BASHLETS_PARSERS_JSON_LEAVES_AS_DIRS
# BASHLETS_PARSER_JSON_LEAVES_AS_DIRS
# Determines how the JSON-to-fs translator should represent leaf nodes
#
################################################################################



#@method
function bashlets_parsers_json_throw()
function bashlets_parser_json_throw()
{
BASHLETS_PARSERS_JSON_ERROR_RING="$*"
BASHLETS_PARSER_JSON_ERROR_RING="$*"
}

#@method
function bashlets_parsers_json_tokenize()
function bashlets_parser_json_tokenize()
{
local GREP
local ESCAPE
local CHAR

function __bashlets_parsers_json_awk_egrep()
function __bashlets_parser_json_awk_egrep()
{
local pattern_string=$1

Expand All @@ -111,7 +111,7 @@ function bashlets_parsers_json_tokenize()
ESCAPE='(\\[^u[:cntrl:]]|\\u[0-9a-fA-F]{4})'
CHAR='[^[:cntrl:]"\\]'
else
GREP=__bashlets_parsers_json_awk_egrep
GREP=__bashlets_parser_json_awk_egrep
ESCAPE='(\\\\[^u[:cntrl:]]|\\u[0-9a-fA-F]{4})'
CHAR='[^[:cntrl:]"\\\\]'
fi
Expand All @@ -123,11 +123,11 @@ function bashlets_parsers_json_tokenize()

$GREP "$STRING|$NUMBER|$KEYWORD|$SPACE|." | egrep -v "^$SPACE$"

unset __bashlets_parsers_json_awk_egrep
unset __bashlets_parser_json_awk_egrep
}

#@method
function bashlets_parsers_json_parse_array()
function bashlets_parser_json_parse_array()
{
local index=0
local ary=''
Expand All @@ -139,25 +139,25 @@ function bashlets_parsers_json_parse_array()
*)
while :
do
bashlets_parsers_json_parse_value "$1" "$index"
bashlets_parser_json_parse_value "$1" "$index"
index=$((index+1))
ary="$ary""$value"
read -r token
case "$token" in
']') break ;;
',') ary="$ary," ;;
*) bashlets_parsers_json_throw "EXPECTED , or ] GOT ${token:-EOF}" ; return 1 ;;
*) bashlets_parser_json_throw "EXPECTED , or ] GOT ${token:-EOF}" ; return 1 ;;
esac
read -r token
done
;;
esac
[[ "$BASHLETS_PARSERS_JSON_BRIEF" -eq 0 ]] && value=$(printf '[%s]' "$ary") || value=
[[ "$BASHLETS_PARSER_JSON_BRIEF" -eq 0 ]] && value=$(printf '[%s]' "$ary") || value=
:
}

#@method
function bashlets_parsers_json_parse_object()
function bashlets_parser_json_parse_object()
{
local key
local obj=''
Expand All @@ -171,95 +171,95 @@ function bashlets_parsers_json_parse_object()
do
case "$token" in
'"'*'"') key=$token ;;
*) bashlets_parsers_json_throw "EXPECTED string GOT ${token:-EOF}" ; exit 1 ;;
*) bashlets_parser_json_throw "EXPECTED string GOT ${token:-EOF}" ; exit 1 ;;
esac
read -r token
case "$token" in
':') ;;
*) bashlets_parsers_json_throw "EXPECTED : GOT ${token:-EOF}" ; exit 1 ;;
*) bashlets_parser_json_throw "EXPECTED : GOT ${token:-EOF}" ; exit 1 ;;
esac
read -r token
bashlets_parsers_json_parse_value "$1" "$key"
bashlets_parser_json_parse_value "$1" "$key"
obj="$obj$key:$value"
read -r token
case "$token" in
'}') break ;;
',') obj="$obj," ;;
*) bashlets_parsers_json_throw "EXPECTED , or } GOT ${token:-EOF}" ; exit 1 ;;
*) bashlets_parser_json_throw "EXPECTED , or } GOT ${token:-EOF}" ; exit 1 ;;
esac
read -r token
done
;;
esac
[[ "$BASHLETS_PARSERS_JSON_BRIEF" -eq 0 ]] && value=$(printf '{%s}' "$obj") || value=
[[ "$BASHLETS_PARSER_JSON_BRIEF" -eq 0 ]] && value=$(printf '{%s}' "$obj") || value=
:
}

#@method
function bashlets_parsers_json_parse_value()
function bashlets_parser_json_parse_value()
{
local jpath="${1:+$1/}$2" isleaf=0 isempty=0 print=0
case "$token" in
'{')
bashlets_parsers_json_parse_object "$jpath" ;;
bashlets_parser_json_parse_object "$jpath" ;;
'[')
bashlets_parsers_json_parse_array "$jpath" ;;
bashlets_parser_json_parse_array "$jpath" ;;
# At this point, the only valid single-character tokens are digits.
''|[!0-9])
bashlets_parsers_json_throw "EXPECTED value GOT ${token:-EOF}" ; return 1;;
bashlets_parser_json_throw "EXPECTED value GOT ${token:-EOF}" ; return 1;;
*)
value=$token
# if asked, replace solidus ("\/") in json strings with normalized value: "/"
[[ "$BASHLETS_PARSERS_JSON_NORMALIZE_SOLIDUS" -eq 1 ]] && value=$(echo "$value" | sed 's#\\/#/#g')
[[ "$BASHLETS_PARSER_JSON_NORMALIZE_SOLIDUS" -eq 1 ]] && value=$(echo "$value" | sed 's#\\/#/#g')
isleaf=1
[ "$value" = '""' ] && isempty=1
;;
esac

[ "$value" = '' ] && return
[[ "$BASHLETS_PARSERS_JSON_NO_HEAD" -eq 1 ]] && [ -z "$jpath" ] && return
[[ "$BASHLETS_PARSER_JSON_NO_HEAD" -eq 1 ]] && [ -z "$jpath" ] && return

[[ "$BASHLETS_PARSERS_JSON_LEAFONLY" -eq 0 ]] && [[ "$BASHLETS_PARSERS_JSON_PRUNE" -eq 0 ]] && print=1
[[ "$BASHLETS_PARSERS_JSON_LEAFONLY" -eq 1 ]] && [ "$isleaf" -eq 1 ] && [ $BASHLETS_PARSERS_JSON_PRUNE -eq 0 ]] && print=1
[[ "$BASHLETS_PARSERS_JSON_LEAFONLY" -eq 0 ]] && [[ "$BASHLETS_PARSERS_JSON_PRUNE" -eq 1 ]] && [ "$isempty" -eq 0 ] && print=1
[[ "$BASHLETS_PARSERS_JSON_LEAFONLY" -eq 1 ]] && [ "$isleaf" -eq 1 ] && \
[[ "$BASHLETS_PARSERS_JSON_PRUNE" -eq 1 ]] && [ $isempty -eq 0 ] && print=1
[[ "$BASHLETS_PARSER_JSON_LEAFONLY" -eq 0 ]] && [[ "$BASHLETS_PARSER_JSON_PRUNE" -eq 0 ]] && print=1
[[ "$BASHLETS_PARSER_JSON_LEAFONLY" -eq 1 ]] && [ "$isleaf" -eq 1 ] && [ $BASHLETS_PARSER_JSON_PRUNE -eq 0 ]] && print=1
[[ "$BASHLETS_PARSER_JSON_LEAFONLY" -eq 0 ]] && [[ "$BASHLETS_PARSER_JSON_PRUNE" -eq 1 ]] && [ "$isempty" -eq 0 ] && print=1
[[ "$BASHLETS_PARSER_JSON_LEAFONLY" -eq 1 ]] && [ "$isleaf" -eq 1 ] && \
[[ "$BASHLETS_PARSER_JSON_PRUNE" -eq 1 ]] && [ $isempty -eq 0 ] && print=1
[ "$print" -eq 1 ] && printf "%s\t%s\n" "$jpath" "$value"
:
}

#@method
function bashlets_parsers_json_parse()
function bashlets_parser_json_parse()
{
read -r token
bashlets_parsers_json_parse_value
bashlets_parser_json_parse_value
read -r token
case "$token" in
'') ;;
*) bashlets_parsers_json_throw "EXPECTED EOF GOT $token" ; return 1 ;;
*) bashlets_parser_json_throw "EXPECTED EOF GOT $token" ; return 1 ;;
esac
}

#@method
function bashlets_parsers_json_to_charstream()
function bashlets_parser_json_to_charstream()
{
bashlets_parsers_json_tokenize | bashlets_parsers_json_parse
bashlets_parser_json_tokenize | bashlets_parser_json_parse
}

#@method
function bashlets_parsers_json_to_fs()
function bashlets_parser_json_to_fs()
{
local base="${1:-/tmp}"

# 'Brief' mode is requires, so we save the current settings
local old_BASHLETS_PARSERS_JSON_BRIEF=$BASHLETS_PARSERS_JSON_BRIEF
export BASHLETS_PARSERS_JSON_BRIEF=1
local old_BASHLETS_PARSER_JSON_BRIEF=$BASHLETS_PARSER_JSON_BRIEF
export BASHLETS_PARSER_JSON_BRIEF=1

bashlets_parsers_json_to_charstream | while read jpath value
bashlets_parser_json_to_charstream | while read jpath value
do
jpath=$(echo $jpath | xargs echo) # unquote

if [[ "$BASHLETS_PARSERS_JSON_LEAVES_AS_DIRS" -eq 1 ]]
if [[ "$BASHLETS_PARSER_JSON_LEAVES_AS_DIRS" -eq 1 ]]
then
value=$(echo $value | xargs echo) # unquote
mkdir -p $base/$jpath/"$value"
Expand All @@ -270,7 +270,7 @@ function bashlets_parsers_json_to_fs()
done

# restore the old settings
export BASHLETS_PARSERS_JSON_BRIEF=$old_BASHLETS_PARSERS_JSON_BRIEF
export BASHLETS_PARSER_JSON_BRIEF=$old_BASHLETS_PARSER_JSON_BRIEF
}


Expand Down
14 changes: 7 additions & 7 deletions lib/parsers/yaml → lib/parser/yaml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ source bashlet datatype/keyvalues
#

#@method
function bashlets_parsers_yaml_to_keyvalues()
function bashlets_parser_yaml_to_keyvalues()
{
local file="$1"
local prefix="$2"
Expand Down Expand Up @@ -72,33 +72,33 @@ function bashlets_parsers_yaml_to_keyvalues()


#@method
function bashlets_parsers_yaml_list_keys()
function bashlets_parser_yaml_list_keys()
{
local file="$1"
local prefix="$2"

bashlets_parsers_yaml_to_keyvalues "$file" "$prefix" \
bashlets_parser_yaml_to_keyvalues "$file" "$prefix" \
| $BASHLETS_NAMESPACE keyvalues list_keys
}

#@method
function bashlets_parsers_yaml_list_values()
function bashlets_parser_yaml_list_values()
{
local file="$1"
local prefix="$2"

bashlets_parsers_yaml_to_keyvalues "$file" "$prefix" \
bashlets_parser_yaml_to_keyvalues "$file" "$prefix" \
| $BASHLETS_NAMESPACE keyvalues list_values
}

#@method
function bashlets_parsers_yaml_get_by_key()
function bashlets_parser_yaml_get_by_key()
{
local file="$1"
local key="$2"
local prefix="$3"

bashlets_parsers_yaml_to_keyvalues "$file" "$prefix" \
bashlets_parser_yaml_to_keyvalues "$file" "$prefix" \
| $BASHLETS_NAMESPACE keyvalues get_by_key "$key"
}

Expand Down

0 comments on commit 9c767cc

Please sign in to comment.