Esempio n. 1
0
    def test_new_code_reference_link(self):
        md_file = MdUtils(file_name="Test_file", title="")
        text = "mdutils library"
        reference_tag = "mdutils library"
        expected_value = '[``' + text + '``][' + reference_tag + ']'
        created_value = md_file.new_reference_link(
            link="https://github.com/didix21/mdutils",
            text=text,
            reference_tag=reference_tag,
            bold_italics_code='c')

        self.assertEqual(expected_value, created_value)
Esempio n. 2
0
def write_league_md(league, my_ros_dudes, my_ros_ranks, unowned_ros_dudes,
                    unowned_ros_ranks, def_advice, kick_advice, weekly_team,
                    weekly_tiers, potential_stream_names, potential_stream_pos,
                    potential_stream_tiers, starters):
    from mdutils.mdutils import MdUtils

    md_file = 'league_' + league['nickname'].replace(' ', '')
    mdFile = MdUtils(file_name=md_file, title=league['nickname'])

    mdFile.new_header(level=2,
                      title='ROS Valuations',
                      add_table_of_contents='n')

    mdFile.new_header(level=3, title='Your Roster', add_table_of_contents='n')
    list_of_strings = ["Player", "Value"]
    for p, v in zip(my_ros_dudes, my_ros_ranks):
        list_of_strings.extend([p, str(v)])
    mdFile.new_table(columns=2,
                     rows=int(len(list_of_strings) / 2),
                     text=list_of_strings,
                     text_align='center')

    mdFile.new_header(level=3,
                      title='Available Free Agents',
                      add_table_of_contents='n')
    list_of_strings = ["Player", "Value"]
    for p, v in zip(unowned_ros_dudes, unowned_ros_ranks):
        list_of_strings.extend([p, str(v)])
    mdFile.new_table(columns=2,
                     rows=int(len(list_of_strings) / 2),
                     text=list_of_strings,
                     text_align='center')

    mdFile.new_header(level=2, title='Weekly Tiers', add_table_of_contents='n')
    mdFile.new_header(level=3,
                      title='Suggested Starting Lineup',
                      add_table_of_contents='n')
    mdFile.new_header(level=3,
                      title='Substitutions Necessary',
                      add_table_of_contents='n')
    mdFile.new_header(level=3,
                      title='Skill Streams Available',
                      add_table_of_contents='n')

    mdFile.new_header(level=2,
                      title='Weekly Streaming Advice',
                      add_table_of_contents='n')
    mdFile.new_header(level=3, title='Defenses', add_table_of_contents='n')
    mdFile.new_header(level=3, title='Kickers', add_table_of_contents='n')

    mdFile.create_md_file()

    return md_file
Esempio n. 3
0
def create_markdown(region):
    """ Create markdown file which Kevin's figures are embedded. """
    region_short = regionNames[region]
    mdFile = MdUtils(file_name=today)
    mdFile.new_line('---')
    mdFile.new_line(f'title: \"{today}\"')
    mdFile.new_line(f'date: "{today}"')
    mdFile.new_line('description: "Some amazing findings in here!"')
    mdFile.new_line(f'region: "{region}"')
    mdFile.write('\n---\n')
    mdFile.new_paragraph(
        '**Figure 1.** The non-residential mobility index is a measure of the average amount of time spent outside of home, based on smartphone mobility data (the index is scaled so that levels in the baseline period from Jan 3 to Feb 6, 2020 represent 100).'
    )
    # <img src="mobilityAlone_1yr.png" style="width:2400px;height:1200px"/>
    img_path = f"/figures/{region_short}/{today}/mobilityAlone_1yr.png"
    width1, height1 = get_img_size(img_path)
    mdFile.new_paragraph(
        Html.image(path=img_path, size=f'{width1}x{height1}', align='center'))
    mdFile.new_paragraph(
        f'**Figure 2.** Association between non-residential mobility and COVID-19 case growth across 7 Canadian provinces, March 15, 2020 to {today_text}.'
    )

    img_2_path = f"/figures/{region_short}/{today}/mobility_byMonth.png"
    width2, height2 = get_img_size(img_2_path)
    mdFile.new_paragraph(
        Html.image(path=img_2_path, size=f'{width2}x{height2}',
                   align='center'))

    mdFile.new_paragraph(
        'Weekly COVID-19 growth rate (Y = cases in given week / cases in prior week) is strongly associated with the non-residential mobility in the prior 2-week period (X). The point where the regression line (black) crosses the line representing no COVID-19 case growth (red line) is the average Canadian mobility threshold. The Canadian mobility threshold is lower in spring, fall and winter of 2020, compared to the summer of 2020.',
        align="center")
    mdFile.new_paragraph(
        f'**Figure 3.** Left panel: Variation in mobility (circles) and the estimated mobility threshold (purple dash), for 5 Canadian provinces with the most cases, March 15, 2020 to {today_text}, 2021. Right panel: Association between mobility gap and COVID-19 growth rate.'
    )
    img_3_path = f"/figures/{region_short}/{today}/mobilityGap_both.png"
    width3, height3 = get_img_size(img_3_path)
    mdFile.new_paragraph(
        Html.image(path=img_3_path, size=f'{width3}x{height3}',
                   align='center'))

    mdFile.new_paragraph(
        'The mobility threshold is the estimated level of mobility needed to control COVID-19 case growth. This threshold is highest in summer and in less populated provinces. When mobility decreased below the mobility threshold (blue dots), weekly COVID-19 cases counts decreased. In November 2020, Manitoba was the only province that implemented a lockdown that had successfully crossed the mobility threshold and has led to reductions in COVID-19 case growth. Other provinces waited until December 2020.',
        align="center")
    mdFile.create_md_file()
    Path(f'{today}.md').rename(
        f'./web_output/reports/{region_short}/{today}.md')

    with open(f'./web_output/reports/{region_short}/{today}.md', "r") as f:
        lines = f.readlines()
    with open(f'./web_output/reports/{region_short}/{today}.md', "w") as f:
        for line in lines[4:]:
            f.write(line)
