//
// Copyright (c) 2018 Eclipse Foundation and others.
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v1.0
// which accompanies this distribution, and is available at
// http://www.eclipse.org/legal/epl-v10.html
//

= New and Noteworthy Documentation Generation

This directory contains the source and output for the New and Noteworthy documentation for the Eclipse Photon release. The content is intended primarily to target end users.

== JDT Content

The JDT content is generated from the content produced by the JDT project team. The one-liner below converts that content into Asciidoctor (and makes a few little extra fixes).

wget http://git.eclipse.org/c/platform/eclipse.platform.common.git/plain/bundles/org.eclipse.jdt.doc.user/whatsNew/jdt_whatsnew.html -O - | sed 's/<td class="title">\(.*\)<\/td>/<h3>\1<\/h3>/g;s/<tr id="\([^"]*\)">/<div id="\1">/g;s/<\/tr>/<\/div>/g;s/<td class="content">/<p>/g;s/<\/td>/<\/p>/g;s/<td id="\([^"]*\)" class="section" colspan="2">/<div id="\1">/g;s/<tr>//g;s/ [Qq]uick [Ff]ix/ QuickFix/g' | pandoc --atx-headers --self-contained --wrap=none -f html -t asciidoc | sed 's/image:i/image::i/;s/ [Qq]uick \?[Ff]ix/ Quick Fix/g;s/ [Qq]uick \?[Aa]ssist/ Quick Assist/g' > jdt.adoc
