class MoinMoinEntryParser: #{{{MoinMoinEntryParser class object ''' This class contains evrything in order to parse a file using MoinMoin dervied Objects ''' def __init__(self, url = '', pybloxsom_config = None): #{{{Init method for the MoinMoinEntryParser class ''' init method for MoinMoinEntryParser Object ''' self.PREFORMATTER_ID = PREFORMATTER_ID # New MoinMoin request self.request = MoinMoinScriptContext(url) self.logger = PyblosxomTools.get_logger() self.url = url self.entryfile='' self.entrytitle = '' self.page_name = '' # Initial parser configuration if config is usable if pybloxsom_config is not None: self.pybloxsom_config = pybloxsom_config # Use moinmoin cache self.request.cacheable = self.request.use_cache = self.pybloxsom_config.get('moinmoin_use_cache', '0') == '1' #self.request.cacheable = self.request.use_cache = False # moinmoin encoding self.output_charset = self.pybloxsom_config.get('blog_encoding', 'utf-8') # We don't have the config, using default else: self.request.cacheable = False self.output_charset = 'utf-8' #}}} self.logger.debug('Moinmoin parser Object created') def create_page(self, entryfile = '', load_from_disk = True): #{{{Here we create a moinmoin page object '''Creates a new MoinMoin Page Object.''' ''' If load_from_disk is true, then the file is loaded from the disk using the entryfile as the filename. If not, we use the entryfile string as the raw file body ''' # New MoinMoinPage if load_from_disk: page_dir, self.page_name = os.path.split(entryfile) else: self.page_name = str(hashlib.md5(entryfile).hexdigest()) self.page = MoinMoinPage(self.request, page_name=self.page_name, formatter=None) # Load New page from file if load_from_disk: self.page.__body = None self.page._text_filename_force = entryfile self.logger.debug('Entry file to convert: %s' % entryfile) # Extracting page title tmp_body = self.page.get_body() self.entrytitle = tmp_body.split('\n')[0] self.page.set_raw_body(tmp_body[len(self.entrytitle)+1:]) del tmp_body else: self.page.set_raw_body(entryfile) self.logger.debug('Using data got from pyblosxom') self.page.hilite_re = None self.page.output_charset = self.output_charset self.parser = None self.formatter = None self.default_parser = 'wiki' self.output_format = u'text/html' self.request.page = self.page self.page.__pi = self.page.parse_processing_instructions() self.logger.debug('New moinmoin page created') #}}} def create_parser(self, line_anchors = False): #{{{Here we create a moinmoin paser object '''Creating parser object''' Parser = MoinMoinWikiutil.searchAndImportPlugin(self.request.cfg, 'parser', self.request.getPragma('format', self.default_parser.lower())) self.parser = Parser(self.page.get_body(), self.request, line_anchors = line_anchors) self.logger.debug('New moinmoin parser created') #}}} def create_formatter(self): #{{{Here we create a moinmoin formatter object '''Creating formatter object''' Formatter = MoinMoinWikiutil.searchAndImportPlugin(self.request.cfg, 'formatter', self.request.getPragma('output-format', self.output_format).lower()) self.formatter = Formatter(self.request) self.formatter.setPage(self.page) self.request.formatter = self.page.formatter = self.formatter self.logger.debug('New moinmoin formatter created') #}}} def parse_entry(self, content_only = 1): #{{{parsing the entry file return the result '''parse the entryfile and return the result string''' return self.request.redirectedOutput(self.page.send_page,content_id=self.page_name, content_only = content_only, do_cache=self.request.cacheable)