def generate_report():
    report = MdUtils(file_name=f'./report.md')
    report.new_header(level=1, title='Выделение признаков символов')
    report.new_line(text='Выполнил Ахманов Алексей Б18-514')
    report.new_line(text=f'Алфавит - {ALPHABET}')

    for letter in ALPHABET:
        letter_folder_path = f'./{folder_helper.IMAGES_FOLDER_PATH}/letter_{letter}'
        os.makedirs(letter_folder_path, exist_ok=True)
        letter_image_path = f'{letter_folder_path}/{letter}.png'
        letter_image = Image.new(mode=constants.GRAYSCALE_MODE, size=(FONT_SIZE, FONT_SIZE), color=WHITE)
        result = ImageDraw.Draw(im=letter_image, mode=constants.GRAYSCALE_MODE)
        result.text(xy=(0, 0), text=letter, font=FONT, fill=0, anchor='lt')
        letter_image = cut_empty_rows_and_cols(letter_image)
        letter_image.save(letter_image_path)
        report.new_header(level=2, title=f'Буква {letter}')
        report.new_line(report.new_inline_image(text=letter, path=letter_image_path))
        thresholded = simple_threshold(letter_image, 100)
        report.new_line(text=f'Вес черного - {black_weight(thresholded)}')
        report.new_line(text=f'Удельный вес черного - {normalized_black_weight(thresholded)}')
        center = gravity_center(thresholded)
        report.new_line(text=f'Координаты центра масс - ({center[0]}, {center[1]})')
        normalized_center = normalized_gravity_center(thresholded)
        report.new_line(text=f'Нормированные координаты центра масс - ({normalized_center[0]}, {normalized_center[1]})')
        report.new_line(text=f'Центральный горизонтальный осевой момент - {central_horizontal_axial_moment(thresholded)}')
        report.new_line(text=f'Центральный вертикальный осевой момент - {central_vertical_axial_moment(thresholded)}')
        report.new_line(text=f'Нормированный центральный горизонтальный осевой момент -'
                             f'{normalized_central_horizontal_axial_moment(thresholded)}')
        report.new_line(text=f'Нормированный центральный вертикальный осевой момент -'
                             f'{normalized_central_vertical_axial_moment(thresholded)}')

        h_levels, h_projections = horizontal_projection(thresholded)
        pyplot.plot(h_levels, h_projections)
        pyplot.title(f'Horizontal projection {letter}')
        path = f'{letter_folder_path}/horizontal_projection_{letter}.png'
        pyplot.savefig(path)
        pyplot.close()

        report.new_line(report.new_inline_image(text=letter, path=path))

        v_levels, v_projections = vertical_projection(thresholded)
        pyplot.plot(v_levels, v_projections)
        pyplot.title(f'Vertical projection {letter}')
        path = f'{letter_folder_path}/vertical_projection_{letter}.png'
        pyplot.savefig(path)
        pyplot.close()

        report.new_line(report.new_inline_image(text=letter, path=path))

        report.new_line()

    report.create_md_file()
