{"id":13533813,"url":"https://github.com/CriticMarkup/CriticMarkup-toolkit","last_synced_at":"2025-04-01T22:30:42.414Z","repository":{"id":6313458,"uuid":"7548381","full_name":"CriticMarkup/CriticMarkup-toolkit","owner":"CriticMarkup","description":"Various tools to use CriticMarkup in your daily workflow","archived":false,"fork":false,"pushed_at":"2021-03-04T00:14:59.000Z","size":550,"stargazers_count":712,"open_issues_count":24,"forks_count":55,"subscribers_count":34,"default_branch":"master","last_synced_at":"2024-05-21T14:09:59.480Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"marcelgwerder/laravel-api-handler","license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CriticMarkup.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}},"created_at":"2013-01-10T20:47:48.000Z","updated_at":"2024-05-16T14:52:47.000Z","dependencies_parsed_at":"2022-08-09T23:40:08.163Z","dependency_job_id":null,"html_url":"https://github.com/CriticMarkup/CriticMarkup-toolkit","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CriticMarkup%2FCriticMarkup-toolkit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CriticMarkup%2FCriticMarkup-toolkit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CriticMarkup%2FCriticMarkup-toolkit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CriticMarkup%2FCriticMarkup-toolkit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CriticMarkup","download_url":"https://codeload.github.com/CriticMarkup/CriticMarkup-toolkit/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246720427,"owners_count":20822899,"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":[],"created_at":"2024-08-01T07:01:23.335Z","updated_at":"2025-04-01T22:30:42.090Z","avatar_url":"https://github.com/CriticMarkup.png","language":"Python","funding_links":[],"categories":["Uncategorized","Python","others"],"sub_categories":["Uncategorized"],"readme":"![CriticMarkup](http://high90.com/img/CriticMarkup-400px.png)\n\nWelcome to the CriticMarkup Toolkit\n====================\n\nCritic Markup is intended to provide basic editorial change tracking in plain text files. The syntax is compatible with Markdown, MultiMarkdown and HTML.\n\n[PanDiff](https://github.com/davidar/pandiff) is a diff generator with CriticMarkup output support.\n\n### The Three Laws ###\n\n1. Critic Markup shall be human readable. A human with a simple text editor can easily read and comprehend any text containing Critic Markup.\n2. Critic Markup shall be computer readable except where it conflicts with rule 1. Markup syntax should be easily parsed with simple regular expressions to support a wide variety of implementations.\n3. Critic Markup shall be compatible with existing markup syntax for Markdown, MultiMarkdown and HTML except where it conflicts with rules one or two. Many users of plain text write in combinations of Markdown and HTML. Critic Markup should work alongside that syntax.\n\n### The Goal ###\n\nCritic Markup can be used in any writing environment without special applications or tool kits. While we have supplied processors and plugins that are compatible with popular apps, they are not required.\n\nCritic Markup should be readable inline and clearly indicate the intent of the editor and author.\n\nCritic Markup should support change tracking with multiple authors and editors through the use of comments.\n\n### Plain Text and HTML ###\n\nCritic Markup may be used without a conversion to HTML. However, as with Markdown, HTML may be a desirable format for a more stylized presentation. We have several recommendations for how Critic Markup may be converted to HTML. The intent is to allow the HTML to be used without custom CSS. However, custom CSS may be used to enhance the review process.\n\n### The Basic Syntax ###\n\nThere are five types of Critic marks: \n\n* Addition `{++ ++}`\n* Deletion `{-- --}`\n* Substitution `{~~ ~\u003e ~~}`\n* Comment `{\u003e\u003e \u003c\u003c}`\n* Highlight `{== ==}{\u003e\u003e \u003c\u003c}`\n\nUsing these five basic marks you can successfully copy edit in plain text.\n\n#### Additions ####\n\nAdditions are inserted inline by surrounding the desired text with curly braces and double plus marks as shown:\n\n\tLorem ipsum dolor{++ sit++} amet...\n\nA space character and \"sit\" are to be added at the position of the left (or right) most curly brace. The additions may be rendered as `\u003cins\u003e` tags in the processed HTML:\n\n\tLorem ipsum dolor\u003cins\u003e sit\u003cins\u003e amet…\n\nParagraphs may be inserted in the same manner.\n\n\tLorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum at orci\n\tmagna. Phasellus augue justo, sodales eu pulvinar ac, vulputate eget nulla.\n\tMauris massa sem, tempor sed cursus et, semper tincidunt lacus.{++\n\n\t++}Praesent sagittis, quam id egestas consequat, nisl orci vehicula libero,\n\tquis ultricies nulla magna interdum sem. Maecenas eget orci vitae eros\n\taccumsan mollis. Cras mi mi, rutrum id aliquam in, aliquet vitae tellus.\n\tSed neque justo, cursus in commodo eget, facilisis eget nunc. Cras\n\ttincidunt auctor varius.\n\nTo ensure the Markdown processor outputs valid HTML, the `\u003cins\u003e` tag encloses a non-breaking space and is followed by two newlines. The result is that both paragraphs render separately. The non-breaking-space gives the tag enough content to render properly, and we assign class=break to allow for custom styling.\n\n\tLorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum at orci\n\tmagna. Phasellus augue justo, sodales eu pulvinar ac, vulputate eget nulla.\n\tMauris massa sem, tempor sed cursus et, semper tincidunt lacus.\n\n\t\u003cins class=”break”\u003e\u0026nbsp;\u003c/ins\u003e\n\n\tPraesent sagittis, quam id egestas consequat, nisl orci vehicula libero,\n\tquis ultricies nulla magna interdum sem. Maecenas eget orci vitae eros\n\taccumsan mollis. Cras mi mi, rutrum id aliquam in, aliquet vitae tellus. Sed\n\tneque justo, cursus in commodo eget, facilisis eget nunc. Cras tincidunt\n\tauctor varius.\n\nRules for proper use of the `\u003cins\u003e` element can be found in the [HTML 4 spec](http://www.w3.org/TR/REC-html40/struct/text.html#h-9.4).\n\n#### Deletions ####\n\nDeletions are denoted with a similar syntax. The text to be deleted is surrounded with curly braces and double hyphens.\n\n\tLorem{‐‐ ipsum‐‐} dolor sit amet…\n\nThe word \"ipsum\" and a space character are marked for deletion in the above example. These deletions are rendered as `\u003cdel\u003e` tags in the processed HTML.\n\n\tLorem\u003cdel\u003e ipsum\u003c/del\u003e dolor sit amet…\n\nParagraphs may also be deleted.\n\n\tLorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum at orci\n\tmagna. Phasellus augue justo, sodales eu pulvinar ac, vulputate eget nulla.\n\tMauris massa sem, tempor sed cursus et, semper tincidunt lacus.{‐‐\n\n\t‐‐}Praesent sagittis, quam id egestas consequat, nisl orci vehicula libero,\n\tquis ultricies nulla magna interdum sem. Maecenas eget orci vitae eros\n\taccumsan mollis. Cras mi mi, rutrum id aliquam in, aliquet vitae tellus.\n\tSed neque justo, cursus in commodo eget, facilisis eget nunc. Cras\n\ttincidunt auctor varius.\n\nThe newlines will be removed by the processor and replaced by an inline `\u003cdel\u003e` tag. Again, the non-breaking-space gives the tag enough content to render properly.\n\n\tLorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum at orci\n\tmagna. Phasellus augue justo, sodales eu pulvinar ac, vulputate eget nulla.\n\tMauris massa sem, tempor sed cursus et, semper tincidunt lacus. \n\t\u003cdel\u003e\u0026nbsp;\u003c/del\u003e Praesent sagittis, quam id egestas consequat, nisl\n\torci vehicula libero, quis ultricies nulla magna interdum sem. Maecenas eget\n\torci vitae eros accumsan mollis. Cras mi mi, rutrum id aliquam in, aliquet\n\tvitae tellus. Sed neque justo, cursus in commodo eget, facilisis eget nunc.\n\tCras tincidunt auctor varius.\n\nRules for proper use of the `\u003cdel\u003e` element can be found in the [HTML 4 spec](http://www.w3.org/TR/REC-html40/struct/text.html#h-9.4).\n\n#### Substitutions ####\n\nSubstitutions combine a delete with an insert in one snippet, and are written as curly braces and double tildes. A squiggly arrow made up of a tilde and greater-than symbol separates the old and new text. The characters to be deleted always occur to the left of the squiggly arrow.\n\n\tLorem {~~hipsum~\u003eipsum~~} dolor sit amet…\n\nDespite the unique syntax, substitutions should render as a deletion followed by an insertion.\n\n\tLorem \u003cdel\u003ehipsum\u003c/del\u003e\u003cins\u003eipsum\u003c/ins\u003e dolor sit amet…\n\nNewlines are treated the same as a deletion or insertion, depending on where they're located.\n\n\tLorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum at orci\n\tmagna. Phasellus augue justo, sodales eu pulvinar ac, vulputate eget nulla.\n\t{~~Mauris massa sem, tempor sed cursus et, semper tincidunt lacus.~\u003e\n\n\t~~}Praesent sagittis, quam id egestas consequat, nisl orci vehicula libero,\n\tquis ultricies nulla magna interdum sem. Maecenas eget orci vitae eros\n\taccumsan mollis. Cras mi mi, rutrum id aliquam in, aliquet vitae tellus.\n\tSed neque justo, cursus in commodo eget, facilisis eget nunc. Cras\n\ttincidunt auctor varius.\n\nAfter rendering this example, the deletion and insertion are added to the end of the first paragraph and two newlines ensure the proper paragraph break.\n\n\tLorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum at orci\n\tmagna. Phasellus augue justo, sodales eu pulvinar ac, vulputate eget nulla.\n\t\u003cdel\u003eMauris massa sem, tempor sed cursus et, semper tincidunt\n\tlacus.\u003c/del\u003e\u003cins class=”break”\u003e\u0026nbsp;\u003c/ins\u003e\n\n\tPraesent sagittis, quam id egestas consequat, nisl orci vehicula libero,\n\tquis ultricies nulla magna interdum sem. Maecenas eget orci vitae eros\n\taccumsan mollis. Cras mi mi, rutrum id aliquam in, aliquet vitae tellus. Sed\n\tneque justo, cursus in commodo eget, facilisis eget nunc. Cras tincidunt\n\tauctor varius.\n\n#### Comments ####\n\nCritic Markup supports generic comments for metadata. A comment may include a note, time stamp, author initial or similar annotation.\n\nComments are added via a set of curly braces and double greater-than/less-than symbols.\n\n\tLorem ipsum dolor sit amet.{\u003e\u003eThis is a comment\u003c\u003c}\n\nThe contents of a metadata field should render as `\u003cspan class=\"critic comment\"\u003e` after the relevant change.\n\n\tLorem ipsum dolor sit amet.\u003cspan class=”critic comment”\u003eThis is a comment\u003c/span\u003e\n\nMetadata may be used however you like, whether as explanations for the changes, time stamps or more. The `\u003cspan\u003e` element is for inline content only, so all newlines will be stripped during conversion to HTML.\n\nRules for proper use of the `\u003cspan\u003e` element can be found in the [HTML 4 spec](http://www.w3.org/TR/html401/struct/global.html#edef-SPAN).\n\n#### Highlights ####\n\nHighlights may be added as required by an editor or author, and are noted by curly braces and double equal signs. While a highlight can be used on it's own, we recommend that it always be followed by a comment related to the highlighted passage.\n\n\tLorem ipsum dolor sit amet, consectetur adipiscing elit. {==Vestibulum at\n\torci magna. Phasellus augue justo, sodales eu pulvinar ac, vulputate eget\n\tnulla.==}{\u003e\u003econfusing\u003c\u003c} Mauris massa sem, tempor sed cursus et, semper\n\ttincidunt lacus.\n\nHighlights should be rendered as `\u003cmark\u003e` tags in the processed HTML.\n\n\tLorem ipsum dolor sit amet, consectetur adipiscing elit. \u003cmark\u003eVestibulum at\n\torci magna. Phasellus augue justo, sodales eu pulvinar ac, vulputate eget\n\tnulla.\u003c/mark\u003e\u003cspan class=”critic metadata”\u003econfusing\u003c/span\u003e Mauris massa\n\tsem, tempor sed cursus et, semper tincidunt lacus.\n\nRules for proper use of the `\u003cmark\u003e` element can be found in the [HTML 5 spec](http://www.w3.org/html/wg/drafts/html/master/single-page.html#the-mark-element).\n\n### Putting it all together ###\n\nWhen used in combination the marks can indicate more complex changes.\n\n\tDon’t go around saying{‐‐ to people that‐‐} the world owes you a living. The\n\tworld owes you nothing. It was here first. {~~One~\u003eOnly one~~} thing is\n\timpossible for God: To find {++any++} sense in any copyright law on the\n\tplanet. {==Truth is stranger than fiction==}{\u003e\u003etrue\u003c\u003c}, but it is because\n\tFiction is obliged to stick to possibilities; Truth isn’t.\n\nThe above paragraphs should render to HTML in the following manner.\n\n\tDon’t go around saying\u003cdel\u003e to people that\u003c/del\u003e the world owes you a\n\tliving. The world owes you nothing. It was here first.\n\t\u003cdel\u003eOne\u003c/del\u003e\u003cins\u003eOnly one\u003c/ins\u003e thing is impossible for God: To find\n\t\u003cins\u003eany\u003c/ins\u003e sense in any copyright law on the planet. \u003cmark\u003eTruth is\n\tstranger than fiction\u003c/mark\u003e\u003cspan class=”critic comment”\u003etrue\u003c/span\u003e, but it\n\tis because Fiction is obliged to stick to possibilities; Truth isn’t.\n\n### Caveats ###\n\nThere are a few limitations to consider when using CriticMarkup.\n\n#### Avoid Newlines in CriticMarkup ####\n\nNewlines should be avoided as much as possible within CriticMarkup tags. Many of the HTML elements we use are inline elements only. While we've crafted CriticMarkup with as much care as possible, it is possible for you to break the syntax and output invalid HTML if you try hard enough.\n\n#### Wrap Markdown Tags Completely ####\n\nWhile it may support incomplete Markdown tags in the future, the CriticMarkup processor currently chokes on them. Avoid this:\n\n\tI really love *italic {~~fonts*~\u003efont-styles*~~}.\n\nInstead, wrap the asterisks completely:\n\n\tI really love {~~*italic fonts*~\u003e*italic font-styles*~~}.\n\n---\n\n    Copyright 2013 Gabe Weatherhead and Erik Hess\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n     http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCriticMarkup%2FCriticMarkup-toolkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FCriticMarkup%2FCriticMarkup-toolkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCriticMarkup%2FCriticMarkup-toolkit/lists"}