Generating SVG syntax diagrams with plugins for all output ... · ©2017 IBM Corporation Generating...

24
©2017 IBM Corporation Generating SVG syntax diagrams with plugins for all output formats DITA-OT Day Berlin, 2017 Robert D. Anderson, IBM @ robander

Transcript of Generating SVG syntax diagrams with plugins for all output ... · ©2017 IBM Corporation Generating...

Page 1: Generating SVG syntax diagrams with plugins for all output ... · ©2017 IBM Corporation Generating SVG syntax diagrams with plugins for all output formats DITA-OT Day Berlin, 2017

©2017 IBM Corporation

Generating SVG syntax diagrams

with plugins for all output formats

DITA-OT Day Berlin, 2017

Robert D. Anderson, IBM@robander

Page 2: Generating SVG syntax diagrams with plugins for all output ... · ©2017 IBM Corporation Generating SVG syntax diagrams with plugins for all output formats DITA-OT Day Berlin, 2017

©2017 IBM CorporationDigital Services Group

What I expect you are expecting…

• Syntax diagrams!

• What?

• and… Why?

• Technical drawings!

• Examples

• The future…

DITA Open Toolkit Day 2017

Page 3: Generating SVG syntax diagrams with plugins for all output ... · ©2017 IBM Corporation Generating SVG syntax diagrams with plugins for all output formats DITA-OT Day Berlin, 2017

©2017 IBM CorporationDigital Services Group

Long, long ago…

• Syntax markup in use in IBM

• BookMaster (or earlier?)

• IBMIDDoc SGML

• Eventually, part of DITA

programming domain

• Intent: document command

line syntax

DITA Open Toolkit Day 2017

Page 4: Generating SVG syntax diagrams with plugins for all output ... · ©2017 IBM Corporation Generating SVG syntax diagrams with plugins for all output formats DITA-OT Day Berlin, 2017

©2017 IBM CorporationDigital Services Group

The <syntaxdiagram> elements

• Groups: choice, composite,

sequence

• Fragments, blocks, notes

• References to notes, fragments

• <kwd>, <var>, <oper>,

<delim>, <sep>, <repsep>

DITA Open Toolkit Day 2017

Page 5: Generating SVG syntax diagrams with plugins for all output ... · ©2017 IBM Corporation Generating SVG syntax diagrams with plugins for all output formats DITA-OT Day Berlin, 2017

©2017 IBM CorporationDigital Services Group

DITA Syntax Markup: simple example

<syntaxdiagram id="syntaxdiagram_adx_tsm_pbb">

<groupseq>

<kwd>DIT2HTML</kwd>

<groupseq>

<kwd importance="optional">/I:</kwd>

<var importance="optional">path</var>

<var>filename.ext</var>

</groupseq>

<var>options</var>

</groupseq>

</syntaxdiagram>

DITA Open Toolkit Day 2017

Page 6: Generating SVG syntax diagrams with plugins for all output ... · ©2017 IBM Corporation Generating SVG syntax diagrams with plugins for all output formats DITA-OT Day Berlin, 2017

©2017 IBM CorporationDigital Services Group

Traditional rendering

The beauty of ASCII art…

>>-DIT2HTML--+-----+--+------+--filename.ext--options----------><

'-/I:-' '-path-'

DITA Open Toolkit Day 2017

Page 7: Generating SVG syntax diagrams with plugins for all output ... · ©2017 IBM Corporation Generating SVG syntax diagrams with plugins for all output formats DITA-OT Day Berlin, 2017

©2017 IBM CorporationDigital Services Group

Aside: where few dare to tread…

.-REPEAT------------------------------------------.

V .-complaints-. |

>>-Innocent developer----+-Write syntax generator--:--+-pain-------+---+-+-><

| '-anguish----' |

| .-joy---. |

'-Do not write syntax generator--:--+-fun---+-'

'-peace-'

DITA Open Toolkit Day 2017

Page 8: Generating SVG syntax diagrams with plugins for all output ... · ©2017 IBM Corporation Generating SVG syntax diagrams with plugins for all output formats DITA-OT Day Berlin, 2017

©2017 IBM CorporationDigital Services Group

Ever-so-slightly more complicated example

DITA Open Toolkit Day 2017

Page 9: Generating SVG syntax diagrams with plugins for all output ... · ©2017 IBM Corporation Generating SVG syntax diagrams with plugins for all output formats DITA-OT Day Berlin, 2017

©2017 IBM CorporationDigital Services Group

Rendering in DITA-OT docs

DITA Open Toolkit Day 2017

Page 10: Generating SVG syntax diagrams with plugins for all output ... · ©2017 IBM Corporation Generating SVG syntax diagrams with plugins for all output formats DITA-OT Day Berlin, 2017

©2017 IBM CorporationDigital Services Group

Rendering (older IBM diagram tool)

|--dita-- --input=--file-- --format=--name--+---------+---------|

'-options-'

|--dita-- --install--+----------+-------------------------------|

+-filename-+

'-URL------'

|--dita-- --uninstall--id---------------------------------------|

|--dita-- --help------------------------------------------------|

|--dita-- --version---------------------------------------------|

DITA Open Toolkit Day 2017

Page 11: Generating SVG syntax diagrams with plugins for all output ... · ©2017 IBM Corporation Generating SVG syntax diagrams with plugins for all output formats DITA-OT Day Berlin, 2017