Esempio n. 5
0
    def test_create_default_table(self):
        md_file = MdUtils("file_name")
        table = Table()
        result_table = '\n|**Test**|**Descripción**|**Estado**|\n| --- | --- | --- ' \
                       '|\n|Test 1|Carga de configuración correcta|<font color="green">OK</font>|\n' \
                       '|Test 2|Lectura de Configuración|<font color="red">NOK</font>|\n' \
                       '|Test 3|Lectura de Soporte|<font color="green">OK</font>|\n' \
                       '|Test 4|Modificación de entradas y lectura de salidas de cantón|<font color="green">' \
                       'OK</font>|'\
                       '\n|Test 5|Lectura de estados de Pedal de Rearme y Aviso|<font color="green">OK</font>|\n' \
                       '|Test 6|Actualización de datos de unidades de vía|<font color="green">OK</font>|\n' \
                       '|Test 7|Fallos en carga de configuración - Campo IdApp Erróneo|<font color="green">' \
                       'OK</font>|' \
                       '\n' \
                       '|Test 8|Fallos en carga de configuración - Campo VersTAbla Erróneo' \
                       '|<font color="red">NOK</font>|'\
                       '\n|Test 9|Fallos en carga de configuración - Campo IdUc Erróneo|<font color="red">' \
                       'NOK</font>|' \
                       '\n|Test 10|Fallos en carga de configuración - Campo Addresses Erróneo' \
                       '|<font color="red">NOK</font>|\n' \
                       '|Test 11|Fallos en carga de configuración - Campo NumTc Erróneo' \
                       '|<font color="red">NOK</font>|\n' \
                       '|Test 12|Fallos en carga de configuración - Campo NumUv Erróneo' \
                       '|<font color="red">NOK</font>|\n' \
                       '|Test 13|Fallos en carga de configuración - Campo CRC Erróneo|<font color="red">NOK</font>|\n'

        text_array = ['**Test**', '**Descripción**', '**Estado**',
                      'Test 1', 'Carga de configuración correcta', md_file.textUtils.text_color("OK", 'green'),
                      'Test 2', 'Lectura de Configuración', md_file.textUtils.text_color("NOK", 'red'),
                      'Test 3', 'Lectura de Soporte', md_file.textUtils.text_color("OK", 'green'),
                      'Test 4', 'Modificación de entradas y lectura de salidas de cantón',
                      md_file.textUtils.text_color("OK", 'green'),
                      'Test 5', 'Lectura de estados de Pedal de Rearme y Aviso',
                      md_file.textUtils.text_color("OK", 'green'),
                      'Test 6', 'Actualización de datos de unidades de vía',
                      md_file.textUtils.text_color("OK", 'green'),
                      'Test 7', 'Fallos en carga de configuración - Campo IdApp Erróneo',
                      md_file.textUtils.text_color("OK", 'green'),
                      'Test 8', 'Fallos en carga de configuración - Campo VersTAbla Erróneo',
                      md_file.textUtils.text_color("NOK", 'red'),
                      'Test 9', 'Fallos en carga de configuración - Campo IdUc Erróneo',
                      md_file.textUtils.text_color("NOK", 'red'),
                      'Test 10', 'Fallos en carga de configuración - Campo Addresses Erróneo',
                      md_file.textUtils.text_color("NOK", 'red'),
                      'Test 11', 'Fallos en carga de configuración - Campo NumTc Erróneo',
                      md_file.textUtils.text_color("NOK", 'red'),
                      'Test 12', 'Fallos en carga de configuración - Campo NumUv Erróneo',
                      md_file.textUtils.text_color("NOK", 'red'),
                      'Test 13', 'Fallos en carga de configuración - Campo CRC Erróneo',
                      md_file.textUtils.text_color("NOK", 'red')]

        self.assertEqual(table.create_table(columns=3, rows=14, text=text_array), result_table)
Esempio n. 6
0
 def test_insert_code(self):
     md_file = MdUtils(file_name='Test_file')
     code = ("mdFile.new_header(level=1, title='Atx Header 1')\n"
             "mdFile.new_header(level=2, title='Atx Header 2')\n"
             "mdFile.new_header(level=3, title='Atx Header 3')\n"
             "mdFile.new_header(level=4, title='Atx Header 4')\n"
             "mdFile.new_header(level=5, title='Atx Header 5')\n"
             "mdFile.new_header(level=6, title='Atx Header 6')\n")
     expects = '\n\n```\n' + code + '\n```'
     self.assertEqual(md_file.insert_code(code), expects)
     language = 'python'
     expects = '\n\n```' + language + '\n' + code + '\n```'
     self.assertEqual(md_file.insert_code(code, language), expects)
