示例#1
0
def chk_md_b(_ap: str):
    _ap = pth.ncnp(_ap)
    if not pth.chk_ap(_ap): raise exc.ExceptionNotAbsolutePath()
    if not difi.chk_exst_fi(_ap): raise exc.ExceptionNotExistsFile()
    if not pth.get_ext(_ap) == "md": raise exc.ExceptionNotExistsMDFile()
    """ The function of `rd_md()` is used to read all lines in `_ap`. If it
    returns `0` it means the .md file in `_ap` has no line written in it.
    """
    return True if len(rd_md(_ap)) == 0 else False
示例#2
0
def rd_md(_ap: str) -> list:
    _ap = pth.ncnp(_ap)
    if not pth.chk_ap(_ap): raise exc.ExceptionNotAbsolutePath()
    if not difi.chk_exst_fi(_ap): raise exc.ExceptionNotExistsFile()
    if not pth.get_ext(_ap) == "md": raise exc.ExceptionNotExistsMDFile()

    md = open(_ap, "r")
    l = md.readlines()
    md.close()

    return l
示例#3
0
def get_md(_ap: str) -> str:
    _ap = pth.ncnp(_ap)
    if not pth.chk_ap(_ap): raise exc.ExceptionNotAbsolutePath()
    if not difi.chk_exst_di(_ap): raise exc.ExceptionNotExistsDirectory()
    if not chk_exst_md(_ap): raise exc.ExceptionNotExistsMDFile()
    if chk_exst_md(_ap, True): raise exc.ExceptionExistMultipleMDFiles()

    for i in difi.get_lst(_ap):
        if pth.get_ext(i) == "md": return pth.jo(_ap, i)

    return ""
示例#4
0
def aw_md_(_ap: str, _ls: list, _m: str) -> bool:
    _ap = pth.ncnp(_ap)
    if not pth.chk_ap(_ap): raise exc.ExceptionNotAbsolutePath()
    if not difi.chk_exst_fi(_ap): raise exc.ExceptionNotExistsFile()
    if not pth.get_ext(_ap) == "md": raise exc.ExceptionNotExistsMDFile()
    if not all(isinstance(i, str) for i in _ls):
        raise exc.ExceptionListNotAllString()
    if not _m in var.opn_mode: raise exc.ExceptionNotExistsOpenMode()

    md = open(_ap, _m)
    for i in _ls:
        print(i, end="", file=md)
    md.close()

    return True
