REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 3.83 KB
Close
//opt/cloudlinux/venv/lib/python3.11/site-packages/guppy/gsl/Filer.py
Text
Base64
""" Handles filing of data from low-level gsl filing and data records. """ class Filer: def __init__(self, mod, node): self.mod = mod self.writefile_envs = [] self.writefile_names = {} node.accept(self) def visit_file(self, node): node.children_accept(self) visit_string = visit_file def visit_write_file(self, node): name = node.arg if name in self.writefile_names: raise SyntaxError('Duplicate file name: %r' % name) self.writefile_names[name] = node self.writefile_envs.append(WriteFile(self, node)) def get_info(self): infos = [] for e in self.writefile_envs: infos.append('write file: %s' % e.file_name) return '\n'.join(infos) def write(self): for e in self.writefile_envs: e.write() class WriteFile: node_data = None node_mode = None def __init__(self, filer, node): self.filer = filer self.mod = mod = filer.mod self.node_file = node self.file_name = node.arg node.children_accept(self) if self.node_data is None: data = '' else: data = self.node_data.arg self.data = data if self.node_mode is None: mode = '' else: mode = self.node_mode.arg self.mode = mode def visit_text(self, node): self.set_single('node_data', node) def visit_end(self, node): self.set_single('node_end', node) def visit_mode(self, node): self.set_single('node_mode', node) def set_single(self, name, node): if getattr(self, name, None) is not None: raise SyntaxError('Duplicate %r at index %r' % (name, node.index)) setattr(self, name, node) node.children_accept(self, 'no_node_expected') def write(self): IO = self.mod.IO if self.mod.backup_suffix: backup_name = self.file_name + self.mod.backup_suffix if IO.access(self.file_name, IO.R_OK | IO.W_OK): IO.rename(self.file_name, backup_name) IO.write_file(self.file_name, self.data) class _GLUECLAMP_: _imports_ = ( '_parent.FileIO:IO', ) _setable_ = 'backup_suffix', # Files that are to be overwritten are renamed by # adding backup_suffix to the name. This is no substitute for a # versioning system but a last precaution, especially while I am # developing the system. # Set this to None to disable backuping. backup_suffix = ',gsl-backuped' syntax_gsl = ''' .tag writefile ''' def filer(self, node): return Filer(self, node) def _test_main_(self): IO = self.IO N = self._parent.SpecNodes tempdir = IO.mkdtemp() tempname = IO.path.join(tempdir, 'x') data = 'hello' try: X = ''' .write file: %s ..text %s ..end ''' % (tempname, data) node = N.node_of_string(X) f = self.filer(node) assert f.get_info() == 'write file: %s' % tempname f.write() d = IO.read_file(tempname) assert d == data # Test multiple files and backup # And that we can do without ..data / ..end data2 = 'hello2\n' data3 = '\nhello3' X = ''' .write file: %s ..text %s .write file: %s ..text %s ..end ''' % (tempname, data2, tempname+'.3', data3) node = N.node_of_string(X) f = self.filer(node) f.write() assert IO.read_file(tempname+self.backup_suffix) == data d = IO.read_file(tempname) assert d == data2 assert IO.read_file(tempname+'.3') == data3 finally: for name in IO.listdir(tempdir): IO.remove(IO.path.join(tempdir, name)) IO.rmdir(tempdir)
Save
Close
Exit & Reset
Text mode: syntax highlighting auto-detects file type.
Directory Contents
Dirs: 1 × Files: 15
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
__pycache__
DIR
-
drwxr-xr-x
2026-02-06 08:01:08
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Document.py
57.55 KB
lrw-r--r--
2026-01-20 13:01:48
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
DottedTree.py
8.58 KB
lrw-r--r--
2026-01-20 13:01:48
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Exceptions.py
402 B
lrw-r--r--
2026-01-20 13:01:48
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
FileIO.py
2.60 KB
lrw-r--r--
2026-01-20 13:01:48
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Filer.py
3.83 KB
lrw-r--r--
2026-01-20 13:01:48
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Gsml.py
2.69 KB
lrw-r--r--
2026-01-20 13:01:48
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Help.py
1018 B
lrw-r--r--
2026-01-20 13:01:48
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Html.py
17.46 KB
lrw-r--r--
2026-01-20 13:01:48
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Latex.py
25.16 KB
lrw-r--r--
2026-01-20 13:01:48
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Main.py
66.91 KB
lrw-r--r--
2026-01-20 13:01:48
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
SpecNodes.py
18.48 KB
lrw-r--r--
2026-01-20 13:01:48
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Tester.py
23.99 KB
lrw-r--r--
2026-01-20 13:01:48
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Text.py
31.13 KB
lrw-r--r--
2026-01-20 13:01:48
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
XHTML.py
18.38 KB
lrw-r--r--
2026-01-20 13:01:48
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.py
53 B
lrw-r--r--
2026-01-20 13:01:48
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).