Mercurial > public > mercurial-scm > hg
comparison mercurial/ui.py @ 32960:6ff6eb33f353
config: use the new '_unset' value for 'configwith'
This should let 'configwith' delegate all special processing of the default
config value to the main 'config' method.
This changeset introduce a small change in behavior since the default value is
run through the 'convert' function. This does not seems harmful and no actual
test break. This small change make the code simpler so I'm keeping it.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Sat, 17 Jun 2017 12:52:31 +0200 |
parents | b39dafe681df |
children | 24111157f967 |
comparison
equal
deleted
inserted
replaced
32959:b39dafe681df | 32960:6ff6eb33f353 |
---|---|
537 if b is None: | 537 if b is None: |
538 raise error.ConfigError(_("%s.%s is not a boolean ('%s')") | 538 raise error.ConfigError(_("%s.%s is not a boolean ('%s')") |
539 % (section, name, v)) | 539 % (section, name, v)) |
540 return b | 540 return b |
541 | 541 |
542 def configwith(self, convert, section, name, default=None, | 542 def configwith(self, convert, section, name, default=_unset, |
543 desc=None, untrusted=False): | 543 desc=None, untrusted=False): |
544 """parse a configuration element with a conversion function | 544 """parse a configuration element with a conversion function |
545 | 545 |
546 >>> u = ui(); s = 'foo' | 546 >>> u = ui(); s = 'foo' |
547 >>> u.setconfig(s, 'float1', '42') | 547 >>> u.setconfig(s, 'float1', '42') |
549 42.0 | 549 42.0 |
550 >>> u.setconfig(s, 'float2', '-4.25') | 550 >>> u.setconfig(s, 'float2', '-4.25') |
551 >>> u.configwith(float, s, 'float2') | 551 >>> u.configwith(float, s, 'float2') |
552 -4.25 | 552 -4.25 |
553 >>> u.configwith(float, s, 'unknown', 7) | 553 >>> u.configwith(float, s, 'unknown', 7) |
554 7 | 554 7.0 |
555 >>> u.setconfig(s, 'invalid', 'somevalue') | 555 >>> u.setconfig(s, 'invalid', 'somevalue') |
556 >>> u.configwith(float, s, 'invalid') | 556 >>> u.configwith(float, s, 'invalid') |
557 Traceback (most recent call last): | 557 Traceback (most recent call last): |
558 ... | 558 ... |
559 ConfigError: foo.invalid is not a valid float ('somevalue') | 559 ConfigError: foo.invalid is not a valid float ('somevalue') |
561 Traceback (most recent call last): | 561 Traceback (most recent call last): |
562 ... | 562 ... |
563 ConfigError: foo.invalid is not a valid womble ('somevalue') | 563 ConfigError: foo.invalid is not a valid womble ('somevalue') |
564 """ | 564 """ |
565 | 565 |
566 v = self.config(section, name, None, untrusted) | 566 v = self.config(section, name, default, untrusted) |
567 if v is None: | 567 if v is None: |
568 return default | 568 return v # do not attempt to convert None |
569 try: | 569 try: |
570 return convert(v) | 570 return convert(v) |
571 except (ValueError, error.ParseError): | 571 except (ValueError, error.ParseError): |
572 if desc is None: | 572 if desc is None: |
573 desc = convert.__name__ | 573 desc = convert.__name__ |