©2017 IBM CorporationDigital Services Group

Even more complex example

DITA Open Toolkit Day 2017

Page 12: Generating SVG syntax diagrams with plugins for all output ... · ©2017 IBM Corporation Generating SVG syntax diagrams with plugins for all output formats DITA-OT Day Berlin, 2017

©2017 IBM CorporationDigital Services Group

Not sure how to read that?

DITA Open Toolkit Day 2017

Page 13: Generating SVG syntax diagrams with plugins for all output ... · ©2017 IBM Corporation Generating SVG syntax diagrams with plugins for all output formats DITA-OT Day Berlin, 2017

©2017 IBM CorporationDigital Services Group

Oh, the complaining!

“I WANT SVG!!!!!!”

“THOSE ARE UGLY!!!!”

“WHY DON’T WE HAVE SVG YET!!!!”

DITA Open Toolkit Day 2017

Page 14: Generating SVG syntax diagrams with plugins for all output ... · ©2017 IBM Corporation Generating SVG syntax diagrams with plugins for all output formats DITA-OT Day Berlin, 2017

©2017 IBM CorporationDigital Services Group

Enter: Deborah Picket and HTML+

2009: DITA-OT 1.4.3

DITA Open Toolkit Day 2017

Page 15: Generating SVG syntax diagrams with plugins for all output ... · ©2017 IBM Corporation Generating SVG syntax diagrams with plugins for all output formats DITA-OT Day Berlin, 2017

©2017 IBM CorporationDigital Services Group

Updating for DITA-OT 2.x

• Significant refactoring (update across 7 years of DITA-OT)

• Tease out SVG code to run independently

• Add as “preprocess” extension for any format

• Don’t generate JPG backups

• Lots of minor fixes

DITA Open Toolkit Day 2017

Page 16: Generating SVG syntax diagrams with plugins for all output ... · ©2017 IBM Corporation Generating SVG syntax diagrams with plugins for all output formats DITA-OT Day Berlin, 2017

©2017 IBM CorporationDigital Services Group

Rendering (updated plugins from html+)

DITA Open Toolkit Day 2017

Page 17: Generating SVG syntax diagrams with plugins for all output ... · ©2017 IBM Corporation Generating SVG syntax diagrams with plugins for all output formats DITA-OT Day Berlin, 2017

©2017 IBM CorporationDigital Services Group

More complex test diagram, from PDF

• Nested “choice” groups

• Choice groups within

sequence groups

DITA Open Toolkit Day 2017

Page 18: Generating SVG syntax diagrams with plugins for all output ... · ©2017 IBM Corporation Generating SVG syntax diagrams with plugins for all output formats DITA-OT Day Berlin, 2017

©2017 IBM CorporationDigital Services Group

Deborah took the path I feared to tread

With wonderful results:

DITA Open Toolkit Day 2017

Page 19: Generating SVG syntax diagrams with plugins for all output ... · ©2017 IBM Corporation Generating SVG syntax diagrams with plugins for all output formats DITA-OT Day Berlin, 2017

©2017 IBM CorporationDigital Services Group

Current status

• Works with 2.5

• Hosted at GitHub:

https://github.com/robander/svg-syntaxdiagrams

• “Make it work” approach, not as tidy as I’d like, too many plugins

DITA Open Toolkit Day 2017

Page 20: Generating SVG syntax diagrams with plugins for all output ... · ©2017 IBM Corporation Generating SVG syntax diagrams with plugins for all output formats DITA-OT Day Berlin, 2017

©2017 IBM CorporationDigital Services Group

Future

• Currently failing with 3.0 but I’ll have to update

• Much of the code still declares XSLT 1

• Also some issues with Batik version

• Would love to have others trying it

DITA Open Toolkit Day 2017

Page 21: Generating SVG syntax diagrams with plugins for all output ... · ©2017 IBM Corporation Generating SVG syntax diagrams with plugins for all output formats DITA-OT Day Berlin, 2017

©2017 IBM CorporationDigital Services Group

Further study

Syntax plugins:

https://github.com/robander/svg-syntaxdiagrams

Project page and documentation:

http://dita-ot.org

GitHub project:

https://github.com/dita-ot/dita-ot/

Slack channel:

http://slack.dita-ot.org/

DITA Open Toolkit Day 2017

Page 22: Generating SVG syntax diagrams with plugins for all output ... · ©2017 IBM Corporation Generating SVG syntax diagrams with plugins for all output formats DITA-OT Day Berlin, 2017

©2017 IBM CorporationDigital Services Group

I am ready for your help!

…I’ll also take questions

DITA Open Toolkit Day 2017

Page 23: Generating SVG syntax diagrams with plugins for all output ... · ©2017 IBM Corporation Generating SVG syntax diagrams with plugins for all output formats DITA-OT Day Berlin, 2017

©2017 IBM CorporationDigital Services Group

Image credits

NASA/JPL-Caltech

http://www.jpl.nasa.gov/visions-of-the-future/

https://images.nasa.gov/

British Library Flickr stream

www.flickr.com/photos/britishlibrary/

New York Public Library Digital Collections

https://digitalcollections.nypl.org/

23

Page 24: Generating SVG syntax diagrams with plugins for all output ... · ©2017 IBM Corporation Generating SVG syntax diagrams with plugins for all output formats DITA-OT Day Berlin, 2017

Thank you

Digital Services Group