mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2026-03-27 03:14:56 +01:00
Fix shit done on omz_urlencode rework by someone
Bad usage of zparseopts
This commit is contained in:
parent
6376140a7c
commit
279d67d702
1 changed files with 16 additions and 13 deletions
|
|
@ -67,7 +67,7 @@ function try_alias_value() {
|
||||||
#
|
#
|
||||||
# Arguments:
|
# Arguments:
|
||||||
# 1. name - The variable to set
|
# 1. name - The variable to set
|
||||||
# 2. val - The default value
|
# 2. val - The default value
|
||||||
# Return value:
|
# Return value:
|
||||||
# 0 if the variable exists, 3 if it was set
|
# 0 if the variable exists, 3 if it was set
|
||||||
#
|
#
|
||||||
|
|
@ -81,12 +81,12 @@ function default() {
|
||||||
#
|
#
|
||||||
# Arguments:
|
# Arguments:
|
||||||
# 1. name - The env variable to set
|
# 1. name - The env variable to set
|
||||||
# 2. val - The default value
|
# 2. val - The default value
|
||||||
# Return value:
|
# Return value:
|
||||||
# 0 if the env variable exists, 3 if it was set
|
# 0 if the env variable exists, 3 if it was set
|
||||||
#
|
#
|
||||||
function env_default() {
|
function env_default() {
|
||||||
env | grep -q "^$1=" && return 0
|
env | grep -q "^$1=" && return 0
|
||||||
export "$1=$2" && return 3
|
export "$1=$2" && return 3
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -101,7 +101,7 @@ zmodload zsh/langinfo
|
||||||
#
|
#
|
||||||
# By default, reserved characters and unreserved "mark" characters are
|
# By default, reserved characters and unreserved "mark" characters are
|
||||||
# not escaped by this function. This allows the common usage of passing
|
# not escaped by this function. This allows the common usage of passing
|
||||||
# an entire URL in, and encoding just special characters in it, with
|
# an entire URL in, and encoding just special characters in it, with
|
||||||
# the expectation that reserved and mark characters are used appropriately.
|
# the expectation that reserved and mark characters are used appropriately.
|
||||||
# The -r and -m options turn on escaping of the reserved and mark characters,
|
# The -r and -m options turn on escaping of the reserved and mark characters,
|
||||||
# respectively, which allows arbitrary strings to be fully escaped for
|
# respectively, which allows arbitrary strings to be fully escaped for
|
||||||
|
|
@ -112,7 +112,7 @@ zmodload zsh/langinfo
|
||||||
#
|
#
|
||||||
# Usage:
|
# Usage:
|
||||||
# omz_urlencode [-r] [-m] <string>
|
# omz_urlencode [-r] [-m] <string>
|
||||||
#
|
#
|
||||||
# -r causes reserved characters (;/?:@&=+$,) to be escaped
|
# -r causes reserved characters (;/?:@&=+$,) to be escaped
|
||||||
#
|
#
|
||||||
# -m causes "mark" characters (_.!~*''()-) to be escaped
|
# -m causes "mark" characters (_.!~*''()-) to be escaped
|
||||||
|
|
@ -120,12 +120,15 @@ zmodload zsh/langinfo
|
||||||
# -P causes spaces to be encoded as '%20' instead of '+'
|
# -P causes spaces to be encoded as '%20' instead of '+'
|
||||||
function omz_urlencode() {
|
function omz_urlencode() {
|
||||||
emulate -L zsh
|
emulate -L zsh
|
||||||
zparseopts -D -E -a opts r m P
|
local -a opt_path opt_reserved opt_mark
|
||||||
|
zparseopts -D -E r=opt_reserved m=opt_mark P=opt_path
|
||||||
|
|
||||||
local in_str=$1
|
local in_str=$1
|
||||||
local url_str=""
|
local url_str=""
|
||||||
local spaces_as_plus
|
local spaces_as_plus=1
|
||||||
if [[ -z $opts[(r)-P] ]]; then spaces_as_plus=1; fi
|
if [[ ! -z $opt_path ]]; then
|
||||||
|
spaces_as_plus=
|
||||||
|
fi
|
||||||
local str="$in_str"
|
local str="$in_str"
|
||||||
|
|
||||||
# URLs must use UTF-8 encoding; convert str to UTF-8 if required
|
# URLs must use UTF-8 encoding; convert str to UTF-8 if required
|
||||||
|
|
@ -146,11 +149,11 @@ function omz_urlencode() {
|
||||||
local reserved=';/?:@&=+$,'
|
local reserved=';/?:@&=+$,'
|
||||||
local mark='_.!~*''()-'
|
local mark='_.!~*''()-'
|
||||||
local dont_escape="[A-Za-z0-9"
|
local dont_escape="[A-Za-z0-9"
|
||||||
if [[ -z $opts[(r)-r] ]]; then
|
if [[ ! -z $opt_reserved ]]; then
|
||||||
dont_escape+=$reserved
|
dont_escape+=$reserved
|
||||||
fi
|
fi
|
||||||
# $mark must be last because of the "-"
|
# $mark must be last because of the "-"
|
||||||
if [[ -z $opts[(r)-m] ]]; then
|
if [[ ! -z $opt_mark ]]; then
|
||||||
dont_escape+=$mark
|
dont_escape+=$mark
|
||||||
fi
|
fi
|
||||||
dont_escape+="]"
|
dont_escape+="]"
|
||||||
|
|
@ -177,8 +180,8 @@ function omz_urlencode() {
|
||||||
# URL-decode a string
|
# URL-decode a string
|
||||||
#
|
#
|
||||||
# Decodes a RFC 2396 URL-encoded (%-escaped) string.
|
# Decodes a RFC 2396 URL-encoded (%-escaped) string.
|
||||||
# This decodes the '+' and '%' escapes in the input string, and leaves
|
# This decodes the '+' and '%' escapes in the input string, and leaves
|
||||||
# other characters unchanged. Does not enforce that the input is a
|
# other characters unchanged. Does not enforce that the input is a
|
||||||
# valid URL-encoded string. This is a convenience to allow callers to
|
# valid URL-encoded string. This is a convenience to allow callers to
|
||||||
# pass in a full URL or similar strings and decode them for human
|
# pass in a full URL or similar strings and decode them for human
|
||||||
# presentation.
|
# presentation.
|
||||||
|
|
@ -196,7 +199,7 @@ function omz_urldecode {
|
||||||
local caller_encoding=$langinfo[CODESET]
|
local caller_encoding=$langinfo[CODESET]
|
||||||
local LC_ALL=C
|
local LC_ALL=C
|
||||||
export LC_ALL
|
export LC_ALL
|
||||||
|
|
||||||
# Change + back to ' '
|
# Change + back to ' '
|
||||||
local tmp=${encoded_url:gs/+/ /}
|
local tmp=${encoded_url:gs/+/ /}
|
||||||
# Protect other escapes to pass through the printf unchanged
|
# Protect other escapes to pass through the printf unchanged
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue