From 3c082b00ac38260bbed847ff39d3d1307edc3c89 Mon Sep 17 00:00:00 2001 From: piergiuseppe la cava Date: Thu, 29 Dec 2016 19:51:50 +0100 Subject: [PATCH 1/9] Add Table supports as BlockEmitter and Plugin. Add test case and chage pom.xml version --- .../org/markdown4j/TableBlockEmitter.java | 50 +++++++++++++++++++ .../markdown4j/TestMardown4jProcessor.java | 24 +++++++++ src/test/resources/table.txt | 12 +++++ src/test/resources/tableAsPlugin.txt | 5 ++ 4 files changed, 91 insertions(+) create mode 100644 src/main/java/org/markdown4j/TableBlockEmitter.java create mode 100644 src/test/java/org/markdown4j/TestMardown4jProcessor.java create mode 100644 src/test/resources/table.txt create mode 100644 src/test/resources/tableAsPlugin.txt diff --git a/src/main/java/org/markdown4j/TableBlockEmitter.java b/src/main/java/org/markdown4j/TableBlockEmitter.java new file mode 100644 index 0000000..9f0d6cc --- /dev/null +++ b/src/main/java/org/markdown4j/TableBlockEmitter.java @@ -0,0 +1,50 @@ +package org.markdown4j; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import com.github.rjeschke.txtmark.BlockEmitter; + +public class TableBlockEmitter implements BlockEmitter{ + + @Override + public void emitBlock(StringBuilder out, List lines, String meta) { + Map alignment = new HashMap(); + StringBuilder myst = new StringBuilder(); + myst.append(""); + boolean first = true; + for (String string : lines) { + myst.append(""); + String[] split = string.split("\\|"); + Integer count = 0; + for (String string2 : split) { + if(string2.isEmpty()) continue; + count ++; + if(string2.trim().matches("\\:.*\\:")){ + alignment.put(count, "center"); continue; + }else if(string2.trim().matches(".*\\:")){ + alignment.put(count, "right"); continue; + }else if(string2.trim().matches("\\:.*")){ + alignment.put(count, "left"); continue; + } + myst.append(first?""); + + } + myst.append(""); + first = false; + } + myst.append("
":""); + myst.append(string2); + myst.append(first?"":"
"); + String string = myst.toString(); + Set keySet = alignment.keySet(); + for (Integer integer : keySet) { + string = string.replaceAll("calm=\""+integer+"\"", "style=\"text-align:"+alignment.get(integer)+"\""); + } + out.append(string); + + } + +} diff --git a/src/test/java/org/markdown4j/TestMardown4jProcessor.java b/src/test/java/org/markdown4j/TestMardown4jProcessor.java new file mode 100644 index 0000000..5b07e94 --- /dev/null +++ b/src/test/java/org/markdown4j/TestMardown4jProcessor.java @@ -0,0 +1,24 @@ +package org.markdown4j; + +import java.io.FileReader; +import java.io.IOException; +import java.net.URL; + +import org.junit.Test; + +import com.github.rjeschke.txtmark.test.MarkupFileTester; + +public class TestMardown4jProcessor { + + @Test + public void test() throws IOException { + Markdown4jProcessor markdown4jProcessor = new Markdown4jProcessor(); + markdown4jProcessor = markdown4jProcessor.registerPlugins(new TablePlugin()); + URL fileUrl = MarkupFileTester.class.getResource( "/table.txt" ); + FileReader file = new FileReader( fileUrl.getFile() ); + String process = markdown4jProcessor.process(file); + System.out.println(process); + + } + +} diff --git a/src/test/resources/table.txt b/src/test/resources/table.txt new file mode 100644 index 0000000..25e12b6 --- /dev/null +++ b/src/test/resources/table.txt @@ -0,0 +1,12 @@ +# Test Table as Plugin +%%% table +| HEADER 1 | HEADER 2 | HEADER 3 | +| :--- | :---: | ---: | +|content 1 | content 2|content 3 | +%%% + +#Test Table as native TABLE type +| HEADER 1 | HEADER 2 | HEADER 3 | +| :--- | :---: | ---: | +|content 1 | content 2|content 3 | + diff --git a/src/test/resources/tableAsPlugin.txt b/src/test/resources/tableAsPlugin.txt new file mode 100644 index 0000000..7b60436 --- /dev/null +++ b/src/test/resources/tableAsPlugin.txt @@ -0,0 +1,5 @@ +%%% table +| HEADER 1 | HEADER 2 | HEADER 3 | +| :--- | :---: | ---: | +|content 1 | content 2|content 3 | +%%% From 68ae1449f46675a5cc217819ffc5648f4b49a220 Mon Sep 17 00:00:00 2001 From: piergiuseppe la cava Date: Thu, 29 Dec 2016 19:59:21 +0100 Subject: [PATCH 2/9] Add Table supports as BlockEmitter and Plugin. Add test case and chage pom.xml version --- pom.xml | 2 +- .../github/rjeschke/txtmark/BlockType.java | 4 +- .../rjeschke/txtmark/Configuration.java | 16 ++++- .../com/github/rjeschke/txtmark/Emitter.java | 58 ++++++++++++++++++- .../com/github/rjeschke/txtmark/Line.java | 8 ++- .../com/github/rjeschke/txtmark/LineType.java | 4 +- .../github/rjeschke/txtmark/Processor.java | 22 ++++++- .../org/markdown4j/Markdown4jProcessor.java | 2 +- .../org/markdown4j/TableBlockEmitter.java | 4 ++ src/main/java/org/markdown4j/TablePlugin.java | 30 ++-------- .../markdown4j/TestMardown4jProcessor.java | 25 +++++++- src/test/resources/table.txt | 8 --- 12 files changed, 137 insertions(+), 46 deletions(-) diff --git a/pom.xml b/pom.xml index 7b33bf5..eab507d 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ org.commonjava.googlecode.markdown4j markdown4j - 2.2-cj-1.2-SNAPSHOT + 2.2-plc-1.3-SNAPSHOT scm:git:http://jdcasey@github.com/jdcasey/markdown4j.git diff --git a/src/main/java/com/github/rjeschke/txtmark/BlockType.java b/src/main/java/com/github/rjeschke/txtmark/BlockType.java index 03227b1..5603eb3 100644 --- a/src/main/java/com/github/rjeschke/txtmark/BlockType.java +++ b/src/main/java/com/github/rjeschke/txtmark/BlockType.java @@ -45,5 +45,7 @@ enum BlockType /** A XML block. */ XML, /** A plugin block. */ - PLUGIN + PLUGIN, + /** A TABLE block. */ + TABLE } diff --git a/src/main/java/com/github/rjeschke/txtmark/Configuration.java b/src/main/java/com/github/rjeschke/txtmark/Configuration.java index 6991ef4..82047b9 100644 --- a/src/main/java/com/github/rjeschke/txtmark/Configuration.java +++ b/src/main/java/com/github/rjeschke/txtmark/Configuration.java @@ -35,6 +35,8 @@ public class Configuration final Decorator decorator; final BlockEmitter codeBlockEmitter; + + final BlockEmitter tableBlockEmitter; final boolean forceExtendedProfile; @@ -82,15 +84,17 @@ public class Configuration * @param safeMode * @param encoding * @param decorator + * @param tableBlockEmitter */ Configuration( final boolean safeMode, final String encoding, final Decorator decorator, final BlockEmitter codeBlockEmitter, - final boolean forceExtendedProfile, final boolean convertNewline2Br, final SpanEmitter specialLinkEmitter, + final BlockEmitter tableBlockEmitter, final boolean forceExtendedProfile, final boolean convertNewline2Br, final SpanEmitter specialLinkEmitter, final List plugins ) { this.safeMode = safeMode; this.encoding = encoding; this.decorator = decorator; this.codeBlockEmitter = codeBlockEmitter; + this.tableBlockEmitter = tableBlockEmitter; this.convertNewline2Br = convertNewline2Br; this.forceExtendedProfile = forceExtendedProfile; this.specialLinkEmitter = specialLinkEmitter; @@ -126,6 +130,8 @@ public static class Builder private Decorator decorator = new DefaultDecorator(); private BlockEmitter codeBlockEmitter = null; + + private BlockEmitter tableBlockEmitter = null; private SpanEmitter specialLinkEmitter = null; @@ -281,7 +287,7 @@ public Builder registerPlugins( final Plugin... plugins ) */ public Configuration build() { - return new Configuration( this.safeMode, this.encoding, this.decorator, this.codeBlockEmitter, this.forceExtendedProfile, + return new Configuration( this.safeMode, this.encoding, this.decorator, this.codeBlockEmitter,this.tableBlockEmitter, this.forceExtendedProfile, this.convertNewline2Br, this.specialLinkEmitter, this.plugins ); } @@ -289,5 +295,11 @@ public Decorator getDecorator() { return decorator; } + + + public Builder setTableBlockEmitter(BlockEmitter tableBlockEmitter) { + this.tableBlockEmitter = tableBlockEmitter; + return this; + } } } diff --git a/src/main/java/com/github/rjeschke/txtmark/Emitter.java b/src/main/java/com/github/rjeschke/txtmark/Emitter.java index ccfe6bd..2d680e2 100644 --- a/src/main/java/com/github/rjeschke/txtmark/Emitter.java +++ b/src/main/java/com/github/rjeschke/txtmark/Emitter.java @@ -18,6 +18,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Map; +import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -193,6 +194,9 @@ private void emitLines(final StringBuilder out, final Block block) case FENCED_CODE: this.emitCodeLines(out, block.lines, block.meta, false); break; + case TABLE: + this.emitTableLines(out, block.lines, block.meta); + break; case PLUGIN: this.emitPluginLines(out, block.lines, block.meta); break; @@ -208,7 +212,59 @@ private void emitLines(final StringBuilder out, final Block block) } } - /** + private void emitTableLines(StringBuilder out, Line lines, String meta) { +// Map alignment = new HashMap(); +// StringBuilder myst = new StringBuilder(); +// myst.append(""); +// boolean first = true; +// do{ +// String lineValue = lines.value; +// myst.append(""); +// String[] split = lineValue.split("\\|"); +// Integer count = 0; +// for (String string2 : split) { +// if(string2.isEmpty()) continue; +// count ++; +// if(string2.trim().matches("\\:.*\\:")){ +// alignment.put(count, "center"); continue; +// }else if(string2.trim().matches(".*\\:")){ +// alignment.put(count, "right"); continue; +// }else if(string2.trim().matches("\\:.*")){ +// alignment.put(count, "left"); continue; +// } +// myst.append(first?""); +// +// } +// myst.append(""); +// first = false; +// lines = lines.next; +// }while(lines != null && lines.value != null && !lines.value.isEmpty()); +// myst.append("
":""); +// myst.append(string2); +// myst.append(first?"":"
"); +// String string = myst.toString(); +// Set keySet = alignment.keySet(); +// for (Integer integer : keySet) { +// string = string.replaceAll("calm=\""+integer+"\"", "style=\"text-align:"+alignment.get(integer)+"\""); +// } +// out.append(string); + Line line = lines; + if(this.config.codeBlockEmitter != null) + { + final ArrayList list = new ArrayList<>(); + while(line != null) + { + if(line.isEmpty) + list.add(""); + else + list.add(line.value); + line = line.next; + } + this.config.tableBlockEmitter.emitBlock(out, list, meta); + } + } + + /** * Finds the position of the given Token in the given String. * * @param in diff --git a/src/main/java/com/github/rjeschke/txtmark/Line.java b/src/main/java/com/github/rjeschke/txtmark/Line.java index 7d41c13..9c5913b 100644 --- a/src/main/java/com/github/rjeschke/txtmark/Line.java +++ b/src/main/java/com/github/rjeschke/txtmark/Line.java @@ -260,6 +260,9 @@ public LineType getLineType(boolean extendedMode) if(this.value.charAt(this.leading) == '>') return LineType.BQUOTE; + + if(this.value.contains("|")) + return LineType.TABLE; if(extendedMode) { @@ -272,10 +275,11 @@ public LineType getLineType(boolean extendedMode) return LineType.FENCED_CODE; if(this.countCharsStart('%') >= 3) - return LineType.PLUGIN; + return LineType.PLUGIN; + } } - + if(this.value.length() - this.leading - this.trailing > 2 && (this.value.charAt(this.leading) == '*' || this.value.charAt(this.leading) == '-' || this.value .charAt(this.leading) == '_') diff --git a/src/main/java/com/github/rjeschke/txtmark/LineType.java b/src/main/java/com/github/rjeschke/txtmark/LineType.java index 481b261..26bdffc 100644 --- a/src/main/java/com/github/rjeschke/txtmark/LineType.java +++ b/src/main/java/com/github/rjeschke/txtmark/LineType.java @@ -41,5 +41,7 @@ enum LineType /** Fenced code block start/end */ FENCED_CODE, /** plugin block */ - PLUGIN + PLUGIN, + /** table block */ + TABLE } diff --git a/src/main/java/com/github/rjeschke/txtmark/Processor.java b/src/main/java/com/github/rjeschke/txtmark/Processor.java index 5382ba9..1573bb4 100644 --- a/src/main/java/com/github/rjeschke/txtmark/Processor.java +++ b/src/main/java/com/github/rjeschke/txtmark/Processor.java @@ -888,7 +888,7 @@ private void recurse( final Block root, final boolean listMode ) { break; } - if ( this.useExtensions && ( t == LineType.CODE || t == LineType.FENCED_CODE || t == LineType.PLUGIN ) ) + if ( this.useExtensions && ( t == LineType.CODE || t == LineType.FENCED_CODE || t == LineType.PLUGIN || t == LineType.TABLE ) ) { break; } @@ -1012,6 +1012,26 @@ private void recurse( final Block root, final boolean listMode ) } block.removeSurroundingEmptyLines(); break; + case TABLE: + while ( line != null ) + { + if ( line.getLineType( this.useExtensions ) == LineType.TABLE ) + { + line = line.next; + }else{ + break; + } + + } + if ( line != null ) + { + line = line.next; + } + block = root.split( line != null ? line.previous : root.lineTail ); + block.type = BlockType.TABLE; + block.meta = "table"; + block.removeSurroundingEmptyLines(); + break; case HEADLINE: case HEADLINE1: case HEADLINE2: diff --git a/src/main/java/org/markdown4j/Markdown4jProcessor.java b/src/main/java/org/markdown4j/Markdown4jProcessor.java index 5b3d082..49c830c 100644 --- a/src/main/java/org/markdown4j/Markdown4jProcessor.java +++ b/src/main/java/org/markdown4j/Markdown4jProcessor.java @@ -21,7 +21,7 @@ public Markdown4jProcessor() { private Builder builder() { decorator = new ExtDecorator(); - return Configuration.builder().forceExtentedProfile().registerPlugins(new YumlPlugin(), new WebSequencePlugin(), new IncludePlugin()).convertNewline2Br().setDecorator(decorator).setCodeBlockEmitter(new CodeBlockEmitter()); + return Configuration.builder().forceExtentedProfile().registerPlugins(new YumlPlugin(), new WebSequencePlugin(), new IncludePlugin()).convertNewline2Br().setDecorator(decorator).setCodeBlockEmitter(new CodeBlockEmitter()).setTableBlockEmitter(new TableBlockEmitter()); } public Markdown4jProcessor registerPlugins(Plugin ... plugins) { builder.registerPlugins(plugins); diff --git a/src/main/java/org/markdown4j/TableBlockEmitter.java b/src/main/java/org/markdown4j/TableBlockEmitter.java index 9f0d6cc..5a6e26e 100644 --- a/src/main/java/org/markdown4j/TableBlockEmitter.java +++ b/src/main/java/org/markdown4j/TableBlockEmitter.java @@ -7,6 +7,10 @@ import com.github.rjeschke.txtmark.BlockEmitter; +/** + * @author https://github.com/piergiuseppe82 + * + */ public class TableBlockEmitter implements BlockEmitter{ @Override diff --git a/src/main/java/org/markdown4j/TablePlugin.java b/src/main/java/org/markdown4j/TablePlugin.java index bfd2fe2..53b09bb 100644 --- a/src/main/java/org/markdown4j/TablePlugin.java +++ b/src/main/java/org/markdown4j/TablePlugin.java @@ -2,40 +2,20 @@ import java.util.List; import java.util.Map; -import java.util.regex.Pattern; + +import com.github.rjeschke.txtmark.BlockEmitter; public class TablePlugin extends Plugin { public TablePlugin() { super("table"); } - - private int findSeparatorLine(int beginIndex, List lines) { - for(int i = beginIndex;i lines, Map params) { - StringBuffer sb2; - String lparams; - int ioh = findSeparatorLine(0, lines); - String headerLine; - String footerLine; - if(ioh != -1) { - headerLine = lines.get(ioh); - int iof = findSeparatorLine(ioh, lines); - if(iof != -1) { - footerLine = lines.get(iof); - } - } - + BlockEmitter blockemitter = new TableBlockEmitter(); + blockemitter.emitBlock(out, lines, null); } } diff --git a/src/test/java/org/markdown4j/TestMardown4jProcessor.java b/src/test/java/org/markdown4j/TestMardown4jProcessor.java index 5b07e94..f9c9175 100644 --- a/src/test/java/org/markdown4j/TestMardown4jProcessor.java +++ b/src/test/java/org/markdown4j/TestMardown4jProcessor.java @@ -4,21 +4,40 @@ import java.io.IOException; import java.net.URL; +import junit.framework.Assert; + import org.junit.Test; import com.github.rjeschke.txtmark.test.MarkupFileTester; - +/** + * @author https://github.com/piergiuseppe82 + * + */ public class TestMardown4jProcessor { + private static final String expected = + "
HEADER 1 HEADER 2 HEADER 3
content 1 content 2content 3
"; + @Test - public void test() throws IOException { + public void testTable() throws IOException { Markdown4jProcessor markdown4jProcessor = new Markdown4jProcessor(); - markdown4jProcessor = markdown4jProcessor.registerPlugins(new TablePlugin()); URL fileUrl = MarkupFileTester.class.getResource( "/table.txt" ); FileReader file = new FileReader( fileUrl.getFile() ); String process = markdown4jProcessor.process(file); System.out.println(process); + Assert.assertEquals(expected, process); } + + @Test + public void testTableAsPlugin() throws IOException { + Markdown4jProcessor markdown4jProcessor = new Markdown4jProcessor(); + markdown4jProcessor = markdown4jProcessor.registerPlugins(new TablePlugin()); + URL fileUrl = MarkupFileTester.class.getResource( "/tableAsPlugin.txt" ); + FileReader file = new FileReader( fileUrl.getFile() ); + String process = markdown4jProcessor.process(file); + System.out.println(process); + Assert.assertEquals(expected, process); + } } diff --git a/src/test/resources/table.txt b/src/test/resources/table.txt index 25e12b6..b8e72e9 100644 --- a/src/test/resources/table.txt +++ b/src/test/resources/table.txt @@ -1,11 +1,3 @@ -# Test Table as Plugin -%%% table -| HEADER 1 | HEADER 2 | HEADER 3 | -| :--- | :---: | ---: | -|content 1 | content 2|content 3 | -%%% - -#Test Table as native TABLE type | HEADER 1 | HEADER 2 | HEADER 3 | | :--- | :---: | ---: | |content 1 | content 2|content 3 | From 42e485ffff28d8f10d6c9a0f5cb30bbb7293b102 Mon Sep 17 00:00:00 2001 From: piergiuseppe la cava Date: Thu, 29 Dec 2016 20:05:53 +0100 Subject: [PATCH 3/9] Source Code Clean --- .../com/github/rjeschke/txtmark/Emitter.java | 35 ------------------- 1 file changed, 35 deletions(-) diff --git a/src/main/java/com/github/rjeschke/txtmark/Emitter.java b/src/main/java/com/github/rjeschke/txtmark/Emitter.java index 2d680e2..8c582a2 100644 --- a/src/main/java/com/github/rjeschke/txtmark/Emitter.java +++ b/src/main/java/com/github/rjeschke/txtmark/Emitter.java @@ -213,41 +213,6 @@ private void emitLines(final StringBuilder out, final Block block) } private void emitTableLines(StringBuilder out, Line lines, String meta) { -// Map alignment = new HashMap(); -// StringBuilder myst = new StringBuilder(); -// myst.append(""); -// boolean first = true; -// do{ -// String lineValue = lines.value; -// myst.append(""); -// String[] split = lineValue.split("\\|"); -// Integer count = 0; -// for (String string2 : split) { -// if(string2.isEmpty()) continue; -// count ++; -// if(string2.trim().matches("\\:.*\\:")){ -// alignment.put(count, "center"); continue; -// }else if(string2.trim().matches(".*\\:")){ -// alignment.put(count, "right"); continue; -// }else if(string2.trim().matches("\\:.*")){ -// alignment.put(count, "left"); continue; -// } -// myst.append(first?""); -// -// } -// myst.append(""); -// first = false; -// lines = lines.next; -// }while(lines != null && lines.value != null && !lines.value.isEmpty()); -// myst.append("
":""); -// myst.append(string2); -// myst.append(first?"":"
"); -// String string = myst.toString(); -// Set keySet = alignment.keySet(); -// for (Integer integer : keySet) { -// string = string.replaceAll("calm=\""+integer+"\"", "style=\"text-align:"+alignment.get(integer)+"\""); -// } -// out.append(string); Line line = lines; if(this.config.codeBlockEmitter != null) { From a57887253848197e7b4697a814641b03be62e1e9 Mon Sep 17 00:00:00 2001 From: piergiuseppe la cava Date: Sun, 1 Jan 2017 17:44:04 +0100 Subject: [PATCH 4/9] Add Java Properties files Highlight Plugin. Code rendering modified: now test if exist a plugin associated then call it. Eexcute standard code rendering if not exist. Pom file personalized --- pom.xml | 8 +- .../github/rjeschke/txtmark/Decorator.java | 111 ++++++++++++++++++ .../rjeschke/txtmark/DefaultDecorator.java | 41 ++++++- .../com/github/rjeschke/txtmark/Emitter.java | 12 +- .../github/rjeschke/txtmark/Processor.java | 16 ++- .../org/markdown4j/PropertiesCodePlugin.java | 35 ++++++ .../org/markdown4j/TableBlockEmitter.java | 4 +- .../markdown4j/TestMardown4jProcessor.java | 12 +- src/test/resources/propertiesPlugin.txt | 8 ++ 9 files changed, 236 insertions(+), 11 deletions(-) create mode 100644 src/main/java/org/markdown4j/PropertiesCodePlugin.java create mode 100644 src/test/resources/propertiesPlugin.txt diff --git a/pom.xml b/pom.xml index eab507d..7c91d31 100644 --- a/pom.xml +++ b/pom.xml @@ -8,12 +8,12 @@ org.commonjava.googlecode.markdown4j markdown4j - 2.2-plc-1.3-SNAPSHOT + 2.2-plc-1.4-SNAPSHOT - scm:git:http://jdcasey@github.com/jdcasey/markdown4j.git - scm:git:git@github.com:jdcasey/markdown4j.git - http://github.com/jdcasey/markdown4j + scm:git:https://github.com/piergiuseppe82/markdown4j.git + scm:git:git@github.com:piergiuseppe82/markdown4j.git + http://github.com/piergiuseppe82/markdown4j diff --git a/src/main/java/com/github/rjeschke/txtmark/Decorator.java b/src/main/java/com/github/rjeschke/txtmark/Decorator.java index d090b92..e5a433f 100644 --- a/src/main/java/com/github/rjeschke/txtmark/Decorator.java +++ b/src/main/java/com/github/rjeschke/txtmark/Decorator.java @@ -467,4 +467,115 @@ public interface Decorator * The StringBuilder to write to. */ public void openImage(final StringBuilder out); + + /** + * Called when new Html rendering started. + * + *

