post queries: support single-quoted strings in metatags.
This commit is contained in:
@@ -358,7 +358,7 @@ class PostQuery
|
||||
def quoted_value
|
||||
return nil unless metatag?
|
||||
|
||||
if value.include?(" ") || value.starts_with?('"') || value.empty?
|
||||
if value.include?(" ") || value.starts_with?('"') || value.starts_with?("'") || value.empty?
|
||||
%Q{"#{value.gsub(/"/, '\\"')}"}
|
||||
else
|
||||
value
|
||||
|
||||
@@ -24,6 +24,7 @@ require "strscan"
|
||||
# metatag = metatag_name ":" quoted_string
|
||||
# metatag_name = "user" | "fav" | "pool" | "order" | ...
|
||||
# quoted_string = '"' /[^"]+/ '"'
|
||||
# | "'" /[^']+/ "'"
|
||||
# tag = /[^ *]+/
|
||||
# wildcard = /[^ ]+/
|
||||
#
|
||||
@@ -172,6 +173,10 @@ class PostQuery
|
||||
a = accept(/([^"\\]|\\")*/).gsub(/\\"/, '"') # handle backslash escaped quotes
|
||||
expect('"')
|
||||
a
|
||||
elsif accept("'")
|
||||
a = accept(/([^'\\]|\\')*/).gsub(/\\'/, "'") # handle backslash escaped quotes
|
||||
expect("'")
|
||||
a
|
||||
else
|
||||
string(/[^ ]+/)
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user