{"id":20830611,"url":"https://github.com/iansedano/outliner","last_synced_at":"2025-12-27T02:30:01.630Z","repository":{"id":113699624,"uuid":"325501029","full_name":"iansedano/outliner","owner":"iansedano","description":"An tool to help in the creation and management of outlines and plain text files.","archived":false,"fork":false,"pushed_at":"2021-10-31T16:27:06.000Z","size":3689,"stargazers_count":2,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-12T08:17:07.249Z","etag":null,"topics":["plaintext","python3","writing-tool"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iansedano.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-12-30T08:49:45.000Z","updated_at":"2022-05-29T06:49:17.000Z","dependencies_parsed_at":"2023-04-28T01:46:08.460Z","dependency_job_id":null,"html_url":"https://github.com/iansedano/outliner","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/iansedano/outliner","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iansedano%2Foutliner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iansedano%2Foutliner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iansedano%2Foutliner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iansedano%2Foutliner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iansedano","download_url":"https://codeload.github.com/iansedano/outliner/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iansedano%2Foutliner/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28069598,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-27T02:00:05.897Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["plaintext","python3","writing-tool"],"created_at":"2024-11-17T23:25:13.451Z","updated_at":"2025-12-27T02:30:01.607Z","avatar_url":"https://github.com/iansedano.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Outliner Tool\n\nTo aid in the creation and transition from idea, to draft, to outline, to file structure, and back again if needed.\n\n\n## Purpose\n\nEver make an outline like this?\n\n```\nSection 1\n    Chapter 1\n        Intro to characters\n    Chapter 2\n        Starting the journey\n    Chapter 3\n        On their way\nSection 2\n    Chapter 4\n        Running into trouble\n    Chapter 5\n        Running into more trouble\n    Chapter 6\n        Breakdown\nSection 3\n    Chapter 7\n        Meeting friend\n    Chapter 8\n        Overcoming troubles\n    Chapter 9\n        Arriving back home\n```\n\nNow you want to move this to individual files like this:\n\n```\nSection 1\n    Chapter 1.md\n        Intro to characters\n    Chapter 2.md\n        Starting the journey\n    Chapter 3.md\n        On their way\nSection 2\n    Chapter 4.md\n        Running into trouble\n    Chapter 5.md\n        Running into more trouble\n    Chapter 6.md\n        Breakdown\nSection 3\n    Chapter 7.md\n        Meeting friend\n    Chapter 8.md\n        Overcoming troubles\n    Chapter 9.md\n        Arriving back home\n```\n\n\nOr this:\n\n\n```\nSection 1\n    Chapter 1.md\n        Intro to characters\n        Bill, Bob\n        Jill, Jane\n    Chapter 2.md\n        Starting the journey\n    Chapter 3.md\n        On their way\n```\n\nThis 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.\n\nYou can create any plain text file type you want:\n\n```\nProject 1\n    main.py\n        def hello():\n            print(\"hello world\")\n```\n\nWill create a folder with a python file with the following content:\n\n```python\ndef hello():\n    print(\"hello world\")\n```\n\n## Important Points\n\n1. Any line with a `.` will be considered a file and not a folder (this does not apply to contents of a file)\n\n2. Beware when calling files or folders the same name, they will be overwritten.\n\n```\nmyfolder\n    myfile.txt\n        mycontents\n        morecontents\n    myfile.txt\n        helloworld\n```\n\nThis will end up with:\n\n```\nmyfolder\n    myfile.txt\n        helloworld\n```\n\n3. Bear in mind that file systems implement their own ordering. So if you have a source file like this:\n\n```\ninstructions\n    first step.md\n    second step.md\n    third step.md\n    fourth step.md\n```\n\nOnce they are created, you will probably end up with a folder with the files ordered like this:\n\n```\ninstructions\n    first step.md\n    fourth step.md\n    second step.md\n    third step.md\n```\n\nFor 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.\n\n```\n001 instructions\n    001 first step.md\n    002 second step.md\n    003 third step.md\n    004 fourth step.md\n```\n\n4. This tool does _not_ yet recognize spaces as equivalent to tabs. The input document _must_ use tabs for indentation.\n\n5. If you leave a blank line without any content, be sure that it has the correct tab indentation level. For instance:\n\n```\nfolder\n    folder\n        file.txt\n            Title\n\n            Content\n\n```\n\nIf 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.\n\n## Usage\n\n1. Clone this repository.\n1. Open `main.py`.\n1. Modify the relevant paths and run it.\n\nFor example:\n\n```python\nfrom o_creator import create_main\n\n# Insert full Linux (no ~) or Windows path here\nsource_file = \"/home/i/Dropbox/Desktop/outliner_linux_test/outline.txt\"\noutput = \"/home/i/Dropbox/Desktop/outliner_linux_test/output\"\n\n# the argument number here is used to number the output folders and files\ncreate_main(source_file, output, number = True)\n```\n\nThis tool uses `pathlib` so Windows or Linux paths will work here.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiansedano%2Foutliner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiansedano%2Foutliner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiansedano%2Foutliner/lists"}