From 9a07bf499363f93a986cdcd0d45849fbf531f938 Mon Sep 17 00:00:00 2001 From: Fabrice Reix Date: Wed, 20 Mar 2024 11:08:55 +0100 Subject: [PATCH] Update Grammar for filename with optional password --- docs/grammar.md | 14 +++++++++----- docs/spec/grammar/hurl.grammar | 14 +++++++++++--- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/docs/grammar.md b/docs/grammar.md index 3bc605fdc..475185d51 100644 --- a/docs/grammar.md +++ b/docs/grammar.md @@ -80,7 +80,7 @@ Short description: (aws-sigv4-option|ca-certificate-option|client-certificate-option|client-key-option|compressed-option|connect-to-option|delay-option|follow-redirect-option|follow-redirect-trusted-option|http10-option|http11-option|http2-option|http3-option|insecure-option|ipv4-option|ipv6-option|max-redirs-option|netrc-option|netrc-file-option|netrc-optional-option|output-option|path-as-is-option|proxy-option|resolve-option|retry-option|retry-interval-option|skip-option|unix-socket-option|variable-option|verbose-option|very-verbose-option)
aws-sigv4-option(used by option)
aws-sigv4 : value-string lt
ca-certificate-option(used by option)
cacert : filename lt
-
client-certificate-option(used by option)
cert : value-string lt
+
client-certificate-option(used by option)
client-key-option(used by option)
key : value-string lt
compressed-option(used by option)
compressed : boolean-option lt
connect-to-option(used by option)
connect-to : value-string lt
@@ -213,7 +213,7 @@ Short description:
key-string-content(used by key-string)
key-string-text(used by key-string-content)
(alphanum|_|-|.|[|]|@|$)+
key-string-escaped-char(used by key-string-content)
\ (#|:|\|\b|\f|\n|\r|\t|\u unicode-char)
-
+
value-string-content(used by value-string)
value-string-text(used by value-string-content)
~[#\n\\]+
value-string-escaped-char(used by value-string-content)
\ (#|\|\b|\f|\n|\r|\t|\u unicode-char)
@@ -234,8 +234,12 @@ Short description:
multiline-string-escaped-char(used by multiline-string-content)
\ (\|b|f|n|r|t|`|u unicode-char)
filename-content(used by filename)
-
filename-text(used by filename-content)
~[#; \n\\]+
-
filename-escaped-char(used by filename-content)
\ (;|#|[ ])
+
~[#; \n\\]+
+
filename-escaped-char(used by filename-contentfilename-password-content)
\ (;|#|[ ])
+
filename-password(used by client-certificate-option)
+
filename-password-content(used by filename-password)
+
password-text(used by filename-password-content)
~[#; \n\\]+
+
password-escaped-char(used by filename-password-content)
\ (;|#|[ ])
{ hexdigit+ }

JSON

json-value(used by bytesjson-key-valuejson-array)
 template
|json-object
@@ -252,7 +256,7 @@ Short description:
json-string-text(used by json-string-content)
~["\\]
json-string-escaped-char(used by json-string-content)
\ ("|\|b|f|n|r|t|u hexdigit hexdigit hexdigit hexdigit)
json-number(used by json-value)
-

Template / Expression

expr(used by template)
variable-name(used by variable-definitionexpr)
[A-Za-z] [A-Za-z_-0-9]*

Filter

filter(used by captureassertexpr)
 count-filter
diff --git a/docs/spec/grammar/hurl.grammar b/docs/spec/grammar/hurl.grammar index 646ac9f19..b151bb473 100644 --- a/docs/spec/grammar/hurl.grammar +++ b/docs/spec/grammar/hurl.grammar @@ -153,7 +153,7 @@ aws-sigv4-option: "aws-sigv4" ":" value-string lt ca-certificate-option: "cacert" ":" filename lt -client-certificate-option: "cert" ":" value-string lt +client-certificate-option: "cert" ":" filename-password lt client-key-option: "key" ":" value-string lt @@ -429,11 +429,19 @@ filename: (filename-content | template)* filename-content: (filename-text | filename-escaped-char)* -filename-text: ~[#; \n\\]+ +filename-text: ~[#;{} \n\\]+ -filename-escaped-char: "\\" (";" | "#" | [ ]) +filename-escaped-char: "\\" ( "\\" | "b" | "f" | "n" | "r" | "t" | "#" | ";"| " " | "{" | "}" | "u" unicode-char) +filename-password: (filename-password-content | template)* + +filename-password-content: (filename-password-text | filename-password-escaped-char)* + +filename-password-text: ~[#;{} \n\\]+ + +filename-password-escaped-char: "\\" ( "\\" | "b" | "f" | "n" | "r" | "t" | "#" | ";" | " " | "{" | "}" | "u" unicode-char) + unicode-char: "{" hexdigit+ "}"