def __init__( self, name="base", anchor="base", target=None, href=None, info=None, comment=None, extra=None, autoformat=True, autoformat_type="markdown", ): # Custom options from user config that can overwrite base module values mod_cust_config = getattr(self, "mod_cust_config", {}) self.name = mod_cust_config.get("name", name) self.anchor = mod_cust_config.get("anchor", anchor) target = mod_cust_config.get("target", target) self.href = mod_cust_config.get("href", href) self.info = mod_cust_config.get("info", info) self.comment = mod_cust_config.get("comment", comment) self.extra = mod_cust_config.get("extra", extra) # Specific module level config to overwrite (e.g. config.bcftools, config.fastqc) config.update({anchor: mod_cust_config.get("custom_config", {})}) # Sanitise anchor ID and check for duplicates self.anchor = report.save_htmlid(self.anchor) # See if we have a user comment in the config if self.anchor in config.section_comments: self.comment = config.section_comments[self.anchor] if self.info is None: self.info = "" if self.extra is None: self.extra = "" if target is None: target = self.name if self.href is not None: self.mname = '<a href="{}" target="_blank">{}</a>'.format( self.href, target) else: self.mname = target if self.href or self.info or self.extra: self.intro = "<p>{} {}</p>{}".format(self.mname, self.info, self.extra) # Format the markdown strings if autoformat: if self.comment is not None: self.comment = textwrap.dedent(self.comment) if autoformat_type == "markdown": self.comment = markdown.markdown(self.comment) self.sections = list()
def __init__(self, name='base', anchor='base', target=None, href=None, info=None, comment=None, extra=None, autoformat=True, autoformat_type='markdown'): # Custom options from user config that can overwrite base module values mod_cust_config = getattr(self, 'mod_cust_config', {}) self.name = mod_cust_config.get('name', name) self.anchor = mod_cust_config.get('anchor', anchor) target = mod_cust_config.get('target', target) href = mod_cust_config.get('href', href) info = mod_cust_config.get('info', info) self.comment = mod_cust_config.get('comment', comment) extra = mod_cust_config.get('extra', extra) # Specific module level config to overwrite (e.g. config.bcftools, config.fastqc) config.update({anchor: mod_cust_config.get('custom_config', {})}) # Sanitise anchor ID and check for duplicates self.anchor = report.save_htmlid(self.anchor) # See if we have a user comment in the config if self.anchor in config.section_comments: self.comment = config.section_comments[self.anchor] if info is None: info = '' if extra is None: extra = '' if target is None: target = self.name if href is not None: mname = '<a href="{}" target="_blank">{}</a>'.format(href, target) else: mname = target if href or info or extra: self.intro = '<p>{} {}</p>{}'.format(mname, info, extra) # Format the markdown strings if autoformat: if self.comment is not None: self.comment = textwrap.dedent(self.comment) if autoformat_type == 'markdown': self.comment = markdown.markdown(self.comment) self.sections = list()
def __init__(self, name='base', anchor='base', target=None, href=None, info=None, comment=None, extra=None, autoformat=True, autoformat_type='markdown'): # Custom options from user config that can overwrite base module values mod_cust_config = getattr(self, 'mod_cust_config', {}) self.name = mod_cust_config.get('name', name) self.anchor = report.save_htmlid( mod_cust_config.get('anchor', anchor) ) target = mod_cust_config.get('target', target) href = mod_cust_config.get('href', href) info = mod_cust_config.get('info', info) self.comment = mod_cust_config.get('comment', comment) extra = mod_cust_config.get('extra', extra) # Specific module level config to overwrite (e.g. config.bcftools, config.fastqc) config.update({anchor: mod_cust_config.get('custom_config', {})}) # See if we have a user comment in the config if self.anchor in config.section_comments: self.comment = config.section_comments[self.anchor] if info is None: info = '' if extra is None: extra = '' if target is None: target = self.name if href is not None: mname = '<a href="{}" target="_blank">{}</a>'.format(href, target) else: mname = target self.intro = '<p>{} {}</p>{}'.format( mname, info, extra ) # Format the markdown strings if autoformat: if self.comment is not None: self.comment = textwrap.dedent(self.comment) if autoformat_type == 'markdown': self.comment = markdown.markdown(self.comment) self.sections = list()
def __init__( self, name="base", anchor="base", target=None, href=None, info=None, comment=None, extra=None, autoformat=True, autoformat_type="markdown", doi=[], ): # Custom options from user config that can overwrite base module values mod_cust_config = getattr(self, "mod_cust_config", {}) self.name = mod_cust_config.get("name", name) self.anchor = mod_cust_config.get("anchor", anchor) target = mod_cust_config.get("target", target) self.href = mod_cust_config.get("href", href) self.info = mod_cust_config.get("info", info) self.comment = mod_cust_config.get("comment", comment) self.extra = mod_cust_config.get("extra", extra) self.doi = mod_cust_config.get("doi", doi) # Specific module level config to overwrite (e.g. config.bcftools, config.fastqc) config.update({anchor: mod_cust_config.get("custom_config", {})}) # Sanitise anchor ID and check for duplicates self.anchor = report.save_htmlid(self.anchor) # See if we have a user comment in the config if self.anchor in config.section_comments: self.comment = config.section_comments[self.anchor] if self.info is None: self.info = "" # Always finish with a ".", as we may add a DOI after the intro. if len(self.info) > 0 and self.info[-1] != ".": self.info += "." if self.extra is None: self.extra = "" self.doi_link = "" if type(self.doi) is str: self.doi = [self.doi] if len(self.doi) > 0: doi_links = [] for doi in self.doi: # Build the HTML link for the DOI doi_links.append( f' <a class="module-doi" data-doi="{doi}" data-toggle="popover" href="https://doi.org/{doi}" target="_blank">{doi}</a>' ) self.doi_link = '<em class="text-muted small" style="margin-left: 1rem;">DOI: {}.</em>'.format( "; ".join(doi_links)) if target is None: target = self.name if self.href is not None: self.mname = '<a href="{}" target="_blank">{}</a>'.format( self.href, target) else: self.mname = target if self.href or self.info or self.extra or self.doi_link: self.intro = "<p>{} {}{}</p>{}".format(self.mname, self.info, self.doi_link, self.extra) # Format the markdown strings if autoformat: if self.comment is not None: self.comment = textwrap.dedent(self.comment) if autoformat_type == "markdown": self.comment = markdown.markdown(self.comment) self.sections = list()