Esempio n. 7
0
    def test_new_reference_link_when_reference_tag_not_defined_and_align_is_defined(
            self):
        md_file = MdUtils(file_name="Test_file", title="")
        text = "mdutils library"
        try:
            md_file.new_reference_link(
                link="https://github.com/didix21/mdutils",
                text=text,
                align='center')
        except TypeError:
            return

        self.fail()
Esempio n. 8
0
    def test_new_header(self):
        file_name = 'Test_file'
        md_file = MdUtils(file_name)
        string_headers_expected = "\n# Header 0\n\n## Header 1\n\n### Header 2\n\n#### Header 3\n\n" \
                                  "##### Header 4\n\n###### Header 5\n"
        string_headers = ""
        for x in range(6):
            string_headers += md_file.new_header(level=(x + 1), title='Header ' + str(x), style='atx')

        self.assertEqual(string_headers, string_headers_expected)
        md_file.create_md_file()
        file_result = md_file.read_md_file(file_name)
        self.assertEqual(file_result, '\n\n\n' + string_headers_expected)
Esempio n. 9
0
def generateReadme():
    mdFile = MdUtils(file_name="LOCAL_README.md")
    mdFile.new_header(level=1, title="Compilation Of DSC-RAIT resources")
    mdFile.new_paragraph(
        "This is a ``README.md`` file generated by asmrPy to test it's capabilities. Stay tuned for more updates!"
    )
    for d in db.resources.find():
        mdFile.new_header(level=2, title=d['domain'])
        for l in d['links']:
            mdFile.new_paragraph(text=f"{l['info']}: {l['link']}")
    mdFile.create_md_file()
    text = mdFile.read_md_file(file_name="LOCAL_README.md")
    return text
Esempio n. 10
0
 def create_markdown(file_path, title):
     mdFile = MdUtils(file_name=file_path, title= title)
     
     mdFile.new_line("  [@wikidata:" + wd_id + "]")
     mdFile.new_line() 
     mdFile.new_header(1, "Highlights")
     mdFile.new_header(1, "Comments")
     mdFile.new_header(1, "Links")
     mdFile.new_line(" * [Scholia Profile](https://scholia.toolforge.org/work/" + wd_id + ")")
     mdFile.new_line(" * [Wikidata](https://www.wikidata.org/wiki/" + wd_id + ")")
     mdFile.new_line(" * [TABernacle](https://tabernacle.toolforge.org/?#/tab/manual/" + wd_id + "/P921%3BP4510)")
     mdFile.new_line() 
     mdFile.create_md_file()
Esempio n. 11
0
 def _write_action_group_page(self, action_group: ActionGroup):
     group_path = f'{self.tool_prefix}/{action_group.name}'
     md = MdUtils(file_name=group_path, title=action_group.name)
     writer = Writer(md)
     writer.write_description(action_group.description)
     writer.write_command_usage(self, action_group=action_group)
     self._write_tool_command_arguments_and_options(writer)
     writer.write_actions_table(action_group.actions,
                                action_group=action_group)
     md.create_md_file()
     os.makedirs(group_path, exist_ok=True)
     for action in action_group.actions:
         self._write_action_page(action, action_group=action_group)
Esempio n. 12
0
def run(username, name, job, company, accounts):

    mdFile = MdUtils(file_name='README', title=title)

    add_introduction(mdFile, username, name, job, company)

    add_analytics(mdFile, username)

    if accounts is not None:
        add_accounts_url(mdFile, accounts)

    mdFile.create_md_file()

    print('✅ Github profile README.md file created successfully for {}'.format(
        username))
def create_file(files):
    data = get_data(files)
    md_file = MdUtils(file_name='repositories')
    md_file.new_header(level=1, title='Repositories')
    grouped_by_type = groupby(data, key=itemgetter('type'))
    for key, value in grouped_by_type:
        value_sorted = sorted(value, key=lambda x: x['name'])
        md_file.new_header(level=2, title=key)
        if key == 'Reading':
            write_reading_entries(value_sorted, md_file)
        else:
            for item in value_sorted:
                write_item(item, md_file)
        md_file.new_line()
    md_file.create_md_file()
Esempio n. 14
0
    def create_report(self, reports, sorted_tools):
        outfile = f"{self.outdir}/reports/Report.md"
        title = f"PENSEC - Report of {self.target.hostname}"
        reportfile = MdUtils(file_name=outfile, title=title)

        # "Execute Summary"
        reportfile.new_header(level=3, title="Common Statistics")
        for tool in sorted_tools:
            tool.write_report_summary(reportfile, reports)
        # "Technical Details"
        for tool in sorted_tools:
            tool.write_report(reportfile, reports)

        reportfile.create_md_file()
        self.logger.info("Report saved in " + outfile)
