comparison mercurial/ui.py @ 11325:22a737306ba5

ui: document the formatted(), interactive() & plain() functions.
author Dan Villiom Podlaski Christiansen <danchr@gmail.com>
date Mon, 07 Jun 2010 16:14:12 +0200
parents cdf6d861b207
children caf10970950e
comparison
equal deleted inserted replaced
11324:cdf6d861b207 11325:22a737306ba5
251 for section in cfg.sections(): 251 for section in cfg.sections():
252 for name, value in self.configitems(section, untrusted): 252 for name, value in self.configitems(section, untrusted):
253 yield section, name, str(value).replace('\n', '\\n') 253 yield section, name, str(value).replace('\n', '\\n')
254 254
255 def plain(self): 255 def plain(self):
256 '''is plain mode active?
257
258 Plain mode means that all configuration variables which affect the
259 behavior and output of Mercurial should be ignored. Additionally, the
260 output should be stable, reproducible and suitable for use in scripts or
261 applications.
262
263 The only way to trigger plain mode is by setting the `HGPLAIN'
264 environment variable.
265 '''
256 return 'HGPLAIN' in os.environ 266 return 'HGPLAIN' in os.environ
257 267
258 def username(self): 268 def username(self):
259 """Return default username to be used in commits. 269 """Return default username to be used in commits.
260 270
367 except: pass 377 except: pass
368 try: sys.stderr.flush() 378 try: sys.stderr.flush()
369 except: pass 379 except: pass
370 380
371 def interactive(self): 381 def interactive(self):
382 '''is interactive input allowed?
383
384 An interactive session is a session where input can be reasonably read
385 from `sys.stdin'. If this function returns false, any attempt to read
386 from stdin should fail with an error, unless a sensible default has been
387 specified.
388
389 Interactiveness is triggered by the value of the `ui.interactive'
390 configuration variable or - if it is unset - when `sys.stdin' points
391 to a terminal device.
392
393 This function refers to input only; for output, see `ui.formatted()'.
394 '''
372 i = self.configbool("ui", "interactive", None) 395 i = self.configbool("ui", "interactive", None)
373 if i is None: 396 if i is None:
374 try: 397 try:
375 return sys.stdin.isatty() 398 return sys.stdin.isatty()
376 except AttributeError: 399 except AttributeError:
379 return False 402 return False
380 403
381 return i 404 return i
382 405
383 def formatted(self): 406 def formatted(self):
407 '''should formatted output be used?
408
409 It is often desirable to format the output to suite the output medium.
410 Examples of this are truncating long lines or colorizing messages.
411 However, this is not often not desirable when piping output into other
412 utilities, e.g. `grep'.
413
414 Formatted output is triggered by the value of the `ui.formatted'
415 configuration variable or - if it is unset - when `sys.stdout' points
416 to a terminal device. Please note that `ui.formatted' should be
417 considered an implementation detail; it is not intended for use outside
418 Mercurial or its extensions.
419
420 This function refers to output only; for input, see `ui.interactive()'.
421 This function always returns false when in plain mode, see `ui.plain()'.
422 '''
384 if self.plain(): 423 if self.plain():
385 return False 424 return False
386 425
387 i = self.configbool("ui", "formatted", None) 426 i = self.configbool("ui", "formatted", None)
388 if i is None: 427 if i is None: