mirror of https://github.com/python/cpython
Import this to replace open() by an extended version that uses
Internet Config to set creator/type based on the extension. Donated by Oliver Steele.
This commit is contained in:
parent
1500374667
commit
317b2a6d59
|
@ -0,0 +1,66 @@
|
|||
"""icopen patch
|
||||
|
||||
OVERVIEW
|
||||
|
||||
icopen patches MacOS Python to use the Internet Config file mappings to select
|
||||
the type and creator for a file.
|
||||
|
||||
Version 1 released to the public domain 3 November 1999
|
||||
by Oliver Steele (steele@cs.brandeis.edu).
|
||||
|
||||
DETAILS
|
||||
|
||||
This patch causes files created by Python's open(filename, 'w') command (and
|
||||
by functions and scripts that call it) to set the type and creator of the file
|
||||
to the type and creator associated with filename's extension (the
|
||||
portion of the filename after the last period), according to Internet Config.
|
||||
Thus, a script that creates a file foo.html will create one that opens in whatever
|
||||
browser you've set to handle *.html files, and so on.
|
||||
|
||||
Python IDE uses its own algorithm to select the type and creator for saved
|
||||
editor windows, so this patch won't effect their types.
|
||||
|
||||
As of System 8.6 at least, Internet Config is built into the system, and the
|
||||
file mappings are accessed from the Advanced pane of the Internet control
|
||||
panel. User Mode (in the Edit menu) needs to be set to Advanced in order to
|
||||
access this pane.
|
||||
|
||||
INSTALLATION
|
||||
|
||||
Put this file in your Python path, and create a file named {Python}:sitecustomize.py
|
||||
that contains:
|
||||
import icopen
|
||||
|
||||
(If {Python}:sitecustomizer.py already exists, just add the 'import' line to it.)
|
||||
|
||||
The next time you launch PythonInterpreter or Python IDE, the patch will take
|
||||
effect.
|
||||
"""
|
||||
|
||||
import __builtin__
|
||||
|
||||
_builtin_open = globals().get('_builtin_open', __builtin__.open)
|
||||
|
||||
def _open_with_typer(*args):
|
||||
file = apply(_builtin_open, args)
|
||||
filename = args[0]
|
||||
mode = 'r'
|
||||
if args[1:]:
|
||||
mode = args[1]
|
||||
if mode[0] == 'w':
|
||||
from ic import error, settypecreator
|
||||
try:
|
||||
settypecreator(filename)
|
||||
except error:
|
||||
pass
|
||||
return file
|
||||
|
||||
__builtin__.open = _open_with_typer
|
||||
|
||||
"""
|
||||
open('test.py')
|
||||
_open_with_typer('test.py', 'w')
|
||||
_open_with_typer('test.txt', 'w')
|
||||
_open_with_typer('test.html', 'w')
|
||||
_open_with_typer('test.foo', 'w')
|
||||
"""
|
Loading…
Reference in New Issue