Esempio n. 15
0
def run(username, name, job, company, hardskills, accounts):
    mdFile = MdUtils(file_name='README', title=title)

    add_introduction(mdFile, username, name, job, company)

    if hardskills is not None:
        add_hardskills(mdFile, hardskills)

    add_analytics(mdFile, username)

    if accounts is not None:
        add_accounts_url(mdFile, accounts)

    mdFile.create_md_file()

    print('\nтЬЕ \033[1mGithub profile README.md file created successfully for {} user!\033[0m'.format(username))
Esempio n. 16
0
 def _write_action_page(self,
                        action: Action,
                        action_group: Optional[ActionGroup] = None):
     group_str = f'{action_group.name}/' if action_group else ''
     md = MdUtils(
         file_name=f'{self.tool_prefix}/{group_str}{action.action_name}',
         title=action.action_name)
     writer = Writer(md)
     writer.write_description(action.description)
     writer.write_command_usage(self,
                                action_group=action_group,
                                action=action)
     writer.write_arguments(f'action `{action.action_name}`',
                            action.optional_args, action.required_args)
     self._write_tool_command_arguments_and_options(writer)
     md.create_md_file()
    def init_report(self):
        """
        Prepares report directory for report content
        """

        # Dir where the per-product-version report is kept
        prodver_report_dir = self.report_dir / self.product / self.version
        logger.debug(f"Initializing report dir {prodver_report_dir}")
        prodver_report_dir.mkdir(parents=True, exist_ok=True)

        # The per-product-version report markdown file itself
        self.report_index = MdUtils(
            file_name=str(prodver_report_dir / "README"),
            title=f"Vulnerability Report for {self.product} {self.version}")

        # Initialize license table headers
        self.vuln_table = [
            "Component", f"Vulnerability{'&nbsp;' * 15}", "Source Location"
        ]
Esempio n. 18
0
def generate_singular_templates(bib_data):
    """
    Parses a .bibtex file and creates a singular
    markdown write-up template for each entry.

    Args:
        bib_data: A pybtex parsed file

    Returns:
        Outputs singular markdown write-up templates

    """

    for entry in tqdm(bib_data.entries.values()):
        title = entry.fields['title']
        year = entry.fields['year']
        url = entry.fields['url']

        authors = str(entry.persons['author'][0])

        if 'journal' in entry.fields:
            journal = entry.fields['journal']

        file_name = authors.lower() + '-' + str(year)
        if 'journal' in locals():
            title = authors + ', ' + title + ', ' + year + ', ' + journal
        else:
            title = authors + ', ' + title + ', ' + year

        mdfile = MdUtils(file_name=file_name, title=title)

        # Add the correct header information
        mdfile.new_header(level=1, title='TLDR')
        mdfile.new_header(level=1, title='Links')
        mdfile.new_line('Paper - ' +
                        mdfile.new_inline_link(text='Link to Paper', link=url))
        mdfile.new_header(level=1, title='Summary')
        mdfile.new_header(level=1, title='Comments')
        mdfile.new_header(level=1, title='Reference')

        mdfile.insert_code(entry.to_string(bib_format='bibtex'))

        mdfile.create_md_file()
Esempio n. 19
0
def gen_kwargs_markdown(mapping: T_HandlerKwargMapping,
                        output_file_path: str,
                        extra_head: str = ""):
    md_file = MdUtils(file_name=output_file_path)

    if extra_head:
        md_file.write(extra_head)

    md_file.new_header(level=1, title="")

    for event_name, kwargs in mapping.items():
        md_file.new_header(level=2, title=event_name)

        parameter_table = ["参数名称", "类型"]

        for kwarg in kwargs:

            row = [kwarg.name]

            if isinstance(kwarg.type_, str):
                row.append(kwarg.type_)
            else:
                # if get_origin(parameter.annotation) is Union:
                #     # group_msg = group_message
                #     continue

                row.append(kwarg.type_)

            parameter_table.extend(row)

        # debug(parameter_table)

        if len(parameter_table) > 2:
            md_file.new_table(
                columns=2,
                rows=int(len(parameter_table) / 2),
                text=parameter_table,
                text_align="center",
            )

    md_file.create_md_file()
    print(f"成功生成{output_file_path}文件")
