{"id":13439219,"url":"https://github.com/hertogp/imagine","last_synced_at":"2025-10-28T22:58:07.124Z","repository":{"id":52460634,"uuid":"88499834","full_name":"hertogp/imagine","owner":"hertogp","description":"A pandoc-filter for images","archived":false,"fork":false,"pushed_at":"2021-05-03T14:55:49.000Z","size":18256,"stargazers_count":82,"open_issues_count":2,"forks_count":11,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-09-17T08:26:27.671Z","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":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hertogp.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES","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":"2017-04-17T10:59:05.000Z","updated_at":"2024-09-08T07:01:31.000Z","dependencies_parsed_at":"2022-08-25T23:01:03.273Z","dependency_job_id":null,"html_url":"https://github.com/hertogp/imagine","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/hertogp/imagine","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hertogp%2Fimagine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hertogp%2Fimagine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hertogp%2Fimagine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hertogp%2Fimagine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hertogp","download_url":"https://codeload.github.com/hertogp/imagine/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hertogp%2Fimagine/sbom","scorecard":{"id":462427,"data":{"date":"2025-08-11","repo":{"name":"github.com/hertogp/imagine","commit":"fe3b783d34d387642180e2bdc27c1fa7e1ca5cf5"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}}]},"last_synced_at":"2025-08-19T11:29:48.564Z","repository_id":52460634,"created_at":"2025-08-19T11:29:48.564Z","updated_at":"2025-08-19T11:29:48.564Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281527380,"owners_count":26516845,"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-10-28T02:00:06.022Z","response_time":60,"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":[],"created_at":"2024-07-31T03:01:12.060Z","updated_at":"2025-10-28T22:58:07.103Z","avatar_url":"https://github.com/hertogp.png","language":"Python","funding_links":[],"categories":["HarmonyOS"],"sub_categories":["Windows Manager"],"readme":"``` \n                                          \\\\\\///\n                                         / _  _ \\\n                                       (| (.)(.) |)\n                .--------------------.OOOo--()--oOOO.-------------------.\n                |                                                       |\n                |        ____                          _                |\n                |       /  _/____ ___   ____ _ ____ _ (_)____   ___     |\n                |       / / / __ `__ \\ / __ `// __ `// // __ \\ / _ \\    |\n                |     _/ / / / / / / // /_/ // /_/ // // / / //  __/    |\n                |    /___//_/ /_/ /_/ \\__,_/ \\__, //_//_/ /_/ \\___/     |\n                |                           /____/                      |\n                |                                                       |\n                '-------------------.oooO-------------------------------'\n                                     (   )   Oooo.\n                                      \\ (    (   )\n                                       \\_)    ) /\n                                             (_/\n```\n\n## A pandoc filter to process codeblocks into images and/or ascii art\n\nImagine is a pandoc filter that will turn codeblocks tagged with certain\nclasses into images or ascii art. The following are currently supported:\n\n    actdiag, asy, asymptote, blockdiag, boxes, circo, ctioga2, ditaa, dot, fdp,\n    figlet, flydraw, gle, gnuplot, graph, graphviz, gri, imagine, mermaid, mscgen,\n    neato, nwdiag, octave, packetdiag, pic, pic2plot, plantuml, plot, ploticus,\n    protocol, pyxplot, rackdiag, seqdiag, sfdp, shebang, twopi\n\n## Examples\n\n### [Mscgen](http://www.mcternan.me.uk/mscgen/)\n\n![](https://raw.githubusercontent.com/hertogp/imagine/master/pd-images/3472ea8b47f0b7d2d2f30565851e320f39b5e3a9.png)\n\n    ```{.mscgen im_out=\"img,fcb\" im_fmt=\"png\"}\n    msc {\n     hscale=\"1.3\", arcgradient = \"8\";\n    \n     a [label=\"Client\"],b [label=\"Server\"];\n    \n     a=\u003eb [label=\"data1\"];\n     a-xb [label=\"data2\"];\n     a=\u003eb [label=\"data3\"];\n     a\u003c=b [label=\"ack1, nack2\"];\n     a=\u003eb [label=\"data2\", arcskip=\"1\"];\n     |||;\n     a\u003c=b [label=\"ack3\"];\n     |||;\n    }\n    ```\n\n### [Mermaid](https://github.com/mermaidjs/mermaid.cli)\n\n![](https://raw.githubusercontent.com/hertogp/imagine/master/pd-images/cc321a3330d39327fcaffac5dc39397e6166edc7.png)\n\n    ```{.mermaid im_opt=\"-H 300\" im_fmt=\"png\" im_out=\"img,fcb\"}\n    sequenceDiagram\n        Alice -\u003e\u003e Bob: Hello Bob, how are you?\n        Bob--\u003e\u003eJohn: How about you John?\n        Bob--x Alice: I am good thanks!\n        Bob-x John: I am good thanks!\n        Note right of John: Bob thinks a long\u003cbr/\u003elong time, so long\u003cbr/\u003ethat the text does\u003cbr/\u003enot fit on a row.\n    \n        Bob--\u003eAlice: Checking with John...\n        Alice-\u003eJohn: Yes... John, how are you?\n    ```\n\n### [Gnuplot](http://www.gnuplot.info)\n\n![](https://raw.githubusercontent.com/hertogp/imagine/master/pd-images/5f64cf6a4cf0b4b737fd2d07f0e3cc035475aca6.png)\n\n    ```{.gnuplot im_fmt=\"png\" im_out=\"img,fcb\"}\n    set terminal png\n    set dummy u,v\n    set key bmargin center horizontal Right noreverse enhanced autotitles nobox\n    set parametric\n    set view 50, 30, 1, 1\n    set isosamples 50, 20\n    set hidden3d back offset 1 trianglepattern 3 undefined 1 altdiagonal bentover\n    set ticslevel 0\n    set title \"Interlocking Tori\"\n    set urange [ -3.14159 : 3.14159 ] noreverse nowriteback\n    set vrange [ -3.14159 : 3.14159 ] noreverse nowriteback\n    splot cos(u)+.5*cos(u)*cos(v),sin(u)+.5*sin(u)*cos(v),.5*sin(v) with lines,\\\n    1+cos(u)+.5*cos(u)*cos(v),.5*sin(v),sin(u)+.5*sin(u)*cos(v) with lines\n    ```\n\n### [Shebang](http://www.google.com/search?q=linux+shebang) using Python \u0026 Pygal\n\n![](https://raw.githubusercontent.com/hertogp/imagine/master/pd-images/4d647b61c07fe8c3935def2b57796c0780ff38bd.png)\n\n    ```{.shebang im_fmt=\"png\" im_out=\"img,fcb\"}\n    #!/usr/bin/env python3\n    import sys\n    import pygal\n    from math import cos\n    xy_chart = pygal.XY()\n    xy_chart.title = 'XY Cosinus'\n    xy_chart.add('x = cos(y)', [(cos(x / 10.), x / 10.) for x in range(-50, 50, 5)])\n    xy_chart.add('y = cos(x)', [(x / 10., cos(x / 10.)) for x in range(-50, 50, 5)])\n    xy_chart.render_to_png(sys.argv[-1])\n    ```\n\n### [boxes](http://boxes.thomasjensen.com)\n\n    /*       _\\|/_\n             (o o)\n     +----oOO-{_}-OOo------------------------------+\n     |    #!/bin/bash                              |\n     |    # I seem to have got myself boxed in!    |\n     |    cat $0 | boxes -d peek -p h4             |\n     +--------------------------------------------*/\n\n    ```{.shebang im_out=\"stdout,fcb\"}\n    #!/bin/bash\n    # I seem to have got myself boxed in!\n    cat $0 | boxes -d peek -p h4\n    ```\n\nMore examples on\n[github](https://github.com/hertogp/imagine/tree/master/examples), which\nalso includes formats other than `png`.\n\n## Documentation\n\n    Imagine\n      A pandoc filter to turn fenced codeblocks into graphics or ascii art by\n      wrapping some external command line utilities, such as:\n    \n        actdiag, asy, asymptote, blockdiag, boxes, circo, ctioga2, ditaa, dot,\n        fdp, figlet, flydraw, gle, gnuplot, graph, graphviz, gri, imagine,\n        mermaid, mscgen, neato, nwdiag, octave, packetdiag, pic, pic2plot,\n        plantuml, plot, ploticus, protocol, pyxplot, rackdiag, seqdiag, sfdp,\n        shebang, twopi\n    \n    \n    Installation\n    \n        % sudo -H pip install pandoc-imagine\n    \n        or simply save `pandoc_imagine.py` anywhere along python's sys.path\n    \n    \n    Dependencies\n    \n        % sudo -H pip install pandocfilters six\n    \n        and one (or more) of the packages that provide above utilities.\n    \n    \n    Pandoc usage\n    \n        % pandoc --filter pandoc-imagine document.md -o document.pdf\n    \n    \n    Markdown usage\n    \n        ```cmd\n        code\n        ```\n    \n      Alternate, longer form:\n    \n        ```{.cmd im_opt=\"..\" ...}\n        code\n        ```\n    \n      which will run `cmd` (if known) to proces the `code` into an image and\n      replaces the fenced code block with an Image in a paragraph of its own or any\n      ascii art in its own CodeBlock.\n    \n      If the command fails, the original fenced code block is retained unchanged.\n      Usually, only errors are printed to stderr but you can get more info by\n      setting the `im_log` option (see below).\n    \n      If the command succeeds but produces no image, a line reporting the missing\n      image is included in the output document.\n    \n    \n    Imagine options\n    \n      Imagine's behaviour can be influenced by setting these options:\n    \n      - im_opt=\"\" or any cli-options to pass in on the command line.\n        Some classes already provide some defaults (as required by the command).\n    \n      - im_out=\"img\", or ordered csv-list of keywords indicating what to produce:\n        - img     an image-link in a paragraph\n        - ocb     the original codeblock but without imagine's class or options\n        - fcb     an anonymous codeblock containing the original codeblock\n        - stdout  an anonymous codeblock containing captured stdout (if any)\n        - stderr  an anonymous codeblock containing captured stderr (if any)\n    \n        Some workers ignore 'img' by necessity since they donot produce graphical\n        data that can be linked to, e.g. `figlet` or `protocol`, while others the\n        'stdout' will ignored because that's where they produce their graphical\n        data.\n    \n      - im_prg=None, or a cli-cmd name to override class-to-command map.\n        Normally, the class on the code block maps directly to a command line\n        tool to use. For example,\n        ```gri\n        ..\n        ```\n        maps gri to `gri`, but that can be changed by `{.gri im_prg=\"gri2\"} to use\n        `gri2` instead of `gri`.\n    \n      - im_fmt=\"png\", or another output format of your choosing depending on the\n        command line tool used.  Some tools donot derive their output image format\n        from an intended output file name extension, but instead require it to be\n        set in the tool's codeblock containing its instructions.  Be sure the code\n        in the codeblock matches `im_fmt` or pandoc may have trouble assembling the\n        final document.\n    \n      - im_dir=\"pd\", or antoher absolute or relative (to the working directory)\n        path in which input/output files are to be stored during processing.\n        Note that an \"-images\" is still tacked onto the end of the path though.\n    \n      - im_log=0, which defaults to printing only errors caught during processing.\n        Set it to -1 to completely silence Imagine, or as high as 4 for debug level\n        output if somethings goes wrong and you need more information on what is\n        going on.\n    \n      Option values are resolved in order of most to least specific:\n    \n      1. {.klass im_xyz=\"..\"}       codeblock specific\n      2. imagine.klass.im_xyz: ..   metadata, klass specific\n      3. imagine.im_xyz: ..         metadata, imagine specific\n      4. class variable             hardcoded default\n    \n      Notes:\n      - filenames are based on a hash of the codeblock + its attributes\n      - uses subdir `{im_dir}-images` to store any input/output files\n      - there's no clean up of files stored there\n      - if an output filename exists, it is not regenerated but simply linked to.\n      - `packetdiag`'s underlying library seems to have some problems.\n    \n      Some commands follow a slightly different pattern:\n      - 'img' directive is ignored by commands that only produce ascii\n      - ctioga2 defaults to pdf instead of png\n      - flydraw produces a gif, not png\n      - gle also creates a .gle subdir inside the images-dir\n      - gri produces a ps, which is `convert`ed to png\n      - imagine reads its code as help-topics, returns codeblocks with help-info\n      - plot reads its codeblock as the relative path to the file to process\n      - pyxplot will have `set terminal` \u0026 `set output` prepended to its `code`\n      - shebang runs its codeblock as a script with \u003cfname\u003e.{im_fmt} as its argument.\n        - use {.shebang im_out=\"stdout\"} for text instead of an png\n    \n    \n    Merge `Image`'s into a single `Para`.\n    \n      Based on a feature request (https://github.com/hertogp/imagine/issues/16) by\n      pbsds (https://github.com/pbsds), `pandoc-imagine` has been extended to\n      better cooperate with pandoc-crossref\n      (https://github.com/lierdakil/pandoc-crossref#pandoc-crossref-filter-), whose\n      subfigure grids (https://lierdakil.github.io/pandoc-crossref/#subfigure-grid)\n      facility requires that consecutive image links be located inside a single\n      paragraph.\n    \n      This means that 'Div's, when assigned the 'pandoc-imagine' specific class\n      `im_merge`, will have their block-level elements processed individually.  Any\n      consecutive `Image`-links are collected into a single `Para`, other elements\n      are included in the `Div` contents as-is.\n    \n      See Examples/inline.md and Examples/inline.pdf.\n    \n    \n    Security\n    \n      Imagine just hands the fenced codeblocks to plotting tools to process or\n      simply runs them as system scripts, as-is.\n    \n      Shebang's are inherently unsafe and most of the plotting tools implement\n      their own 'little' languages, which can create beautiful images, but can also\n      cause harm.\n    \n      There is no way to check for 'side effects' in advance, so make sure to check\n      the fenced codeblocks before running them through the filter.\n    \n    \n    Imagine class\n    \n    The imagine class puts documentation of topics at your fingertips, like so:\n    \n        ```imagine\n        klass\n        ```\n    \n      Use `imagine` as klass to get the module's docstring (ie this text) and/or\n      one or more of the commands you're interested in, each on a separate line.\n    \n    \n    Thanks for feedback:\n    \n      amietn, chdemko, heyrict, priiduonu, K4zuki, pbsds\n\n## Individual Classes\n\n``` \nAsy\n\n    sudo-apt-get install asymptote\n\n    See http://asymptote.sourceforge.net/\n    \n    Runs asy -o \u003cfname\u003e.{im_fmt} {im_opt} \u003cfname\u003e.asy\n    Wraps:\n    -  'asy' -\u003e asy\n    -  'asymptote' -\u003e asy\n\nBlockDiag\n\n    sudo pip install blockdiag nwdiag actdiag seqdiag\n    http://blockdiag.com/\n    \n    Runs {im_prg} {im_opt} -T {im_fmt} \u003cfname\u003e.{im_fmt} -o \u003cfname\u003e.{im_prg}\n    Wraps:\n    -  'blockdiag' -\u003e blockdiag\n    -  'seqdiag' -\u003e seqdiag\n    -  'rackdiag' -\u003e rackdiag\n    -  'nwdiag' -\u003e nwdiag\n    -  'packetdiag' -\u003e packetdiag\n    -  'actdiag' -\u003e actdiag\n\nBoxes\n\n    sudo apt-get install boxes\n    http://boxes.thomasjensen.com\n    \n    Runs boxes {im_opt} \u003cfname\u003e.boxes\n    Wraps:\n    -  'boxes' -\u003e boxes\n\nCtioga2\n\n    sudo apt-get install ctioga2\n    http://ctioga2.sourceforge.net\n    \n    Runs ctioga2 {im_opt} -f \u003cfname\u003e.ctioga2\n    Wraps:\n    -  'ctioga2' -\u003e ctioga2\n\nDitaa\n\n    sudo apt-get install ditaa\n    http://ditaa.sourceforge.net\n    \n    Runs ditaa \u003cfname\u003e.ditaa \u003cfname\u003e.{im_fmt} {im_opt}\n    Wraps:\n    -  'ditaa' -\u003e ditaa\n\nFiglet\n\n    sudo apt-get install figlet\n    http://www.figlet.org\n    \n    Runs figlet {im_opt} \u003c code-text\n    Wraps:\n    -  'figlet' -\u003e figlet\n\nFlydraw\n\n    sudo apt-get install flydraw\n    http://manpages.ubuntu.com/manpages/precise/man1/flydraw.1.html\n    notes:\n    - graphic data is printed to stdout\n    - so 'stdout' in im_out option is silently ignored\n    \n    Runs flydraw {im_opt} \u003c code-text\n    Wraps:\n    -  'flydraw' -\u003e flydraw\n\nGle\n\n    sudo apt-get install gle-graphics\n    http://glx.sourceforge.net\n    \n    Runs gle {im_opt} -verbosity 0 -output \u003cfname\u003e.{im_fmt} \u003cfname\u003e.gle\n    Wraps:\n    -  'gle' -\u003e gle\n\nGnuPlot\n\n    sudo apt-get install gnuplot\n    http://www.gnuplot.info\n    notes:\n    - graphic data is printed to stdout\n    - so 'stdout' in im_out option is silently ignored\n    \n    Runs gnuplot {im_opt} \u003cfname\u003e.gnuplot \u003e \u003cfname\u003e.{im_fmt}\n    Wraps:\n    -  'gnuplot' -\u003e gnuplot\n\nGraph\n\n    sudo apt-get install plotutils\n    https://www.gnu.org/software/plotutils\n    notes:\n    - graphic data is printed to stdout\n    - so 'stdout' in im_out option is silently ignored\n    \n    Runs graph -T png {im_opt} \u003cfname\u003e.graph\n    Wraps:\n    -  'graph' -\u003e graph\n\nGraphviz\n\n    sudo apt-get install graphviz\n    http://graphviz.org\n    \n    Runs {im_prg} {im_opt} -T{im_fmt} \u003cfname\u003e.{im_prg} \u003cfname\u003e.{im_fmt}\n    Wraps:\n    -  'dot' -\u003e dot\n    -  'neato' -\u003e neato\n    -  'twopi' -\u003e twopi\n    -  'circo' -\u003e circo\n    -  'fdp' -\u003e fdp\n    -  'sfdp' -\u003e sfdp\n    -  'graphviz' -\u003e dot\n\nGri\n\n    sudo apt-get install gri imagemagick\n    http://gri.sourceforge.net\n    Notes\n    - insists on creating a \u003cfname\u003e.ps in current working directory\n    - requires `convert` from imagemagick\n    - ImageMagick's security policy might need massaging\n    \n    Runs gri {im_opt} -c 0 -b \u003cfname\u003e.gri\n    Wraps:\n    -  'gri' -\u003e gri\n\nImagine\n\n    pip install pandoc-imagine\n    https://github.com/hertogp/imagine\n    \n    Runs returns documentation in a CodeBlock\n    Wraps:\n    -  'imagine' -\u003e imagine\n\nMermaid\n\n    sudo npm install mermaid.cli\n    https://github.com/mermaidjs/mermaid.cli\n    \n    Runs mmdc -i \u003cfname\u003e.mermaid -o \u003cfname\u003e.\u003cfmt\u003e {im_opt}\n    Wraps:\n    -  'mermaid' -\u003e mmdc\n\nMscGen\n\n    sudo apt-get install mscgen\n    http://www.mcternan.me.uk/mscgen\n    \n    Runs mscgen -T {im_fmt} -o \u003cfname\u003e.{im_fmt} \u003cfname\u003e.mscgen\n    Wraps:\n    -  'mscgen' -\u003e mscgen\n\nOctave\n\n    sudo apt-get install octave\n    https://www.gnu.org/software/octave\n    \n    Runs octage --no-gui -q {im_opt} \u003cfname\u003e.octave \u003cfname\u003e.{im_fmt}\n    Wraps:\n    -  'octave' -\u003e octave\n\nPic2Plot\n\n    sudo apt-get install plotutils\n    https://www.gnu.org/software/plotutils\n    notes:\n    - graphic data is printed to stdout\n    - so 'stdout' in im_out option is silently ignored\n    \n    Runs pic2plot -T png {im_opt} \u003cfname\u003e.pic2plot\n    Wraps:\n    -  'pic2plot' -\u003e pic2plot\n    -  'pic' -\u003e pic2plot\n\nPlantUml\n\n    sudo apt-get install plantuml\n    http://plantuml.com\n    \n    Runs plantuml -t{im_fmt} \u003cfname\u003e.plantuml {im_opt}\n    Wraps:\n    -  'plantuml' -\u003e plantuml\n\nPlot\n\n    sudo apt-get install plotutils\n    https://www.gnu.org/software/plotutils\n    notes:\n    - graphic data is printed to stdout\n    - so 'stdout' in im_out option is silently ignored\n    \n    Runs plot -T {im_fmt} {im_opt} \u003ccode-text-as-filename\u003e\n    Wraps:\n    -  'plot' -\u003e plot\n\nPloticus\n\n    sudo apt-get install ploticus\n    http://ploticus.sourceforge.net/doc/welcome.html\n    \n    Runs ploticus -{im_fmt} -o \u003cfname\u003e.{im_fmt} {im_opt} \u003cfname\u003e.ploticus\n    Wraps:\n    -  'ploticus' -\u003e ploticus\n\nProtocol\n\n    cd ~/installs/git-repos\n    git clone https://github.com/luismartingarcia/protocol.git\n    python setup install\n    https://github.com/luismartingarcia/protocol.git\n    \n    Runs protocol {im_opt} code-text\n    Wraps:\n    -  'protocol' -\u003e protocol\n\nPyxPlot\n\n    sudo apt-get install pyxplot\n    http://pyxplot.org.uk\n    \n    Runs pyxplot {im_opt} \u003cfname\u003e.pyxplot\n    Wraps:\n    -  'pyxplot' -\u003e pyxplot\n\nSheBang\n\n    http://www.google.com/search?q=shebang+line\n    \n    Runs \u003cfname\u003e.shebang {im_opt} \u003cfname\u003e.{im_fmt}\n    Wraps:\n    -  'shebang' -\u003e shebang\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhertogp%2Fimagine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhertogp%2Fimagine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhertogp%2Fimagine/lists"}