示例#5
0
def repair(_ap: str) -> str:
    _ap = pth.ncnp(_ap)

    print("repair {}".format(_ap))

    if not pth.chk_ap(_ap): raise exc.ExceptionNotAbsolutePath()
    if not difi.chk_exst_di(_ap): raise exc.ExceptionNotExistsDirectory()
    if chk_exst_md(_ap, True): raise exc.ExceptionExistMultipleMDFiles()
    if not chk_exst_md(_ap): raise exc.ExceptionNotExistsMDFile()
    if chk_exst_md(_ap):
        if chk_md_b(get_md(_ap)): raise exc.ExceptionMDFileNoContent()

    nm_note_folder = pth.get_ap_innermst(_ap)
    """ Check if there is prefix in the note's folder. """
    if not dttz.chk_prefix(nm_note_folder):
        st_note_folder = crt_apnm_note(_ap)  # Struct name.
        """ Change the name of the note's folder. """
        difi.ren(_ap, st_note_folder.nm_di)
        """ Set back all variables that use `_ap`. """
        _ap = st_note_folder.ap_di
        nm_note_folder = pth.get_ap_innermst(_ap)

    prefix_note_folder = dttz.get_prefix(nm_note_folder)
    ap_md = get_md(_ap)
    nm_md = "{}.{}".format(nm_note_folder, "md")  # .md file name. Taken
    # from the note's folder.
    """ Rename the .md file directly. If the name is already
    proper then this proces goes to `except`.
    """
    try:
        difi.ren(ap_md, nm_md)
        ap_md = pth.jo(_ap, nm_md)  # Get the .md file back.
    except exc.ExceptionSamePath:
        pass

    line_md = rd_md(ap_md)  # Read the content of the .md file.

    i = 0  # Index for looping.
    inx = 1  # Index for attaching and embedding file in .md file.

    while i < len(line_md):
        if chk_s_md(line_md[i]) == s_type.attach or\
        chk_s_md(line_md[i]) == s_type.embed:
            nm_fi = get_fi_rp(line_md[i])  # File name.
            ap_fi = pth.jo(_ap, nm_fi)  # Absolute path to the file.

            if not difi.chk_exst(ap_fi):
                print("note folder: {}".format(_ap))
                print("file: {}".format(ap_fi))
                raise exc.ExceptionNotExistsDirectoryOrFile()
            """ Flags. """
            fl_attach = False
            fl_embed = False
            fl_img = False
            fl_img_600 = False  # If image file is 600 pixels width.
            fl_img_png = False  # If image file is .png.
            fl_nm_number = False  # If file named as a number (for example, 1.jpg, 1.pdf, ...).
            """ Set up flags. """
            if chk_s_md(line_md[i]) == s_type.attach: fl_attach = True
            if chk_s_md(line_md[i]) == s_type.embed:
                fl_embed = True
                if pth.get_ext(nm_fi) in var.img_ext:
                    fl_img = True
                    if img.get_img_dim_w(ap_fi) == 600: fl_img_600 = True
                    if pth.get_ext(nm_fi) == "png": fl_img_png = True
            if get_s_lst(nm_fi).isnumeric(): fl_nm_number = True

            if fl_attach:
                """ If the file name is a number then display the index number. """
                nm_fi = "{}-{}.{}".format(nm_note_folder, inx,
                                          pth.get_ext(nm_fi))
                """
                if fl_nm_number: nm_fi = "{}-{}.{}".format(nm_note_folder, inx, pth.get_ext(nm_fi))
                else:
                    Cleaning.

                    PENDING: Please move this into separate function later on.
                    PENDING: There is also a problem if the file initiated as a image attachment and at the second `repair()`
                             the index will be grow again. There is no error shown yet though.

                    print("="*50)
                    print(nm_note_folder)
                    print(nm_fi)
                    separate_note_folder = nm_note_folder.split("-")
                    print(separate_note_folder)
                    test = nm_fi
                    for asd in separate_note_folder:
                        test = test.replace(asd, "")
                    test = test.split("-")
                    index = len(test) - 1
                    while index > 0:
                        if not test[index].isnumeric() and not test[index] == "":
                            print(test[index])
                        index = index - 1
                    print(test)
                    print("="*50)
                    get_name = nm_fi.replace(nm_note_folder, "")
                    get_name = get_name.replace("--", "")
                    get_name = get_name[1:]
                    get_name = get_name.split("-")
                    index_temp = 0
                    new_string = ""
                    while index_temp < len(get_name):
                        if index_temp == 0 and get_name[index_temp].isnumeric():
                            index_temp = index_temp + 1
                            continue
                        if new_string == "": new_string = get_name[index_temp]
                        else: new_string = "{}-{}".format(new_string, get_name[index_temp])
                        index_temp = index_temp + 1
                    nm_fi = "{}-{}-{}".format(nm_note_folder, inx, new_string)

                print("_ap = {}".format(_ap))
                print("="*50)
                print("nm_note_folder = {}".format(nm_note_folder))
                print("inx = {}".format(inx))
                print("pth.get_ext(nm_fi) = {}".format(pth.get_ext(nm_fi)))
                print("dttz.rm_prefix(nm_fi) = {}".format(dttz.rm_prefix(nm_fi)))
                print("nm_fi = {}".format(nm_fi))
                print("="*50)
                print("*"*50)
                """
                """ PENDING: Stopped increasing index on back up file, because I am afraid of file
                conflict with the next file in this iteration in case the name is the same.
                """
                """ Rename the file with proper proper index number and prefix. """
                difi.ren(ap_fi, nm_fi)
                ap_fi = pth.jo(_ap, nm_fi)
                """ Make this lines back into the main list to be inputted
                to the opened .md file.
                """
                line_md[i] = "{}{}".format(crt_s_md(nm_fi, False), "\n")

            elif fl_embed:  # PENDING: Please check this `if`.
                """ Only embed image file. """
                if not fl_img:
                    print(ap_fi)
                    raise exc.ExceptionNotExistsImageFile()
                """ PENDING: Backup image identifier is now missing. But that is okay I guess. """

                if not fl_img_600 or not fl_img_png:
                    inx = inx + 1
                    nm_fi_attach = "{}-{}.{}".format(nm_note_folder, inx,
                                                     pth.get_ext(nm_fi))
                    inx = inx - 1
                    #if fl_nm_number: nm_fi_attach = "{}-{}-{}.{}".format(nm_note_folder, inx, var.bak, pth.get_ext(nm_fi))
                    #else: nm_fi_attach = "{}-{}-{}.{}".format(nm_note_folder, inx, pth.rm_ext(dttz.rm_prefix(nm_fi), var.bak, pth.get_ext(nm_fi)))
                """ Constructing attach string for file name. """
                nm_fi = "{}-{}.{}".format(nm_note_folder, inx,
                                          pth.get_ext(nm_fi))
                if not fl_img_600 or not fl_img_png: inx = inx + 2
                """ Rename the file with proper proper index number and prefix. """
                difi.ren(ap_fi, nm_fi)
                ap_fi = pth.jo(_ap, nm_fi)

                if not fl_img_600 or not fl_img_png:
                    ap_fi_attach = pth.jo(_ap, nm_fi_attach)
                    difi.cpy(ap_fi,
                             ap_fi_attach)  # Copy into the attachment file.
                    """ Convert into .png with 600 pixels width. """
                    ap_fi_convert = img.cnvrt_img_ip_600(ap_fi)
                    nm_fi_convert = pth.get_ap_innermst(ap_fi_convert)
                    """ Put back to the lines. """
                    line_md[i] = "{}{}".format(crt_s_md(nm_fi_attach, False),
                                               "\n")
                    line_md.insert(
                        i, "{}{}".format(crt_s_md(nm_fi_convert, True),
                                         "\n\n"))
                    i = i + 1
                else:
                    line_md[i] = "{}{}".format(crt_s_md(nm_fi, True), "\n")

            inx = inx + 1

        i = i + 1

    line_md[len(line_md) -
            1] = line_md[len(line_md) -
                         1].rstrip()  # Remove the last line line breaks.
    wrt_md(ap_md, line_md)
    """ This line below is to debug and to show the .md file in Linux and Windows. """
    #if nm_note_folder == "20010101-0000-cet-d": import os; os.system("{} {}".format("xdg-open", ap_md))
    #if nm_note_folder == "20010101-0000-cet-d": import os; os.system(ap_md)
    #import os; os.system("{} {}".format("xdg-open", ap_md))
    #import os; os.system(ap_md);

    return _ap
示例#6
0
def crt_md(_ap: str) -> bool:
    _ap = pth.ncnp(_ap)
    if not pth.chk_ap(_ap): raise exc.ExceptionNotAbsolutePath()
    if not pth.get_ext(_ap) == "md": raise exc.ExceptionNotExistsMDFile()

    return difi.crt(_ap, False)