Esempio n. 20
0
 def createMdFromSqlTable(self, sqlTableFieldDescData, mdTableDesc=None):
     """
     Args:
         sqlTableFieldDescData (list) : Should use the result of sqlConn.selectTable(sqlConn.fieldDescQuery) where sqlConn is type of class : SqlConn.
     
         Markdown table description (dict) which is
             {
                 tableName : list of strings (list)
                 ,... 
             }
         
     """
     mdTableDesc = self.getMdTableDesc() if not mdTableDesc else mdTableDesc
     tableNameSet = set()
     resultDict = {}
     for item in sqlTableFieldDescData:
         if item[0] not in tableNameSet:
             tableNameSet.add(item[0])
             resultDict[item[0]] = []
         originalDesc = {}
         if item[0] in mdTableDesc:
             originalDesc = mdTableDesc[item[0]]['columnDescSet']
         pk = item[1]
         colName = item[2]
         colChName = originalDesc[
             item[2]][0] if item[2] in originalDesc else ''
         dataType = item[3]
         notNull = item[4]
         desc = originalDesc[item[2]][1] if item[2] in originalDesc else ''
         resultDict[item[0]].extend(
             [pk, colName, colChName, dataType, notNull, desc])
     for tableName, contentList in resultDict.items():
         mdFile = MdUtils(self.path + 'SQL-Table-' + tableName)
         rowList = [
             'PrimaryKey', '欄位名稱', '欄位中文名稱', '欄位類型', 'NOT NULL', '詳細說明'
         ]
         rowList.extend(contentList)
         mdFile.new_table(columns=6,
                          rows=int(len(rowList) / 6),
                          text=rowList,
                          text_align='center')
         mdFile.create_md_file()
Esempio n. 21
0
    def init_reports(self):
        """
        Prepares report directory for report content
        """

        # Dir where global license info is kept
        self.lic_data_dir = self.report_dir / "license-data"
        self.lic_data_dir.mkdir(exist_ok=True)

        # Dir where the per-product-version report is kept
        prodver_report_dir = self.report_dir / self.product / self.version
        prodver_report_dir.mkdir(parents=True, exist_ok=True)

        # The per-product-version report markdown file itself
        self.report_index = MdUtils(
            file_name=str(prodver_report_dir / "README"),
            title=f"Suspect License Report for {self.product} {self.version}")

        # Initialize license table headers
        self.lic_table = ["Component", "Version", "License(s)"]
Esempio n. 22
0
    def test_new_reference_image_markdown_data(self):
        md_file = MdUtils(file_name="Test_file", title="")
        expected_image_1 = '![image_1][reference]'
        expected_image_2 = '![image_2]'
        image_1 = md_file.new_reference_image(text='image_1', path='../image.png', reference_tag="reference")
        image_2 = md_file.new_reference_image(text='image_2', path='../image_2.png')

        expected_created_data = "\n\n\n" \
                                "  \n{}".format(expected_image_1) + \
                                "  \n{}".format(expected_image_2) + \
                                "\n\n\n" \
                                "[image_2]: ../image_2.png\n" \
                                "[reference]: ../image.png\n"

        md_file.new_line(image_1)
        md_file.new_line(image_2)
        md_file.create_md_file()

        actual_created_data = MarkDownFile.read_file("Test_file")

        self.assertEqual(expected_created_data, actual_created_data)
Esempio n. 23
0
def makeMd():
    main()
    lastDate = 0
    lastMonth = 0
    lastYear = 0
    lastTime = ""
    os.chdir(saveLocation)
    mdOutputLocation = saveLocation + 'logbook.md'
    if os.path.exists(mdOutputLocation): #If file output.txt exists, remove it. If it doesn't, create it
        os.remove(mdOutputLocation)

    mdFile = MdUtils(file_name='logbook',title='My Logbook')
    with open(outputFileLocation, "r") as textDoc:
        lines = textDoc.readlines()
    for line in lines:
        firstTwoDigits = line[:2]
        if firstTwoDigits.isdigit():

            date = line[:2]
            month = line[3:5]
            year = line[6:10]
            lastTime = line[11:19]

            if year != lastYear:
                mdFile.new_header(level=1, title=year)
                lastYear = year

            if month != lastMonth:
                monthWorded = monthToWords(month)
                mdFile.new_header(level=2, title=monthWorded)
                lastMonth = month

            if date != lastDate:
                mdFile.new_header(level=3, title=date)
                lastDate = date
        if (firstTwoDigits.isdigit() == False) and (line != "\n"):
            entryContent = lastTime + " - " + line
            mdFile.new_paragraph(entryContent)
    mdFile.create_md_file()
    print("md file created")
