blmarkdown 2.3
Bear Au Jus Learning Markdown (blmarkdown) is a tool used to help you documenting your learning history in rich and flavored markdown.
License: MIT
Keywords: blmarkdown,bearaujus learning markdown,bearaujus markdown,bearaujus learning,bearaujus,learning,markdown,github learning history documentation using python,python,markdown generator,github,documenting learning history,github markdown,documenting python code,python code documentation generator

# BLMARKDOWN
Bear Au Jus Learning Markdown (blmarkdown) is a tool used to help you documenting your learning history in rich and flavored markdown.
> + Github Directory [https://github.com/bearaujus/blmarkdown](https://github.com/bearaujus/blmarkdown)
> + PyPI [https://pypi.org/project/blmarkdown/](https://pypi.org/project/blmarkdown/)

# Latest Changelog
Release Date : 09/09/2021 `v2.3`
> + Bug Fixes

# Installation
Get latest version of blmarkdown
```
pip install blmarkdown
```

# How To Use
There is **2 main class** is needed to import from **blmarkdown**
```.py
from blmarkdown import Learning, LearningData
```

Let's create our new **learning** variable
```.py
learning_subject = 'Python Fundamental'
author = 'Haryo Bagas Assyafah'

learning = Learning(learning_subject, author)
```

Now let's **add some data** to our **learning** variable
```.py
data = LearningData('Operator')
data.add('Addition')
data.add('Subtraction')
data.add('Multiplication')
data.add('Division')

learning.add(data)
```
```.py
data = LearningData('Control Structure', 'https://github.com/yourLink2')
data.add('Loop', ['For', 'While', 'Do While', 'For Each'])
data.add('Branching', ['If', 'Else If', 'Else'])

learning.add(data)
```

Let's **grab the markdown** from **learning** variable
```.py
learning.markdown()
```
> Output
```
# Learning : Python Fundamental

### Learning 01 - Operator

+ Addition
+ Subtraction
+ Multiplication
+ Division

### Learning 02 - Control Structure
> Shortcut : [Link](https://github.com/yourLink2)

+ Loop
    - For
    - While
    - Do While
    - For Each
+ Branching
    - If
    - Else If
    - Else

**Haryo Bagas Assyafah** @2021 | Generated by [blmarkdown](https://github.com/bearaujus/blmarkdown) v2.3
```

**Congratulations**, you just learned how to generate markdown using **blmarkdown** !

But, those are just **some of our features** we had. You can look at **List Function** we had, or some **example** we just documented here. **Happy Reading** ! :D

# Examples
> - Simple [Link](https://github.com/bearaujus/blmarkdown/blob/main/v2.3/examples/example_simple.ipynb)

> - Advanced [Link](https://github.com/bearaujus/blmarkdown/blob/main/v2.3/examples/example_advanced.ipynb)

> - Real Life [Link](https://github.com/bearaujus/learning/blob/main/php/1_basic_php/mdgen.ipynb) | [Output Markdown](https://github.com/bearaujus/learning/blob/main/php/1_basic_php/README.MD) | [Output Folder](https://github.com/bearaujus/learning/blob/main/php/1_basic_php) 

# List Function
### A. Class Learning

- A.1. Constructor
```.py
def __init__(self, learning_subject_title, credit_name, footer_data=dict()):
        self.learning_subject_title = learning_subject_title
        self.credit_name = credit_name
        self.footer_data = footer_data
        self.data = list()
```
> Return Type : `None`

- A.2. Add LearningData
```.py
def add(self, child):
        if isinstance(child, str):
            self.data.append(LearningData(child))
        elif isinstance(child, list):
            tmp = list()
            for data in child:
                if isinstance(data, LearningData):
                    tmp.append(data)
                elif isinstance(data, str):
                    tmp.append(LearningData(data))
                else:
                    raise Exception(
                        "data inside a list must an instance of 'LearningData' or 'str'")
            self.data = self.data + tmp
        elif isinstance(child, LearningData):
            self.data.append(child)
        else:
            raise Exception(
                "'child' must an instance of 'LearningData' or 'str' or 'list'")
```
> Return Type : `None`

- A.3. Preview Generated Markdown
```.py
# this function will open a new tab in your default browser for viewing the generated markdown
    def preview(self, keep_file_on_complete=False, file_name=''):
        Utill.compile_viewer(self.__generate(), keep_file_on_complete, file_name)
```
> Return Type : `None`

- A.4. Save Generated Markdown
```.py
def save_markdown(self, file_name=''):
        return Utill.save_markdown(self.__generate(), file_name)
```
> Return Type : `String`

- A.5. Get Markdown as Raw String
```.py
def get_markdown(self):
        return self.__generate()
```
> Return Type : `String`

- A.6. Print Generated Markdown
```.py
def markdown(self):
        print(self.__generate())
```
> Return Type : `None`

- A.7. Get Added Learning Data by Index
```.py
def get_child(self, index):
        return self.data[index]
```
> Return Type : `LearningData`

- A.8. Get All Index Data Inside Learning
```.py
def index(self):
        if not self.data:
            return {}
        else:
            return {idx: learning_data.title for idx, learning_data in enumerate(self.data)}
```
> Return Type : `Dict`

### B. Class LearningData

- B.1. Constructor
```.py
def __init__(self, title, link=''):
        self.title = title
        self.link = link
        self.learning_data = dict()
```
> Return Type : `None`

- B.2. Add Subject
```.py
def add(self, subject, subject_data=list()):
        if not isinstance(subject, str):
            raise Exception(
                "'subject' must an instance of class 'string'. Example : Loop")
        elif not isinstance(subject_data, list):
            raise Exception(
                "'subject_data' must an instance of class 'list'. Example : ['For', 'While', 'For Each']")
        else:
            self.learning_data[subject] = subject_data
```
> Return Type : `None`

- B.3. Preview Generated Markdown
```.py
def preview(self, keep_file_on_complete=False, file_name=''):
        Utill.compile_viewer(self.__generate(),
                             keep_file_on_complete, file_name)
```
> Return Type : `None`

- B.4. Save Generated Markdown
```.py
def save_markdown(self, file_name=''):
        return Utill.save_markdown(self.__generate(), file_name)
```
> Return Type : `String`

- B.5. Get Markdown as Raw String
```.py
def get_markdown(self):
        return self.__generate()
```
> Return Type : `String`

- B.6. Print Generated Markdown
```.py
def markdown(self):
        print(self.__generate())
```
> Return Type : `None`

# Donation
Want bought us some coffee ? :D
> - Bitcoin (BTC)
```
1CCngoXD8sgbLVatc74fg1z54vbRKxTJn8
```

> - Ethereum (ETH)
```
0xec5b67e7ccffa41673e74a64d9f64ea72efc91bc
```

# Credit
+ Main Github Page : [https://github.com/bearaujus/](https://github.com/bearaujus/)
+ Linkedin : [https://www.linkedin.com/in/bearaujus/](https://www.linkedin.com/in/bearaujus/)

**Bear Au Jus - ジュースとくま** @2021