{"id":22939085,"url":"https://github.com/de-jcup/asp","last_synced_at":"2025-08-12T19:32:50.851Z","repository":{"id":35800480,"uuid":"190183210","full_name":"de-jcup/asp","owner":"de-jcup","description":"Asciidoctor Server Protocol","archived":false,"fork":false,"pushed_at":"2022-04-30T00:16:36.000Z","size":489,"stargazers_count":8,"open_issues_count":6,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-04-24T12:22:39.978Z","etag":null,"topics":["asciidoc","asciidoctor","asp","protocol","server"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/de-jcup.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-06-04T10:52:47.000Z","updated_at":"2022-12-28T10:57:20.000Z","dependencies_parsed_at":"2022-08-08T11:30:23.039Z","dependency_job_id":null,"html_url":"https://github.com/de-jcup/asp","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/de-jcup%2Fasp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/de-jcup%2Fasp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/de-jcup%2Fasp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/de-jcup%2Fasp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/de-jcup","download_url":"https://codeload.github.com/de-jcup/asp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":229705476,"owners_count":18110789,"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","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":["asciidoc","asciidoctor","asp","protocol","server"],"created_at":"2024-12-14T12:36:40.675Z","updated_at":"2024-12-14T12:36:41.344Z","avatar_url":"https://github.com/de-jcup.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"= ASP - Asciidoctor Server Protocol\n\n[frame=none,grid=none,cols=2]\n|===\na| image::https://github.com/de-jcup/asp/actions/workflows/gradle.yml/badge.svg[Java CI with Gradle,link=https://github.com/de-jcup/asp/actions/workflows/gradle.yml]\na| image::https://img.shields.io/lgtm/alerts/g/de-jcup/asp.svg?logo=lgtm\u0026logoWidth=18[link=\"https://lgtm.com/projects/g/de-jcup/asp/alerts/\"] \n|=== \n\n== About \n\nASP stands for `AsciiDoctor Server Protocol` - a simple communication protocol between a client and a \nasciidoctor server instance which will do all Asciidoctor operations. So its a little bit similar to LSP \nwhere the language parts are central provided by a server instance.  \n\n- Main project page: https://github.com/de-jcup/asp\n- Issue tracking done at https://github.com/de-jcup/asp/issues\n- Wiki: https://github.com/de-jcup/asp/wiki\n\n== Why a server?\n\nWith https://github.com/de-jcup/eclipse-asciidoctor-editor[AsciiDoctor Editor for eclipse] it was extreme hard to handle\nthe OSGI depencencies in conjunction with asciidoctor/asciidoctorj and JRuby\n(see https://github.com/de-jcup/eclipse-asciidoctor-editor/issues/213) \n\nSo instead of handling this always again with new dependencies etc. working with OSGI this project was initiated, to \nbecome a standalone solution, which can be used by different editors without spawning always new processes but instead\nreuse an already started server instance which shall be very much faster than doing a new process communciation to an\ninstalled variant.\n\nThe editors shall only delegate their conversion tasks to server side and have a communication layer to the server \nwhich will produce information about converted output locations (or errors).\n\n=== Benefits\n- Independent from real installation, can be used ony systems were developers have not possiblity to install \n  asciidoctor\n- Comes up with standard tool setup (will have HTML, docbook and PDF support)\n- Can be used from multiple IDE integrations (eclipse-asciidoctor, ... more ...)\n- Provides a client library to use the server, so convenient\n\n== Why such an \"old school\" tcp client/server approach and no standard REST server ?\nIt started with a `spring boot` application, with rest controller etc., very nice and convenient, but...\nspring bootJar did not correctly work with `asciidoctorj` + `jruby`.\n\nProviding an own fat jar solution in combination with `spring boot` did work after time, but I got at least 59 MB \nat the very first beginning - this was too much.\n\nAlso spring boot comes with many dependencies - and asciidoctorJ has got itself\nmany. To prevent cross site effects the client server protocol should be as \nsimple as possible and has nearly no more dependencies.\n  \n\n== How should editors/tools use this server?\n\n=== Overview\nimage::doc/images/overview.png[]\n\n=== Details\n\n==== ASP-server-asciidoctorj\nYou can use ASP server either as an external process or as an embedded server.\n\n===== As an external process\nFor this case a specialized launcher was created. Just use `ExternalProcessAsciidoctorJServerLauncher` as done in \nhttps://github.com/de-jcup/asp/blob/master/asp-doc/src/test/java/de/jcup/asp/example/ExternalProcessExample.java[ExternalProcessExample.java] and\nhttps://github.com/de-jcup/asp/blob/master/asp-doc/src/test/java/de/jcup/asp/example/ExternalProcessWithDebugOutputExample.java[ExternalProcessWithDebugOutputExample.java] \n\n===== As embedded server\nSame as external variant, but use `EmbeddedAsciidoctorJServerLauncher` as launcher. For examples look into integration tests.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fde-jcup%2Fasp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fde-jcup%2Fasp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fde-jcup%2Fasp/lists"}