Esempio n. 24
0
def publish_event_page(logs, website_src_path):
    # Generate the about file.
    mdFile = MdUtils(
        file_name=os.path.join(website_src_path, "content", "log"),
        title="Container Event Logging",
    )

    status_table = ["Container Action", "Time (UTC)"]
    for entry in logs:
        container_status = (("~~" +
                             entry[0].attrs["Config"]["Image"].split("/")[0] +
                             "~~") if entry[2] == "destroyed" else
                            ("**" +
                             entry[0].attrs["Config"]["Image"].split("/")[0] +
                             "**"))
        status_table.extend([
            container_status,
            strf_time_diff(datetime.now(), entry[1]) + " ago"
        ])
    mdFile.new_line()

    mdFile.new_table(columns=2,
                     rows=len(logs) + 1,
                     text=status_table,
                     text_align="center")

    mdFile.new_header(level=5, title="Status Update Time")

    tz_table = ["TZ", "Time"]
    for city, tz in timezones.items():
        tz_table.extend([city, datetime.now().astimezone(tz).strftime(fmt)])

    mdFile.new_table(columns=2,
                     rows=len(timezones) + 1,
                     text=tz_table,
                     text_align="center")

    mdFile.create_md_file()

    return None
Esempio n. 25
0
def create_md_result_file(path, rucksack, timestamp, result_uuid):
    dir_result = os.path.join(path, f"{result_uuid}-result.md")
    md_file = MdUtils(file_name=dir_result, title='Orbis Experiment')
    md_file.new_line("Your Experiments are completed")
    md_file.new_line("Metadata link: " + md_file.new_inline_link(
        link=f"{result_uuid}-rooksack.json"))
    md_file.new_line()
    result = rucksack.result_summary()
    if "binary_classification" in result:
        values = result["binary_classification"]
        result_rows = [
            "Annotator", "Dataset", "Micro F1 score", "Micro Precision",
            "Micro Recall", "Macro F1 score", "Macro Precision",
            "Macro Recall", "Total True Positive", "Total False Positive",
            "Total False Negative", "Total Items", "Entities", "Timestamp",
            "Orbis Version"
        ]
        result_rows.extend([
            rucksack.config['aggregation']['service']['name']
            if 'aggregation' in rucksack.config else 'None',
            rucksack.config['aggregation']['input']['data_set']['name']
            if 'aggregation' in rucksack.config else 'None',
            f"{values['micro']['f1_score']:.4f}",
            f"{values['micro']['recall']:.4f}",
            f"{values['micro']['precision']:.4f}",
            f"{values['macro']['f1_score']:.4f}",
            f"{values['macro']['recall']:.4f}",
            f"{values['macro']['precision']:.4f}", f"{values['total_tp']:.4f}",
            f"{values['total_fp']:.4f}", f"{values['total_fn']:.4f}",
            f"{values['total_item_sum']:.4f}", " ".join(values['entities']),
            timestamp, orbis_version
        ])
        md_file.new_table(columns=15,
                          rows=2,
                          text=result_rows,
                          text_align='center')
    else:
        md_file.new_line("No results!!!")

    md_file.create_md_file()
Esempio n. 26
0
 def report(self, reports):
     report_dict = reports[Tool.Dependencies.NMAP_SERVICES]
     self.logger.info("Creating report for " + self.name)
     obj = {}
     for f in self.files:
         with open(f, "r") as scanfile:
             for s in scanfile.read().split("\n\n")[:-1]:
                 scan = json.loads(s)
                 if 'RESULTS_EXPLOIT' in scan and 'SEARCH' in scan:
                     obj[scan["SEARCH"]] = {
                         "exploits": scan["RESULTS_EXPLOIT"]
                     }
     #temp
     outfile = f"{self.reportdir}/{self.name}.md"
     title = f"PENSEC - {self.name.capitalize()} Report"
     reportfile = MdUtils(file_name=outfile, title=title)
     reportfile.new_header(level=1, title="Common Statistics")
     reportfile.new_paragraph(f"X exploits found\n")
     reportfile.create_md_file()
     self.logger.info("Report saved in " + outfile)
     #report_dict["searchsploit_info"] = obj
     return obj
Esempio n. 27
0
def publish_status_page(running_containers, website_src_path):
    # Generate the about file.
    mdFile = MdUtils(
        file_name=os.path.join(website_src_path, "content", "status"),
        title="System Status",
    )

    status_table = ["Container", "Status"]
    for container in sorted(
            running_containers,
            key=lambda c: c.attrs["Config"]["Image"].split("/")[0]):
        status_table.extend([
            container.attrs["Config"]["Image"].split("/")[0],
            container.attrs["State"]["Status"],
        ])
    mdFile.new_line()

    mdFile.new_table(
        columns=2,
        rows=len(running_containers) + 1,
        text=status_table,
        text_align="center",
    )

    mdFile.new_header(level=5, title="Status Update Time")

    tz_table = ["TZ", "Time"]

    for city, tz in timezones.items():
        tz_table.extend([city, datetime.now().astimezone(tz).strftime(fmt)])

    mdFile.new_table(columns=2,
                     rows=len(timezones) + 1,
                     text=tz_table,
                     text_align="center")

    mdFile.create_md_file()

    return None
