mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 15:27:13 +03:00
1c5ca1f5d8
Several places that use ui.configlist, predominantly in authentication scenarios need to interface with systems that can contain spaces in usernames (e.g. when client certificates are usernames, or Windows usernames). This changeset introduces a parser that supports quoting of strings, and escape quotation marks that get decoded into a single quotation mark that adopts the usual behavior one would expect from quoting strings. The Python library shlex module is not used, on purpose, as that raises if it cannot match quotation marks in the given input.
44 lines
1.3 KiB
Plaintext
44 lines
1.3 KiB
Plaintext
[('string', 'string value'), ('bool1', 'true'), ('bool2', 'false')]
|
|
[('list1', 'foo'), ('list2', 'foo bar baz'), ('list3', 'alice, bob'), ('list4', 'foo bar baz alice, bob'), ('list5', 'abc d"ef"g "hij def"'), ('list6', '"hello world", "how are you?"'), ('list7', 'Do"Not"Separate'), ('list8', '"Do"Separate'), ('list9', '"Do\\"NotSeparate"'), ('list10', 'string "with extraneous" quotation mark"'), ('list11', 'x, y'), ('list12', '"x", "y"'), ('list13', '""" key = "x", "y" """'), ('list14', ',,,, '), ('list15', '" just with starting quotation'), ('list16', '"longer quotation" with "no ending quotation'), ('list17', 'this is \\" "not a quotation mark"')]
|
|
---
|
|
'string value'
|
|
'true'
|
|
'false'
|
|
None
|
|
---
|
|
values.string not a boolean ('string value')
|
|
True
|
|
False
|
|
False
|
|
False
|
|
True
|
|
---
|
|
['foo']
|
|
['foo', 'bar', 'baz']
|
|
['alice', 'bob']
|
|
['foo', 'bar', 'baz', 'alice', 'bob']
|
|
['foo', 'bar', 'baz', 'alice', 'bob']
|
|
['abc', 'd"ef"g', 'hij def']
|
|
['hello world', 'how are you?']
|
|
['Do"Not"Separate']
|
|
['Do', 'Separate']
|
|
['Do"NotSeparate']
|
|
['string', 'with extraneous', 'quotation', 'mark"']
|
|
['x', 'y']
|
|
['x', 'y']
|
|
['', ' key = ', 'x"', 'y', '', '"']
|
|
[]
|
|
['"', 'just', 'with', 'starting', 'quotation']
|
|
['longer quotation', 'with', '"no', 'ending', 'quotation']
|
|
['this', 'is', '"', 'not a quotation mark']
|
|
[]
|
|
[]
|
|
['foo']
|
|
['foo']
|
|
['foo', 'bar']
|
|
['foo', 'bar']
|
|
['foo bar']
|
|
['foo', 'bar']
|
|
None
|
|
True
|