+ * Note: Don't close the HTML tag! + *

+ *

+ * Default implementation is: + *

+ * + *
+     * out.append("<html>");
+     * 
+ * + * @param out + * The StringBuilder to write to. + */ + public void openHtml(StringBuilder out); + + /** + * Called when new Html rendering started and after HTML tag. + * + *

+ * Note: Don't close the HTML tag! + *

+ *

+ * Default implementation is: + *

+ * + *
+     * out.append("<head>");
+     * 
+ * + * @param out + * The StringBuilder to write to. + */ + public void openHtmlHeaders(StringBuilder out); + + + /** + * Called when new Html rendering started and write default internal style beetwen html headers tag. + * + * @param out + * The StringBuilder to write to. + */ + public void writeDefaultInternalStyle(StringBuilder out); + + /** + * Called when new Html rendering started and before Body tag. + * + *

+ * Note: Don't open the HTML tag! + *

+ *

+ * Default implementation is: + *

+ * + *
+     * out.append("</head>");
+     * 
+ * + * @param out + * The StringBuilder to write to. + */ + public void closeHtmlHeaders(StringBuilder out); + + /** + * Called when new Html rendering started and before process html's block. + * + * Default implementation is: + *

+ * + *
+     * out.append("<body>");
+     * 
+ * + * @param out + * The StringBuilder to write to. + */ + public void openBody(StringBuilder out); + + /** + * Called after process html's block. + * + * Default implementation is: + *

+ * + *
+     * out.append("</body>");
+     * 
+ * + * @param out + * The StringBuilder to write to. + */ + public void closeBody(StringBuilder out); + + /** + * Called when all blocks is processed and before return html document. + * + * Default implementation is: + *

+ * + *
+     * out.append("</html>");
+     * 
+ * + * @param out + * The StringBuilder to write to. + */ + public void closeHtml(StringBuilder out); } diff --git a/src/main/java/com/github/rjeschke/txtmark/DefaultDecorator.java b/src/main/java/com/github/rjeschke/txtmark/DefaultDecorator.java index 006199d..14ffa31 100644 --- a/src/main/java/com/github/rjeschke/txtmark/DefaultDecorator.java +++ b/src/main/java/com/github/rjeschke/txtmark/DefaultDecorator.java @@ -38,7 +38,9 @@ */ public class DefaultDecorator implements Decorator { - /** Constructor. */ + private static final String DEFAULT_INTERNAL_STYLE = ""; + + /** Constructor. */ public DefaultDecorator() { // empty @@ -241,4 +243,41 @@ public void openImage(StringBuilder out) { out.append("\n"); + + } + + @Override + public void openHtmlHeaders(StringBuilder out) { + out.append("\n"); + + } + + @Override + public void writeDefaultInternalStyle(StringBuilder out) { + out.append(DEFAULT_INTERNAL_STYLE+"\n"); + } + + @Override + public void closeHtmlHeaders(StringBuilder out) { + out.append("\n"); + } + + @Override + public void openBody(StringBuilder out) { + out.append("\n"); + } + + @Override + public void closeBody(StringBuilder out) { + out.append("\n"); + } + + @Override + public void closeHtml(StringBuilder out) { + out.append(""); + } } diff --git a/src/main/java/com/github/rjeschke/txtmark/Emitter.java b/src/main/java/com/github/rjeschke/txtmark/Emitter.java index 8c582a2..887df7d 100644 --- a/src/main/java/com/github/rjeschke/txtmark/Emitter.java +++ b/src/main/java/com/github/rjeschke/txtmark/Emitter.java @@ -81,6 +81,7 @@ public void addLinkRef(final String key, final LinkRef linkRef) */ public void emit(final StringBuilder out, final Block root) { + root.removeSurroundingEmptyLines(); switch(root.type) @@ -1005,6 +1006,10 @@ private void emitRawLines(final StringBuilder out, final Line lines) */ private void emitCodeLines(final StringBuilder out, final Line lines, final String meta, final boolean removeIndent) { + if(existPlugin(out,lines,meta)){ + emitPluginLines(out, lines, meta); + return; + } Line line = lines; if(this.config.codeBlockEmitter != null) { @@ -1050,7 +1055,12 @@ private void emitCodeLines(final StringBuilder out, final Line lines, final Stri } } } - /** + + private boolean existPlugin(StringBuilder out, Line lines, String meta) { + return plugins.get(meta)!= null; + } + + /** * interprets a plugin block into the StringBuilder. * * @param out diff --git a/src/main/java/com/github/rjeschke/txtmark/Processor.java b/src/main/java/com/github/rjeschke/txtmark/Processor.java index 1573bb4..0d55289 100644 --- a/src/main/java/com/github/rjeschke/txtmark/Processor.java +++ b/src/main/java/com/github/rjeschke/txtmark/Processor.java @@ -1103,7 +1103,16 @@ private String process() final StringBuilder out = new StringBuilder(); final Block parent = this.readLines(); parent.removeSurroundingEmptyLines(); - + //out.append(""); + this.config.decorator.openHtml(out); + //out.append(""); + this.config.decorator.openHtmlHeaders(out); + //out.append(""); + this.config.decorator.writeDefaultInternalStyle(out); + //out.append(""); + this.config.decorator.closeHtmlHeaders(out); +// out.append(""); + this.config.decorator.openBody(out); this.recurse( parent, false ); Block block = parent.blocks; while ( block != null ) @@ -1111,7 +1120,10 @@ private String process() this.emitter.emit( out, block ); block = block.next; } - +// out.append(""); + this.config.decorator.closeBody(out); +// out.append(""); + this.config.decorator.closeHtml(out); return out.toString(); } } diff --git a/src/main/java/org/markdown4j/PropertiesCodePlugin.java b/src/main/java/org/markdown4j/PropertiesCodePlugin.java new file mode 100644 index 0000000..4fa6511 --- /dev/null +++ b/src/main/java/org/markdown4j/PropertiesCodePlugin.java @@ -0,0 +1,35 @@ +package org.markdown4j; + +import java.util.List; +import java.util.Map; + +public class PropertiesCodePlugin extends Plugin { + + public PropertiesCodePlugin() { + super("properties"); + } + + @Override + public void emit(StringBuilder out, List lines, + Map params) { + if(lines == null) return; + StringBuilder myst = new StringBuilder(); + myst.append("
"); + for (String string : lines) { + if(string.startsWith("#")){ + myst.append("

"+string+"

"); + }else if(string.contains("=")){ + int indexOf = string.indexOf("="); + indexOf++; + myst.append("

"+string.substring(0, indexOf)+""+string.substring(indexOf)+"

"); + }else if(string.trim().isEmpty()){ + myst.append("
"); + }else{ + myst.append("

"+string+"

"); + } + } + myst.append("
\n"); + out.append(myst.toString()); + } + +} diff --git a/src/main/java/org/markdown4j/TableBlockEmitter.java b/src/main/java/org/markdown4j/TableBlockEmitter.java index 5a6e26e..86000d7 100644 --- a/src/main/java/org/markdown4j/TableBlockEmitter.java +++ b/src/main/java/org/markdown4j/TableBlockEmitter.java @@ -17,7 +17,7 @@ public class TableBlockEmitter implements BlockEmitter{ public void emitBlock(StringBuilder out, List lines, String meta) { Map alignment = new HashMap(); StringBuilder myst = new StringBuilder(); - myst.append(""); + myst.append("
"); boolean first = true; for (String string : lines) { myst.append(""); @@ -41,7 +41,7 @@ public void emitBlock(StringBuilder out, List lines, String meta) { myst.append(""); first = false; } - myst.append("
"); + myst.append("\n"); String string = myst.toString(); Set keySet = alignment.keySet(); for (Integer integer : keySet) { diff --git a/src/test/java/org/markdown4j/TestMardown4jProcessor.java b/src/test/java/org/markdown4j/TestMardown4jProcessor.java index f9c9175..2ee83b2 100644 --- a/src/test/java/org/markdown4j/TestMardown4jProcessor.java +++ b/src/test/java/org/markdown4j/TestMardown4jProcessor.java @@ -16,7 +16,7 @@ public class TestMardown4jProcessor { private static final String expected = - "
HEADER 1 HEADER 2 HEADER 3
content 1 content 2content 3
"; + "\n\n\n\n\n
HEADER 1 HEADER 2 HEADER 3
content 1 content 2content 3
\n\n"; @Test public void testTable() throws IOException { @@ -39,5 +39,15 @@ public void testTableAsPlugin() throws IOException { System.out.println(process); Assert.assertEquals(expected, process); } + + @Test + public void testPropertiesCode() throws IOException { + Markdown4jProcessor markdown4jProcessor = new Markdown4jProcessor(); + markdown4jProcessor = markdown4jProcessor.registerPlugins(new PropertiesCodePlugin()); + URL fileUrl = MarkupFileTester.class.getResource( "/propertiesPlugin.txt" ); + FileReader file = new FileReader( fileUrl.getFile() ); + String process = markdown4jProcessor.process(file); + System.out.println(process); + } } diff --git a/src/test/resources/propertiesPlugin.txt b/src/test/resources/propertiesPlugin.txt new file mode 100644 index 0000000..72cac95 --- /dev/null +++ b/src/test/resources/propertiesPlugin.txt @@ -0,0 +1,8 @@ +``` properties +# --- ConsoleHandler --- +# Override of global logging level + + +java.util.logging.ConsoleHandler.level=FINE +java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter +``` From 9a57949f83a66951ca1cc4e4b47571204cdc70dd Mon Sep 17 00:00:00 2001 From: piergiuseppe la cava Date: Wed, 11 Jan 2017 17:58:53 +0100 Subject: [PATCH 5/9] Changed to version 2.2-plc-1.5-SNAPSHOT: Add SQL code Highlight Plugin. Add HTML, HEAD, BODY tags --- pom.xml | 2 +- .../rjeschke/txtmark/DefaultDecorator.java | 2 +- .../org/markdown4j/PropertiesCodePlugin.java | 5 +- .../java/org/markdown4j/SqlCodePlugin.java | 208 ++++++++++++++++++ .../markdown4j/TestMardown4jProcessor.java | 10 + src/test/resources/sqlPlugin.txt | 41 ++++ 6 files changed, 265 insertions(+), 3 deletions(-) create mode 100644 src/main/java/org/markdown4j/SqlCodePlugin.java create mode 100644 src/test/resources/sqlPlugin.txt diff --git a/pom.xml b/pom.xml index 7c91d31..dd21c7b 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ org.commonjava.googlecode.markdown4j markdown4j - 2.2-plc-1.4-SNAPSHOT + 2.2-plc-1.5-SNAPSHOT scm:git:https://github.com/piergiuseppe82/markdown4j.git diff --git a/src/main/java/com/github/rjeschke/txtmark/DefaultDecorator.java b/src/main/java/com/github/rjeschke/txtmark/DefaultDecorator.java index 14ffa31..33c491c 100644 --- a/src/main/java/com/github/rjeschke/txtmark/DefaultDecorator.java +++ b/src/main/java/com/github/rjeschke/txtmark/DefaultDecorator.java @@ -246,7 +246,7 @@ public void openImage(StringBuilder out) @Override public void openHtml(StringBuilder out) { - out.append("\n"); + out.append("\n\n"); } diff --git a/src/main/java/org/markdown4j/PropertiesCodePlugin.java b/src/main/java/org/markdown4j/PropertiesCodePlugin.java index 4fa6511..7340c99 100644 --- a/src/main/java/org/markdown4j/PropertiesCodePlugin.java +++ b/src/main/java/org/markdown4j/PropertiesCodePlugin.java @@ -2,7 +2,10 @@ import java.util.List; import java.util.Map; - +/** + * @author https://github.com/piergiuseppe82 + * + */ public class PropertiesCodePlugin extends Plugin { public PropertiesCodePlugin() { diff --git a/src/main/java/org/markdown4j/SqlCodePlugin.java b/src/main/java/org/markdown4j/SqlCodePlugin.java new file mode 100644 index 0000000..871a98d --- /dev/null +++ b/src/main/java/org/markdown4j/SqlCodePlugin.java @@ -0,0 +1,208 @@ +package org.markdown4j; + +import java.util.List; +import java.util.Map; + +/** + * @author https://github.com/piergiuseppe82 + * + */ +public class SqlCodePlugin extends Plugin { + private static final String separator = " =;(),+-/\\> lines, + Map params) { + if(lines == null) return; + StringBuilder myst = new StringBuilder(); + myst.append("
"); + boolean comment = false; + for (String string : lines) { + String newStr = ""; + if(string.trim().startsWith("--") || string.trim().startsWith("#")){ + //IS COMMENT + newStr = ""+string+""; + }else if(string.trim().startsWith("/*")){ + //IS COMMENT + comment = true; + newStr = ""+string+""; + }else if(string.trim().endsWith("*/")){ + //IS COMMENT + comment = false; + newStr = ""+string+""; + }else if(comment){ + //IS COMMENT + newStr = ""+string+""; + }else{ + char[] charArray = string.toCharArray(); + String word = ""; + boolean isString = false; + boolean isInlineComment = false; + for (char c : charArray) { + if(c == '\'' && !isString && !isInlineComment){ + isString = true; + word = word +c; + }else if(c == '\'' && isString && !isInlineComment){ + isString = false; + word = word +c; + newStr = newStr + ""+word+""; + word = ""; + }else if(!isInlineComment && !isString && (separator.contains(""+c))){ + for (String keyword : keywords) { + if(word.toUpperCase().matches(keyword)){ + //IS KEYWORD + word = word.toUpperCase().replaceAll(keyword, ""+keyword+""); + newStr = newStr + word; + word = ""; + } + } + if(word.toUpperCase().matches("\\d+\\.\\d+")){ + //IS DECIMAL + word = word.toUpperCase().replaceAll("\\d+\\.\\d+", ""+word+""); + newStr = newStr + word; + word = ""; + } + if(word.toUpperCase().matches("\\d+")){ + //IS INTEGER + word = word.toUpperCase().replaceAll("\\d+", ""+word+""); + newStr = newStr + word; + word = ""; + } + if(c == '-' && word.equals("-")){ + isInlineComment = true; + word = word +c; + }else if(c != '-'){ + if(!word.isEmpty()){ + newStr = newStr + word; + word = ""; + } + newStr = newStr + (c==' '?" ":c); + }else{ + word = word +c; + } + }else{ + word = word +c; + if(!isInlineComment && !isString && (word.startsWith("--") || word.startsWith("#"))){ + isInlineComment = true; + } + } + } + //END OF LINE + if(!word.isEmpty()){ + if(isInlineComment){ + //IS COMMENT + newStr = newStr + ""+word+""; + word = ""; + }else{ + //IS KEYWORD + for (String keyword : keywords) { + if(word.toUpperCase().matches(keyword)){ + word = word.toUpperCase().replaceAll(keyword, ""+keyword+""); + newStr = newStr + word; + word = ""; + } + } + if(word.toUpperCase().matches("\\d+\\.\\d+")){ + //IS DECIMAL + word = word.toUpperCase().replaceAll("\\d+\\.\\d+", ""+word+""); + newStr = newStr + word; + word = ""; + } + if(word.toUpperCase().matches("\\d+")){ + //IS INTEGER + word = word.toUpperCase().replaceAll("\\d+", ""+word+""); + newStr = newStr + word; + word = ""; + } + newStr = newStr + word; + word = ""; + } + + } + } + + myst.append(newStr); + myst.append("
"); + } + myst.append("
\n"); + out.append(myst.toString()); + } + +} diff --git a/src/test/java/org/markdown4j/TestMardown4jProcessor.java b/src/test/java/org/markdown4j/TestMardown4jProcessor.java index 2ee83b2..e944189 100644 --- a/src/test/java/org/markdown4j/TestMardown4jProcessor.java +++ b/src/test/java/org/markdown4j/TestMardown4jProcessor.java @@ -49,5 +49,15 @@ public void testPropertiesCode() throws IOException { String process = markdown4jProcessor.process(file); System.out.println(process); } + + @Test + public void testSQLCode() throws IOException { + Markdown4jProcessor markdown4jProcessor = new Markdown4jProcessor(); + markdown4jProcessor = markdown4jProcessor.registerPlugins(new SqlCodePlugin()); + URL fileUrl = MarkupFileTester.class.getResource( "/sqlPlugin.txt" ); + FileReader file = new FileReader( fileUrl.getFile() ); + String process = markdown4jProcessor.process(file); + System.out.println(process); + } } diff --git a/src/test/resources/sqlPlugin.txt b/src/test/resources/sqlPlugin.txt new file mode 100644 index 0000000..bcd08ac --- /dev/null +++ b/src/test/resources/sqlPlugin.txt @@ -0,0 +1,41 @@ +``` sql + +--SQL COMMENT +# other comment +CREATE TABLE SCHEMA_A.TIP_BTC_EXT +( + COD_TIP_BTC VARCHAR2(150 BYTE) NOT NULL +, EXT_BIN_VRS VARCHAR2(150 BYTE) NULL +, EXT_CONFIG_VRS VARCHAR2(150 BYTE) NULL +, EXT_NGEST_VER VARCHAR2(150 BYTE) NULL +, EXT_LIBS_VRS VARCHAR2(150 BYTE) NULL +, COD_UTE_INS VARCHAR2(8 BYTE) NOT NULL +, TMST_INS_RIG TIMESTAMP NOT NULL +, COD_UTE_AGR VARCHAR2(8 BYTE) NOT NULL +, TMST_AGR_RIG TIMESTAMP NOT NULL +, CONSTRAINT TIP_BTC_EXT_PK PRIMARY KEY (COD_TIP_BTC) +); +COMMENT ON COLUMN SCHEMA_A.TIP_BTC_EXT.COD_TIP_BTC IS 'CODICE TIPO BATCH'; +COMMENT ON COLUMN SCHEMA_A.TIP_BTC_EXT.EXT_BIN_VRS IS 'SCRIPT DI AVVIO SPECIFICO DEL BATCH'; +COMMENT ON COLUMN SCHEMA_A.TIP_BTC_EXT.EXT_CONFIG_VRS IS 'CONFIGURAZIONE SPECIFICA DEL BATCH'; +COMMENT ON COLUMN SCHEMA_A.TIP_BTC_EXT.EXT_NGEST_VER IS 'VERSIONE NGEST.jar SPECIFICA DEL BATCH'; +COMMENT ON COLUMN SCHEMA_A.TIP_BTC_EXT.EXT_LIBS_VRS IS 'LIBRERIE JAVA SPECIFICHE PER IL BATCH'; +COMMENT ON COLUMN SCHEMA_A.TIP_BTC_EXT.COD_UTE_INS IS 'CODICE UTENTE INSERIMENTO'; +COMMENT ON COLUMN SCHEMA_A.TIP_BTC_EXT.TMST_INS_RIG IS 'TIMESTAMP INSERIMENTO RIGA'; +COMMENT ON COLUMN SCHEMA_A.TIP_BTC_EXT.COD_UTE_AGR IS 'CODICE UTENTE AGGIORNAMENTO'; +COMMENT ON COLUMN SCHEMA_A.TIP_BTC_EXT.TMST_AGR_RIG IS 'TIMESTAMP AGGIORNAMENTO RIGA'; + + select 1 from dual; -- CON UN PO DI SPAZI + +/* +select 1 from dual; +*/ + +select * from t1; + +update t1 set c1 = 1 where c2 is not null; -- INLINE COMMENT +update t1 set c1 =1 where c2 is not null;#inline comment +update t1 set c1 ='OTHER CHARS > ssss||| 11111!!!!!{}{§°°°sds@@@@@@@@a<<<<<<@@@@¸@ò@@@@@> > 4' where c2 > c3;#inline comment +insert into t1 (c1,c2,c3) values (65.6,'PIPPO','123',65); + +``` From 9f95259b70d564f23f2fb244ad451b1818d98af3 Mon Sep 17 00:00:00 2001 From: piergiuseppe la cava Date: Wed, 11 Jan 2017 23:40:27 +0100 Subject: [PATCH 6/9] Bugs FIX --- pom.xml | 2 +- .../com/github/rjeschke/txtmark/Emitter.java | 24 +++++++------- .../github/rjeschke/txtmark/Processor.java | 7 ----- .../java/org/markdown4j/SqlCodePlugin.java | 31 ++++++++++++------- .../markdown4j/TestMardown4jProcessor.java | 2 +- 5 files changed, 33 insertions(+), 33 deletions(-) diff --git a/pom.xml b/pom.xml index dd21c7b..f884a0e 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ org.commonjava.googlecode.markdown4j markdown4j - 2.2-plc-1.5-SNAPSHOT + 2.2-plc-1.6-SNAPSHOT scm:git:https://github.com/piergiuseppe82/markdown4j.git diff --git a/src/main/java/com/github/rjeschke/txtmark/Emitter.java b/src/main/java/com/github/rjeschke/txtmark/Emitter.java index 887df7d..115286a 100644 --- a/src/main/java/com/github/rjeschke/txtmark/Emitter.java +++ b/src/main/java/com/github/rjeschke/txtmark/Emitter.java @@ -684,7 +684,7 @@ private int recursiveEmitLine(final StringBuilder out, final String in, int star } else { - out.append("<"); + out.append("<"); } break; case ENTITY: @@ -697,7 +697,7 @@ private int recursiveEmitLine(final StringBuilder out, final String in, int star } else { - out.append("&"); + out.append("&"); } break; case X_LINK_OPEN: @@ -714,42 +714,42 @@ private int recursiveEmitLine(final StringBuilder out, final String in, int star } break; case X_COPY: - out.append("©"); + out.append("©"); pos += 2; break; case X_REG: - out.append("®"); + out.append("®"); pos += 2; break; case X_TRADE: - out.append("™"); + out.append("™"); pos += 3; break; case X_NDASH: - out.append("–"); + out.append("–"); pos++; break; case X_MDASH: - out.append("—"); + out.append("—"); pos += 2; break; case X_HELLIP: - out.append("…"); + out.append("…"); pos += 2; break; case X_LAQUO: - out.append("«"); + out.append("«"); pos++; break; case X_RAQUO: - out.append("»"); + out.append("»"); pos++; break; case X_RDQUO: - out.append("”"); + out.append("”"); break; case X_LDQUO: - out.append("“"); + out.append("“"); break; case ESCAPE: pos++; diff --git a/src/main/java/com/github/rjeschke/txtmark/Processor.java b/src/main/java/com/github/rjeschke/txtmark/Processor.java index 0d55289..42d9e08 100644 --- a/src/main/java/com/github/rjeschke/txtmark/Processor.java +++ b/src/main/java/com/github/rjeschke/txtmark/Processor.java @@ -1103,15 +1103,10 @@ private String process() final StringBuilder out = new StringBuilder(); final Block parent = this.readLines(); parent.removeSurroundingEmptyLines(); - //out.append(""); this.config.decorator.openHtml(out); - //out.append(""); this.config.decorator.openHtmlHeaders(out); - //out.append(""); this.config.decorator.writeDefaultInternalStyle(out); - //out.append(""); this.config.decorator.closeHtmlHeaders(out); -// out.append(""); this.config.decorator.openBody(out); this.recurse( parent, false ); Block block = parent.blocks; @@ -1120,9 +1115,7 @@ private String process() this.emitter.emit( out, block ); block = block.next; } -// out.append(""); this.config.decorator.closeBody(out); -// out.append(""); this.config.decorator.closeHtml(out); return out.toString(); } diff --git a/src/main/java/org/markdown4j/SqlCodePlugin.java b/src/main/java/org/markdown4j/SqlCodePlugin.java index 871a98d..02ff7bc 100644 --- a/src/main/java/org/markdown4j/SqlCodePlugin.java +++ b/src/main/java/org/markdown4j/SqlCodePlugin.java @@ -98,18 +98,18 @@ public void emit(StringBuilder out, List lines, String newStr = ""; if(string.trim().startsWith("--") || string.trim().startsWith("#")){ //IS COMMENT - newStr = ""+string+""; + newStr = ""+replaceHtmlSpecial(string)+""; }else if(string.trim().startsWith("/*")){ //IS COMMENT comment = true; - newStr = ""+string+""; + newStr = ""+replaceHtmlSpecial(string)+""; }else if(string.trim().endsWith("*/")){ //IS COMMENT comment = false; - newStr = ""+string+""; + newStr = ""+replaceHtmlSpecial(string)+""; }else if(comment){ //IS COMMENT - newStr = ""+string+""; + newStr = ""+replaceHtmlSpecial(string)+""; }else{ char[] charArray = string.toCharArray(); String word = ""; @@ -122,26 +122,26 @@ public void emit(StringBuilder out, List lines, }else if(c == '\'' && isString && !isInlineComment){ isString = false; word = word +c; - newStr = newStr + ""+word+""; + newStr = newStr + ""+replaceHtmlSpecial(word)+""; word = ""; }else if(!isInlineComment && !isString && (separator.contains(""+c))){ for (String keyword : keywords) { if(word.toUpperCase().matches(keyword)){ //IS KEYWORD - word = word.toUpperCase().replaceAll(keyword, ""+keyword+""); + word = word.toUpperCase().replaceAll(keyword, ""+replaceHtmlSpecial(keyword)+""); newStr = newStr + word; word = ""; } } if(word.toUpperCase().matches("\\d+\\.\\d+")){ //IS DECIMAL - word = word.toUpperCase().replaceAll("\\d+\\.\\d+", ""+word+""); + word = word.toUpperCase().replaceAll("\\d+\\.\\d+", ""+replaceHtmlSpecial(word)+""); newStr = newStr + word; word = ""; } if(word.toUpperCase().matches("\\d+")){ //IS INTEGER - word = word.toUpperCase().replaceAll("\\d+", ""+word+""); + word = word.toUpperCase().replaceAll("\\d+", ""+replaceHtmlSpecial(word)+""); newStr = newStr + word; word = ""; } @@ -168,26 +168,26 @@ public void emit(StringBuilder out, List lines, if(!word.isEmpty()){ if(isInlineComment){ //IS COMMENT - newStr = newStr + ""+word+""; + newStr = newStr + ""+replaceHtmlSpecial(word)+""; word = ""; }else{ //IS KEYWORD for (String keyword : keywords) { if(word.toUpperCase().matches(keyword)){ - word = word.toUpperCase().replaceAll(keyword, ""+keyword+""); + word = word.toUpperCase().replaceAll(keyword, ""+replaceHtmlSpecial(keyword)+""); newStr = newStr + word; word = ""; } } if(word.toUpperCase().matches("\\d+\\.\\d+")){ //IS DECIMAL - word = word.toUpperCase().replaceAll("\\d+\\.\\d+", ""+word+""); + word = word.toUpperCase().replaceAll("\\d+\\.\\d+", ""+replaceHtmlSpecial(word)+""); newStr = newStr + word; word = ""; } if(word.toUpperCase().matches("\\d+")){ //IS INTEGER - word = word.toUpperCase().replaceAll("\\d+", ""+word+""); + word = word.toUpperCase().replaceAll("\\d+", ""+replaceHtmlSpecial(word)+""); newStr = newStr + word; word = ""; } @@ -205,4 +205,11 @@ public void emit(StringBuilder out, List lines, out.append(myst.toString()); } + private String replaceHtmlSpecial(String string) { + if(string == null) return string; + + return string.replaceAll("<", "<") + .replaceAll(">", ">"); + } + } diff --git a/src/test/java/org/markdown4j/TestMardown4jProcessor.java b/src/test/java/org/markdown4j/TestMardown4jProcessor.java index e944189..b35b553 100644 --- a/src/test/java/org/markdown4j/TestMardown4jProcessor.java +++ b/src/test/java/org/markdown4j/TestMardown4jProcessor.java @@ -16,7 +16,7 @@ public class TestMardown4jProcessor { private static final String expected = - "\n\n\n\n\n
HEADER 1 HEADER 2 HEADER 3
content 1 content 2content 3
\n\n"; + "\n\n\n\n\n\n
HEADER 1 HEADER 2 HEADER 3
content 1 content 2content 3
\n\n"; @Test public void testTable() throws IOException { From 73edd0001ff910c74d60eaddf26aa6ae9e9a0da0 Mon Sep 17 00:00:00 2001 From: piergiuseppe Date: Mon, 15 Oct 2018 12:29:33 +0200 Subject: [PATCH 7/9] Add JSONCodePlugin --- .../java/org/markdown4j/JSONCodePlugin.java | 121 ++++++++++++++++++ .../markdown4j/TestMardown4jProcessor.java | 10 ++ src/test/resources/jsonPlugin.txt | 16 +++ 3 files changed, 147 insertions(+) create mode 100644 src/main/java/org/markdown4j/JSONCodePlugin.java create mode 100644 src/test/resources/jsonPlugin.txt diff --git a/src/main/java/org/markdown4j/JSONCodePlugin.java b/src/main/java/org/markdown4j/JSONCodePlugin.java new file mode 100644 index 0000000..8964a92 --- /dev/null +++ b/src/main/java/org/markdown4j/JSONCodePlugin.java @@ -0,0 +1,121 @@ +package org.markdown4j; + +import java.util.List; +import java.util.Map; + +/** + * @author https://github.com/piergiuseppe82 + * + */ +public class JSONCodePlugin extends Plugin { + private static final String separator = " {}[],:"; + private static final String[] keywords = new String[]{ + + "true", + "false", + "null", + + }; + + + public JSONCodePlugin() { + super("json"); + } + + @Override + public void emit(StringBuilder out, List lines, + Map params) { + if(lines == null) return; + StringBuilder myst = new StringBuilder(); + myst.append("
"); + for (String string : lines) { + String newStr = ""; + char[] charArray = string.toCharArray(); + String word = ""; + boolean isString = false; + for (char c : charArray) { + if((c == '\'' || c == '"' )&& !isString){ + isString = true; + word = word +c; + }else if((c == '\'' || c == '"' ) && isString){ + isString = false; + word = word +c; + newStr = newStr + ""+replaceHtmlSpecial(word)+""; + word = ""; + }else if( !isString && (separator.contains(""+c))){ + for (String keyword : keywords) { + if(keyword.equalsIgnoreCase(word)){ + //IS KEYWORD + word = word.replaceAll(keyword, ""+replaceHtmlSpecial(keyword)+""); + newStr = newStr + word; + word = ""; + } + } + if(word.toUpperCase().matches("\\d+\\.\\d+")){ + //IS DECIMAL + word = word.toUpperCase().replaceAll("\\d+\\.\\d+", ""+replaceHtmlSpecial(word)+""); + newStr = newStr + word; + word = ""; + } + if(word.toUpperCase().matches("\\d+")){ + //IS INTEGER + word = word.toUpperCase().replaceAll("\\d+", ""+replaceHtmlSpecial(word)+""); + newStr = newStr + word; + word = ""; + } + if(c == '-' && word.equals("-")){ + word = word +c; + }else if(c != '-'){ + if(!word.isEmpty()){ + newStr = newStr + word; + word = ""; + } + newStr = newStr + (c==' '?" ":c); + }else{ + word = word +c; + } + }else{ + word = word +c; + } + } + if(!word.isEmpty()){ + //IS KEYWORD + for (String keyword : keywords) { + if(keyword.equalsIgnoreCase(word)){ + word = word.replaceAll(keyword, ""+replaceHtmlSpecial(keyword)+""); + newStr = newStr + word; + word = ""; + } + } + if(word.toUpperCase().matches("\\d+\\.\\d+")){ + //IS DECIMAL + word = word.toUpperCase().replaceAll("\\d+\\.\\d+", ""+replaceHtmlSpecial(word)+""); + newStr = newStr + word; + word = ""; + } + if(word.toUpperCase().matches("\\d+")){ + //IS INTEGER + word = word.toUpperCase().replaceAll("\\d+", ""+replaceHtmlSpecial(word)+""); + newStr = newStr + word; + word = ""; + } + newStr = newStr + word; + word = ""; + + } + + myst.append(newStr); + myst.append("
"); + } + myst.append("
\n"); + out.append(myst.toString()); + } + + private String replaceHtmlSpecial(String string) { + if(string == null) return string; + + return string.replaceAll("<", "<") + .replaceAll(">", ">"); + } + +} diff --git a/src/test/java/org/markdown4j/TestMardown4jProcessor.java b/src/test/java/org/markdown4j/TestMardown4jProcessor.java index b35b553..cbaa3ed 100644 --- a/src/test/java/org/markdown4j/TestMardown4jProcessor.java +++ b/src/test/java/org/markdown4j/TestMardown4jProcessor.java @@ -59,5 +59,15 @@ public void testSQLCode() throws IOException { String process = markdown4jProcessor.process(file); System.out.println(process); } + + @Test + public void testJSONCode() throws IOException { + Markdown4jProcessor markdown4jProcessor = new Markdown4jProcessor(); + markdown4jProcessor = markdown4jProcessor.registerPlugins(new JSONCodePlugin()); + URL fileUrl = MarkupFileTester.class.getResource( "/jsonPlugin.txt" ); + FileReader file = new FileReader( fileUrl.getFile() ); + String process = markdown4jProcessor.process(file); + System.out.println(process); + } } diff --git a/src/test/resources/jsonPlugin.txt b/src/test/resources/jsonPlugin.txt new file mode 100644 index 0000000..85747e7 --- /dev/null +++ b/src/test/resources/jsonPlugin.txt @@ -0,0 +1,16 @@ +``` json + +[ + { + "idProdotto" : 348, + "listaUtenti":["S*","s*"], + "listaUtenti":true,"listaUtenti":null + }, + { + "idProdotto" : 9999999999, + "listaUtenti":["UTENTE1","UTENTE2","AA*"] + } +] + +``` + From 714b07b5e752335aa4cad10446e2b8a9c11264f9 Mon Sep 17 00:00:00 2001 From: piergiuseppe Date: Mon, 15 Oct 2018 18:01:23 +0200 Subject: [PATCH 8/9] Quick Fix Charset on HTML output --- src/main/java/com/github/rjeschke/txtmark/DefaultDecorator.java | 2 +- src/test/java/org/markdown4j/TestMardown4jProcessor.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/github/rjeschke/txtmark/DefaultDecorator.java b/src/main/java/com/github/rjeschke/txtmark/DefaultDecorator.java index 33c491c..e106245 100644 --- a/src/main/java/com/github/rjeschke/txtmark/DefaultDecorator.java +++ b/src/main/java/com/github/rjeschke/txtmark/DefaultDecorator.java @@ -38,7 +38,7 @@ */ public class DefaultDecorator implements Decorator { - private static final String DEFAULT_INTERNAL_STYLE = ""; + private static final String DEFAULT_INTERNAL_STYLE = ""; /** Constructor. */ public DefaultDecorator() diff --git a/src/test/java/org/markdown4j/TestMardown4jProcessor.java b/src/test/java/org/markdown4j/TestMardown4jProcessor.java index cbaa3ed..f52a019 100644 --- a/src/test/java/org/markdown4j/TestMardown4jProcessor.java +++ b/src/test/java/org/markdown4j/TestMardown4jProcessor.java @@ -16,7 +16,7 @@ public class TestMardown4jProcessor { private static final String expected = - "\n\n\n\n\n\n
HEADER 1 HEADER 2 HEADER 3
content 1 content 2content 3
\n\n"; + "\n\n\n\n\n\n
HEADER 1 HEADER 2 HEADER 3
content 1 content 2content 3
\n\n"; @Test public void testTable() throws IOException { From 16bd7e96187e5f1ebfc1afee8332314e16f1e562 Mon Sep 17 00:00:00 2001 From: piergiuseppe Date: Fri, 19 Oct 2018 13:13:24 +0200 Subject: [PATCH 9/9] Moved Various Plugin in JMarkdownConverter project --- .../java/org/markdown4j/JSONCodePlugin.java | 121 ---------- .../org/markdown4j/PropertiesCodePlugin.java | 38 ---- .../java/org/markdown4j/SqlCodePlugin.java | 215 ------------------ .../markdown4j/TestMardown4jProcessor.java | 32 +-- src/test/resources/jsonPlugin.txt | 16 -- src/test/resources/propertiesPlugin.txt | 8 - src/test/resources/sqlPlugin.txt | 41 ---- 7 files changed, 2 insertions(+), 469 deletions(-) delete mode 100644 src/main/java/org/markdown4j/JSONCodePlugin.java delete mode 100644 src/main/java/org/markdown4j/PropertiesCodePlugin.java delete mode 100644 src/main/java/org/markdown4j/SqlCodePlugin.java delete mode 100644 src/test/resources/jsonPlugin.txt delete mode 100644 src/test/resources/propertiesPlugin.txt delete mode 100644 src/test/resources/sqlPlugin.txt diff --git a/src/main/java/org/markdown4j/JSONCodePlugin.java b/src/main/java/org/markdown4j/JSONCodePlugin.java deleted file mode 100644 index 8964a92..0000000 --- a/src/main/java/org/markdown4j/JSONCodePlugin.java +++ /dev/null @@ -1,121 +0,0 @@ -package org.markdown4j; - -import java.util.List; -import java.util.Map; - -/** - * @author https://github.com/piergiuseppe82 - * - */ -public class JSONCodePlugin extends Plugin { - private static final String separator = " {}[],:"; - private static final String[] keywords = new String[]{ - - "true", - "false", - "null", - - }; - - - public JSONCodePlugin() { - super("json"); - } - - @Override - public void emit(StringBuilder out, List lines, - Map params) { - if(lines == null) return; - StringBuilder myst = new StringBuilder(); - myst.append("
"); - for (String string : lines) { - String newStr = ""; - char[] charArray = string.toCharArray(); - String word = ""; - boolean isString = false; - for (char c : charArray) { - if((c == '\'' || c == '"' )&& !isString){ - isString = true; - word = word +c; - }else if((c == '\'' || c == '"' ) && isString){ - isString = false; - word = word +c; - newStr = newStr + ""+replaceHtmlSpecial(word)+""; - word = ""; - }else if( !isString && (separator.contains(""+c))){ - for (String keyword : keywords) { - if(keyword.equalsIgnoreCase(word)){ - //IS KEYWORD - word = word.replaceAll(keyword, ""+replaceHtmlSpecial(keyword)+""); - newStr = newStr + word; - word = ""; - } - } - if(word.toUpperCase().matches("\\d+\\.\\d+")){ - //IS DECIMAL - word = word.toUpperCase().replaceAll("\\d+\\.\\d+", ""+replaceHtmlSpecial(word)+""); - newStr = newStr + word; - word = ""; - } - if(word.toUpperCase().matches("\\d+")){ - //IS INTEGER - word = word.toUpperCase().replaceAll("\\d+", ""+replaceHtmlSpecial(word)+""); - newStr = newStr + word; - word = ""; - } - if(c == '-' && word.equals("-")){ - word = word +c; - }else if(c != '-'){ - if(!word.isEmpty()){ - newStr = newStr + word; - word = ""; - } - newStr = newStr + (c==' '?" ":c); - }else{ - word = word +c; - } - }else{ - word = word +c; - } - } - if(!word.isEmpty()){ - //IS KEYWORD - for (String keyword : keywords) { - if(keyword.equalsIgnoreCase(word)){ - word = word.replaceAll(keyword, ""+replaceHtmlSpecial(keyword)+""); - newStr = newStr + word; - word = ""; - } - } - if(word.toUpperCase().matches("\\d+\\.\\d+")){ - //IS DECIMAL - word = word.toUpperCase().replaceAll("\\d+\\.\\d+", ""+replaceHtmlSpecial(word)+""); - newStr = newStr + word; - word = ""; - } - if(word.toUpperCase().matches("\\d+")){ - //IS INTEGER - word = word.toUpperCase().replaceAll("\\d+", ""+replaceHtmlSpecial(word)+""); - newStr = newStr + word; - word = ""; - } - newStr = newStr + word; - word = ""; - - } - - myst.append(newStr); - myst.append("
"); - } - myst.append("
\n"); - out.append(myst.toString()); - } - - private String replaceHtmlSpecial(String string) { - if(string == null) return string; - - return string.replaceAll("<", "<") - .replaceAll(">", ">"); - } - -} diff --git a/src/main/java/org/markdown4j/PropertiesCodePlugin.java b/src/main/java/org/markdown4j/PropertiesCodePlugin.java deleted file mode 100644 index 7340c99..0000000 --- a/src/main/java/org/markdown4j/PropertiesCodePlugin.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.markdown4j; - -import java.util.List; -import java.util.Map; -/** - * @author https://github.com/piergiuseppe82 - * - */ -public class PropertiesCodePlugin extends Plugin { - - public PropertiesCodePlugin() { - super("properties"); - } - - @Override - public void emit(StringBuilder out, List lines, - Map params) { - if(lines == null) return; - StringBuilder myst = new StringBuilder(); - myst.append("
"); - for (String string : lines) { - if(string.startsWith("#")){ - myst.append("

"+string+"

"); - }else if(string.contains("=")){ - int indexOf = string.indexOf("="); - indexOf++; - myst.append("

"+string.substring(0, indexOf)+""+string.substring(indexOf)+"

"); - }else if(string.trim().isEmpty()){ - myst.append("
"); - }else{ - myst.append("

"+string+"

"); - } - } - myst.append("
\n"); - out.append(myst.toString()); - } - -} diff --git a/src/main/java/org/markdown4j/SqlCodePlugin.java b/src/main/java/org/markdown4j/SqlCodePlugin.java deleted file mode 100644 index 02ff7bc..0000000 --- a/src/main/java/org/markdown4j/SqlCodePlugin.java +++ /dev/null @@ -1,215 +0,0 @@ -package org.markdown4j; - -import java.util.List; -import java.util.Map; - -/** - * @author https://github.com/piergiuseppe82 - * - */ -public class SqlCodePlugin extends Plugin { - private static final String separator = " =;(),+-/\\> lines, - Map params) { - if(lines == null) return; - StringBuilder myst = new StringBuilder(); - myst.append("
"); - boolean comment = false; - for (String string : lines) { - String newStr = ""; - if(string.trim().startsWith("--") || string.trim().startsWith("#")){ - //IS COMMENT - newStr = ""+replaceHtmlSpecial(string)+""; - }else if(string.trim().startsWith("/*")){ - //IS COMMENT - comment = true; - newStr = ""+replaceHtmlSpecial(string)+""; - }else if(string.trim().endsWith("*/")){ - //IS COMMENT - comment = false; - newStr = ""+replaceHtmlSpecial(string)+""; - }else if(comment){ - //IS COMMENT - newStr = ""+replaceHtmlSpecial(string)+""; - }else{ - char[] charArray = string.toCharArray(); - String word = ""; - boolean isString = false; - boolean isInlineComment = false; - for (char c : charArray) { - if(c == '\'' && !isString && !isInlineComment){ - isString = true; - word = word +c; - }else if(c == '\'' && isString && !isInlineComment){ - isString = false; - word = word +c; - newStr = newStr + ""+replaceHtmlSpecial(word)+""; - word = ""; - }else if(!isInlineComment && !isString && (separator.contains(""+c))){ - for (String keyword : keywords) { - if(word.toUpperCase().matches(keyword)){ - //IS KEYWORD - word = word.toUpperCase().replaceAll(keyword, ""+replaceHtmlSpecial(keyword)+""); - newStr = newStr + word; - word = ""; - } - } - if(word.toUpperCase().matches("\\d+\\.\\d+")){ - //IS DECIMAL - word = word.toUpperCase().replaceAll("\\d+\\.\\d+", ""+replaceHtmlSpecial(word)+""); - newStr = newStr + word; - word = ""; - } - if(word.toUpperCase().matches("\\d+")){ - //IS INTEGER - word = word.toUpperCase().replaceAll("\\d+", ""+replaceHtmlSpecial(word)+""); - newStr = newStr + word; - word = ""; - } - if(c == '-' && word.equals("-")){ - isInlineComment = true; - word = word +c; - }else if(c != '-'){ - if(!word.isEmpty()){ - newStr = newStr + word; - word = ""; - } - newStr = newStr + (c==' '?" ":c); - }else{ - word = word +c; - } - }else{ - word = word +c; - if(!isInlineComment && !isString && (word.startsWith("--") || word.startsWith("#"))){ - isInlineComment = true; - } - } - } - //END OF LINE - if(!word.isEmpty()){ - if(isInlineComment){ - //IS COMMENT - newStr = newStr + ""+replaceHtmlSpecial(word)+""; - word = ""; - }else{ - //IS KEYWORD - for (String keyword : keywords) { - if(word.toUpperCase().matches(keyword)){ - word = word.toUpperCase().replaceAll(keyword, ""+replaceHtmlSpecial(keyword)+""); - newStr = newStr + word; - word = ""; - } - } - if(word.toUpperCase().matches("\\d+\\.\\d+")){ - //IS DECIMAL - word = word.toUpperCase().replaceAll("\\d+\\.\\d+", ""+replaceHtmlSpecial(word)+""); - newStr = newStr + word; - word = ""; - } - if(word.toUpperCase().matches("\\d+")){ - //IS INTEGER - word = word.toUpperCase().replaceAll("\\d+", ""+replaceHtmlSpecial(word)+""); - newStr = newStr + word; - word = ""; - } - newStr = newStr + word; - word = ""; - } - - } - } - - myst.append(newStr); - myst.append("
"); - } - myst.append("
\n"); - out.append(myst.toString()); - } - - private String replaceHtmlSpecial(String string) { - if(string == null) return string; - - return string.replaceAll("<", "<") - .replaceAll(">", ">"); - } - -} diff --git a/src/test/java/org/markdown4j/TestMardown4jProcessor.java b/src/test/java/org/markdown4j/TestMardown4jProcessor.java index f52a019..920e022 100644 --- a/src/test/java/org/markdown4j/TestMardown4jProcessor.java +++ b/src/test/java/org/markdown4j/TestMardown4jProcessor.java @@ -4,11 +4,11 @@ import java.io.IOException; import java.net.URL; -import junit.framework.Assert; - import org.junit.Test; import com.github.rjeschke.txtmark.test.MarkupFileTester; + +import junit.framework.Assert; /** * @author https://github.com/piergiuseppe82 * @@ -40,34 +40,6 @@ public void testTableAsPlugin() throws IOException { Assert.assertEquals(expected, process); } - @Test - public void testPropertiesCode() throws IOException { - Markdown4jProcessor markdown4jProcessor = new Markdown4jProcessor(); - markdown4jProcessor = markdown4jProcessor.registerPlugins(new PropertiesCodePlugin()); - URL fileUrl = MarkupFileTester.class.getResource( "/propertiesPlugin.txt" ); - FileReader file = new FileReader( fileUrl.getFile() ); - String process = markdown4jProcessor.process(file); - System.out.println(process); - } - @Test - public void testSQLCode() throws IOException { - Markdown4jProcessor markdown4jProcessor = new Markdown4jProcessor(); - markdown4jProcessor = markdown4jProcessor.registerPlugins(new SqlCodePlugin()); - URL fileUrl = MarkupFileTester.class.getResource( "/sqlPlugin.txt" ); - FileReader file = new FileReader( fileUrl.getFile() ); - String process = markdown4jProcessor.process(file); - System.out.println(process); - } - - @Test - public void testJSONCode() throws IOException { - Markdown4jProcessor markdown4jProcessor = new Markdown4jProcessor(); - markdown4jProcessor = markdown4jProcessor.registerPlugins(new JSONCodePlugin()); - URL fileUrl = MarkupFileTester.class.getResource( "/jsonPlugin.txt" ); - FileReader file = new FileReader( fileUrl.getFile() ); - String process = markdown4jProcessor.process(file); - System.out.println(process); - } } diff --git a/src/test/resources/jsonPlugin.txt b/src/test/resources/jsonPlugin.txt deleted file mode 100644 index 85747e7..0000000 --- a/src/test/resources/jsonPlugin.txt +++ /dev/null @@ -1,16 +0,0 @@ -``` json - -[ - { - "idProdotto" : 348, - "listaUtenti":["S*","s*"], - "listaUtenti":true,"listaUtenti":null - }, - { - "idProdotto" : 9999999999, - "listaUtenti":["UTENTE1","UTENTE2","AA*"] - } -] - -``` - diff --git a/src/test/resources/propertiesPlugin.txt b/src/test/resources/propertiesPlugin.txt deleted file mode 100644 index 72cac95..0000000 --- a/src/test/resources/propertiesPlugin.txt +++ /dev/null @@ -1,8 +0,0 @@ -``` properties -# --- ConsoleHandler --- -# Override of global logging level - - -java.util.logging.ConsoleHandler.level=FINE -java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter -``` diff --git a/src/test/resources/sqlPlugin.txt b/src/test/resources/sqlPlugin.txt deleted file mode 100644 index bcd08ac..0000000 --- a/src/test/resources/sqlPlugin.txt +++ /dev/null @@ -1,41 +0,0 @@ -``` sql - ---SQL COMMENT -# other comment -CREATE TABLE SCHEMA_A.TIP_BTC_EXT -( - COD_TIP_BTC VARCHAR2(150 BYTE) NOT NULL -, EXT_BIN_VRS VARCHAR2(150 BYTE) NULL -, EXT_CONFIG_VRS VARCHAR2(150 BYTE) NULL -, EXT_NGEST_VER VARCHAR2(150 BYTE) NULL -, EXT_LIBS_VRS VARCHAR2(150 BYTE) NULL -, COD_UTE_INS VARCHAR2(8 BYTE) NOT NULL -, TMST_INS_RIG TIMESTAMP NOT NULL -, COD_UTE_AGR VARCHAR2(8 BYTE) NOT NULL -, TMST_AGR_RIG TIMESTAMP NOT NULL -, CONSTRAINT TIP_BTC_EXT_PK PRIMARY KEY (COD_TIP_BTC) -); -COMMENT ON COLUMN SCHEMA_A.TIP_BTC_EXT.COD_TIP_BTC IS 'CODICE TIPO BATCH'; -COMMENT ON COLUMN SCHEMA_A.TIP_BTC_EXT.EXT_BIN_VRS IS 'SCRIPT DI AVVIO SPECIFICO DEL BATCH'; -COMMENT ON COLUMN SCHEMA_A.TIP_BTC_EXT.EXT_CONFIG_VRS IS 'CONFIGURAZIONE SPECIFICA DEL BATCH'; -COMMENT ON COLUMN SCHEMA_A.TIP_BTC_EXT.EXT_NGEST_VER IS 'VERSIONE NGEST.jar SPECIFICA DEL BATCH'; -COMMENT ON COLUMN SCHEMA_A.TIP_BTC_EXT.EXT_LIBS_VRS IS 'LIBRERIE JAVA SPECIFICHE PER IL BATCH'; -COMMENT ON COLUMN SCHEMA_A.TIP_BTC_EXT.COD_UTE_INS IS 'CODICE UTENTE INSERIMENTO'; -COMMENT ON COLUMN SCHEMA_A.TIP_BTC_EXT.TMST_INS_RIG IS 'TIMESTAMP INSERIMENTO RIGA'; -COMMENT ON COLUMN SCHEMA_A.TIP_BTC_EXT.COD_UTE_AGR IS 'CODICE UTENTE AGGIORNAMENTO'; -COMMENT ON COLUMN SCHEMA_A.TIP_BTC_EXT.TMST_AGR_RIG IS 'TIMESTAMP AGGIORNAMENTO RIGA'; - - select 1 from dual; -- CON UN PO DI SPAZI - -/* -select 1 from dual; -*/ - -select * from t1; - -update t1 set c1 = 1 where c2 is not null; -- INLINE COMMENT -update t1 set c1 =1 where c2 is not null;#inline comment -update t1 set c1 ='OTHER CHARS > ssss||| 11111!!!!!{}{§°°°sds@@@@@@@@a<<<<<<@@@@¸@ò@@@@@> > 4' where c2 > c3;#inline comment -insert into t1 (c1,c2,c3) values (65.6,'PIPPO','123',65); - -```