David Bolen <db3l at fitlinxx.com>: >As long as you realize the potential maintenance "expense" of this >approach as your code will no longer clearly identify where such >objects came from We're talking about small scripts here, so the expense is quite small. You could say they are executed in a limited environment, or "sandbox". Runtime constants and functions are clearly documented. One is supposed to be able to use them without any knowledge of the internal structure of my program. >But we could also just agree to disagree on the "handiness" of >referencing an imported object including the module name. It does >help your original issue though since everything would reference the >same object in the loaded constant module. I solved the original problem this way: def execCode(self, code, outFile): if not code: return import runtime runtime._setRuntime(self, outFile) for name in dir(runtime): if name[0]!='_': exec '%s = runtime.%s' % (name, name) sys.stdout = outFile exec 'pass' exec code+'\n' sys.stdout = sys.__stdout__ Example script could be: if len(pages)>1: print '<!-- Navigation bar -->' print '<table class="navbar">' print '<tr>' columns = len(pages) for p in pages: print '<td width="'+str(100/columns)+'%"', if p.file==page.file: print 'class="active"', print '><a href="'+p.file+'">'+p.title+'</a></td>' print '</table>' print '<hr>\\n' This prints a navigation bar for a "flat" HTML page structure. page is current page and pages is the list of all pages. The naming of constants could be better, I haven't given it much thought. -- Kristian Ovaska <kristian.ovaska at helsinki.fi>
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4