Esempio n. 28
0
def initialize_doc(linkdict = None):
    """Initializes a markdown document in docs/script_docs named after this script with a correctly updated date. 

    :param linkdict: A dictionary with keys in [prev,next,parent]. The corresponding values are the names of the files that we should link to, which are assumed to exist in the script docs directory. Do not provide the .md extension. 
    :returns: a mdutils mdfile object. Must be written (invoke `mdfile.create_md_file`) in order to manifest a real file. 
    """
    filename = pathlib.Path(__main__.__file__).stem 
    mdFile = MdUtils(file_name = os.path.join(pathname,filename),title = "Script documentation for file: "+ filename+", Updated on:" +str(datetime.datetime.now()))
    if linkdict is not None:
        mdFile.write(" \n")
        linklocs = OrderedDict([("parent","left"),("prev","left"),("next","left")])
        for l in linklocs.keys():
            if l not in linkdict.keys():
                print("File has no {}, skipping".format(l))
                continue
            else:
                filename = linkdict[l] 
            assert os.path.exists(os.path.join(pathname,filename+".md")), ("The file {}.md does not exist in the script_docs folder.".format(filename))
            file_text = "{} file: ".format(l)+mdFile.new_inline_link(text = filename,link = "./{}.md".format(filename))
            mdFile.new_line(file_text,align = linklocs[l],bold_italics_code = 'b')

    return mdFile
Esempio n. 29
0
def write_md(json_obj, md_fn, overwrite=True, wire_obj=True):
    if (not overwrite):
        if (os.path.isfile(md_fn)):
            return;
    print('->', md_fn)

    md_title = json_obj['title']
    mdFile = MdUtils(file_name=md_fn,title=md_title)

    desc = md_title
    if 'description' in json_obj:
        desc = json_obj['description']
    mdFile.new_paragraph(desc);

    if wire_obj:
        mdFile.new_paragraph('All wire objects have a set of basic attributes ```{object_id, action, type, persist, data}```. The ```data``` attribute defines the object-specific attributes');

    mdFile.new_header(level=2, title=f'\n{md_title} Attributes', style='setext', add_table_of_contents='n')

    object_table(mdFile, md_title, json_obj)

    if not 'properties' in json_obj:
        mdFile.create_md_file()
        return

    if not 'data' in json_obj['properties']:
        mdFile.create_md_file()
        return

    mdFile.new_header(level=3, title=f'{md_title} Data Attributes', add_table_of_contents='n')

    if '$ref' in json_obj['properties']['data']:
        obj_name = json_obj['properties']['data']['$ref'][len('#/definitions/'):]
        object_table(mdFile, md_title, json_obj['definitions'][obj_name], json_obj['definitions'])
    else:
        object_table(mdFile, md_title, json_obj['properties']['data'], json_obj['definitions'])

    mdFile.create_md_file()
Esempio n. 30
0
    def asMarkdown(self) -> MarkdownDocument:
        """Return document as markdown."""
        # TODO: example, needs to be dynamic

        mdFile = MdUtils(file_name="file1.md", title="Schema")
        mdFile.new_header(level=1, title=self.title)

        # document meta headings
        documentMeta = ["Information", "Value"]
        # document meta rows
        documentMeta.extend(["Schema Id", self.id])
        documentMeta.extend(["Title", self.title])

        mdFile.new_table(columns=2, rows=3, text=documentMeta)

        # TODO: generate code snippet sections like those in the gantree docs as of 2020/03/29
        mdFile.new_paragraph('```jsonc\n{\n  "example": "text"\n}\n```')

        props = self.schema["properties"]

        resolved = resolve_all(props, None)

        print("resolved:", resolved)

        # style is set 'atx' format by default.

        # list_of_strings = ["Name", "Value"]
        # for x in range(5):
        #     list_of_strings.extend(["Schema ID", schema_id])
        # mdFile.new_line()
        # mdFile.new_table(
        #     columns=2, rows=6, text=list_of_strings, text_align="center"
        # )

        filename = mdFile.file_name
        content = mdFile.file_data_text

        return {"filename": filename, "content": content}