https://github.com/iansedano/outliner
An tool to help in the creation and management of outlines and plain text files.
https://github.com/iansedano/outliner
plaintext python3 writing-tool
Last synced: 5 months ago
JSON representation
An tool to help in the creation and management of outlines and plain text files.
- Host: GitHub
- URL: https://github.com/iansedano/outliner
- Owner: iansedano
- Created: 2020-12-30T08:49:45.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2021-10-31T16:27:06.000Z (over 4 years ago)
- Last Synced: 2025-03-12T08:17:07.249Z (about 1 year ago)
- Topics: plaintext, python3, writing-tool
- Language: Python
- Homepage:
- Size: 3.52 MB
- Stars: 2
- Watchers: 1
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Outliner Tool
To aid in the creation and transition from idea, to draft, to outline, to file structure, and back again if needed.
## Purpose
Ever make an outline like this?
```
Section 1
Chapter 1
Intro to characters
Chapter 2
Starting the journey
Chapter 3
On their way
Section 2
Chapter 4
Running into trouble
Chapter 5
Running into more trouble
Chapter 6
Breakdown
Section 3
Chapter 7
Meeting friend
Chapter 8
Overcoming troubles
Chapter 9
Arriving back home
```
Now you want to move this to individual files like this:
```
Section 1
Chapter 1.md
Intro to characters
Chapter 2.md
Starting the journey
Chapter 3.md
On their way
Section 2
Chapter 4.md
Running into trouble
Chapter 5.md
Running into more trouble
Chapter 6.md
Breakdown
Section 3
Chapter 7.md
Meeting friend
Chapter 8.md
Overcoming troubles
Chapter 9.md
Arriving back home
```
Or this:
```
Section 1
Chapter 1.md
Intro to characters
Bill, Bob
Jill, Jane
Chapter 2.md
Starting the journey
Chapter 3.md
On their way
```
This last example would be one folder called "Chapter 1" containging three markdown files each with some content. The file `Chapter 1.md` would contain 3 lines of content.
You can create any plain text file type you want:
```
Project 1
main.py
def hello():
print("hello world")
```
Will create a folder with a python file with the following content:
```python
def hello():
print("hello world")
```
## Important Points
1. Any line with a `.` will be considered a file and not a folder (this does not apply to contents of a file)
2. Beware when calling files or folders the same name, they will be overwritten.
```
myfolder
myfile.txt
mycontents
morecontents
myfile.txt
helloworld
```
This will end up with:
```
myfolder
myfile.txt
helloworld
```
3. Bear in mind that file systems implement their own ordering. So if you have a source file like this:
```
instructions
first step.md
second step.md
third step.md
fourth step.md
```
Once they are created, you will probably end up with a folder with the files ordered like this:
```
instructions
first step.md
fourth step.md
second step.md
third step.md
```
For this reason you can use the `number` argument as `True` in `create_main` to automatically number the folders and files so that they keep their order.
```
001 instructions
001 first step.md
002 second step.md
003 third step.md
004 fourth step.md
```
4. This tool does _not_ yet recognize spaces as equivalent to tabs. The input document _must_ use tabs for indentation.
5. If you leave a blank line without any content, be sure that it has the correct tab indentation level. For instance:
```
folder
folder
file.txt
Title
Content
```
If the line between `Title` and `Content` has zero tabs, this will cause unexpected results since the parser will take that to mean that its the end of the file, and then you have a new folder that has as a parent `file.txt` which will probably result in an error.
## Usage
1. Clone this repository.
1. Open `main.py`.
1. Modify the relevant paths and run it.
For example:
```python
from o_creator import create_main
# Insert full Linux (no ~) or Windows path here
source_file = "/home/i/Dropbox/Desktop/outliner_linux_test/outline.txt"
output = "/home/i/Dropbox/Desktop/outliner_linux_test/output"
# the argument number here is used to number the output folders and files
create_main(source_file, output, number = True)
```
This tool uses `pathlib` so Windows or Linux paths will work here.