From d8603ea10e741d5313b7d4ba3117e87e69e36bf0 Mon Sep 17 00:00:00 2001 From: Cecilia Fernandes Date: Fri, 22 Mar 2013 04:04:44 -0300 Subject: [PATCH 01/17] [Adding Guice] Initiating a major refactor to use dependency injection. Stopped at the Gist[Chunk,Tag] --- build.gradle | 1 + .../br/com/caelum/tubaina/AbstractChunk.java | 17 ++++++ .../java/br/com/caelum/tubaina/BookPart.java | 2 +- .../java/br/com/caelum/tubaina/Chapter.java | 2 +- .../java/br/com/caelum/tubaina/Chunk.java | 3 +- .../br/com/caelum/tubaina/CompositeChunk.java | 19 ++++++- .../com/caelum/tubaina/chunk/AnswerChunk.java | 25 +-------- .../br/com/caelum/tubaina/chunk/BoxChunk.java | 16 ++---- .../tubaina/chunk/CenteredParagraphChunk.java | 10 ++-- .../com/caelum/tubaina/chunk/CodeChunk.java | 14 ++--- .../caelum/tubaina/chunk/ExerciseChunk.java | 14 ++--- .../com/caelum/tubaina/chunk/GistChunk.java | 11 ++-- .../com/caelum/tubaina/chunk/ImageChunk.java | 3 +- .../com/caelum/tubaina/chunk/IndexChunk.java | 2 +- .../tubaina/chunk/IntroductionChunk.java | 15 +----- .../com/caelum/tubaina/chunk/ItemChunk.java | 4 +- .../com/caelum/tubaina/chunk/JavaChunk.java | 2 +- .../com/caelum/tubaina/chunk/ListChunk.java | 5 +- .../com/caelum/tubaina/chunk/MockedChunk.java | 2 +- .../com/caelum/tubaina/chunk/NoteChunk.java | 7 ++- .../caelum/tubaina/chunk/ParagraphChunk.java | 2 +- .../chunk/ParagraphInsideItemChunk.java | 2 +- .../caelum/tubaina/chunk/QuestionChunk.java | 5 +- .../com/caelum/tubaina/chunk/RubyChunk.java | 2 +- .../com/caelum/tubaina/chunk/TableChunk.java | 5 +- .../tubaina/chunk/TableColumnChunk.java | 5 +- .../caelum/tubaina/chunk/TableRowChunk.java | 5 +- .../com/caelum/tubaina/chunk/TodoChunk.java | 2 +- .../br/com/caelum/tubaina/chunk/XmlChunk.java | 2 +- .../com/caelum/tubaina/parser/RegexTag.java | 4 +- .../br/com/caelum/tubaina/parser/Tag.java | 6 ++- .../html/CenteredParagraphTagTemplate.java | 3 +- .../parser/html/ExerciseTagTemplate.java | 8 +-- .../parser/html/HtmlAndKindleCodeTag.java | 11 ++-- .../tubaina/parser/html/IndexTagTemplate.java | 3 +- .../tubaina/parser/html/ItemTagTemplate.java | 3 +- .../tubaina/parser/html/ListTagTemplate.java | 3 +- .../parser/html/ParagraphTagTemplate.java | 3 +- .../parser/html/QuestionTagTemplate.java | 3 +- .../parser/html/TableColumnTagTemplate.java | 3 +- .../parser/html/TableRowTagTemplate.java | 3 +- .../tubaina/parser/html/TableTagTemplate.java | 3 +- .../tubaina/parser/html/TodoTagTemplate.java | 5 +- .../parser/html/desktop/AnswerTag.java | 12 +++-- .../tubaina/parser/html/desktop/BoxTag.java | 10 ++-- .../html/desktop/CenteredParagraphTag.java | 5 +- .../tubaina/parser/html/desktop/CodeTag.java | 8 +-- .../parser/html/desktop/ExerciseTag.java | 8 +-- .../tubaina/parser/html/desktop/GistTag.java | 6 ++- .../parser/html/desktop/HtmlParser.java | 42 +++++++-------- .../tubaina/parser/html/desktop/ImageTag.java | 3 +- .../tubaina/parser/html/desktop/IndexTag.java | 5 +- .../tubaina/parser/html/desktop/ItemTag.java | 5 +- .../tubaina/parser/html/desktop/JavaTag.java | 3 +- .../tubaina/parser/html/desktop/ListTag.java | 5 +- .../tubaina/parser/html/desktop/NoteTag.java | 3 +- .../parser/html/desktop/ParagraphTag.java | 5 +- .../parser/html/desktop/QuestionTag.java | 5 +- .../tubaina/parser/html/desktop/RubyTag.java | 3 +- .../parser/html/desktop/TableColumnTag.java | 5 +- .../parser/html/desktop/TableRowTag.java | 5 +- .../tubaina/parser/html/desktop/TableTag.java | 5 +- .../tubaina/parser/html/desktop/TodoTag.java | 3 +- .../tubaina/parser/html/desktop/XmlTag.java | 3 +- .../tubaina/parser/html/kindle/AnswerTag.java | 11 ++-- .../tubaina/parser/html/kindle/BoxTag.java | 8 +-- .../html/kindle/CenteredParagraphTag.java | 5 +- .../tubaina/parser/html/kindle/CodeTag.java | 8 +-- .../parser/html/kindle/ExerciseTag.java | 8 +-- .../tubaina/parser/html/kindle/GistTag.java | 6 ++- .../tubaina/parser/html/kindle/ImageTag.java | 3 +- .../tubaina/parser/html/kindle/IndexTag.java | 5 +- .../tubaina/parser/html/kindle/ItemTag.java | 5 +- .../tubaina/parser/html/kindle/JavaTag.java | 3 +- .../parser/html/kindle/KindleParser.java | 36 ++++++------- .../tubaina/parser/html/kindle/ListTag.java | 5 +- .../tubaina/parser/html/kindle/NoteTag.java | 3 +- .../parser/html/kindle/ParagraphTag.java | 5 +- .../parser/html/kindle/QuestionTag.java | 5 +- .../tubaina/parser/html/kindle/RubyTag.java | 3 +- .../parser/html/kindle/TableColumnTag.java | 5 +- .../parser/html/kindle/TableRowTag.java | 5 +- .../tubaina/parser/html/kindle/TableTag.java | 5 +- .../tubaina/parser/html/kindle/TodoTag.java | 3 +- .../tubaina/parser/html/kindle/XmlTag.java | 3 +- .../tubaina/parser/latex/AnswerTag.java | 9 ++-- .../caelum/tubaina/parser/latex/BoxTag.java | 9 ++-- .../parser/latex/CenteredParagraphTag.java | 8 +-- .../caelum/tubaina/parser/latex/CodeTag.java | 14 +++-- .../tubaina/parser/latex/EscapeTag.java | 3 +- .../tubaina/parser/latex/ExerciseTag.java | 11 ++-- .../caelum/tubaina/parser/latex/GistTag.java | 13 +++-- .../caelum/tubaina/parser/latex/ImageTag.java | 3 +- .../caelum/tubaina/parser/latex/IndexTag.java | 3 +- .../caelum/tubaina/parser/latex/ItemTag.java | 3 +- .../caelum/tubaina/parser/latex/JavaTag.java | 3 +- .../tubaina/parser/latex/LatexParser.java | 45 ++++++++-------- .../caelum/tubaina/parser/latex/LinkTag.java | 3 +- .../caelum/tubaina/parser/latex/ListTag.java | 3 +- .../caelum/tubaina/parser/latex/NoteTag.java | 3 +- .../tubaina/parser/latex/ParagraphTag.java | 3 +- .../tubaina/parser/latex/QuestionTag.java | 3 +- .../caelum/tubaina/parser/latex/RubyTag.java | 3 +- .../tubaina/parser/latex/TableColumnTag.java | 3 +- .../tubaina/parser/latex/TableRowTag.java | 3 +- .../caelum/tubaina/parser/latex/TableTag.java | 3 +- .../caelum/tubaina/parser/latex/TodoTag.java | 3 +- .../caelum/tubaina/parser/latex/XmlTag.java | 3 +- .../tubaina/builder/BookBuilderTest.java | 52 +++++++++---------- .../builder/replacer/ItemReplacerTest.java | 4 +- .../caelum/tubaina/parser/RegexTagTest.java | 2 +- .../parser/html/HtmlAndKindleCodeTagTest.java | 14 ++--- .../parser/html/desktop/AnswerTagTest.java | 2 +- .../parser/html/desktop/BoxTagTest.java | 4 +- .../desktop/CenteredParagraphTagTest.java | 2 +- .../parser/html/desktop/CodeTagTest.java | 5 +- .../parser/html/desktop/ExerciseTagTest.java | 2 +- .../parser/html/desktop/HtmlParserTest.java | 6 +-- .../parser/html/desktop/ImageTagTest.java | 2 +- .../parser/html/desktop/ItemTagTest.java | 2 +- .../parser/html/desktop/JavaTagTest.java | 2 +- .../parser/html/desktop/ListTagTest.java | 8 +-- .../parser/html/desktop/NoteTagTest.java | 2 +- .../parser/html/desktop/ParagraphTagTest.java | 2 +- .../parser/html/desktop/QuestionTagTest.java | 2 +- .../parser/html/desktop/RubyTagTest.java | 2 +- .../html/desktop/TableColumnTagTest.java | 2 +- .../parser/html/desktop/TableRowTagTest.java | 2 +- .../parser/html/desktop/TableTagTest.java | 8 +-- .../parser/html/desktop/XmlTagTest.java | 2 +- .../parser/html/kindle/AnswerTagTest.java | 2 +- .../parser/html/kindle/BoxTagTest.java | 4 +- .../html/kindle/CenteredParagraphTagTest.java | 2 +- .../parser/html/kindle/CodeTagTest.java | 5 +- .../parser/html/kindle/ExerciseTagTest.java | 2 +- .../parser/html/kindle/ItemTagTest.java | 2 +- .../parser/html/kindle/KindleParserTest.java | 7 ++- .../parser/html/kindle/ListTagTest.java | 8 +-- .../parser/html/kindle/NoteTagTest.java | 2 +- .../parser/html/kindle/ParagraphTagTest.java | 2 +- .../parser/html/kindle/QuestionTagTest.java | 2 +- .../html/kindle/TableColumnTagTest.java | 2 +- .../parser/html/kindle/TableRowTagTest.java | 2 +- .../parser/html/kindle/TableTagTest.java | 8 +-- .../tubaina/parser/latex/BoxTagTest.java | 6 +-- .../latex/CenteredParagraphTagTest.java | 2 +- .../tubaina/parser/latex/CodeTagTest.java | 24 ++++----- .../tubaina/parser/latex/ExerciseTagTest.java | 2 +- .../tubaina/parser/latex/GistTagTest.java | 4 +- .../tubaina/parser/latex/ImageTagTest.java | 26 +++++----- .../tubaina/parser/latex/IndexTagTest.java | 4 +- .../tubaina/parser/latex/ItemTagTest.java | 2 +- .../tubaina/parser/latex/JavaTagTest.java | 2 +- .../tubaina/parser/latex/LatexParserTest.java | 8 ++- .../tubaina/parser/latex/LinkTagTest.java | 12 ++--- .../tubaina/parser/latex/ListTagTest.java | 8 +-- .../tubaina/parser/latex/NoteTagTest.java | 2 +- .../tubaina/parser/latex/RubyTagTest.java | 2 +- .../parser/latex/TableColumnTagTest.java | 2 +- .../tubaina/parser/latex/TableRowTagTest.java | 4 +- .../tubaina/parser/latex/TableTagTest.java | 10 ++-- .../tubaina/parser/latex/XmlTagTest.java | 2 +- 162 files changed, 544 insertions(+), 468 deletions(-) create mode 100644 src/main/java/br/com/caelum/tubaina/AbstractChunk.java diff --git a/build.gradle b/build.gradle index 1509588..af901db 100644 --- a/build.gradle +++ b/build.gradle @@ -43,6 +43,7 @@ dependencies { compile group: 'com.lowagie', name: 'itext', version: '2.1.7' compile group: 'com.thoughtworks.xstream', name: 'xstream', version: '1.4.2' compile group: 'org.apache.commons', name: 'commons-exec', version: '1.1' + compile group: 'com.google.inject', name: 'guice', version: '3.0' testCompile group: 'junit', name: 'junit', version: '4.+' testCompile group: 'org.mockito', name: 'mockito-all', version: '1.9.0' diff --git a/src/main/java/br/com/caelum/tubaina/AbstractChunk.java b/src/main/java/br/com/caelum/tubaina/AbstractChunk.java new file mode 100644 index 0000000..f925975 --- /dev/null +++ b/src/main/java/br/com/caelum/tubaina/AbstractChunk.java @@ -0,0 +1,17 @@ +package br.com.caelum.tubaina; + +import com.google.inject.Inject; + +import br.com.caelum.tubaina.parser.Tag; + +public abstract class AbstractChunk > implements Chunk{ + + @Inject + private Tag tag; + + @Override + @SuppressWarnings("unchecked") + public String asString() { + return tag.parse((T) this); + } +} diff --git a/src/main/java/br/com/caelum/tubaina/BookPart.java b/src/main/java/br/com/caelum/tubaina/BookPart.java index ac00c41..a8de918 100644 --- a/src/main/java/br/com/caelum/tubaina/BookPart.java +++ b/src/main/java/br/com/caelum/tubaina/BookPart.java @@ -54,7 +54,7 @@ public boolean isPrintable() { } public String getIntroduction(Parser p) { - return introductionChunk == null ? "" : introductionChunk.getContent(p); + return introductionChunk == null ? "" : introductionChunk.asString(); } public String getIntroductionText() { diff --git a/src/main/java/br/com/caelum/tubaina/Chapter.java b/src/main/java/br/com/caelum/tubaina/Chapter.java index b9e4897..1d171f8 100644 --- a/src/main/java/br/com/caelum/tubaina/Chapter.java +++ b/src/main/java/br/com/caelum/tubaina/Chapter.java @@ -49,7 +49,7 @@ public List getResources() { } public String getIntroduction(Parser p){ - return this.introduction.getContent(p); + return this.introduction.asString(); } public int getChapterNumber() { diff --git a/src/main/java/br/com/caelum/tubaina/Chunk.java b/src/main/java/br/com/caelum/tubaina/Chunk.java index 06cb99f..3a37a6b 100644 --- a/src/main/java/br/com/caelum/tubaina/Chunk.java +++ b/src/main/java/br/com/caelum/tubaina/Chunk.java @@ -1,7 +1,6 @@ package br.com.caelum.tubaina; -import br.com.caelum.tubaina.parser.Parser; public interface Chunk { - public String getContent(Parser p); + public String asString(); } diff --git a/src/main/java/br/com/caelum/tubaina/CompositeChunk.java b/src/main/java/br/com/caelum/tubaina/CompositeChunk.java index 24b5349..7af15d0 100644 --- a/src/main/java/br/com/caelum/tubaina/CompositeChunk.java +++ b/src/main/java/br/com/caelum/tubaina/CompositeChunk.java @@ -1,5 +1,22 @@ package br.com.caelum.tubaina; -public interface CompositeChunk extends Chunk { +import java.util.List; + + +public abstract class CompositeChunk> extends AbstractChunk { + + private List body; + + public CompositeChunk(List body) { + this.body = body; + } + + public String getContent() { + String content = ""; + for (Chunk c : body) { + content += c.asString(); + } + return content; + } } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/AnswerChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/AnswerChunk.java index 57374e2..d3adc99 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/AnswerChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/AnswerChunk.java @@ -4,38 +4,17 @@ import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.CompositeChunk; -import br.com.caelum.tubaina.parser.Parser; -public class AnswerChunk implements CompositeChunk { +public class AnswerChunk extends CompositeChunk { private static int ANSWER_ID = 0; - - private List body; - private int id; public AnswerChunk(List body) { - this.body = body; + super(body); this.id = ANSWER_ID++; } - public String getContent(Parser p) { - String content = ""; - for (Chunk c : body) { - content += c.getContent(p); - } - - return p.parseAnswer(content, id); - } - - public String getRealContent(Parser p) { - String content = ""; - for (Chunk c : body) { - content += c.getContent(p); - } - return content; - } - public int getId() { return id; } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/BoxChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/BoxChunk.java index 9c7df8a..b0da6a9 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/BoxChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/BoxChunk.java @@ -4,25 +4,17 @@ import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.CompositeChunk; -import br.com.caelum.tubaina.parser.Parser; -public class BoxChunk implements CompositeChunk { - - private final List body; +public class BoxChunk extends CompositeChunk { private final String title; public BoxChunk(final String title, final List body) { + super(body); this.title = title.trim(); - this.body = body; } - public String getContent(final Parser p) { - String content = ""; - for (Chunk c : body) { - content += c.getContent(p); - } - return p.parseBox(content, title); + public String getTitle() { + return title; } - } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/CenteredParagraphChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/CenteredParagraphChunk.java index ebf983e..1624232 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/CenteredParagraphChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/CenteredParagraphChunk.java @@ -1,9 +1,8 @@ package br.com.caelum.tubaina.chunk; -import br.com.caelum.tubaina.Chunk; -import br.com.caelum.tubaina.parser.Parser; +import br.com.caelum.tubaina.AbstractChunk; -public class CenteredParagraphChunk implements Chunk { +public class CenteredParagraphChunk extends AbstractChunk { private final String content; @@ -11,8 +10,7 @@ public CenteredParagraphChunk(String content) { this.content = content; } - public String getContent(Parser p) { - return p.parseCenteredParagraph(content); + public String getContent() { + return content; } - } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/CodeChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/CodeChunk.java index 4c1e2d7..fe0170e 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/CodeChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/CodeChunk.java @@ -1,9 +1,8 @@ package br.com.caelum.tubaina.chunk; -import br.com.caelum.tubaina.Chunk; -import br.com.caelum.tubaina.parser.Parser; +import br.com.caelum.tubaina.AbstractChunk; -public class CodeChunk implements Chunk { +public class CodeChunk extends AbstractChunk { private String content; private final String options; @@ -13,8 +12,11 @@ public CodeChunk(String content, String options) { this.options = options; } - public String getContent(Parser p) { - return p.parseCode(this.content, this.options); + public String getContent() { + return content; + } + + public String getOptions() { + return options; } - } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/ExerciseChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/ExerciseChunk.java index 705e3c0..3d17093 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/ExerciseChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/ExerciseChunk.java @@ -4,25 +4,19 @@ import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.CompositeChunk; -import br.com.caelum.tubaina.parser.Parser; -public class ExerciseChunk implements CompositeChunk { +public class ExerciseChunk extends CompositeChunk { private static int COUNT = 1; - private List body; private int id; public ExerciseChunk(List body) { - this.body = body; + super(body); this.id = COUNT++; } - public String getContent(Parser p) { - String content = ""; - for (Chunk c : body) { - content += c.getContent(p); - } - return p.parseExercise(content, id); + public int getId() { + return id; } public static int getExerciseCount() { diff --git a/src/main/java/br/com/caelum/tubaina/chunk/GistChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/GistChunk.java index 48ba92c..1359e2d 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/GistChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/GistChunk.java @@ -1,10 +1,8 @@ package br.com.caelum.tubaina.chunk; -import br.com.caelum.tubaina.Chunk; -import br.com.caelum.tubaina.parser.Parser; - -public class GistChunk implements Chunk { +import br.com.caelum.tubaina.AbstractChunk; +public class GistChunk extends AbstractChunk { private final String options; @@ -12,9 +10,8 @@ public GistChunk(String options) { this.options = options; } - public String getContent(Parser p) { - return p.parseGist(this.options); + public String getOptions() { + return options; } - } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/ImageChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/ImageChunk.java index 238006d..a25e779 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/ImageChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/ImageChunk.java @@ -18,7 +18,8 @@ public ImageChunk(String path, String options, double width, int dpi) { this.dpi = dpi; } - public String getContent(Parser p) { + @Override + public String asString(Parser p) { return p.parseImage(this.path,this.options + " [" + width + "," + dpi + "]"); } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/IndexChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/IndexChunk.java index 996fec1..e770476 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/IndexChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/IndexChunk.java @@ -10,7 +10,7 @@ public IndexChunk(String name) { this.name = name; } - public String getContent(Parser p) { + public String asString(Parser p) { return p.parseIndex(name); } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/IntroductionChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/IntroductionChunk.java index bf9c6bd..aa24de5 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/IntroductionChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/IntroductionChunk.java @@ -4,22 +4,11 @@ import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.CompositeChunk; -import br.com.caelum.tubaina.parser.Parser; -public class IntroductionChunk implements CompositeChunk { +public class IntroductionChunk extends CompositeChunk { - private List chunks; - public IntroductionChunk(List chunks) { - this.chunks = chunks; - } - - public String getContent(Parser p) { - String content = ""; - for (Chunk c : chunks) { - content += c.getContent(p); - } - return content; + super(chunks); } } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/ItemChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/ItemChunk.java index 5fc9bf8..fb633c6 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/ItemChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/ItemChunk.java @@ -13,10 +13,10 @@ public ItemChunk(List body) { this.body = body; } - public String getContent(Parser p) { + public String asString(Parser p) { String content = ""; for (Chunk c : body) { - content += c.getContent(p); + content += c.asString(); } return p.parseItem(content); } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/JavaChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/JavaChunk.java index 57a35b4..f4daf43 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/JavaChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/JavaChunk.java @@ -14,7 +14,7 @@ public JavaChunk(String options, String content) { this.options = options; } - public String getContent(Parser p) { + public String asString(Parser p) { return p.parseJava(content, options); } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/ListChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/ListChunk.java index c837fe6..3835a88 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/ListChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/ListChunk.java @@ -4,7 +4,6 @@ import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.CompositeChunk; -import br.com.caelum.tubaina.parser.Parser; public class ListChunk implements CompositeChunk { @@ -17,10 +16,10 @@ public ListChunk(String type, List body) { this.type = type; } - public String getContent(Parser p) { + public String asString() { String content = ""; for (Chunk c : body) { - content += c.getContent(p); + content += c.asString(); } return p.parseList(content, type); } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/MockedChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/MockedChunk.java index e1c7560..3c46ec7 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/MockedChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/MockedChunk.java @@ -11,7 +11,7 @@ public MockedChunk(String content) { this.content = content; } - public String getContent(Parser p) { + public String asString(Parser p) { return content; } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/NoteChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/NoteChunk.java index 883e366..65dfb62 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/NoteChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/NoteChunk.java @@ -4,7 +4,6 @@ import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.CompositeChunk; -import br.com.caelum.tubaina.parser.Parser; public class NoteChunk implements CompositeChunk { @@ -17,14 +16,14 @@ public NoteChunk(List title, List body) { this.body = body; } - public String getContent(Parser p) { + public String asString() { String content = "" + '\n'; for (Chunk c : body) { - content += c.getContent(p); + content += c.asString(); } String fullTitle = ""; for (Chunk c : title) { - fullTitle += c.getContent(p); + fullTitle += c.asString(); } return p.parseNote(content, fullTitle); } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/ParagraphChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/ParagraphChunk.java index ae0cabc..4a68b1f 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/ParagraphChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/ParagraphChunk.java @@ -11,7 +11,7 @@ public ParagraphChunk(String content) { this.content = content; } - public String getContent(Parser p) { + public String asString(Parser p) { return p.parseParagraph(this.content); } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/ParagraphInsideItemChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/ParagraphInsideItemChunk.java index eb566de..3b9327b 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/ParagraphInsideItemChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/ParagraphInsideItemChunk.java @@ -11,7 +11,7 @@ public ParagraphInsideItemChunk(String content) { this.content = content; } - public String getContent(Parser p) { + public String asString(Parser p) { return p.parseParagraphInsideItem(content); } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/QuestionChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/QuestionChunk.java index 8655b53..4e0daaa 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/QuestionChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/QuestionChunk.java @@ -4,7 +4,6 @@ import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.CompositeChunk; -import br.com.caelum.tubaina.parser.Parser; public class QuestionChunk implements CompositeChunk { @@ -14,10 +13,10 @@ public QuestionChunk(List body) { this.body = body; } - public String getContent(Parser p) { + public String asString() { String content = ""; for (Chunk c : body) { - content += c.getContent(p); + content += c.asString(); } return p.parseQuestion(content); } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/RubyChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/RubyChunk.java index da7eb2a..ccf74ff 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/RubyChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/RubyChunk.java @@ -13,7 +13,7 @@ public RubyChunk(String content, String options) { this.options = options; } - public String getContent(Parser p) { + public String asString(Parser p) { return p.parseRuby(content, options); } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/TableChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/TableChunk.java index 8f831ce..185e15c 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/TableChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/TableChunk.java @@ -6,7 +6,6 @@ import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.CompositeChunk; -import br.com.caelum.tubaina.parser.Parser; public class TableChunk implements CompositeChunk { @@ -34,10 +33,10 @@ private void parseOptions(String options) { } } - public String getContent(Parser p) { + public String asString() { String content = ""; for (Chunk c : rows) { - content += c.getContent(p); + content += c.asString(); } return p.parseTable(content, title, noborder, this.getMaxNumberOfColumns()); } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/TableColumnChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/TableColumnChunk.java index 1721ff1..d289946 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/TableColumnChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/TableColumnChunk.java @@ -4,7 +4,6 @@ import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.CompositeChunk; -import br.com.caelum.tubaina.parser.Parser; public class TableColumnChunk implements CompositeChunk { @@ -14,10 +13,10 @@ public TableColumnChunk(List cell) { this.cell = cell; } - public String getContent(Parser p) { + public String asString() { String content = ""; for (Chunk c : cell) { - content += c.getContent(p); + content += c.asString(); } return p.parseColumn(content); } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/TableRowChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/TableRowChunk.java index c558abb..527c4ef 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/TableRowChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/TableRowChunk.java @@ -4,7 +4,6 @@ import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.CompositeChunk; -import br.com.caelum.tubaina.parser.Parser; public class TableRowChunk implements CompositeChunk { @@ -14,10 +13,10 @@ public TableRowChunk(List cols) { this.cols = cols; } - public String getContent(Parser p) { + public String asString() { String content = ""; for (Chunk c : cols) { - content += c.getContent(p); + content += c.asString(); } return p.parseRow(content); } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/TodoChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/TodoChunk.java index d83f0e0..be69673 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/TodoChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/TodoChunk.java @@ -11,7 +11,7 @@ public TodoChunk(String content) { this.content = content; } - public String getContent(Parser p) { + public String asString(Parser p) { return p.parseTodo(this.content); } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/XmlChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/XmlChunk.java index eab45d1..f43c335 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/XmlChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/XmlChunk.java @@ -12,7 +12,7 @@ public XmlChunk(String options, String content) { this.content = content; } - public String getContent(Parser p) { + public String asString(Parser p) { return p.parseXml(content, options); } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/RegexTag.java b/src/main/java/br/com/caelum/tubaina/parser/RegexTag.java index cd3b0eb..c56603b 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/RegexTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/RegexTag.java @@ -2,6 +2,8 @@ import java.util.regex.Pattern; +import br.com.caelum.tubaina.Chunk; + public class RegexTag implements Tag { private String replacement; @@ -12,7 +14,7 @@ public RegexTag(String regex, String replacement) { this.replacement = replacement; } - public String parse(String string, String empty) { + public String parse(Chunk chunk) { String out = regex.matcher(string).replaceAll(replacement); return out; } diff --git a/src/main/java/br/com/caelum/tubaina/parser/Tag.java b/src/main/java/br/com/caelum/tubaina/parser/Tag.java index d8f066d..af7114f 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/Tag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/Tag.java @@ -1,5 +1,7 @@ package br.com.caelum.tubaina.parser; -public interface Tag { - String parse(String content, String options); +import br.com.caelum.tubaina.Chunk; + +public interface Tag { + String parse(T chunk); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/CenteredParagraphTagTemplate.java b/src/main/java/br/com/caelum/tubaina/parser/html/CenteredParagraphTagTemplate.java index e86bcf6..df30d93 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/CenteredParagraphTagTemplate.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/CenteredParagraphTagTemplate.java @@ -1,10 +1,11 @@ package br.com.caelum.tubaina.parser.html; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; public class CenteredParagraphTagTemplate implements Tag { - public String parse(String string, String options) { + public String parse(Chunk chunk) { return "

" + string + "

"; } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/ExerciseTagTemplate.java b/src/main/java/br/com/caelum/tubaina/parser/html/ExerciseTagTemplate.java index b916dac..c3b103e 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/ExerciseTagTemplate.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/ExerciseTagTemplate.java @@ -1,11 +1,13 @@ package br.com.caelum.tubaina.parser.html; +import br.com.caelum.tubaina.chunk.ExerciseChunk; import br.com.caelum.tubaina.parser.Tag; -public class ExerciseTagTemplate implements Tag { +public class ExerciseTagTemplate implements Tag { - public String parse(String string, String options) { - return "
    " + string + "
"; + @Override + public String parse(ExerciseChunk chunk) { + return "
    " + chunk.getContent() + "
"; } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/HtmlAndKindleCodeTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/HtmlAndKindleCodeTag.java index 2619d00..694eaaa 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/HtmlAndKindleCodeTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/HtmlAndKindleCodeTag.java @@ -2,11 +2,12 @@ import java.util.List; +import br.com.caelum.tubaina.chunk.CodeChunk; import br.com.caelum.tubaina.parser.SimpleIndentator; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.desktop.SyntaxHighlighter; -public class HtmlAndKindleCodeTag implements Tag { +public class HtmlAndKindleCodeTag implements Tag { public static final String BEGIN_START = "
 highlights = detectHighlights(options);
         boolean numbered = options.contains("#");
         SimpleIndentator simpleIndentator = new SimpleIndentator(2);
-        String indentedCode = simpleIndentator.indent(content);
+        String indentedCode = simpleIndentator.indent(chunk.getContent());
         String label = matchLabel(options);
         
         String code = htmlCodeHighlighter.highlight(indentedCode, language, numbered, highlights);
diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/IndexTagTemplate.java b/src/main/java/br/com/caelum/tubaina/parser/html/IndexTagTemplate.java
index c280286..bf29724 100644
--- a/src/main/java/br/com/caelum/tubaina/parser/html/IndexTagTemplate.java
+++ b/src/main/java/br/com/caelum/tubaina/parser/html/IndexTagTemplate.java
@@ -1,10 +1,11 @@
 package br.com.caelum.tubaina.parser.html;
 
+import br.com.caelum.tubaina.Chunk;
 import br.com.caelum.tubaina.parser.Tag;
 
 public class IndexTagTemplate implements Tag {
 
-	public String parse(String string, String options) {
+	public String parse(Chunk chunk) {
 		return "\n\n";
 	}
 
diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/ItemTagTemplate.java b/src/main/java/br/com/caelum/tubaina/parser/html/ItemTagTemplate.java
index 3928abb..56ee650 100644
--- a/src/main/java/br/com/caelum/tubaina/parser/html/ItemTagTemplate.java
+++ b/src/main/java/br/com/caelum/tubaina/parser/html/ItemTagTemplate.java
@@ -1,10 +1,11 @@
 package br.com.caelum.tubaina.parser.html;
 
+import br.com.caelum.tubaina.Chunk;
 import br.com.caelum.tubaina.parser.Tag;
 
 public class ItemTagTemplate implements Tag {
 
-	public String parse(String string, String options) {
+	public String parse(Chunk chunk) {
 		return "
  • " + string + "
  • "; } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/ListTagTemplate.java b/src/main/java/br/com/caelum/tubaina/parser/html/ListTagTemplate.java index dd16504..685b7a9 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/ListTagTemplate.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/ListTagTemplate.java @@ -1,10 +1,11 @@ package br.com.caelum.tubaina.parser.html; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; public class ListTagTemplate implements Tag { - public String parse(String content, String options) { + public String parse(Chunk chunk) { if (options.contains("number")) return "
      " + content + "
    "; if (options.contains("letter")) diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/ParagraphTagTemplate.java b/src/main/java/br/com/caelum/tubaina/parser/html/ParagraphTagTemplate.java index d25db23..a9bcad1 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/ParagraphTagTemplate.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/ParagraphTagTemplate.java @@ -1,10 +1,11 @@ package br.com.caelum.tubaina.parser.html; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; public class ParagraphTagTemplate implements Tag { - public String parse(String string, String options) { + public String parse(Chunk chunk) { return "

    " + string + "

    "; } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/QuestionTagTemplate.java b/src/main/java/br/com/caelum/tubaina/parser/html/QuestionTagTemplate.java index feab6aa..c0e0517 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/QuestionTagTemplate.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/QuestionTagTemplate.java @@ -1,10 +1,11 @@ package br.com.caelum.tubaina.parser.html; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; public class QuestionTagTemplate implements Tag { - public String parse(String string, String options) { + public String parse(Chunk chunk) { return "
  • " + string + "
  • "; } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/TableColumnTagTemplate.java b/src/main/java/br/com/caelum/tubaina/parser/html/TableColumnTagTemplate.java index 9ba9f2e..ca165d8 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/TableColumnTagTemplate.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/TableColumnTagTemplate.java @@ -1,10 +1,11 @@ package br.com.caelum.tubaina.parser.html; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; public class TableColumnTagTemplate implements Tag { - public String parse(String text, String options) { + public String parse(Chunk chunk) { return "" + text + ""; } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/TableRowTagTemplate.java b/src/main/java/br/com/caelum/tubaina/parser/html/TableRowTagTemplate.java index 50071a8..5abec37 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/TableRowTagTemplate.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/TableRowTagTemplate.java @@ -1,10 +1,11 @@ package br.com.caelum.tubaina.parser.html; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; public class TableRowTagTemplate implements Tag { - public String parse(String string, String options) { + public String parse(Chunk chunk) { return "" + string + ""; } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/TableTagTemplate.java b/src/main/java/br/com/caelum/tubaina/parser/html/TableTagTemplate.java index 4f00ff8..2ce9c21 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/TableTagTemplate.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/TableTagTemplate.java @@ -1,5 +1,6 @@ package br.com.caelum.tubaina.parser.html; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; public class TableTagTemplate implements Tag { @@ -10,7 +11,7 @@ public TableTagTemplate(boolean noborder) { this.noborder = noborder; } - public String parse(String string, String options) { + public String parse(Chunk chunk) { String result = ""; if (options != null && options.trim().length() > 0) result += "

    " + options + "

    "; diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/TodoTagTemplate.java b/src/main/java/br/com/caelum/tubaina/parser/html/TodoTagTemplate.java index 6212f12..a1bda21 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/TodoTagTemplate.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/TodoTagTemplate.java @@ -1,13 +1,14 @@ package br.com.caelum.tubaina.parser.html; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; public class TodoTagTemplate implements Tag { private TodoTagTemplate template = new TodoTagTemplate(); - public String parse(String string, String options) { - return template.parse(string, options); + public String parse(Chunk chunk) { + return template.parse(chunk); } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/AnswerTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/AnswerTag.java index 61b60ad..400ac42 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/AnswerTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/AnswerTag.java @@ -1,14 +1,16 @@ package br.com.caelum.tubaina.parser.html.desktop; +import br.com.caelum.tubaina.chunk.AnswerChunk; import br.com.caelum.tubaina.parser.Tag; -public class AnswerTag implements Tag { +public class AnswerTag implements Tag { private final String answerText = "Click here for the answer"; - public String parse(String string, String id) { - return "" - + answerText + "
    " + string + "

    "; + @Override + public String parse(AnswerChunk chunk) { + return "" + + answerText + "
    " + chunk.getContent() + "

    "; } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/BoxTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/BoxTag.java index 6f6d7e4..6590efd 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/BoxTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/BoxTag.java @@ -1,13 +1,15 @@ package br.com.caelum.tubaina.parser.html.desktop; +import br.com.caelum.tubaina.chunk.BoxChunk; import br.com.caelum.tubaina.parser.Tag; -public class BoxTag implements Tag { +public class BoxTag implements Tag { - public String parse(String content, String title) { + @Override + public String parse(BoxChunk chunk) { - return "

    " + title.trim() - + "

    \n" + content.trim() + "
    "; + return "

    " + chunk.getTitle().trim() + + "

    \n" + chunk.getContent().trim() + "
    "; } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/CenteredParagraphTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/CenteredParagraphTag.java index 0dc8bb5..b3a8089 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/CenteredParagraphTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/CenteredParagraphTag.java @@ -1,5 +1,6 @@ package br.com.caelum.tubaina.parser.html.desktop; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.CenteredParagraphTagTemplate; @@ -7,8 +8,8 @@ public class CenteredParagraphTag implements Tag { private CenteredParagraphTagTemplate template = new CenteredParagraphTagTemplate(); - public String parse(String string, String options) { - return template.parse(string, options); + public String parse(Chunk chunk) { + return template.parse(chunk); } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/CodeTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/CodeTag.java index 6c392b1..de78760 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/CodeTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/CodeTag.java @@ -1,12 +1,13 @@ package br.com.caelum.tubaina.parser.html.desktop; +import br.com.caelum.tubaina.chunk.CodeChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.HtmlAndKindleCodeTag; import br.com.caelum.tubaina.parser.pygments.CodeCache; import br.com.caelum.tubaina.parser.pygments.CodeOutputType; import br.com.caelum.tubaina.util.CommandExecutor; -public class CodeTag implements Tag { +public class CodeTag implements Tag { private HtmlAndKindleCodeTag htmlCodeTag; @@ -20,8 +21,9 @@ public CodeTag(HtmlAndKindleCodeTag htmlCodeTag) { this.htmlCodeTag = htmlCodeTag; } - public String parse(String content, String options) { - return htmlCodeTag.parse(content, options); + @Override + public String parse(CodeChunk chunk) { + return htmlCodeTag.parse(chunk); } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ExerciseTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ExerciseTag.java index 7a99577..5f10c7e 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ExerciseTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ExerciseTag.java @@ -1,14 +1,16 @@ package br.com.caelum.tubaina.parser.html.desktop; +import br.com.caelum.tubaina.chunk.ExerciseChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.ExerciseTagTemplate; -public class ExerciseTag implements Tag { +public class ExerciseTag implements Tag { private ExerciseTagTemplate template = new ExerciseTagTemplate(); - public String parse(String string, String options) { - return template.parse(string, options); + @Override + public String parse(ExerciseChunk chunk) { + return template.parse(chunk); } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/GistTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/GistTag.java index 90623b2..ea3a907 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/GistTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/GistTag.java @@ -1,10 +1,12 @@ package br.com.caelum.tubaina.parser.html.desktop; +import br.com.caelum.tubaina.chunk.GistChunk; import br.com.caelum.tubaina.parser.Tag; -public class GistTag implements Tag{ +public class GistTag implements Tag { - public String parse(String string, String options) { + @Override + public String parse(GistChunk chunk) { // TODO - Support gist at HTML return ""; } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/HtmlParser.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/HtmlParser.java index b4b328d..c940f7e 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/HtmlParser.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/HtmlParser.java @@ -30,110 +30,110 @@ public String parse(String string) { // interpreted for (Tag tag : tags) { - string = tag.parse(string, null); + string = tag.parse(chunk); } return string; } public String parseBox(String text, String options) { String title = this.sanitizer.sanitize(options); - return new BoxTag().parse(text, parse(title)); + return new BoxTag().parse(chunk); } public String parseImage(String text, String options) { - return new ImageTag().parse(text, options); + return new ImageTag().parse(chunk); } @Deprecated public String parseJava(String text, String options) { String string = new JavaTag(new SimpleIndentator(4)) - .parse(text, options); + .parse(chunk); return string; } public String parseParagraph(String text) { String string = this.sanitizer.sanitize(text); - string = new ParagraphTag().parse(string, null); + string = new ParagraphTag().parse(chunk); string = this.parse(string); return string; } public String parseCode(String text, String options) { - return new CodeTag().parse(text, options); + return new CodeTag().parse(chunk); } public String parseGist(String options) { - return new GistTag().parse(null, options); + return new GistTag().parse(chunk); } public String parseList(String text, String options) { - return new ListTag().parse(text, options); + return new ListTag().parse(chunk); } @Deprecated public String parseXml(String text, String options) { text = this.sanitizer.sanitize(text); - String string = new XmlTag(new SimpleIndentator(4)).parse(text, options); + String string = new XmlTag(new SimpleIndentator(4)).parse(chunk); return string; } public String parseExercise(String text, int id) { - String string = new ExerciseTag().parse(text, "" + id); + String string = new ExerciseTag().parse(chunk); return string; } public String parseAnswer(String text, int id) { if (!noAnswer) - return new AnswerTag().parse(text, "" + id); + return new AnswerTag().parse(chunk); return ""; } public String parseQuestion(String text) { - String string = new QuestionTag().parse(text, null); + String string = new QuestionTag().parse(chunk); return string; } public String parseNote(String text, String title) { if (showNotes) - return new NoteTag().parse(text, title); + return new NoteTag().parse(chunk); return ""; } public String parseItem(String text) { - return new ItemTag().parse(text, null); + return new ItemTag().parse(chunk); } public String parseTodo(String text) { - return new TodoTag().parse(text, null); + return new TodoTag().parse(chunk); } public String parseIndex(String name) { name = this.sanitizer.sanitize(name); - return new IndexTag().parse(name, null); + return new IndexTag().parse(chunk); } public String parseColumn(String text) { - return new TableColumnTag().parse(text, null); + return new TableColumnTag().parse(chunk); } public String parseRow(String text) { - return new TableRowTag().parse(text, null); + return new TableRowTag().parse(chunk); } public String parseTable(String text, String title, boolean noborder, int columns) { title = this.sanitizer.sanitize(title); - return new TableTag(noborder).parse(text, title); + return new TableTag(noborder).parse(chunk); } public String parseCenteredParagraph(String content) { - return new CenteredParagraphTag().parse(content, null); + return new CenteredParagraphTag().parse(chunk); } @Deprecated public String parseRuby(String content, String options) { - return new RubyTag(new SimpleIndentator(4)).parse(content, options); + return new RubyTag(new SimpleIndentator(4)).parse(chunk); } public String parseParagraphInsideItem(String text) { diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ImageTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ImageTag.java index 446f29c..e770fa5 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ImageTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ImageTag.java @@ -3,6 +3,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.TubainaException; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.ImageTagTemplate; @@ -11,7 +12,7 @@ public class ImageTag implements Tag { private ImageTagTemplate template = new ImageTagTemplate(); - public String parse(final String path, final String options) { + public String parse(Chunk chunk) { Pattern label = Pattern.compile("(?s)(?i)label=(\\w+)?"); Matcher labelMatcher = label.matcher(options); if (labelMatcher.matches()) { diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/IndexTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/IndexTag.java index 4806592..8daf881 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/IndexTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/IndexTag.java @@ -1,13 +1,14 @@ package br.com.caelum.tubaina.parser.html.desktop; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.IndexTagTemplate; public class IndexTag implements Tag { private IndexTagTemplate template = new IndexTagTemplate(); - public String parse(String string, String options) { - return template.parse(string, options); + public String parse(Chunk chunk) { + return template.parse(chunk); } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ItemTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ItemTag.java index 02edbbd..ce8d0ab 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ItemTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ItemTag.java @@ -1,12 +1,13 @@ package br.com.caelum.tubaina.parser.html.desktop; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.ItemTagTemplate; public class ItemTag implements Tag { private ItemTagTemplate template = new ItemTagTemplate(); - public String parse(String string, String options) { - return template.parse(string, options); + public String parse(Chunk chunk) { + return template.parse(chunk); } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/JavaTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/JavaTag.java index c1d201e..c2bf26f 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/JavaTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/JavaTag.java @@ -1,5 +1,6 @@ package br.com.caelum.tubaina.parser.html.desktop; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.TubainaException; import br.com.caelum.tubaina.parser.Indentator; import br.com.caelum.tubaina.parser.Tag; @@ -13,7 +14,7 @@ public JavaTag(Indentator indentator) { throw new TubainaException(MESSAGE); } - public String parse(String string, String opts) { + public String parse(Chunk chunk) { throw new TubainaException(MESSAGE); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ListTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ListTag.java index ea1fc64..29466f8 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ListTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ListTag.java @@ -1,5 +1,6 @@ package br.com.caelum.tubaina.parser.html.desktop; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.ListTagTemplate; @@ -7,8 +8,8 @@ public class ListTag implements Tag { private ListTagTemplate template = new ListTagTemplate(); - public String parse(String content, String options) { - return template.parse(content, options); + public String parse(Chunk chunk) { + return template.parse(chunk); } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/NoteTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/NoteTag.java index 51c3e19..605ef83 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/NoteTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/NoteTag.java @@ -1,10 +1,11 @@ package br.com.caelum.tubaina.parser.html.desktop; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; public class NoteTag implements Tag { - public String parse(String content, String options) { + public String parse(Chunk chunk) { return "
    " + content.trim() + "
    "; } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ParagraphTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ParagraphTag.java index 7164b40..07f8187 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ParagraphTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ParagraphTag.java @@ -1,5 +1,6 @@ package br.com.caelum.tubaina.parser.html.desktop; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.ParagraphTagTemplate; @@ -7,8 +8,8 @@ public class ParagraphTag implements Tag { private ParagraphTagTemplate template = new ParagraphTagTemplate(); - public String parse(String string, String options) { - return template.parse(string, options); + public String parse(Chunk chunk) { + return template.parse(chunk); } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/QuestionTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/QuestionTag.java index 15a80d4..ec598b8 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/QuestionTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/QuestionTag.java @@ -1,5 +1,6 @@ package br.com.caelum.tubaina.parser.html.desktop; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.QuestionTagTemplate; @@ -7,8 +8,8 @@ public class QuestionTag implements Tag { private QuestionTagTemplate template = new QuestionTagTemplate(); - public String parse(String string, String options) { - return template.parse(string, options); + public String parse(Chunk chunk) { + return template.parse(chunk); } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/RubyTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/RubyTag.java index 44a2d85..6c72113 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/RubyTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/RubyTag.java @@ -1,5 +1,6 @@ package br.com.caelum.tubaina.parser.html.desktop; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.TubainaException; import br.com.caelum.tubaina.parser.Indentator; import br.com.caelum.tubaina.parser.Tag; @@ -13,7 +14,7 @@ public RubyTag(Indentator indentator) { throw new TubainaException(MESSAGE); } - public String parse(String string, String opts) { + public String parse(Chunk chunk) { throw new TubainaException(MESSAGE); } } \ No newline at end of file diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableColumnTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableColumnTag.java index 1426d88..6bc20ee 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableColumnTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableColumnTag.java @@ -1,5 +1,6 @@ package br.com.caelum.tubaina.parser.html.desktop; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.TableColumnTagTemplate; @@ -7,8 +8,8 @@ public class TableColumnTag implements Tag { private TableColumnTagTemplate template = new TableColumnTagTemplate(); - public String parse(String text, String options) { - return template.parse(text, options); + public String parse(Chunk chunk) { + return template.parse(chunk); } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableRowTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableRowTag.java index ba1abb0..503773c 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableRowTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableRowTag.java @@ -1,5 +1,6 @@ package br.com.caelum.tubaina.parser.html.desktop; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.TableRowTagTemplate; @@ -7,8 +8,8 @@ public class TableRowTag implements Tag { private TableRowTagTemplate template = new TableRowTagTemplate(); - public String parse(String string, String options) { - return template.parse(string,options); + public String parse(Chunk chunk) { + return template.parse(chunk); } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableTag.java index 2b4b3f4..1440d35 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableTag.java @@ -1,5 +1,6 @@ package br.com.caelum.tubaina.parser.html.desktop; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.TableTagTemplate; @@ -11,8 +12,8 @@ public TableTag(boolean noborder) { template = new TableTagTemplate(noborder); } - public String parse(String string, String options) { - return template.parse(string, options); + public String parse(Chunk chunk) { + return template.parse(chunk); } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TodoTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TodoTag.java index bb2e603..0cb92f4 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TodoTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TodoTag.java @@ -5,12 +5,13 @@ import java.io.FileOutputStream; import java.io.PrintStream; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.TubainaException; import br.com.caelum.tubaina.parser.Tag; public class TodoTag implements Tag { - public String parse(String string, String options) { + public String parse(Chunk chunk) { try { PrintStream stream = new PrintStream(new FileOutputStream(new File("todo.log"), true)); stream.println("<==========================================================>"); diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/XmlTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/XmlTag.java index d263c40..c1eaab4 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/XmlTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/XmlTag.java @@ -1,5 +1,6 @@ package br.com.caelum.tubaina.parser.html.desktop; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.TubainaException; import br.com.caelum.tubaina.parser.Indentator; import br.com.caelum.tubaina.parser.Tag; @@ -13,7 +14,7 @@ public XmlTag(Indentator indentator) { throw new TubainaException(MESSAGE); } - public String parse(String string, String opts) { + public String parse(Chunk chunk) { throw new TubainaException(MESSAGE); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/AnswerTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/AnswerTag.java index 8056bca..eb73bb5 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/AnswerTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/AnswerTag.java @@ -1,12 +1,15 @@ package br.com.caelum.tubaina.parser.html.kindle; +import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.AnswerChunk; import br.com.caelum.tubaina.parser.Tag; -public class AnswerTag implements Tag { +public class AnswerTag implements Tag { - public String parse(String string, String id) { - return "
    " + string + "

    "; + @Override + public String parse(AnswerChunk chunk) { + return "
    " + chunk.getContent() + "

    "; } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/BoxTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/BoxTag.java index a14ad58..9274462 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/BoxTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/BoxTag.java @@ -1,8 +1,9 @@ package br.com.caelum.tubaina.parser.html.kindle; +import br.com.caelum.tubaina.chunk.BoxChunk; import br.com.caelum.tubaina.parser.Tag; -public class BoxTag implements Tag { +public class BoxTag implements Tag { static final String BEGIN = "" + "
    "; @@ -10,8 +11,9 @@ public class BoxTag implements Tag { static final String TITLE_BEGIN = ""; static final String TITLE_END = "\n"; - public String parse(String content, String title) { - return BEGIN + TITLE_BEGIN + title.trim() + TITLE_END + content.trim() + END; + @Override + public String parse(BoxChunk chunk) { + return BEGIN + TITLE_BEGIN + chunk.getTitle().trim() + TITLE_END + chunk.getContent().trim() + END; } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/CenteredParagraphTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/CenteredParagraphTag.java index 7cb120f..34b43d5 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/CenteredParagraphTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/CenteredParagraphTag.java @@ -1,13 +1,14 @@ package br.com.caelum.tubaina.parser.html.kindle; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.CenteredParagraphTagTemplate; public class CenteredParagraphTag implements Tag { private CenteredParagraphTagTemplate template = new CenteredParagraphTagTemplate(); - public String parse(String string, String options) { - return template.parse(string, options); + public String parse(Chunk chunk) { + return template.parse(chunk); } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/CodeTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/CodeTag.java index dd0535e..a461175 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/CodeTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/CodeTag.java @@ -1,5 +1,6 @@ package br.com.caelum.tubaina.parser.html.kindle; +import br.com.caelum.tubaina.chunk.CodeChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.HtmlAndKindleCodeTag; import br.com.caelum.tubaina.parser.html.desktop.SyntaxHighlighter; @@ -7,7 +8,7 @@ import br.com.caelum.tubaina.parser.pygments.CodeOutputType; import br.com.caelum.tubaina.util.CommandExecutor; -public class CodeTag implements Tag { +public class CodeTag implements Tag { private final HtmlAndKindleCodeTag htmlCodeTag; @@ -21,8 +22,9 @@ public CodeTag(HtmlAndKindleCodeTag htmlCodeTag) { this.htmlCodeTag = htmlCodeTag; } - public String parse(String content, String options) { - return htmlCodeTag.parse(content, options); + @Override + public String parse(CodeChunk chunk) { + return htmlCodeTag.parse(chunk); } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ExerciseTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ExerciseTag.java index 98108c4..f52cfe5 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ExerciseTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ExerciseTag.java @@ -1,13 +1,15 @@ package br.com.caelum.tubaina.parser.html.kindle; +import br.com.caelum.tubaina.chunk.ExerciseChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.ExerciseTagTemplate; -public class ExerciseTag implements Tag{ +public class ExerciseTag implements Tag { private ExerciseTagTemplate template = new ExerciseTagTemplate(); - public String parse(String string, String options) { - return template.parse(string, options); + @Override + public String parse(ExerciseChunk chunk) { + return template.parse(chunk); } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/GistTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/GistTag.java index 2d6c28f..7475915 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/GistTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/GistTag.java @@ -1,10 +1,12 @@ package br.com.caelum.tubaina.parser.html.kindle; +import br.com.caelum.tubaina.chunk.GistChunk; import br.com.caelum.tubaina.parser.Tag; -public class GistTag implements Tag{ +public class GistTag implements Tag { - public String parse(String string, String options) { + @Override + public String parse(GistChunk chunk) { // TODO - Support gist at HTML return ""; } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ImageTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ImageTag.java index e732d41..cd7d7ef 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ImageTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ImageTag.java @@ -1,5 +1,6 @@ package br.com.caelum.tubaina.parser.html.kindle; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.ImageTagTemplate; @@ -7,7 +8,7 @@ public class ImageTag implements Tag { private ImageTagTemplate template = new ImageTagTemplate(); - public String parse(final String path ,final String options) { + public String parse(Chunk chunk) { return template.parse(path, options, true); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/IndexTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/IndexTag.java index 2973233..ac8ec9f 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/IndexTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/IndexTag.java @@ -1,12 +1,13 @@ package br.com.caelum.tubaina.parser.html.kindle; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.IndexTagTemplate; public class IndexTag implements Tag { private IndexTagTemplate template = new IndexTagTemplate(); - public String parse(String string, String options) { - return template.parse(string, options); + public String parse(Chunk chunk) { + return template.parse(chunk); } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ItemTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ItemTag.java index 3a32655..a0a6630 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ItemTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ItemTag.java @@ -1,12 +1,13 @@ package br.com.caelum.tubaina.parser.html.kindle; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.ItemTagTemplate; public class ItemTag implements Tag { private ItemTagTemplate template = new ItemTagTemplate(); - public String parse(String string, String options) { - return template.parse(string, options); + public String parse(Chunk chunk) { + return template.parse(chunk); } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/JavaTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/JavaTag.java index 5b0a7f0..5197350 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/JavaTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/JavaTag.java @@ -1,5 +1,6 @@ package br.com.caelum.tubaina.parser.html.kindle; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.TubainaException; import br.com.caelum.tubaina.parser.Tag; @@ -8,7 +9,7 @@ public class JavaTag implements Tag { private static final String MESSAGE = "[java] Tag is deprecated and can't be used anymore. Use [code java] instead"; - public String parse(String string, String opts) { + public String parse(Chunk chunk) { throw new TubainaException(MESSAGE); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleParser.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleParser.java index 492cc23..2b4a12d 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleParser.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleParser.java @@ -29,19 +29,19 @@ public String parse(String string) { // interpreted for (Tag tag : tags) { - string = tag.parse(string, null); + string = tag.parse(chunk); } return string; } public String parseBox(String text, String options) { String title = this.sanitizer.sanitize(options); - return new BoxTag().parse(text, parse(title)); + return new BoxTag().parse(chunk); } public String parseImage(String text, String options) { - return new ImageTag().parse(text, options); + return new ImageTag().parse(chunk); } public String parseJava(String text, String options) { @@ -50,7 +50,7 @@ public String parseJava(String text, String options) { public String parseParagraph(String text) { String string = this.sanitizer.sanitize(text); - string = new ParagraphTag().parse(string, null); + string = new ParagraphTag().parse(chunk); string = this.parse(string); return string; } @@ -62,15 +62,15 @@ public String parseParagraphInsideItem(String text) { } public String parseCode(String text, String options) { - return new CodeTag().parse(text, options); + return new CodeTag().parse(chunk); } public String parseGist(String options) { - return new GistTag().parse(null, options); + return new GistTag().parse(chunk); } public String parseList(String text, String options) { - return new ListTag().parse(text, options); + return new ListTag().parse(chunk); } public String parseXml(String text, String options) { @@ -78,56 +78,56 @@ public String parseXml(String text, String options) { } public String parseExercise(String text, int id) { - String string = new ExerciseTag().parse(text, "" + id); + String string = new ExerciseTag().parse(chunk); return string; } public String parseAnswer(String text, int id) { if (!noAnswer) - return new AnswerTag().parse(text, "" + id); + return new AnswerTag().parse(chunk); return ""; } public String parseQuestion(String text) { - String string = new QuestionTag().parse(text, null); + String string = new QuestionTag().parse(chunk); return string; } public String parseNote(String text, String title) { if (!showNotes) return ""; - return new NoteTag().parse(text, title); + return new NoteTag().parse(chunk); } public String parseItem(String text) { - return new ItemTag().parse(text, null); + return new ItemTag().parse(chunk); } public String parseTodo(String text) { - return new TodoTag().parse(text, null); + return new TodoTag().parse(chunk); } public String parseIndex(String name) { name = this.sanitizer.sanitize(name); - return new IndexTag().parse(name, null); + return new IndexTag().parse(chunk); } public String parseColumn(String text) { - return new TableColumnTag().parse(text, null); + return new TableColumnTag().parse(chunk); } public String parseRow(String text) { - return new TableRowTag().parse(text, null); + return new TableRowTag().parse(chunk); } public String parseTable(String text, String title, boolean noborder, int columns) { title = this.sanitizer.sanitize(title); - return new TableTag(noborder).parse(text, title); + return new TableTag(noborder).parse(chunk); } public String parseCenteredParagraph(String content) { - return new CenteredParagraphTag().parse(content, null); + return new CenteredParagraphTag().parse(chunk); } public String parseRuby(String content, String options) { diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ListTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ListTag.java index d30d105..319045c 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ListTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ListTag.java @@ -1,5 +1,6 @@ package br.com.caelum.tubaina.parser.html.kindle; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.ListTagTemplate; @@ -7,8 +8,8 @@ public class ListTag implements Tag { private ListTagTemplate template = new ListTagTemplate(); - public String parse(String content, String options) { - return template.parse(content, options); + public String parse(Chunk chunk) { + return template.parse(chunk); } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/NoteTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/NoteTag.java index b681f76..faa756b 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/NoteTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/NoteTag.java @@ -1,10 +1,11 @@ package br.com.caelum.tubaina.parser.html.kindle; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; public class NoteTag implements Tag { - public String parse(String content, String options) { + public String parse(Chunk chunk) { return "---------------------------
    " + content.trim() + "
    ---------------------------"; } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ParagraphTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ParagraphTag.java index b2ecfef..3b1b9a4 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ParagraphTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ParagraphTag.java @@ -1,5 +1,6 @@ package br.com.caelum.tubaina.parser.html.kindle; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.ParagraphTagTemplate; @@ -7,8 +8,8 @@ public class ParagraphTag implements Tag { private ParagraphTagTemplate template = new ParagraphTagTemplate(); - public String parse(String string, String options) { - return template.parse(string, options); + public String parse(Chunk chunk) { + return template.parse(chunk); } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/QuestionTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/QuestionTag.java index f5de863..4d199b2 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/QuestionTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/QuestionTag.java @@ -1,5 +1,6 @@ package br.com.caelum.tubaina.parser.html.kindle; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.QuestionTagTemplate; @@ -7,8 +8,8 @@ public class QuestionTag implements Tag { private QuestionTagTemplate template = new QuestionTagTemplate(); - public String parse(String string, String options) { - return template.parse(string, options); + public String parse(Chunk chunk) { + return template.parse(chunk); } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/RubyTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/RubyTag.java index 702e850..0be5f65 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/RubyTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/RubyTag.java @@ -1,5 +1,6 @@ package br.com.caelum.tubaina.parser.html.kindle; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.TubainaException; import br.com.caelum.tubaina.parser.Tag; @@ -8,7 +9,7 @@ public class RubyTag implements Tag { private static final String MESSAGE = "[ruby] Tag is deprecated and can't be used anymore. Use [code ruby] instead"; - public String parse(String string, String opts) { + public String parse(Chunk chunk) { throw new TubainaException(MESSAGE); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableColumnTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableColumnTag.java index 8a32891..06c020b 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableColumnTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableColumnTag.java @@ -1,5 +1,6 @@ package br.com.caelum.tubaina.parser.html.kindle; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.TableColumnTagTemplate; @@ -7,8 +8,8 @@ public class TableColumnTag implements Tag { private TableColumnTagTemplate template = new TableColumnTagTemplate(); - public String parse(String text, String options) { - return template.parse(text, options); + public String parse(Chunk chunk) { + return template.parse(chunk); } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableRowTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableRowTag.java index 8e60912..adb0806 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableRowTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableRowTag.java @@ -1,5 +1,6 @@ package br.com.caelum.tubaina.parser.html.kindle; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.TableRowTagTemplate; @@ -7,8 +8,8 @@ public class TableRowTag implements Tag { private TableRowTagTemplate template = new TableRowTagTemplate(); - public String parse(String string, String options) { - return template.parse(string,options); + public String parse(Chunk chunk) { + return template.parse(chunk); } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableTag.java index 4b50fed..15ef357 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableTag.java @@ -1,5 +1,6 @@ package br.com.caelum.tubaina.parser.html.kindle; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.TableTagTemplate; @@ -11,8 +12,8 @@ public TableTag(boolean noborder) { template = new TableTagTemplate(noborder); } - public String parse(String string, String options) { - return template.parse(string, options); + public String parse(Chunk chunk) { + return template.parse(chunk); } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TodoTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TodoTag.java index cfba517..348338f 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TodoTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TodoTag.java @@ -5,12 +5,13 @@ import java.io.FileOutputStream; import java.io.PrintStream; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.TubainaException; import br.com.caelum.tubaina.parser.Tag; public class TodoTag implements Tag { - public String parse(String string, String options) { + public String parse(Chunk chunk) { try { PrintStream stream = new PrintStream(new FileOutputStream(new File("todo.log"), true)); stream.println("<==========================================================>"); diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/XmlTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/XmlTag.java index 031ef6e..6c05676 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/XmlTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/XmlTag.java @@ -1,5 +1,6 @@ package br.com.caelum.tubaina.parser.html.kindle; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.TubainaException; import br.com.caelum.tubaina.parser.Tag; @@ -8,7 +9,7 @@ public class XmlTag implements Tag { private static final String MESSAGE = "[xml] Tag is deprecated and can't be used anymore. Use [code xml] instead"; - public String parse(String string, String opts) { + public String parse(Chunk chunk) { throw new TubainaException(MESSAGE); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/AnswerTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/AnswerTag.java index 46b7c4a..11e1fed 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/AnswerTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/AnswerTag.java @@ -1,12 +1,13 @@ package br.com.caelum.tubaina.parser.latex; +import br.com.caelum.tubaina.chunk.AnswerChunk; import br.com.caelum.tubaina.parser.Tag; -public class AnswerTag implements Tag { +public class AnswerTag implements Tag { - public String parse(String string, String options) { - return "\n\\label{ans:" + options + "}"; -// return ""; + @Override + public String parse(AnswerChunk chunk) { + return "\n\\label{ans:" + chunk.getId() + "}"; } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/BoxTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/BoxTag.java index d580dda..8c95df5 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/BoxTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/BoxTag.java @@ -1,11 +1,14 @@ package br.com.caelum.tubaina.parser.latex; +import br.com.caelum.tubaina.chunk.BoxChunk; import br.com.caelum.tubaina.parser.Tag; -public class BoxTag implements Tag { +public class BoxTag implements Tag { - public String parse(String content, String title) { + @Override + public String parse(BoxChunk chunk) { + String title = chunk.getTitle(); String sanitizedTitle = (title != null && !title.isEmpty()) ? title.trim() : "\\ "; - return "\\begin{tubainabox}{" + sanitizedTitle + "}\n" + content + "\n\\end{tubainabox}"; + return "\\begin{tubainabox}{" + sanitizedTitle + "}\n" + chunk.getContent() + "\n\\end{tubainabox}"; } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/CenteredParagraphTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/CenteredParagraphTag.java index bf26002..9ef6d3a 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/CenteredParagraphTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/CenteredParagraphTag.java @@ -1,11 +1,13 @@ package br.com.caelum.tubaina.parser.latex; +import br.com.caelum.tubaina.chunk.CenteredParagraphChunk; import br.com.caelum.tubaina.parser.Tag; -public class CenteredParagraphTag implements Tag { +public class CenteredParagraphTag implements Tag { - public String parse(String string, String options) { - return "\\begin{center}" + string + "\\end{center}"; + @Override + public String parse(CenteredParagraphChunk chunk) { + return "\\begin{center}" + chunk.getContent() + "\\end{center}"; } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/CodeTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/CodeTag.java index b5f2afe..aa31afa 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/CodeTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/CodeTag.java @@ -1,11 +1,14 @@ package br.com.caelum.tubaina.parser.latex; +import com.google.inject.Inject; + +import br.com.caelum.tubaina.chunk.CodeChunk; import br.com.caelum.tubaina.parser.Indentator; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.CodeTagOptionsParser; import br.com.caelum.tubaina.parser.html.desktop.SyntaxHighlighter; -public class CodeTag implements Tag { +public class CodeTag implements Tag { private final Indentator indentator; @@ -18,20 +21,23 @@ public class CodeTag implements Tag { private final SyntaxHighlighter syntaxHighlighter; + @Inject public CodeTag(Indentator indentator, SyntaxHighlighter syntaxHighlighter) { this.indentator = indentator; this.syntaxHighlighter = syntaxHighlighter; this.codeTagOptionsParser = new CodeTagOptionsParser(); } - public String parse(String code, String options) { + @Override + public String parse(CodeChunk chunk) { - String chosenLanguage = codeTagOptionsParser.parseLanguage(options); + String options = chunk.getOptions(); + String chosenLanguage = codeTagOptionsParser.parseLanguage(options); String latexFilename = latexFilenameFor(codeTagOptionsParser.parseFileName(options)); String latexReference = latexLabelFor(codeTagOptionsParser.parseLabel(options)); boolean numbered = options.contains(" #"); - String indentedCode = this.indentator.indent(code); + String indentedCode = this.indentator.indent(chunk.getContent()); String highlightedCode = syntaxHighlighter.highlight(indentedCode, chosenLanguage, numbered); diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/EscapeTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/EscapeTag.java index 8b406d2..4a00d5d 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/EscapeTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/EscapeTag.java @@ -1,5 +1,6 @@ package br.com.caelum.tubaina.parser.latex; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.TubainaException; import br.com.caelum.tubaina.parser.Tag; @@ -7,7 +8,7 @@ public class EscapeTag implements Tag { private StringBuilder text = new StringBuilder(); - public String parse(String content, String options) { + public String parse(Chunk chunk) { int posicaoAtual = escapaAteVerbatim(content, 0); while (posicaoAtual < content.length()) { int fimVerbatim = content.indexOf("[/verbatim]", posicaoAtual); diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/ExerciseTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/ExerciseTag.java index 894dcb3..4a95d39 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/ExerciseTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/ExerciseTag.java @@ -1,12 +1,15 @@ package br.com.caelum.tubaina.parser.latex; +import br.com.caelum.tubaina.chunk.ExerciseChunk; import br.com.caelum.tubaina.parser.Tag; -public class ExerciseTag implements Tag { +public class ExerciseTag implements Tag { - public String parse(String string, String options) { - - return "\\label{ex:"+options+"}\n\\begin{enumerate}[1)]\n" + string + "\n\\end{enumerate}"; + @Override + public String parse(ExerciseChunk chunk) { + + return "\\label{ex:" + chunk.getId() + "}\n\\begin{enumerate}[1)]\n" + + chunk.getContent() + "\n\\end{enumerate}"; } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/GistTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/GistTag.java index 56c3fea..4b6d6a0 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/GistTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/GistTag.java @@ -1,5 +1,7 @@ package br.com.caelum.tubaina.parser.latex; +import br.com.caelum.tubaina.chunk.CodeChunk; +import br.com.caelum.tubaina.chunk.GistChunk; import br.com.caelum.tubaina.gists.GistResult; import br.com.caelum.tubaina.gists.GistResultRetriever; import br.com.caelum.tubaina.parser.Indentator; @@ -9,7 +11,7 @@ import br.com.caelum.tubaina.parser.pygments.CodeOutputType; import br.com.caelum.tubaina.util.CommandExecutor; -public class GistTag implements Tag { +public class GistTag implements Tag { private CodeTag code; private GistResultRetriever retriever; @@ -19,8 +21,10 @@ public GistTag(Indentator i, GistResultRetriever retriever) { this.retriever = retriever; } - public String parse(String string, String options) { - String codeOptions = options.contains("#") ? " #" : ""; + @Override + public String parse(GistChunk chunk) { + String options = chunk.getOptions(); + String codeOptions = options.contains("#") ? " #" : ""; long gistId = Long.parseLong(options.replaceAll("\\D", "")); @@ -29,7 +33,8 @@ public String parse(String string, String options) { String content = result.getContent(); String language = result.getLanguage(); - return code.parse(content, language + codeOptions); + CodeChunk codeChunk = new CodeChunk(content, language + codeOptions); + return code.parse(codeChunk); } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/ImageTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/ImageTag.java index bd1b116..850cbf4 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/ImageTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/ImageTag.java @@ -5,12 +5,13 @@ import org.apache.commons.io.FilenameUtils; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.TubainaBuilder; import br.com.caelum.tubaina.parser.Tag; public class ImageTag implements Tag { - public String parse(final String path, final String options) { + public String parse(Chunk chunk) { String output = "\\begin{figure}[H]\n\\begin{center}\n"; output = output + "\\includegraphics"; diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/IndexTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/IndexTag.java index 369dbfa..47a9fe0 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/IndexTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/IndexTag.java @@ -1,10 +1,11 @@ package br.com.caelum.tubaina.parser.latex; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; public class IndexTag implements Tag { - public String parse(String content, String options) { + public String parse(Chunk chunk) { return "\n\\index{" + escapeUnderscores(content) + "}\n"; } diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/ItemTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/ItemTag.java index 92dde3a..a37d55c 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/ItemTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/ItemTag.java @@ -1,10 +1,11 @@ package br.com.caelum.tubaina.parser.latex; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; public class ItemTag implements Tag { - public String parse(String string, String options) { + public String parse(Chunk chunk) { return "\n\\item{" + string.trim() + "}\n"; } diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/JavaTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/JavaTag.java index 489fc77..3032a21 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/JavaTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/JavaTag.java @@ -1,5 +1,6 @@ package br.com.caelum.tubaina.parser.latex; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.TubainaException; import br.com.caelum.tubaina.parser.Indentator; import br.com.caelum.tubaina.parser.Tag; @@ -14,7 +15,7 @@ public JavaTag(Indentator indentator) { throw new TubainaException(MESSAGE); } - public String parse(String string, String opts) { + public String parse(Chunk chunk) { throw new TubainaException(MESSAGE); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/LatexParser.java b/src/main/java/br/com/caelum/tubaina/parser/latex/LatexParser.java index 4be9712..0dc430a 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/LatexParser.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/LatexParser.java @@ -45,37 +45,37 @@ public LatexParser(List tags) { public String parse(String string) { // TODO: remove eventual $1, $2 from the string so as not to be // interpreted - string = new EscapeTag().parse(string, null); + string = new EscapeTag().parse(chunk); for (Tag tag : tags) { - string = tag.parse(string, null); + string = tag.parse(chunk); } return string; } public String parseBox(String text, String options) { - String string = new BoxTag().parse(text, parse(options)); + String string = new BoxTag().parse(chunk); return VSPACE + string + VSPACE; } public String parseImage(String text, String options) { - return new ImageTag().parse(text, options); + return new ImageTag().parse(chunk); } @Deprecated public String parseJava(String text, String options) { String string = new JavaTag(new SimpleIndentator(4)) - .parse(text, options); + .parse(chunk); return string; } public String parseParagraph(String text) { text = parse(text); - return new ParagraphTag().parse(text, null); + return new ParagraphTag().parse(chunk); } public String parseCode(String text, String options) { String string = new CodeTag(new SimpleIndentator(4), syntaxHighlighter) - .parse(text, options); + .parse(chunk); return string + VSPACE; } @@ -85,74 +85,73 @@ public String parseGist(String options) { new JsonToGistResultConverter(), new GistRequest())); SimpleIndentator ident = new SimpleIndentator(4); - String string = new GistTag(ident, retriever).parse(null, options); + String string = new GistTag(ident, retriever).parse(chunk); return string + VSPACE; } public String parseList(String text, String options) { - String string = new ListTag().parse(text, options); + String string = new ListTag().parse(chunk); return string; } @Deprecated public String parseXml(String text, String options) { - return new XmlTag(new SimpleIndentator(4)).parse(text, options) + return new XmlTag(new SimpleIndentator(4)).parse(chunk) + VSPACE; } public String parseExercise(String text, int id) { - return new ExerciseTag().parse(text, "" + id); + return new ExerciseTag().parse(chunk); } public String parseAnswer(String text, int id) { if (!noAnswer) - return new AnswerTag().parse(text, "" + id); + return new AnswerTag().parse(chunk); return ""; } public String parseQuestion(String text) { - return new QuestionTag().parse(text, null); + return new QuestionTag().parse(chunk); } public String parseNote(String text, String title) { if (this.showNotes) - return new NoteTag().parse(text, title); + return new NoteTag().parse(chunk); return ""; } public String parseItem(String text) { - return new ItemTag().parse(text, null); + return new ItemTag().parse(chunk); } public String parseTodo(String text) { - return new TodoTag().parse(text, null); + return new TodoTag().parse(chunk); } public String parseIndex(String name) { - return new IndexTag().parse(name, null); + return new IndexTag().parse(chunk); } public String parseColumn(String text) { - return new TableColumnTag().parse(text, null); + return new TableColumnTag().parse(chunk); } public String parseRow(String text) { - return new TableRowTag().parse(text, null); + return new TableRowTag().parse(chunk); } public String parseTable(String text, String title, boolean noborder, int columns) { - return new TableTag(noborder, columns).parse(text, title); + return new TableTag(noborder, columns).parse(chunk); } public String parseCenteredParagraph(String content) { - return new CenteredParagraphTag().parse(content, null); + return new CenteredParagraphTag().parse(chunk); } @Deprecated public String parseRuby(String content, String options) { - String result = new RubyTag(new SimpleIndentator(4)).parse(content, - options); + String result = new RubyTag(new SimpleIndentator(4)).parse(chunk); return result + VSPACE; } diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/LinkTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/LinkTag.java index 916d546..b987a45 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/LinkTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/LinkTag.java @@ -3,6 +3,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; public class LinkTag implements Tag { @@ -14,7 +15,7 @@ public LinkTag(String replace) { } @Override - public String parse(String content, String options) { + public String parse(Chunk chunk) { String r = "(?s)(?i)((?:https?|ftp|file)://[-a-zA-Z0-9+&@#}{/?=~_|!:,.;\\\\]*[-a-zA-Z0-9+&@#/}{%=~_|])(:|;|,|\\.|\"|'|\\(|\\)|<|>|\\s|%%|$$)"; Pattern regex = Pattern.compile(r); Matcher matcher = regex.matcher(content); diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/ListTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/ListTag.java index d4f8ec7..1c70422 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/ListTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/ListTag.java @@ -1,10 +1,11 @@ package br.com.caelum.tubaina.parser.latex; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; public class ListTag implements Tag { - public String parse(String content, String options) { + public String parse(Chunk chunk) { String listHeader = "\\begin{enumerate}["; if (options.contains("number")) listHeader += "1)"; diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/NoteTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/NoteTag.java index efaa97d..04066c5 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/NoteTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/NoteTag.java @@ -1,10 +1,11 @@ package br.com.caelum.tubaina.parser.latex; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; public class NoteTag implements Tag { - public String parse(String string, String title) { + public String parse(Chunk chunk) { // The first \n is the title/content sepparator return "\\begin{tubainanote}\n" + diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/ParagraphTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/ParagraphTag.java index 44375c3..7f4c35b 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/ParagraphTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/ParagraphTag.java @@ -1,10 +1,11 @@ package br.com.caelum.tubaina.parser.latex; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; public class ParagraphTag implements Tag { - public String parse(String string, String options) { + public String parse(Chunk chunk) { return "\n\n" + string; } diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/QuestionTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/QuestionTag.java index e3e9ab1..41abafc 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/QuestionTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/QuestionTag.java @@ -1,10 +1,11 @@ package br.com.caelum.tubaina.parser.latex; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; public class QuestionTag implements Tag { - public String parse(String string, String options) { + public String parse(Chunk chunk) { return "\\item{" + string + "}"; } diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/RubyTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/RubyTag.java index f87d24a..5ed0bb3 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/RubyTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/RubyTag.java @@ -1,5 +1,6 @@ package br.com.caelum.tubaina.parser.latex; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.TubainaException; import br.com.caelum.tubaina.parser.Indentator; import br.com.caelum.tubaina.parser.Tag; @@ -13,7 +14,7 @@ public RubyTag(Indentator indentator) { throw new TubainaException(MESSAGE); } - public String parse(String string, String opts) { + public String parse(Chunk chunk) { throw new TubainaException(MESSAGE); } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/TableColumnTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/TableColumnTag.java index c2b017a..108c7f4 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/TableColumnTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/TableColumnTag.java @@ -1,10 +1,11 @@ package br.com.caelum.tubaina.parser.latex; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; public class TableColumnTag implements Tag { - public String parse(String string, String options) { + public String parse(Chunk chunk) { return string + "& "; } diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/TableRowTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/TableRowTag.java index 2754553..b8ea7f8 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/TableRowTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/TableRowTag.java @@ -1,10 +1,11 @@ package br.com.caelum.tubaina.parser.latex; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.parser.Tag; public class TableRowTag implements Tag { - public String parse(String string, String options) { + public String parse(Chunk chunk) { // Remove the & of the last column (put by the TableColumnTag) int lastColumnBreak = string.lastIndexOf('&'); // There IS a column break diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/TableTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/TableTag.java index 058a17f..c9ff0ad 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/TableTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/TableTag.java @@ -1,5 +1,6 @@ package br.com.caelum.tubaina.parser.latex; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.TubainaException; import br.com.caelum.tubaina.parser.Tag; @@ -13,7 +14,7 @@ public TableTag(boolean noborder, int columns) { this.columns = columns; } - public String parse(String text, String title) { + public String parse(Chunk chunk) { if (this.columns <= 0) throw new TubainaException("There are no columns inside table " + title); String tag = "\\begin{table}[!h]\n\\caption{" + title + "}\n\\begin{center}\n"; diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/TodoTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/TodoTag.java index 3a9d96a..9e1847b 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/TodoTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/TodoTag.java @@ -5,12 +5,13 @@ import java.io.FileOutputStream; import java.io.PrintStream; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.TubainaException; import br.com.caelum.tubaina.parser.Tag; public class TodoTag implements Tag { - public String parse(String string, String options) { + public String parse(Chunk chunk) { try { PrintStream stream = new PrintStream(new FileOutputStream(new File("todo.log"), true)); stream.println("<==========================================================>"); diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/XmlTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/XmlTag.java index 01cd9f3..a2ee81d 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/XmlTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/XmlTag.java @@ -1,5 +1,6 @@ package br.com.caelum.tubaina.parser.latex; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.TubainaException; import br.com.caelum.tubaina.parser.Indentator; import br.com.caelum.tubaina.parser.Tag; @@ -13,7 +14,7 @@ public XmlTag(Indentator indentator) { throw new TubainaException(MESSAGE); } - public String parse(String string, String opts) { + public String parse(Chunk chunk) { throw new TubainaException(MESSAGE); } diff --git a/src/test/java/br/com/caelum/tubaina/builder/BookBuilderTest.java b/src/test/java/br/com/caelum/tubaina/builder/BookBuilderTest.java index 1101345..c18a117 100644 --- a/src/test/java/br/com/caelum/tubaina/builder/BookBuilderTest.java +++ b/src/test/java/br/com/caelum/tubaina/builder/BookBuilderTest.java @@ -65,12 +65,11 @@ public void testBuildSimpleBook() { Assert.assertEquals(2, sections1.size()); Assert.assertEquals("Primeira seção", sections1.get(0).getTitle()); - Assert.assertEquals("texto da prim seção", sections1.get(0).getChunks().get(0).getContent( - parser)); + Assert.assertEquals("texto da prim seção", sections1.get(0).getChunks().get(0).asString()); Assert.assertEquals("Segunda seção", sections1.get(1).getTitle()); Assert.assertEquals("texto da segunda seção", sections1.get(1).getChunks().get(0) - .getContent(parser)); + .asString()); Assert.assertEquals("Algum texto de introdução", chapters.get(1).getIntroduction(parser)); @@ -112,12 +111,11 @@ public void testChapterWithSectionsAndWithIntroduction() { Assert.assertEquals("texto da introdução", chapters.get(0).getIntroduction(parser)); Assert.assertEquals("Primeira seção", sections.get(0).getTitle()); - Assert.assertEquals("texto da prim seção", sections.get(0).getChunks().get(0).getContent( - parser)); + Assert.assertEquals("texto da prim seção", sections.get(0).getChunks().get(0).asString()); Assert.assertEquals("Segunda seção", sections.get(1).getTitle()); Assert.assertEquals("texto da segunda seção", sections.get(1).getChunks().get(0) - .getContent(parser)); + .asString()); } @Test @@ -132,12 +130,11 @@ public void testChapterWithSectionsAndWithoutIntroduction() { Assert.assertEquals(2, sections.size()); Assert.assertEquals("Primeira seção", sections.get(0).getTitle()); - Assert.assertEquals("texto da prim seção", sections.get(0).getChunks().get(0).getContent( - parser)); + Assert.assertEquals("texto da prim seção", sections.get(0).getChunks().get(0).asString()); Assert.assertEquals("Segunda seção", sections.get(1).getTitle()); Assert.assertEquals("texto da segunda seção", sections.get(1).getChunks().get(0) - .getContent(parser)); + .asString()); } @Test( @@ -167,7 +164,7 @@ public void testParagraphChunk() { Assert.assertEquals(1, chunks.size()); Assert.assertEquals(ParagraphChunk.class, chunks.get(0).getClass()); - Assert.assertEquals("Algum texto de parágrafo", chunks.get(0).getContent(parser)); + Assert.assertEquals("Algum texto de parágrafo", chunks.get(0).asString()); } @Test @@ -181,8 +178,7 @@ public void testJavaChunk() { Assert.assertEquals(1, chunks.size()); Assert.assertEquals(JavaChunk.class, chunks.get(0).getClass()); - Assert.assertEquals("\npublic class AlgumCodigoJava\n{\n}\n", chunks.get(0).getContent( - parser)); + Assert.assertEquals("\npublic class AlgumCodigoJava\n{\n}\n", chunks.get(0).asString()); } @Test @@ -195,7 +191,7 @@ public void testBoxChunk() throws Exception { Assert.assertEquals(1, chunks.size()); Assert.assertEquals(BoxChunk.class, chunks.get(0).getClass()); - Assert.assertEquals("Algum corpo de texto", chunks.get(0).getContent(parser)); + Assert.assertEquals("Algum corpo de texto", chunks.get(0).asString()); Field field = BoxChunk.class.getDeclaredField("title"); field.setAccessible(true); @@ -215,7 +211,7 @@ public void testCodeChunk() { Assert.assertEquals(CodeChunk.class, chunks.get(0).getClass()); Assert.assertEquals("\nAlgum corpo de texto\nque é preformatado\n", chunks.get(0) - .getContent(parser)); + .asString()); } @Test @@ -227,7 +223,7 @@ public void testGistsChunk() { Assert.assertEquals(1, chunks.size()); Assert.assertEquals(GistChunk.class, chunks.get(0).getClass()); - Assert.assertEquals("1940936", chunks.get(0).getContent(parser)); + Assert.assertEquals("1940936", chunks.get(0).asString()); } @Test @@ -241,7 +237,7 @@ public void testRubyChunk() { Assert.assertEquals(RubyChunk.class, chunks.get(0).getClass()); Assert.assertEquals("\nAlgum corpo de texto\nque é preformatado\n", chunks.get(0) - .getContent(parser)); + .asString()); } @Test @@ -254,7 +250,7 @@ public void testImageChunk() throws Exception { Assert.assertEquals(1, chunks.size()); Assert.assertEquals(ImageChunk.class, chunks.get(0).getClass()); - Assert.assertEquals("src/test/resources/baseJpgImage.jpg", chunks.get(0).getContent(parser)); + Assert.assertEquals("src/test/resources/baseJpgImage.jpg", chunks.get(0).asString()); Field field = ImageChunk.class.getDeclaredField("width"); field.setAccessible(true); @@ -280,7 +276,7 @@ public void testListChunk() { Assert.assertEquals(ListChunk.class, chunks.get(0).getClass()); Assert.assertEquals("uma listacom alguns itenspra ter certeza que funciona", chunks.get(0) - .getContent(parser)); + .asString()); } @Test @@ -295,7 +291,7 @@ public void testTableChunk() { Assert.assertEquals(TableChunk.class, chunks.get(0).getClass()); Assert.assertEquals("uma tabelacom várias colunase váriaslinhas também", chunks.get(0) - .getContent(parser)); + .asString()); } @Test @@ -309,7 +305,7 @@ public void testCenteredParagraphChunk() { Assert.assertEquals(CenteredParagraphChunk.class, chunks.get(0).getClass()); Assert.assertEquals("Algum texto centralizado\n\nCom várias linhas", chunks.get(0) - .getContent(parser)); + .asString()); } @Test @@ -341,22 +337,22 @@ public void testChunkTypesTogether() throws Exception { // Primeiro Chunk Assert.assertEquals(ParagraphChunk.class, chunks.get(0).getClass()); Assert.assertEquals("Um chunk de Paragrafo normal\n" + "Com um monte de coisas escritas\n" - + "Em várias linhas", chunks.get(0).getContent(parser)); + + "Em várias linhas", chunks.get(0).asString()); // Segundo chunk Assert.assertEquals(JavaChunk.class, chunks.get(1).getClass()); Assert.assertEquals("Agora um chunk com código java\n" + "Também multiline", chunks.get(1) - .getContent(parser).trim()); + .asString().trim()); // Terceiro Chunk Assert.assertEquals(ParagraphChunk.class, chunks.get(2).getClass()); Assert.assertEquals("Mais algum texto que deveria ser chunk de parágrafo", chunks.get(2) - .getContent(parser)); + .asString()); // Quarto Chunk Assert.assertEquals(BoxChunk.class, chunks.get(3).getClass()); Assert.assertEquals("Algo escrito dentro dele" + "Com pseudo-parágrafos", chunks.get(3) - .getContent(parser)); + .asString()); Field field = BoxChunk.class.getDeclaredField("title"); field.setAccessible(true); @@ -366,22 +362,22 @@ public void testChunkTypesTogether() throws Exception { // Quinto Chunk Assert.assertEquals(CodeChunk.class, chunks.get(4).getClass()); - Assert.assertEquals(" Um monte de código genérico \n", chunks.get(4).getContent(parser)); + Assert.assertEquals(" Um monte de código genérico \n", chunks.get(4).asString()); // Sexto Chunk Assert.assertEquals(ListChunk.class, chunks.get(5).getClass()); Assert.assertEquals("uma listacom alguns itenspra ter certeza que funciona", chunks.get(5) - .getContent(parser)); + .asString()); // Sétimo Chunk Assert.assertEquals(TableChunk.class, chunks.get(6).getClass()); Assert.assertEquals("uma tabelacom várias colunase váriaslinhas também", chunks.get(6) - .getContent(parser)); + .asString()); // Oitavo Chunk Assert.assertEquals(CenteredParagraphChunk.class, chunks.get(7).getClass()); Assert.assertEquals("Algum texto centralizado\n\nCom várias linhas", chunks.get(7) - .getContent(parser)); + .asString()); } @Test diff --git a/src/test/java/br/com/caelum/tubaina/builder/replacer/ItemReplacerTest.java b/src/test/java/br/com/caelum/tubaina/builder/replacer/ItemReplacerTest.java index 0f0786c..ce63b6f 100644 --- a/src/test/java/br/com/caelum/tubaina/builder/replacer/ItemReplacerTest.java +++ b/src/test/java/br/com/caelum/tubaina/builder/replacer/ItemReplacerTest.java @@ -32,9 +32,9 @@ public void testJavaCodeInsideItem() { Assert.assertEquals(2, chunks.size()); Assert.assertEquals(ItemChunk.class, chunks.get(0).getClass()); Assert.assertEquals("quero que o codigo java abaixo não tenha itens" + "blah blah \n" + "/**\n" - + " * texto qualquer\n\n" + " *outro comentario\n", chunks.get(0).getContent(parser)); + + " * texto qualquer\n\n" + " *outro comentario\n", chunks.get(0).asString()); Assert.assertEquals(ItemChunk.class, chunks.get(1).getClass()); - Assert.assertEquals("mas que isso seja outro item", chunks.get(1).getContent(parser)); + Assert.assertEquals("mas que isso seja outro item", chunks.get(1).asString()); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/RegexTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/RegexTagTest.java index f0cd5a7..9ba4454 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/RegexTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/RegexTagTest.java @@ -7,7 +7,7 @@ public class RegexTagTest { protected String parseWithRegexps(String text) { for (Tag tag : regexTags) { - text = tag.parse(text, ""); + text = tag.parse(chunk); } return text; } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/HtmlAndKindleCodeTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/HtmlAndKindleCodeTagTest.java index dcdc643..5bcc9cd 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/HtmlAndKindleCodeTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/HtmlAndKindleCodeTagTest.java @@ -32,7 +32,7 @@ public void plainJavaCode() throws Exception { String options = "java"; SyntaxHighlighter htmlCodeHighlighter = mock(SyntaxHighlighter.class); HtmlAndKindleCodeTag codeTag = new HtmlAndKindleCodeTag(htmlCodeHighlighter); - codeTag.parse(code, options); + codeTag.parse(chunk); verify(htmlCodeHighlighter).highlight(eq(code), eq(options), eq(false), eq(emptyList)); } @@ -41,7 +41,7 @@ public void javaCodeWithNumberedLines() throws Exception { String options = "java #"; SyntaxHighlighter htmlCodeHighlighter = mock(SyntaxHighlighter.class); HtmlAndKindleCodeTag codeTag = new HtmlAndKindleCodeTag(htmlCodeHighlighter); - codeTag.parse(code, options); + codeTag.parse(chunk); verify(htmlCodeHighlighter).highlight(eq(code), eq("java"), eq(true), eq(emptyList)); } @@ -51,7 +51,7 @@ public void plainRubyCode() throws Exception { String rubyCode = "@name = \"Gabriel\"\n" + "puts \"Hello, \" + name"; SyntaxHighlighter htmlCodeHighlighter = mock(SyntaxHighlighter.class); HtmlAndKindleCodeTag codeTag = new HtmlAndKindleCodeTag(htmlCodeHighlighter); - codeTag.parse(rubyCode, options); + codeTag.parse(chunk); verify(htmlCodeHighlighter).highlight(eq(rubyCode), eq("ruby"), eq(false), eq(emptyList)); } @@ -62,7 +62,7 @@ public void noLanguageDefinedIsTreatedAsText() throws Exception { + "syntax in a very code alike way"; SyntaxHighlighter htmlCodeHighlighter = mock(SyntaxHighlighter.class); HtmlAndKindleCodeTag codeTag = new HtmlAndKindleCodeTag(htmlCodeHighlighter); - codeTag.parse(noParticularLanguage, options); + codeTag.parse(chunk); verify(htmlCodeHighlighter).highlight(eq(noParticularLanguage), eq("text"), eq(false), eq(emptyList)); } @@ -73,7 +73,7 @@ public void noLanguageDefinedIsTreatedAsTextEvenWhenItIsNumbered() throws Except + "syntax in a very code alike way"; SyntaxHighlighter htmlCodeHighlighter = mock(SyntaxHighlighter.class); HtmlAndKindleCodeTag codeTag = new HtmlAndKindleCodeTag(htmlCodeHighlighter); - codeTag.parse(noParticularLanguage, options); + codeTag.parse(chunk); verify(htmlCodeHighlighter).highlight(eq(noParticularLanguage), eq("text"), eq(true), eq(emptyList)); } @@ -83,7 +83,7 @@ public void shouldNotConsiderLabelAsLanguage() throws Exception { String noParticularLanguage = "Some code"; SyntaxHighlighter htmlCodeHighlighter = mock(SyntaxHighlighter.class); HtmlAndKindleCodeTag codeTag = new HtmlAndKindleCodeTag(htmlCodeHighlighter); - codeTag.parse(noParticularLanguage, options); + codeTag.parse(chunk); verify(htmlCodeHighlighter).highlight(eq(noParticularLanguage), eq("text"), eq(false), eq(emptyList)); } @@ -93,7 +93,7 @@ public void shouldConsiderLineHighlightOption() throws Exception { String noParticularLanguage = "Some code"; SyntaxHighlighter htmlCodeHighlighter = mock(SyntaxHighlighter.class); HtmlAndKindleCodeTag codeTag = new HtmlAndKindleCodeTag(htmlCodeHighlighter); - codeTag.parse(noParticularLanguage, options); + codeTag.parse(chunk); verify(htmlCodeHighlighter).highlight(eq(noParticularLanguage), eq("text"), eq(false), eq(Arrays.asList(1,2))); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/AnswerTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/AnswerTagTest.java index c2f52d6..a88b13f 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/AnswerTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/AnswerTagTest.java @@ -10,7 +10,7 @@ public class AnswerTagTest { @Test public void testAnswerTag(){ AnswerTag tag = new AnswerTag(); - String result = tag.parse("texto da resposta", "0"); + String result = tag.parse(chunk); Assert.assertEquals("" + "Click here for the answer
    texto da resposta

    ", result); diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/BoxTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/BoxTagTest.java index 911692a..9ff6ac9 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/BoxTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/BoxTagTest.java @@ -10,14 +10,14 @@ public class BoxTagTest { @Test public void testBox() { BoxTag tag = new BoxTag(); - String result = tag.parse("Texto do Box", "Titulo do Box"); + String result = tag.parse(chunk); Assert.assertEquals("

    Titulo do Box

    \nTexto do Box
    ", result); } @Test public void testBoxWithMultilineContent() { BoxTag tag = new BoxTag(); - String result = tag.parse("Texto do Box\n blablabla\n", "Titulo do Box"); + String result = tag.parse(chunk); Assert.assertEquals("

    Titulo do Box

    \nTexto do Box\n blablabla
    ", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/CenteredParagraphTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/CenteredParagraphTagTest.java index 4d99689..ae6f292 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/CenteredParagraphTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/CenteredParagraphTagTest.java @@ -9,7 +9,7 @@ public class CenteredParagraphTagTest { @Test public void testCenteredParagraphTest() { CenteredParagraphTag tag = new CenteredParagraphTag(); - String result = tag.parse("texto centralizado", null); + String result = tag.parse(chunk); Assert.assertEquals("

    texto centralizado

    ", result); } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/CodeTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/CodeTagTest.java index bdc2f5c..88ac438 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/CodeTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/CodeTagTest.java @@ -1,6 +1,5 @@ package br.com.caelum.tubaina.parser.html.desktop; -import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; @@ -18,7 +17,7 @@ public void shouldCallHtmlCodeTag() { "}"; HtmlAndKindleCodeTag htmlCodeTag = mock(HtmlAndKindleCodeTag.class); CodeTag codeTag = new CodeTag(htmlCodeTag); - codeTag.parse(code, "java"); - verify(htmlCodeTag).parse(eq(code), eq("java")); + codeTag.parse(chunk); + verify(htmlCodeTag).parse(chunk); } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ExerciseTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ExerciseTagTest.java index 91b7424..3baa19d 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ExerciseTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ExerciseTagTest.java @@ -10,7 +10,7 @@ public class ExerciseTagTest { @Test public void testExerciseTag(){ - String result = new ExerciseTag().parse("texto do exercicio", null); + String result = new ExerciseTag().parse(chunk); Assert.assertEquals("
      texto do exercicio
    ", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/HtmlParserTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/HtmlParserTest.java index 56a71f8..2eef4e5 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/HtmlParserTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/HtmlParserTest.java @@ -225,9 +225,9 @@ public void testParagraphInsiideItem(){ "* Effective Java, Joshua Bloch\n\n* Design Patterns, Erich Gamma et al"; List chunks = new ChunkSplitter(null, "list").splitChunks(input); Assert.assertEquals(3, chunks.size()); - Assert.assertEquals("
  • Refactoring, Martin Fowler
  • ", chunks.get(0).getContent(parser)); - Assert.assertEquals("
  • Effective Java, Joshua Bloch
  • ", chunks.get(1).getContent(parser)); - Assert.assertEquals("
  • Design Patterns, Erich Gamma et al
  • ", chunks.get(2).getContent(parser)); + Assert.assertEquals("
  • Refactoring, Martin Fowler
  • ", chunks.get(0).asString()); + Assert.assertEquals("
  • Effective Java, Joshua Bloch
  • ", chunks.get(1).asString()); + Assert.assertEquals("
  • Design Patterns, Erich Gamma et al
  • ", chunks.get(2).asString()); } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ImageTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ImageTagTest.java index 6dd2a53..b7ccc17 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ImageTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ImageTagTest.java @@ -12,7 +12,7 @@ public class ImageTagTest { public void shouldThrowExpectionWhenTagContainsLabel() { ImageTag tag = new ImageTag(); try { - tag.parse("some/path/imagem.png", "label=somelabel"); + tag.parse(chunk); Assert.fail("should throw excpetion"); } catch (TubainaException e) { } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ItemTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ItemTagTest.java index 0b37647..de55c39 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ItemTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ItemTagTest.java @@ -12,7 +12,7 @@ public class ItemTagTest { @Test public void testItem() { - String result = new ItemTag().parse("texto do item", null); + String result = new ItemTag().parse(chunk); Assert.assertEquals("
  • texto do item
  • ", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/JavaTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/JavaTagTest.java index 562585a..2734ad2 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/JavaTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/JavaTagTest.java @@ -11,7 +11,7 @@ public class JavaTagTest { @Test(expected=TubainaException.class) public void tagIsDeprecatedAndParsingAgainstItWillAlwaysThrowAnException() { JavaTag tag = new JavaTag(new SimpleIndentator(4)); - tag.parse("class", "#"); + tag.parse(chunk); } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ListTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ListTagTest.java index 0a3c851..e291b7b 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ListTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ListTagTest.java @@ -10,28 +10,28 @@ public class ListTagTest { @Test public void testList() { ListTag tag = new ListTag(); - String result = tag.parse("conteudo da lista", ""); + String result = tag.parse(chunk); Assert.assertEquals("
      conteudo da lista
    ", result); } @Test public void testListNumber() { ListTag tag = new ListTag(); - String result = tag.parse("conteudo da lista", "number"); + String result = tag.parse(chunk); Assert.assertEquals("
      conteudo da lista
    ", result); } @Test public void testListLetter() { ListTag tag = new ListTag(); - String result = tag.parse("conteudo da lista", "letter"); + String result = tag.parse(chunk); Assert.assertEquals("
      conteudo da lista
    ", result); } @Test public void testListRoman() { ListTag tag = new ListTag(); - String result = tag.parse("conteudo da lista", "roman"); + String result = tag.parse(chunk); Assert.assertEquals("
      conteudo da lista
    ", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/NoteTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/NoteTagTest.java index b980374..87ab5d3 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/NoteTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/NoteTagTest.java @@ -9,7 +9,7 @@ public class NoteTagTest { @Test public void testNoteTag(){ - String result = new NoteTag().parse("qualquer texto de nota", null); + String result = new NoteTag().parse(chunk); Assert.assertEquals(result, "
    qualquer texto de nota
    "); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ParagraphTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ParagraphTagTest.java index 39aff37..4ad6284 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ParagraphTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ParagraphTagTest.java @@ -7,7 +7,7 @@ public class ParagraphTagTest { @Test public void testParagraphTag(){ - String result = new ParagraphTag().parse("qualquer texto", null); + String result = new ParagraphTag().parse(chunk); Assert.assertEquals(result, "

    qualquer texto

    "); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/QuestionTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/QuestionTagTest.java index be653db..8ecc60d 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/QuestionTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/QuestionTagTest.java @@ -10,7 +10,7 @@ public class QuestionTagTest { @Test public void testQuestionTag() { - String result = new QuestionTag().parse("texto da questao", null); + String result = new QuestionTag().parse(chunk); Assert.assertEquals("
  • texto da questao
  • ", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/RubyTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/RubyTagTest.java index 54e112c..31a2a7e 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/RubyTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/RubyTagTest.java @@ -12,6 +12,6 @@ public class RubyTagTest { public void tagIsDeprecatedAndParsingAgainstItWillAlwaysThrowAnException() { RubyTag rubyTag = new RubyTag(new SimpleIndentator(4)); String code = "# this is a ruby comment"; - rubyTag.parse(code, ""); + rubyTag.parse(chunk); } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/TableColumnTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/TableColumnTagTest.java index 41630ef..48a23dc 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/TableColumnTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/TableColumnTagTest.java @@ -11,7 +11,7 @@ public class TableColumnTagTest { @Test public void testTableColumn() { TableColumnTag tag = new TableColumnTag(); - String result = tag.parse("algum texto", null); + String result = tag.parse(chunk); Assert.assertEquals("algum texto", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/TableRowTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/TableRowTagTest.java index 5384f3c..3f7b369 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/TableRowTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/TableRowTagTest.java @@ -11,7 +11,7 @@ public class TableRowTagTest { @Test public void testTableRow() { TableRowTag tag = new TableRowTag(); - String result = tag.parse("texto", null); + String result = tag.parse(chunk); Assert.assertEquals("texto", result); } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/TableTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/TableTagTest.java index 6cf8255..8ca0e91 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/TableTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/TableTagTest.java @@ -11,28 +11,28 @@ public class TableTagTest { @Test public void testTable() { TableTag tag = new TableTag(false); - String result = tag.parse("texto da tabela", ""); + String result = tag.parse(chunk); Assert.assertEquals("texto da tabela
    ", result); } @Test public void testTableWithTitle() { TableTag tag = new TableTag(false); - String result = tag.parse("texto da tabela", "titulo"); + String result = tag.parse(chunk); Assert.assertEquals("

    titulo

    texto da tabela
    ", result); } @Test public void testTableWithoutBorder() { TableTag tag = new TableTag(true); - String result = tag.parse("texto da tabela", ""); + String result = tag.parse(chunk); Assert.assertEquals("texto da tabela
    ", result); } @Test public void testTableWithTitleAndWithoutBorder() { TableTag tag = new TableTag(true); - String result = tag.parse("texto da tabela", "titulo"); + String result = tag.parse(chunk); Assert.assertEquals("

    titulo

    texto da tabela
    ", result); } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/XmlTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/XmlTagTest.java index bf7ce8e..7065d6f 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/XmlTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/XmlTagTest.java @@ -10,7 +10,7 @@ public class XmlTagTest { @Test(expected=TubainaException.class) public void tagIsDeprecatedAndParsingAgainstItWillAlwaysThrowAnException() { - new XmlTag(new SimpleIndentator(4)).parse("", ""); + new XmlTag(new SimpleIndentator(4)).parse(chunk); } } \ No newline at end of file diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/AnswerTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/AnswerTagTest.java index bfff5b0..0827d3e 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/AnswerTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/AnswerTagTest.java @@ -10,7 +10,7 @@ public class AnswerTagTest { @Test public void testAnswerTag(){ AnswerTag tag = new AnswerTag(); - String result = tag.parse("texto da resposta", "0"); + String result = tag.parse(chunk); Assert.assertEquals("
    texto da resposta

    ", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/BoxTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/BoxTagTest.java index c972cf0..2bf0c83 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/BoxTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/BoxTagTest.java @@ -8,7 +8,7 @@ public class BoxTagTest { @Test public void testBox() { BoxTag tag = new BoxTag(); - String result = tag.parse("Texto do Box", "Titulo do Box"); + String result = tag.parse(chunk); Assert.assertEquals(BoxTag.BEGIN + BoxTag.TITLE_BEGIN + "Titulo do Box" + BoxTag.TITLE_END + "Texto do Box" + BoxTag.END, result); } @@ -16,7 +16,7 @@ public void testBox() { @Test public void testBoxWithMultilineContent() { BoxTag tag = new BoxTag(); - String result = tag.parse("Texto do Box\n blablabla\n", "Titulo do Box"); + String result = tag.parse(chunk); Assert.assertEquals(BoxTag.BEGIN + BoxTag.TITLE_BEGIN + "Titulo do Box" + BoxTag.TITLE_END + "Texto do Box\n blablabla" + BoxTag.END, result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/CenteredParagraphTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/CenteredParagraphTagTest.java index ce6711e..1831f77 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/CenteredParagraphTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/CenteredParagraphTagTest.java @@ -9,7 +9,7 @@ public class CenteredParagraphTagTest { @Test public void testCenteredParagraphTest() { CenteredParagraphTag tag = new CenteredParagraphTag(); - String result = tag.parse("texto centralizado", null); + String result = tag.parse(chunk); Assert.assertEquals("

    texto centralizado

    ", result); } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/CodeTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/CodeTagTest.java index 986a336..3f92e39 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/CodeTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/CodeTagTest.java @@ -1,6 +1,5 @@ package br.com.caelum.tubaina.parser.html.kindle; -import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; @@ -20,7 +19,7 @@ public void shouldCallHtmlCodeTag() { "}"; HtmlAndKindleCodeTag htmlCodeTag = mock(HtmlAndKindleCodeTag.class); CodeTag codeTag = new CodeTag(htmlCodeTag); - codeTag.parse(code, "java"); - verify(htmlCodeTag).parse(eq(code), eq("java")); + codeTag.parse(chunk); + verify(htmlCodeTag).parse(chunk); } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ExerciseTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ExerciseTagTest.java index 965ffea..dd5add6 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ExerciseTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ExerciseTagTest.java @@ -10,7 +10,7 @@ public class ExerciseTagTest { @Test public void testExerciseTag(){ - String result = new ExerciseTag().parse("texto do exercicio", null); + String result = new ExerciseTag().parse(chunk); Assert.assertEquals("
      texto do exercicio
    ", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ItemTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ItemTagTest.java index a5cb4db..3095026 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ItemTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ItemTagTest.java @@ -12,7 +12,7 @@ public class ItemTagTest { @Test public void testItem() { - String result = new ItemTag().parse("texto do item", null); + String result = new ItemTag().parse(chunk); Assert.assertEquals("
  • texto do item
  • ", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/KindleParserTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/KindleParserTest.java index 5a3f407..f47c8b6 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/KindleParserTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/KindleParserTest.java @@ -237,11 +237,10 @@ public void testItemSplittBug() { + "* Effective Java, Joshua Bloch\n\n* Design Patterns, Erich Gamma et al"; List chunks = new ChunkSplitter(null, "list").splitChunks(input); Assert.assertEquals(3, chunks.size()); - Assert.assertEquals("
  • Refactoring, Martin Fowler
  • ", chunks.get(0).getContent(parser)); - Assert.assertEquals("
  • Effective Java, Joshua Bloch
  • ", chunks.get(1).getContent( - parser)); + Assert.assertEquals("
  • Refactoring, Martin Fowler
  • ", chunks.get(0).asString()); + Assert.assertEquals("
  • Effective Java, Joshua Bloch
  • ", chunks.get(1).asString()); Assert.assertEquals("
  • Design Patterns, Erich Gamma et al
  • ", chunks.get(2) - .getContent(parser)); + .asString()); } @Test diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ListTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ListTagTest.java index a86e62f..7ee1ed6 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ListTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ListTagTest.java @@ -10,28 +10,28 @@ public class ListTagTest { @Test public void testList() { ListTag tag = new ListTag(); - String result = tag.parse("conteudo da lista", ""); + String result = tag.parse(chunk); Assert.assertEquals("
      conteudo da lista
    ", result); } @Test public void testListNumber() { ListTag tag = new ListTag(); - String result = tag.parse("conteudo da lista", "number"); + String result = tag.parse(chunk); Assert.assertEquals("
      conteudo da lista
    ", result); } @Test public void testListLetter() { ListTag tag = new ListTag(); - String result = tag.parse("conteudo da lista", "letter"); + String result = tag.parse(chunk); Assert.assertEquals("
      conteudo da lista
    ", result); } @Test public void testListRoman() { ListTag tag = new ListTag(); - String result = tag.parse("conteudo da lista", "roman"); + String result = tag.parse(chunk); Assert.assertEquals("
      conteudo da lista
    ", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/NoteTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/NoteTagTest.java index 8aeacb1..2883fe4 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/NoteTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/NoteTagTest.java @@ -7,7 +7,7 @@ public class NoteTagTest { @Test public void testNoteTag() { - String result = new NoteTag().parse("qualquer texto de nota", null); + String result = new NoteTag().parse(chunk); String begin = "---------------------------
    "; String end = "
    ---------------------------"; Assert.assertEquals(result, begin + "qualquer texto de nota" + end); diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ParagraphTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ParagraphTagTest.java index 4694a6c..1be8767 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ParagraphTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ParagraphTagTest.java @@ -7,7 +7,7 @@ public class ParagraphTagTest { @Test public void testParagraphTag(){ - String result = new ParagraphTag().parse("qualquer texto", null); + String result = new ParagraphTag().parse(chunk); Assert.assertEquals(result, "

    qualquer texto

    "); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/QuestionTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/QuestionTagTest.java index 0961f16..7114b49 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/QuestionTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/QuestionTagTest.java @@ -7,7 +7,7 @@ public class QuestionTagTest { @Test public void testQuestionTag() { - String result = new QuestionTag().parse("texto da questao", null); + String result = new QuestionTag().parse(chunk); Assert.assertEquals("
  • texto da questao
  • ", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/TableColumnTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/TableColumnTagTest.java index 2eca889..0597e0e 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/TableColumnTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/TableColumnTagTest.java @@ -9,7 +9,7 @@ public class TableColumnTagTest { @Test public void testTableColumn() { TableColumnTag tag = new TableColumnTag(); - String result = tag.parse("algum texto", null); + String result = tag.parse(chunk); Assert.assertEquals("algum texto", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/TableRowTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/TableRowTagTest.java index 0e9db05..b52aef4 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/TableRowTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/TableRowTagTest.java @@ -10,7 +10,7 @@ public class TableRowTagTest { @Test public void testTableRow() { TableRowTag tag = new TableRowTag(); - String result = tag.parse("texto", null); + String result = tag.parse(chunk); Assert.assertEquals("texto", result); } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/TableTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/TableTagTest.java index 1ef3e50..1103577 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/TableTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/TableTagTest.java @@ -9,28 +9,28 @@ public class TableTagTest { @Test public void testTable() { TableTag tag = new TableTag(false); - String result = tag.parse("texto da tabela", ""); + String result = tag.parse(chunk); Assert.assertEquals("texto da tabela
    ", result); } @Test public void testTableWithTitle() { TableTag tag = new TableTag(false); - String result = tag.parse("texto da tabela", "titulo"); + String result = tag.parse(chunk); Assert.assertEquals("

    titulo

    texto da tabela
    ", result); } @Test public void testTableWithoutBorder() { TableTag tag = new TableTag(true); - String result = tag.parse("texto da tabela", ""); + String result = tag.parse(chunk); Assert.assertEquals("texto da tabela
    ", result); } @Test public void testTableWithTitleAndWithoutBorder() { TableTag tag = new TableTag(true); - String result = tag.parse("texto da tabela", "titulo"); + String result = tag.parse(chunk); Assert.assertEquals("

    titulo

    texto da tabela
    ", result); } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/BoxTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/BoxTagTest.java index 476e941..c9f0474 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/BoxTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/BoxTagTest.java @@ -8,20 +8,20 @@ public class BoxTagTest { @Test public void testBox() { BoxTag tag = new BoxTag(); - String result = tag.parse("Texto do Box", "Titulo do Box"); + String result = tag.parse(chunk); Assert.assertEquals("\\begin{tubainabox}{Titulo do Box}\nTexto do Box\n\\end{tubainabox}", result); } @Test public void testBoxWithMultilineContent() { BoxTag tag = new BoxTag(); - String result = tag.parse("Texto do Box\n blablabla\n", "Titulo do Box"); + String result = tag.parse(chunk); Assert.assertEquals("\\begin{tubainabox}{Titulo do Box}\nTexto do Box\n blablabla\n\n\\end{tubainabox}", result); } @Test public void testChangeTitleToEmptyStringIfItsNull(){ - String result = new BoxTag().parse("Text", null); + String result = new BoxTag().parse(chunk); Assert.assertEquals("\\begin{tubainabox}{\\ }\nText\n\\end{tubainabox}", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/CenteredParagraphTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/CenteredParagraphTagTest.java index 34a3706..60d2752 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/CenteredParagraphTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/CenteredParagraphTagTest.java @@ -7,7 +7,7 @@ public class CenteredParagraphTagTest { @Test public void testCenteredParagraphTag() { CenteredParagraphTag tag = new CenteredParagraphTag(); - String result = tag.parse("texto centralizado", null); + String result = tag.parse(chunk); Assert.assertEquals("\\begin{center}texto centralizado\\end{center}", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/CodeTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/CodeTagTest.java index bfde9fb..f1c0e61 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/CodeTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/CodeTagTest.java @@ -27,7 +27,7 @@ public void testPropertiesCodeTag() throws Exception { String options = "properties"; String string = "blablah blah\n" + "#algum comentario\n" + "texto=valor\n" + "texto:valor\n" + "texto valor"; - String output = codeTag.parse(string, options); + String output = codeTag.parse(chunk); assertPygmentsRan(output); } @@ -37,7 +37,7 @@ public void testPropertiesCodeTagWithEscapes() throws Exception { String options = "properties abc"; String string = "blablah blah\n" + "#algum comentario\n" + "texto\\=valor=valor\n" + "texto\\:valor:valor\n" + "texto\\ valor valor\n" + "a b\\#fake comentario"; - String output = codeTag.parse(string, options); + String output = codeTag.parse(chunk); assertPygmentsRan(output); } @@ -46,7 +46,7 @@ public void testPropertiesCodeTagWithEscapes() throws Exception { public void languageCodeTagShouldInsertLineNumbersWhenOptionContainsSharp() { String string = "public static void main(String[] args) {"; String options = "java #"; - String output = codeTag.parse(string, options); + String output = codeTag.parse(chunk); assertPygmentsRan(output); } @@ -55,7 +55,7 @@ public void languageCodeTagShouldInsertLineNumbersWhenOptionContainsSharp() { public void languageCodeTagShouldUnderstandLineNumbersEvenWhenNoLanguageIsSelected() { String string = "def some: \"bizarre code\" in: unknownLanguage"; String options = "#"; - String output = codeTag.parse(string, options); + String output = codeTag.parse(chunk); assertPygmentsRan(output); } @@ -64,7 +64,7 @@ public void languageCodeTagShouldUnderstandLineNumbersEvenWhenNoLanguageIsSelect public void languageCodeTagShouldUnderstandLineNumbersAndHighlightsWhenNoLanguageIsSelected() { String string = "def some: \"bizarre code\" \nin: unknownLanguage"; String options = "# h=1,2"; - String output = codeTag.parse(string, options); + String output = codeTag.parse(chunk); assertPygmentsRan(output); } @@ -73,7 +73,7 @@ public void languageCodeTagShouldUnderstandLineNumbersAndHighlightsWhenNoLanguag public void languageCodeTagShouldUnderstandLineNumbersAndCSharpLanguage() { String string = "public class SomeClass {"; String options = "c# #"; - String output = codeTag.parse(string, options); + String output = codeTag.parse(chunk); assertPygmentsRan(output); } @@ -83,7 +83,7 @@ public void codeTagWithReferenceWithoutLanguage() throws Exception { String options = "label=javacode1"; String code = "class Main {\n" + "public static void main(String[] args) {\n" + "System.out.println(\"Hello world\");\n" + "}\n}"; - String output = codeTag.parse(code, options); + String output = codeTag.parse(chunk); assertTrue(output.startsWith("\\tubainaCodeLabel{javacode1}")); assertPygmentsRan(output); @@ -94,7 +94,7 @@ public void codeTagWithReferenceWithLanguage() throws Exception { String options = "java label=javacode1"; String code = "class Main {\n" + "public static void main(String[] args) {\n" + "System.out.println(\"Hello world\");\n" + "}\n}"; - String output = codeTag.parse(code, options); + String output = codeTag.parse(chunk); assertTrue(output.startsWith("\\tubainaCodeLabel{javacode1}")); assertPygmentsRan(output); @@ -105,7 +105,7 @@ public void codeTagWithFileNameWithoutLanguage() throws Exception { String options = "filename=src/Main.java"; String code = "class Main {\n" + "public static void main(String[] args) {\n" + "System.out.println(\"Hello world\");\n" + "}\n}"; - String output = codeTag.parse(code, options); + String output = codeTag.parse(chunk); assertTrue(output.startsWith("\\tubainaCodeFileName{src/Main.java}\n")); assertPygmentsRan(output); @@ -116,7 +116,7 @@ public void codeTagWithFileNameWithLanguage() throws Exception { String options = "java filename=src/Main.java"; String code = "class Main {\n" + "public static void main(String[] args) {\n" + "System.out.println(\"Hello world\");\n" + "}\n}"; - String output = codeTag.parse(code, options); + String output = codeTag.parse(chunk); assertTrue(output.startsWith("\\tubainaCodeFileName{src/Main.java}\n")); assertPygmentsRan(output); @@ -127,7 +127,7 @@ public void codeTagWithFileNameWithLanguageAndLabel() throws Exception { String options = "java filename=src/Main2.java label=javacode1"; String code = "class Main {\n" + "public static void main(String[] args) {\n" + "System.out.println(\"Hello world\");\n" + "}\n}"; - String output = codeTag.parse(code, options); + String output = codeTag.parse(chunk); assertTrue(output.startsWith("\\tubainaCodeLabel{javacode1}\n")); assertPygmentsRan(output); @@ -137,7 +137,7 @@ public void codeTagWithFileNameWithLanguageAndLabel() throws Exception { public void javascriptLangBug() throws Exception { String options = "javascript"; String code = "writeTotal(3.14159);"; - String output = codeTag.parse(code, options); + String output = codeTag.parse(chunk); assertFalse(output.contains("javascript")); assertPygmentsRan(output); diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/ExerciseTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/ExerciseTagTest.java index 59d398b..91cbe6b 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/ExerciseTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/ExerciseTagTest.java @@ -7,7 +7,7 @@ public class ExerciseTagTest { @Test public void testExerciseTag(){ ExerciseTag tag = new ExerciseTag(); - String result = tag.parse("texto do exercicio", "1"); + String result = tag.parse(chunk); Assert.assertEquals("\\label{ex:1}\n\\begin{enumerate}[1)]\ntexto do exercicio\n\\end{enumerate}", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/GistTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/GistTagTest.java index 8e4a95e..1704831 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/GistTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/GistTagTest.java @@ -27,7 +27,7 @@ public void gistedCodeIsRetrievedAndUsed() throws Exception { String gistedCode = "javascript:(function() {window.frames[3][0].document.getElementById('frameplugin').style.display='none'})()"; String output = new GistTag(new SimpleIndentator(4), retriever).parse( - "", options); + chunk); assertPygmentsRan(output); assertTrue(output.contains("javascript")); @@ -52,7 +52,7 @@ public void gistedCodeIsParsedWithLineNumbers() throws Exception { GistResultRetriever retriever = new GistResultRetriever(connector); String output = new GistTag(new SimpleIndentator(4), retriever).parse( - "", options); + chunk); assertPygmentsRan(output); assertTrue(output.contains("GivenCode")); diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/ImageTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/ImageTagTest.java index 636ec5e..f8f374b 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/ImageTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/ImageTagTest.java @@ -20,7 +20,7 @@ public void setUp() { @Test public void testFullImageTag() { - String result = tag.parse("imagem.png", "w=30 \"Imagem de alguma coisa\""); + String result = tag.parse(chunk); assertEquals( BEGIN + "\\includegraphics[width=52.5mm]{imagem.png}\n" + @@ -30,7 +30,7 @@ public void testFullImageTag() { @Test public void labelAndNoCaption() throws Exception { - String result = tag.parse("image.png", "label=important"); + String result = tag.parse(chunk); assertEquals( BEGIN + "\\includegraphics[width=\\textwidth]{image.png}\n" + @@ -40,7 +40,7 @@ public void labelAndNoCaption() throws Exception { @Test public void labelNotInformed() throws Exception { - String result = tag.parse("image.png", "label="); + String result = tag.parse(chunk); assertEquals( BEGIN + "\\includegraphics[width=\\textwidth]{image.png}\n" + @@ -50,7 +50,7 @@ public void labelNotInformed() throws Exception { @Test public void labelNotInformedFollowedByACaption() throws Exception { - String result = tag.parse("image.png", "label= \"a caption to the image\""); + String result = tag.parse(chunk); assertEquals( BEGIN + "\\includegraphics[width=\\textwidth]{image.png}\n" + @@ -61,7 +61,7 @@ public void labelNotInformedFollowedByACaption() throws Exception { @Test public void labelAndCaption() throws Exception { - String result = tag.parse("image.png", "label=important \"a caption to the image\""); + String result = tag.parse(chunk); assertEquals( BEGIN + "\\includegraphics[width=\\textwidth]{image.png}\n" + @@ -72,7 +72,7 @@ public void labelAndCaption() throws Exception { @Test public void testImageTagWithoutBounds() { - String result = tag.parse("imagem.png", "\"Imagem de alguma coisa\""); + String result = tag.parse(chunk); assertEquals( BEGIN + "\\includegraphics[width=\\textwidth]{imagem.png}\n" + @@ -82,7 +82,7 @@ public void testImageTagWithoutBounds() { @Test public void testImageTagWithoutDesc() { - String result = tag.parse("imagem.png", "w=42"); + String result = tag.parse(chunk); assertEquals( BEGIN + "\\includegraphics[width=73.5mm]{imagem.png}\n" + @@ -91,7 +91,7 @@ public void testImageTagWithoutDesc() { @Test public void testImageTagWithPercentageSymbol() { - String result = tag.parse("imagem.png", "w=40%"); + String result = tag.parse(chunk); assertEquals( BEGIN + "\\includegraphics[width=70.0mm]{imagem.png}\n" + @@ -100,7 +100,7 @@ public void testImageTagWithPercentageSymbol() { @Test public void testImageTagWithoutPercentageSymbol() { - String result = tag.parse("imagem.png", "w=40"); + String result = tag.parse(chunk); assertEquals( BEGIN + "\\includegraphics[width=70.0mm]{imagem.png}\n" + @@ -109,7 +109,7 @@ public void testImageTagWithoutPercentageSymbol() { @Test public void testImageTagWithInvalidBounds() { - String result = tag.parse("imagem.png", "w=42"); + String result = tag.parse(chunk); assertEquals( BEGIN + "\\includegraphics[width=73.5mm]{imagem.png}\n" + @@ -118,7 +118,7 @@ public void testImageTagWithInvalidBounds() { @Test public void testImageTagWithPath() { - String result = tag.parse("some/path/imagem.png", "w=42"); + String result = tag.parse(chunk); assertEquals( BEGIN + "\\includegraphics[width=73.5mm]{imagem.png}\n" + @@ -128,7 +128,7 @@ public void testImageTagWithPath() { @Test public void imageTagWithoutDefinedImageProportionShouldConstrainToPageWidthWhenImageIsTooBig() { int tooLargeImageWidthInPixels = 2250; - String result = tag.parse("imagem.png", "[" + tooLargeImageWidthInPixels + "]"); + String result = tag.parse(chunk); assertEquals( BEGIN + "\\includegraphics[width=\\textwidth]{imagem.png}\n" + @@ -137,7 +137,7 @@ public void imageTagWithoutDefinedImageProportionShouldConstrainToPageWidthWhenI @Test public void shouldParseLabelEvenWithStrangeChars() throws Exception { - String result = tag.parse("image.png", "label=name-with-strange_chars"); + String result = tag.parse(chunk); assertEquals( BEGIN + "\\includegraphics[width=\\textwidth]{image.png}\n" + diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/IndexTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/IndexTagTest.java index e10ad2d..985b0d7 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/IndexTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/IndexTagTest.java @@ -8,13 +8,13 @@ public class IndexTagTest { @Test public void shouldParseIndexTag() throws Exception { - String result = new IndexTag().parse("name", ""); + String result = new IndexTag().parse(chunk); assertEquals("\n\\index{name}\n", result); } @Test public void shouldEscapeUnderscores() throws Exception { - String result = new IndexTag().parse("index_name_underscore", ""); + String result = new IndexTag().parse(chunk); assertEquals("\n\\index{index\\_name\\_underscore}\n", result); } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/ItemTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/ItemTagTest.java index a901bba..3036ab0 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/ItemTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/ItemTagTest.java @@ -11,7 +11,7 @@ public class ItemTagTest { @Test public void testItem() { - String result = new ItemTag().parse("texto do item", null); + String result = new ItemTag().parse(chunk); Assert.assertEquals("\n\\item{texto do item}\n", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/JavaTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/JavaTagTest.java index 47a57b6..1fa6383 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/JavaTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/JavaTagTest.java @@ -12,7 +12,7 @@ public class JavaTagTest { @Test(expected = TubainaException.class) public void tagIsDeprecatedAndParsingAgainstItWillAlwaysThrowAnException() { JavaTag tag = new JavaTag(new SimpleIndentator(4)); - tag.parse("class", "#"); + tag.parse(chunk); } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/LatexParserTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/LatexParserTest.java index 95a20ef..be04641 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/LatexParserTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/LatexParserTest.java @@ -182,12 +182,10 @@ public void testItemSplittBug() { + "* Effective Java, Joshua Bloch\n\n* Design Patterns, Erich Gamma et al"; List chunks = new ChunkSplitter(null, "list").splitChunks(input); Assert.assertEquals(3, chunks.size()); - Assert.assertEquals("\n\\item{Refactoring, Martin Fowler}\n", chunks.get(0).getContent( - parser)); - Assert.assertEquals("\n\\item{Effective Java, Joshua Bloch}\n", chunks.get(1).getContent( - parser)); + Assert.assertEquals("\n\\item{Refactoring, Martin Fowler}\n", chunks.get(0).asString()); + Assert.assertEquals("\n\\item{Effective Java, Joshua Bloch}\n", chunks.get(1).asString()); Assert.assertEquals("\n\\item{Design Patterns, Erich Gamma et al}\n", chunks.get(2) - .getContent(parser)); + .asString()); } @Test diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/LinkTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/LinkTagTest.java index 5569f98..8444633 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/LinkTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/LinkTagTest.java @@ -27,14 +27,14 @@ public void testLinkWithHttpsTagInline() { @Test public void testLinkWithParentheses() { - String result = linkTag.parse("(http://www.caelum.com.br/)", null); + String result = linkTag.parse(chunk); Assert.assertEquals("(\\href{http://www.caelum.com.br/}{http://www.caelum.com.br/})", result); } @Test public void shouldReplaceTwoLinks() { String content = "http://caelum.com.br/ rest of the text http://caelum.com.br/ another"; - String result = linkTag.parse(content, null); + String result = linkTag.parse(chunk); assertEquals("\\href{http://caelum.com.br/}{http://caelum.com.br/} " + "rest of the text \\href{http://caelum.com.br/}" + "{http://caelum.com.br/} another", result); @@ -61,22 +61,22 @@ public void shouldNotConsiderPunctuationSymbolsAtTheEndOfUrlForLink() throws Exc @Test public void shouldReplaceLinkWhenItsBeforeEndOfLine() throws Exception { String text = "Então visite http://www.xcubelabs.com/the-android-story.php e http://www.theverge.com/2011/12/7/2585779/android-history\n"; - text = linkTag.parse(text, null); + text = linkTag.parse(chunk); assertEquals("Então visite \\href{http://www.xcubelabs.com/the-android-story.php}{http://www.xcubelabs.com/the-android-story.php} e \\href{http://www.theverge.com/2011/12/7/2585779/android-history}{http://www.theverge.com/2011/12/7/2585779/android-history}\n", text); } private void testLink(String link) { - String result = linkTag.parse(link, null); + String result = linkTag.parse(chunk); Assert.assertEquals("\\href{" + link + "}{" + link + "}", result); } private void testHttpAndHttps(String textBefore, String link, String textAfter) { String http = textBefore + "http://" + link + textAfter; - String text = linkTag.parse(http, null); + String text = linkTag.parse(chunk); assertEquals(textBefore + "\\href{http://" + link + "}{http://" + link + "}" + textAfter, text); String https = textBefore + "https://" + link + textAfter; - text = linkTag.parse(https, null); + text = linkTag.parse(chunk); assertEquals(textBefore + "\\href{https://" + link + "}{https://" + link + "}" + textAfter, text); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/ListTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/ListTagTest.java index c849ade..2b27424 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/ListTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/ListTagTest.java @@ -8,28 +8,28 @@ public class ListTagTest { @Test public void testList() { ListTag tag = new ListTag(); - String result = tag.parse("\nconteudo da lista", ""); + String result = tag.parse(chunk); Assert.assertEquals("\\begin{itemize}\nconteudo da lista\\end{itemize}", result); } @Test public void testListNumber() { ListTag tag = new ListTag(); - String result = tag.parse("conteudo da lista", "number"); + String result = tag.parse(chunk); Assert.assertEquals("\\begin{enumerate}[1)]\nconteudo da lista\n\\end{enumerate}", result); } @Test public void testListLetter() { ListTag tag = new ListTag(); - String result = tag.parse("conteudo da lista", "letter"); + String result = tag.parse(chunk); Assert.assertEquals("\\begin{enumerate}[a)]\nconteudo da lista\n\\end{enumerate}", result); } @Test public void testListRoman() { ListTag tag = new ListTag(); - String result = tag.parse("conteudo da lista", "roman"); + String result = tag.parse(chunk); Assert.assertEquals("\\begin{enumerate}[I)]\nconteudo da lista\n\\end{enumerate}", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/NoteTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/NoteTagTest.java index ca00df1..8d852cd 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/NoteTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/NoteTagTest.java @@ -7,7 +7,7 @@ public class NoteTagTest { @Test public void testNoteTag(){ - String result = new NoteTag().parse("qualquer texto de nota", null); + String result = new NoteTag().parse(chunk); Assert.assertEquals("\\begin{tubainanote}\nqualquer texto de nota\n\\end{tubainanote}", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/RubyTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/RubyTagTest.java index c4b3867..cfc816f 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/RubyTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/RubyTagTest.java @@ -12,6 +12,6 @@ public class RubyTagTest { public void tagIsDeprecatedAndParsingAgainstItWillAlwaysThrowAnException() { RubyTag rubyTag = new RubyTag(new SimpleIndentator(4)); String code = "# this is a ruby comment"; - rubyTag.parse(code, ""); + rubyTag.parse(chunk); } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/TableColumnTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/TableColumnTagTest.java index f204aa0..c065961 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/TableColumnTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/TableColumnTagTest.java @@ -9,7 +9,7 @@ public class TableColumnTagTest { @Test public void testTableColumnTag() { TableColumnTag tag = new TableColumnTag(); - String result = tag.parse("texto da coluna", null); + String result = tag.parse(chunk); Assert.assertEquals("texto da coluna& ", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/TableRowTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/TableRowTagTest.java index d404322..ee02f4a 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/TableRowTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/TableRowTagTest.java @@ -9,14 +9,14 @@ public class TableRowTagTest { @Test public void testTableRowTag() { TableRowTag tag = new TableRowTag(); - String result = tag.parse("linha da tabela", null); + String result = tag.parse(chunk); Assert.assertEquals("linha da tabela\\\\", result); } @Test public void testRemoveLastColumnBreak() { TableRowTag tag = new TableRowTag(); - String result = tag.parse("coluna1& coluna2& coluna3&", null); + String result = tag.parse(chunk); Assert.assertEquals("coluna1& coluna2& coluna3\\\\", result); } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/TableTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/TableTagTest.java index 230ad7c..1725b5d 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/TableTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/TableTagTest.java @@ -11,7 +11,7 @@ public class TableTagTest { @Test public void testTable() { TableTag tag = new TableTag(false, 2); - String result = tag.parse("texto da tabela", ""); + String result = tag.parse(chunk); Assert.assertEquals( "\\begin{table}[!h]\n" + "\\caption{}\n" + @@ -27,7 +27,7 @@ public void testTable() { @Test public void testTableWithTitle() { TableTag tag = new TableTag(false, 2); - String result = tag.parse("texto da tabela", "titulo"); + String result = tag.parse(chunk); Assert.assertEquals( "\\begin{table}[!h]\n" + "\\caption{titulo}\n" + @@ -43,7 +43,7 @@ public void testTableWithTitle() { @Test public void testTableWithoutBorder() { TableTag tag = new TableTag(true, 2); - String result = tag.parse("texto da tabela", ""); + String result = tag.parse(chunk); Assert.assertEquals( "\\begin{table}[!h]\n" + "\\caption{}\n" + @@ -56,7 +56,7 @@ public void testTableWithoutBorder() { @Test public void testTableWithTitleAndWithoutBorder() { TableTag tag = new TableTag(true, 2); - String result = tag.parse("texto da tabela", "titulo"); + String result = tag.parse(chunk); Assert.assertEquals( "\\begin{table}[!h]\n" + "\\caption{titulo}\n" + @@ -70,7 +70,7 @@ public void testTableWithTitleAndWithoutBorder() { public void testTableWithInvalidNumberOfColums() { TableTag tag = new TableTag(true, 0); try { - tag.parse("texto", ""); + tag.parse(chunk); Assert.fail("Should raise an exception"); } catch (TubainaException e) { // ok diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/XmlTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/XmlTagTest.java index 7a65eca..ffecd63 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/XmlTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/XmlTagTest.java @@ -11,7 +11,7 @@ public class XmlTagTest { @Test(expected=TubainaException.class) public void tagIsDeprecatedAndParsingAgainstItWillAlwaysThrowAnException() { - new XmlTag(new SimpleIndentator(4)).parse("", ""); + new XmlTag(new SimpleIndentator(4)).parse(chunk); } } From b3033890dd35e54bfa3766e0a8d633258dd0b685 Mon Sep 17 00:00:00 2001 From: Cecilia Fernandes Date: Sun, 24 Mar 2013 13:57:26 -0300 Subject: [PATCH 02/17] [Adding Guice] Still on that huge refactor --- .../br/com/caelum/tubaina/CompositeChunk.java | 2 +- .../java/br/com/caelum/tubaina/ParseType.java | 9 +- .../com/caelum/tubaina/chunk/ImageChunk.java | 25 ++- .../com/caelum/tubaina/chunk/IndexChunk.java | 12 +- .../com/caelum/tubaina/chunk/ItemChunk.java | 16 +- .../com/caelum/tubaina/chunk/JavaChunk.java | 15 +- .../com/caelum/tubaina/chunk/ListChunk.java | 15 +- .../com/caelum/tubaina/chunk/MockedChunk.java | 8 +- .../com/caelum/tubaina/chunk/NoteChunk.java | 18 +- .../caelum/tubaina/chunk/ParagraphChunk.java | 10 +- .../chunk/ParagraphInsideItemChunk.java | 12 +- .../caelum/tubaina/chunk/QuestionChunk.java | 14 +- .../com/caelum/tubaina/chunk/RubyChunk.java | 14 +- .../com/caelum/tubaina/chunk/TableChunk.java | 24 ++- .../tubaina/chunk/TableColumnChunk.java | 15 +- .../caelum/tubaina/chunk/TableRowChunk.java | 16 +- .../com/caelum/tubaina/chunk/TodoChunk.java | 10 +- .../br/com/caelum/tubaina/chunk/XmlChunk.java | 14 +- .../tubaina/parser/RegexConfigurator.java | 5 +- .../com/caelum/tubaina/parser/RegexTag.java | 9 +- .../html/CenteredParagraphTagTemplate.java | 9 +- .../tubaina/parser/html/ImageTagTemplate.java | 25 ++- .../tubaina/parser/html/IndexTagTemplate.java | 9 +- .../tubaina/parser/html/ItemTagTemplate.java | 9 +- .../tubaina/parser/html/ListTagTemplate.java | 9 +- .../parser/html/ParagraphTagTemplate.java | 9 +- .../parser/html/QuestionTagTemplate.java | 9 +- .../parser/html/TableColumnTagTemplate.java | 9 +- .../parser/html/TableRowTagTemplate.java | 9 +- .../tubaina/parser/html/TableTagTemplate.java | 14 +- .../tubaina/parser/html/TodoTagTemplate.java | 7 +- .../html/desktop/CenteredParagraphTag.java | 7 +- .../tubaina/parser/html/desktop/ImageTag.java | 11 +- .../tubaina/parser/html/desktop/IndexTag.java | 7 +- .../tubaina/parser/html/desktop/ItemTag.java | 7 +- .../tubaina/parser/html/desktop/JavaTag.java | 7 +- .../tubaina/parser/html/desktop/ListTag.java | 7 +- .../tubaina/parser/html/desktop/NoteTag.java | 9 +- .../parser/html/desktop/ParagraphTag.java | 7 +- .../parser/html/desktop/QuestionTag.java | 7 +- .../tubaina/parser/html/desktop/RubyTag.java | 7 +- .../parser/html/desktop/TableColumnTag.java | 7 +- .../parser/html/desktop/TableRowTag.java | 7 +- .../tubaina/parser/html/desktop/TableTag.java | 7 +- .../tubaina/parser/html/desktop/TodoTag.java | 9 +- .../tubaina/parser/html/desktop/XmlTag.java | 7 +- .../html/kindle/CenteredParagraphTag.java | 7 +- .../tubaina/parser/html/kindle/ImageTag.java | 9 +- .../tubaina/parser/html/kindle/IndexTag.java | 7 +- .../tubaina/parser/html/kindle/ItemTag.java | 7 +- .../tubaina/parser/html/kindle/JavaTag.java | 7 +- .../tubaina/parser/html/kindle/ListTag.java | 7 +- .../tubaina/parser/html/kindle/NoteTag.java | 9 +- .../parser/html/kindle/ParagraphTag.java | 7 +- .../parser/html/kindle/QuestionTag.java | 7 +- .../tubaina/parser/html/kindle/RubyTag.java | 7 +- .../parser/html/kindle/TableColumnTag.java | 7 +- .../parser/html/kindle/TableRowTag.java | 7 +- .../tubaina/parser/html/kindle/TableTag.java | 7 +- .../tubaina/parser/html/kindle/TodoTag.java | 9 +- .../tubaina/parser/html/kindle/XmlTag.java | 7 +- .../tubaina/parser/latex/EscapeTag.java | 6 +- .../caelum/tubaina/parser/latex/ImageTag.java | 63 +++---- .../caelum/tubaina/parser/latex/IndexTag.java | 9 +- .../caelum/tubaina/parser/latex/ItemTag.java | 9 +- .../caelum/tubaina/parser/latex/JavaTag.java | 10 +- .../tubaina/parser/latex/LatexGenerator.java | 2 +- .../caelum/tubaina/parser/latex/LinkTag.java | 2 +- .../caelum/tubaina/parser/latex/ListTag.java | 12 +- .../caelum/tubaina/parser/latex/NoteTag.java | 9 +- .../tubaina/parser/latex/ParagraphTag.java | 9 +- .../tubaina/parser/latex/QuestionTag.java | 9 +- .../caelum/tubaina/parser/latex/RubyTag.java | 7 +- .../tubaina/parser/latex/TableColumnTag.java | 9 +- .../tubaina/parser/latex/TableRowTag.java | 8 +- .../caelum/tubaina/parser/latex/TableTag.java | 12 +- .../caelum/tubaina/parser/latex/TodoTag.java | 9 +- .../caelum/tubaina/parser/latex/XmlTag.java | 7 +- .../resources/LatexResourceManipulator.java | 12 +- .../parser/html/HtmlAndKindleCodeTagTest.java | 156 +++++++++--------- 80 files changed, 474 insertions(+), 491 deletions(-) diff --git a/src/main/java/br/com/caelum/tubaina/CompositeChunk.java b/src/main/java/br/com/caelum/tubaina/CompositeChunk.java index 7af15d0..153c60b 100644 --- a/src/main/java/br/com/caelum/tubaina/CompositeChunk.java +++ b/src/main/java/br/com/caelum/tubaina/CompositeChunk.java @@ -5,7 +5,7 @@ public abstract class CompositeChunk> extends AbstractChunk { - private List body; + protected final List body; public CompositeChunk(List body) { this.body = body; diff --git a/src/main/java/br/com/caelum/tubaina/ParseType.java b/src/main/java/br/com/caelum/tubaina/ParseType.java index e4be1dc..0cfaf4b 100644 --- a/src/main/java/br/com/caelum/tubaina/ParseType.java +++ b/src/main/java/br/com/caelum/tubaina/ParseType.java @@ -5,6 +5,7 @@ import br.com.caelum.tubaina.parser.Parser; import br.com.caelum.tubaina.parser.RegexConfigurator; +import br.com.caelum.tubaina.parser.RegexTag; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.desktop.FlatHtmlGenerator; import br.com.caelum.tubaina.parser.html.desktop.Generator; @@ -21,7 +22,7 @@ public enum ParseType { LATEX { @Override public Parser getParser(RegexConfigurator conf, boolean noAnswer, boolean showNotes, String linkParameter) throws IOException { - List tags = conf.read("/regex.properties", "/latex.properties"); + List tags = conf.read("/regex.properties", "/latex.properties"); tags.add(new LinkTag("\\\\link{$1}$2")); return new LatexParser(tags, showNotes, noAnswer); } @@ -36,7 +37,7 @@ public Generator getGenerator(Parser parser, TubainaBuilderData data) { HTMLFLAT { @Override public Parser getParser(RegexConfigurator conf, boolean noAnswer, boolean showNotes, String linkParameter) throws IOException { - List tags = conf.read("/regex.properties", "/html.properties"); + List tags = conf.read("/regex.properties", "/html.properties"); tags.add(new LinkTag("$1$2")); return new HtmlParser(tags, noAnswer, showNotes); } @@ -49,7 +50,7 @@ protected Generator getGenerator(Parser parser, TubainaBuilderData data) { HTML { @Override public Parser getParser(RegexConfigurator conf, boolean noAnswer, boolean showNotes, String linkParameter) throws IOException { - List tags = conf.read("/regex.properties", "/html.properties"); + List tags = conf.read("/regex.properties", "/html.properties"); tags.add(new LinkTag("$1$2")); return new HtmlParser(tags, noAnswer, showNotes); } @@ -63,7 +64,7 @@ protected Generator getGenerator(Parser parser, TubainaBuilderData data) { KINDLE { @Override public Parser getParser(RegexConfigurator conf, boolean noAnswer, boolean showNotes, String linkParameter) throws IOException { - List tags = conf.read("/regex.properties", "/kindle.properties"); + List tags = conf.read("/regex.properties", "/kindle.properties"); tags.add(new LinkTag("$1$2")); return new KindleParser(tags, noAnswer, showNotes); } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/ImageChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/ImageChunk.java index a25e779..9454442 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/ImageChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/ImageChunk.java @@ -1,10 +1,9 @@ package br.com.caelum.tubaina.chunk; -import br.com.caelum.tubaina.Chunk; -import br.com.caelum.tubaina.parser.Parser; +import br.com.caelum.tubaina.AbstractChunk; -public class ImageChunk implements Chunk { +public class ImageChunk extends AbstractChunk { private final String options; private final String path; @@ -12,15 +11,25 @@ public class ImageChunk implements Chunk { private final int dpi; public ImageChunk(String path, String options, double width, int dpi) { - this.options = options; this.path = path; + this.options = options; this.width = width; this.dpi = dpi; } - @Override - public String asString(Parser p) { - return p.parseImage(this.path,this.options + " [" + width + "," + dpi + "]"); + public String getOptions() { + return options; + } + + public String getPath() { + return path; + } + + public double getWidth() { + return width; + } + + public int getDpi() { + return dpi; } - } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/IndexChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/IndexChunk.java index e770476..6956482 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/IndexChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/IndexChunk.java @@ -1,17 +1,15 @@ package br.com.caelum.tubaina.chunk; -import br.com.caelum.tubaina.Chunk; -import br.com.caelum.tubaina.parser.Parser; +import br.com.caelum.tubaina.AbstractChunk; -public class IndexChunk implements Chunk{ +public class IndexChunk extends AbstractChunk{ private final String name; public IndexChunk(String name) { this.name = name; - - } - public String asString(Parser p) { - return p.parseIndex(name); } + public String getName() { + return name; + } } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/ItemChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/ItemChunk.java index fb633c6..ee00bcb 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/ItemChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/ItemChunk.java @@ -3,22 +3,12 @@ import java.util.List; import br.com.caelum.tubaina.Chunk; -import br.com.caelum.tubaina.parser.Parser; +import br.com.caelum.tubaina.CompositeChunk; -public class ItemChunk implements Chunk { - - private List body; +public class ItemChunk extends CompositeChunk { public ItemChunk(List body) { - this.body = body; - } - - public String asString(Parser p) { - String content = ""; - for (Chunk c : body) { - content += c.asString(); - } - return p.parseItem(content); + super(body); } } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/JavaChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/JavaChunk.java index f4daf43..95fea95 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/JavaChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/JavaChunk.java @@ -1,12 +1,10 @@ package br.com.caelum.tubaina.chunk; -import br.com.caelum.tubaina.Chunk; -import br.com.caelum.tubaina.parser.Parser; +import br.com.caelum.tubaina.AbstractChunk; -public class JavaChunk implements Chunk { +public class JavaChunk extends AbstractChunk { private String content; - private final String options; public JavaChunk(String options, String content) { @@ -14,8 +12,11 @@ public JavaChunk(String options, String content) { this.options = options; } - public String asString(Parser p) { - return p.parseJava(content, options); + public String getContent() { + return content; + } + + public String getOptions() { + return options; } - } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/ListChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/ListChunk.java index 3835a88..00fd4a5 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/ListChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/ListChunk.java @@ -5,23 +5,16 @@ import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.CompositeChunk; -public class ListChunk implements CompositeChunk { +public class ListChunk extends CompositeChunk { - - private List body; private String type; public ListChunk(String type, List body) { - this.body = body; + super(body); this.type = type; } - public String asString() { - String content = ""; - for (Chunk c : body) { - content += c.asString(); - } - return p.parseList(content, type); + public String getType() { + return type; } - } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/MockedChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/MockedChunk.java index 3c46ec7..58d703f 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/MockedChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/MockedChunk.java @@ -1,9 +1,8 @@ package br.com.caelum.tubaina.chunk; -import br.com.caelum.tubaina.Chunk; -import br.com.caelum.tubaina.parser.Parser; +import br.com.caelum.tubaina.AbstractChunk; -public class MockedChunk implements Chunk { +public class MockedChunk extends AbstractChunk { private String content; @@ -11,8 +10,7 @@ public MockedChunk(String content) { this.content = content; } - public String asString(Parser p) { + public String getContent() { return content; } - } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/NoteChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/NoteChunk.java index 65dfb62..162a946 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/NoteChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/NoteChunk.java @@ -5,27 +5,13 @@ import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.CompositeChunk; -public class NoteChunk implements CompositeChunk { +public class NoteChunk extends CompositeChunk { private final List title; - private final List body; - public NoteChunk(List title, List body) { + super(body); this.title = title; - this.body = body; - } - - public String asString() { - String content = "" + '\n'; - for (Chunk c : body) { - content += c.asString(); - } - String fullTitle = ""; - for (Chunk c : title) { - fullTitle += c.asString(); - } - return p.parseNote(content, fullTitle); } } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/ParagraphChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/ParagraphChunk.java index 4a68b1f..8d82c0f 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/ParagraphChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/ParagraphChunk.java @@ -1,9 +1,8 @@ package br.com.caelum.tubaina.chunk; -import br.com.caelum.tubaina.Chunk; -import br.com.caelum.tubaina.parser.Parser; +import br.com.caelum.tubaina.AbstractChunk; -public class ParagraphChunk implements Chunk{ +public class ParagraphChunk extends AbstractChunk{ private String content; @@ -11,8 +10,7 @@ public ParagraphChunk(String content) { this.content = content; } - public String asString(Parser p) { - return p.parseParagraph(this.content); + public String getContent() { + return content; } - } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/ParagraphInsideItemChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/ParagraphInsideItemChunk.java index 3b9327b..2e1e25f 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/ParagraphInsideItemChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/ParagraphInsideItemChunk.java @@ -1,9 +1,8 @@ package br.com.caelum.tubaina.chunk; -import br.com.caelum.tubaina.Chunk; -import br.com.caelum.tubaina.parser.Parser; +import br.com.caelum.tubaina.AbstractChunk; -public class ParagraphInsideItemChunk implements Chunk { +public class ParagraphInsideItemChunk extends AbstractChunk { private final String content; @@ -11,8 +10,7 @@ public ParagraphInsideItemChunk(String content) { this.content = content; } - public String asString(Parser p) { - return p.parseParagraphInsideItem(content); - } - + public String getContent() { + return content; + } } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/QuestionChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/QuestionChunk.java index 4e0daaa..854fbcd 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/QuestionChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/QuestionChunk.java @@ -5,20 +5,10 @@ import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.CompositeChunk; -public class QuestionChunk implements CompositeChunk { - - private List body; +public class QuestionChunk extends CompositeChunk { public QuestionChunk(List body) { - this.body = body; + super(body); } - public String asString() { - String content = ""; - for (Chunk c : body) { - content += c.asString(); - } - return p.parseQuestion(content); - } - } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/RubyChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/RubyChunk.java index ccf74ff..b7c0a86 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/RubyChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/RubyChunk.java @@ -1,9 +1,8 @@ package br.com.caelum.tubaina.chunk; -import br.com.caelum.tubaina.Chunk; -import br.com.caelum.tubaina.parser.Parser; +import br.com.caelum.tubaina.AbstractChunk; -public class RubyChunk implements Chunk { +public class RubyChunk extends AbstractChunk { private final String content; private final String options; @@ -13,8 +12,11 @@ public RubyChunk(String content, String options) { this.options = options; } - public String asString(Parser p) { - return p.parseRuby(content, options); + public String getContent() { + return content; + } + + public String getOptions() { + return options; } - } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/TableChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/TableChunk.java index 185e15c..e0d00c7 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/TableChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/TableChunk.java @@ -7,14 +7,13 @@ import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.CompositeChunk; -public class TableChunk implements CompositeChunk { +public class TableChunk extends CompositeChunk { - private final List rows; private boolean noborder; private String title; - public TableChunk(final String options, final List rows) { - this.rows = rows; + public TableChunk(String options, List rows) { + super(rows); this.noborder = false; this.title = ""; parseOptions(options); @@ -33,17 +32,9 @@ private void parseOptions(String options) { } } - public String asString() { - String content = ""; - for (Chunk c : rows) { - content += c.asString(); - } - return p.parseTable(content, title, noborder, this.getMaxNumberOfColumns()); - } - public int getMaxNumberOfColumns() { int maxColumns = 0; - for (Chunk chunk : rows) { + for (Chunk chunk : body) { if (chunk.getClass().equals(TableRowChunk.class)) { TableRowChunk row = (TableRowChunk) chunk; int columns = row.getNumberOfColumns(); @@ -54,4 +45,11 @@ public int getMaxNumberOfColumns() { return maxColumns; } + public boolean hasNoborder() { + return noborder; + } + + public String getTitle() { + return title; + } } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/TableColumnChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/TableColumnChunk.java index d289946..57bc0d4 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/TableColumnChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/TableColumnChunk.java @@ -5,20 +5,9 @@ import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.CompositeChunk; -public class TableColumnChunk implements CompositeChunk { - - private List cell; +public class TableColumnChunk extends CompositeChunk { public TableColumnChunk(List cell) { - this.cell = cell; - } - - public String asString() { - String content = ""; - for (Chunk c : cell) { - content += c.asString(); - } - return p.parseColumn(content); + super(cell); } - } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/TableRowChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/TableRowChunk.java index 527c4ef..88532d6 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/TableRowChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/TableRowChunk.java @@ -5,25 +5,15 @@ import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.CompositeChunk; -public class TableRowChunk implements CompositeChunk { - - private List cols; +public class TableRowChunk extends CompositeChunk { public TableRowChunk(List cols) { - this.cols = cols; - } - - public String asString() { - String content = ""; - for (Chunk c : cols) { - content += c.asString(); - } - return p.parseRow(content); + super(cols); } public int getNumberOfColumns() { int columns = 0; - for (Chunk c : cols) { + for (Chunk c : body) { if (c.getClass().equals(TableColumnChunk.class)) columns++; } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/TodoChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/TodoChunk.java index be69673..0f9e939 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/TodoChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/TodoChunk.java @@ -1,9 +1,8 @@ package br.com.caelum.tubaina.chunk; -import br.com.caelum.tubaina.Chunk; -import br.com.caelum.tubaina.parser.Parser; +import br.com.caelum.tubaina.AbstractChunk; -public class TodoChunk implements Chunk { +public class TodoChunk extends AbstractChunk { private String content; @@ -11,8 +10,7 @@ public TodoChunk(String content) { this.content = content; } - public String asString(Parser p) { - return p.parseTodo(this.content); + public String getContent() { + return content; } - } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/XmlChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/XmlChunk.java index f43c335..03c60f4 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/XmlChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/XmlChunk.java @@ -1,9 +1,9 @@ package br.com.caelum.tubaina.chunk; -import br.com.caelum.tubaina.Chunk; -import br.com.caelum.tubaina.parser.Parser; +import br.com.caelum.tubaina.AbstractChunk; + +public class XmlChunk extends AbstractChunk { -public class XmlChunk implements Chunk { private String content; private final String options; @@ -12,7 +12,11 @@ public XmlChunk(String options, String content) { this.content = content; } - public String asString(Parser p) { - return p.parseXml(content, options); + public String getContent() { + return content; + } + + public String getOptions() { + return options; } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/RegexConfigurator.java b/src/main/java/br/com/caelum/tubaina/parser/RegexConfigurator.java index 0de52c7..713b6d1 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/RegexConfigurator.java +++ b/src/main/java/br/com/caelum/tubaina/parser/RegexConfigurator.java @@ -5,16 +5,15 @@ import java.util.List; import java.util.Properties; - public class RegexConfigurator { - public List read(String regexFile, String replaceFile) throws IOException { + public List read(String regexFile, String replaceFile) throws IOException { Properties regexP = new Properties(); regexP.load(RegexConfigurator.class.getResourceAsStream(regexFile)); Properties replaceP = new Properties(); replaceP.load(RegexConfigurator.class.getResourceAsStream(replaceFile)); - List tags = new ArrayList(); + List tags = new ArrayList(); for (Object o : regexP.keySet()) { String key = (String) o; diff --git a/src/main/java/br/com/caelum/tubaina/parser/RegexTag.java b/src/main/java/br/com/caelum/tubaina/parser/RegexTag.java index c56603b..116ab7c 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/RegexTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/RegexTag.java @@ -2,9 +2,7 @@ import java.util.regex.Pattern; -import br.com.caelum.tubaina.Chunk; - -public class RegexTag implements Tag { +public class RegexTag { private String replacement; private Pattern regex; @@ -14,9 +12,8 @@ public RegexTag(String regex, String replacement) { this.replacement = replacement; } - public String parse(Chunk chunk) { - String out = regex.matcher(string).replaceAll(replacement); - return out; + public String parse(String string) { + return regex.matcher(string).replaceAll(replacement); } @Override diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/CenteredParagraphTagTemplate.java b/src/main/java/br/com/caelum/tubaina/parser/html/CenteredParagraphTagTemplate.java index df30d93..bf4a548 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/CenteredParagraphTagTemplate.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/CenteredParagraphTagTemplate.java @@ -1,12 +1,13 @@ package br.com.caelum.tubaina.parser.html; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.CenteredParagraphChunk; import br.com.caelum.tubaina.parser.Tag; -public class CenteredParagraphTagTemplate implements Tag { +public class CenteredParagraphTagTemplate implements Tag { - public String parse(Chunk chunk) { - return "

    " + string + "

    "; + @Override + public String parse(CenteredParagraphChunk chunk) { + return "

    " + chunk.getContent() + "

    "; } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/ImageTagTemplate.java b/src/main/java/br/com/caelum/tubaina/parser/html/ImageTagTemplate.java index 2338c55..217d968 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/ImageTagTemplate.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/ImageTagTemplate.java @@ -12,33 +12,30 @@ public class ImageTagTemplate { public String parse(final String path, final String options, boolean shouldUseHTMLWidth) { String imgsrc = FilenameUtils.getName(path); - String output = ""; + output.append(" alt=\"" + descriptionMatcher.group(1) + "\" />"); } else { - output = output + width + "alt=\"" + imgsrc + "\" />"; + output.append(" alt=\"" + imgsrc + "\" />"); } - return output; + return output.toString(); } public String parse(final String path, final String options) { diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/IndexTagTemplate.java b/src/main/java/br/com/caelum/tubaina/parser/html/IndexTagTemplate.java index bf29724..d4a5c45 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/IndexTagTemplate.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/IndexTagTemplate.java @@ -1,12 +1,13 @@ package br.com.caelum.tubaina.parser.html; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.IndexChunk; import br.com.caelum.tubaina.parser.Tag; -public class IndexTagTemplate implements Tag { +public class IndexTagTemplate implements Tag { - public String parse(Chunk chunk) { - return "\n\n"; + @Override + public String parse(IndexChunk chunk) { + return "\n\n"; } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/ItemTagTemplate.java b/src/main/java/br/com/caelum/tubaina/parser/html/ItemTagTemplate.java index 56ee650..cff165a 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/ItemTagTemplate.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/ItemTagTemplate.java @@ -1,11 +1,12 @@ package br.com.caelum.tubaina.parser.html; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.ItemChunk; import br.com.caelum.tubaina.parser.Tag; -public class ItemTagTemplate implements Tag { +public class ItemTagTemplate implements Tag { - public String parse(Chunk chunk) { - return "
  • " + string + "
  • "; + @Override + public String parse(ItemChunk chunk) { + return "
  • " + chunk.getContent() + "
  • "; } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/ListTagTemplate.java b/src/main/java/br/com/caelum/tubaina/parser/html/ListTagTemplate.java index 685b7a9..0dc4756 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/ListTagTemplate.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/ListTagTemplate.java @@ -1,11 +1,14 @@ package br.com.caelum.tubaina.parser.html; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.ListChunk; import br.com.caelum.tubaina.parser.Tag; -public class ListTagTemplate implements Tag { +public class ListTagTemplate implements Tag { - public String parse(Chunk chunk) { + @Override + public String parse(ListChunk chunk) { + String options = chunk.getType(); + String content = chunk.getContent(); if (options.contains("number")) return "
      " + content + "
    "; if (options.contains("letter")) diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/ParagraphTagTemplate.java b/src/main/java/br/com/caelum/tubaina/parser/html/ParagraphTagTemplate.java index a9bcad1..22589b4 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/ParagraphTagTemplate.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/ParagraphTagTemplate.java @@ -1,12 +1,13 @@ package br.com.caelum.tubaina.parser.html; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.ParagraphChunk; import br.com.caelum.tubaina.parser.Tag; -public class ParagraphTagTemplate implements Tag { +public class ParagraphTagTemplate implements Tag { - public String parse(Chunk chunk) { - return "

    " + string + "

    "; + @Override + public String parse(ParagraphChunk chunk) { + return "

    " + chunk.getContent() + "

    "; } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/QuestionTagTemplate.java b/src/main/java/br/com/caelum/tubaina/parser/html/QuestionTagTemplate.java index c0e0517..47aedff 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/QuestionTagTemplate.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/QuestionTagTemplate.java @@ -1,12 +1,13 @@ package br.com.caelum.tubaina.parser.html; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.QuestionChunk; import br.com.caelum.tubaina.parser.Tag; -public class QuestionTagTemplate implements Tag { +public class QuestionTagTemplate implements Tag { - public String parse(Chunk chunk) { - return "
  • " + string + "
  • "; + @Override + public String parse(QuestionChunk chunk) { + return "
  • " + chunk.getContent() + "
  • "; } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/TableColumnTagTemplate.java b/src/main/java/br/com/caelum/tubaina/parser/html/TableColumnTagTemplate.java index ca165d8..b9b7344 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/TableColumnTagTemplate.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/TableColumnTagTemplate.java @@ -1,12 +1,13 @@ package br.com.caelum.tubaina.parser.html; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.TableColumnChunk; import br.com.caelum.tubaina.parser.Tag; -public class TableColumnTagTemplate implements Tag { +public class TableColumnTagTemplate implements Tag { - public String parse(Chunk chunk) { - return "" + text + ""; + @Override + public String parse(TableColumnChunk chunk) { + return "" + chunk.getContent() + ""; } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/TableRowTagTemplate.java b/src/main/java/br/com/caelum/tubaina/parser/html/TableRowTagTemplate.java index 5abec37..80494fd 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/TableRowTagTemplate.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/TableRowTagTemplate.java @@ -1,12 +1,13 @@ package br.com.caelum.tubaina.parser.html; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.TableRowChunk; import br.com.caelum.tubaina.parser.Tag; -public class TableRowTagTemplate implements Tag { +public class TableRowTagTemplate implements Tag { - public String parse(Chunk chunk) { - return "" + string + ""; + @Override + public String parse(TableRowChunk chunk) { + return "" + chunk.getContent() + ""; } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/TableTagTemplate.java b/src/main/java/br/com/caelum/tubaina/parser/html/TableTagTemplate.java index 2ce9c21..fd0684c 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/TableTagTemplate.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/TableTagTemplate.java @@ -1,9 +1,9 @@ package br.com.caelum.tubaina.parser.html; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.TableChunk; import br.com.caelum.tubaina.parser.Tag; -public class TableTagTemplate implements Tag { +public class TableTagTemplate implements Tag { private boolean noborder; @@ -11,14 +11,16 @@ public TableTagTemplate(boolean noborder) { this.noborder = noborder; } - public String parse(Chunk chunk) { + @Override + public String parse(TableChunk chunk) { String result = ""; - if (options != null && options.trim().length() > 0) - result += "

    " + options + "

    "; + String title = chunk.getTitle(); + if (title != null && !title.trim().isEmpty()) + result += "

    " + title + "

    "; result += ""; + result += ">" + chunk.getContent() + ""; return result; } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/TodoTagTemplate.java b/src/main/java/br/com/caelum/tubaina/parser/html/TodoTagTemplate.java index a1bda21..7933e9d 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/TodoTagTemplate.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/TodoTagTemplate.java @@ -1,13 +1,14 @@ package br.com.caelum.tubaina.parser.html; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.TodoChunk; import br.com.caelum.tubaina.parser.Tag; -public class TodoTagTemplate implements Tag { +public class TodoTagTemplate implements Tag { private TodoTagTemplate template = new TodoTagTemplate(); - public String parse(Chunk chunk) { + @Override + public String parse(TodoChunk chunk) { return template.parse(chunk); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/CenteredParagraphTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/CenteredParagraphTag.java index b3a8089..22f1069 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/CenteredParagraphTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/CenteredParagraphTag.java @@ -1,14 +1,15 @@ package br.com.caelum.tubaina.parser.html.desktop; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.CenteredParagraphChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.CenteredParagraphTagTemplate; -public class CenteredParagraphTag implements Tag { +public class CenteredParagraphTag implements Tag { private CenteredParagraphTagTemplate template = new CenteredParagraphTagTemplate(); - public String parse(Chunk chunk) { + @Override + public String parse(CenteredParagraphChunk chunk) { return template.parse(chunk); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ImageTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ImageTag.java index e770fa5..679581a 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ImageTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ImageTag.java @@ -3,23 +3,24 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.TubainaException; +import br.com.caelum.tubaina.chunk.ImageChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.ImageTagTemplate; -public class ImageTag implements Tag { +public class ImageTag implements Tag { private ImageTagTemplate template = new ImageTagTemplate(); - public String parse(Chunk chunk) { + @Override + public String parse(ImageChunk chunk) { Pattern label = Pattern.compile("(?s)(?i)label=(\\w+)?"); - Matcher labelMatcher = label.matcher(options); + Matcher labelMatcher = label.matcher(chunk.getOptions()); if (labelMatcher.matches()) { throw new TubainaException("Image labels are not yet supported for html output"); } - return template.parse(path, options, false); + return template.parse(chunk.getPath(), chunk.getOptions(), false); } public Integer getScale(final String string) { diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/IndexTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/IndexTag.java index 8daf881..83e8cbe 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/IndexTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/IndexTag.java @@ -1,13 +1,14 @@ package br.com.caelum.tubaina.parser.html.desktop; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.IndexChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.IndexTagTemplate; -public class IndexTag implements Tag { +public class IndexTag implements Tag { private IndexTagTemplate template = new IndexTagTemplate(); - public String parse(Chunk chunk) { + @Override + public String parse(IndexChunk chunk) { return template.parse(chunk); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ItemTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ItemTag.java index ce8d0ab..613fc58 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ItemTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ItemTag.java @@ -1,13 +1,14 @@ package br.com.caelum.tubaina.parser.html.desktop; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.ItemChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.ItemTagTemplate; -public class ItemTag implements Tag { +public class ItemTag implements Tag { private ItemTagTemplate template = new ItemTagTemplate(); - public String parse(Chunk chunk) { + @Override + public String parse(ItemChunk chunk) { return template.parse(chunk); } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/JavaTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/JavaTag.java index c2bf26f..c2b6b88 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/JavaTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/JavaTag.java @@ -1,12 +1,12 @@ package br.com.caelum.tubaina.parser.html.desktop; -import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.TubainaException; +import br.com.caelum.tubaina.chunk.JavaChunk; import br.com.caelum.tubaina.parser.Indentator; import br.com.caelum.tubaina.parser.Tag; @Deprecated -public class JavaTag implements Tag { +public class JavaTag implements Tag { private static final String MESSAGE = "[java] Tag is deprecated and can't be used anymore. Use [code java] instead"; @@ -14,7 +14,8 @@ public JavaTag(Indentator indentator) { throw new TubainaException(MESSAGE); } - public String parse(Chunk chunk) { + @Override + public String parse(JavaChunk chunk) { throw new TubainaException(MESSAGE); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ListTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ListTag.java index 29466f8..8eee68e 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ListTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ListTag.java @@ -1,14 +1,15 @@ package br.com.caelum.tubaina.parser.html.desktop; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.ListChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.ListTagTemplate; -public class ListTag implements Tag { +public class ListTag implements Tag { private ListTagTemplate template = new ListTagTemplate(); - public String parse(Chunk chunk) { + @Override + public String parse(ListChunk chunk) { return template.parse(chunk); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/NoteTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/NoteTag.java index 605ef83..c84505b 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/NoteTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/NoteTag.java @@ -1,12 +1,13 @@ package br.com.caelum.tubaina.parser.html.desktop; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.NoteChunk; import br.com.caelum.tubaina.parser.Tag; -public class NoteTag implements Tag { +public class NoteTag implements Tag { - public String parse(Chunk chunk) { - return "
    " + content.trim() + "
    "; + @Override + public String parse(NoteChunk chunk) { + return "
    " + chunk.getContent().trim() + "
    "; } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ParagraphTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ParagraphTag.java index 07f8187..893d160 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ParagraphTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ParagraphTag.java @@ -1,14 +1,15 @@ package br.com.caelum.tubaina.parser.html.desktop; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.ParagraphChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.ParagraphTagTemplate; -public class ParagraphTag implements Tag { +public class ParagraphTag implements Tag { private ParagraphTagTemplate template = new ParagraphTagTemplate(); - public String parse(Chunk chunk) { + @Override + public String parse(ParagraphChunk chunk) { return template.parse(chunk); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/QuestionTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/QuestionTag.java index ec598b8..f3ceca8 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/QuestionTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/QuestionTag.java @@ -1,14 +1,15 @@ package br.com.caelum.tubaina.parser.html.desktop; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.QuestionChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.QuestionTagTemplate; -public class QuestionTag implements Tag { +public class QuestionTag implements Tag { private QuestionTagTemplate template = new QuestionTagTemplate(); - public String parse(Chunk chunk) { + @Override + public String parse(QuestionChunk chunk) { return template.parse(chunk); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/RubyTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/RubyTag.java index 6c72113..f22797f 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/RubyTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/RubyTag.java @@ -1,12 +1,12 @@ package br.com.caelum.tubaina.parser.html.desktop; -import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.TubainaException; +import br.com.caelum.tubaina.chunk.RubyChunk; import br.com.caelum.tubaina.parser.Indentator; import br.com.caelum.tubaina.parser.Tag; @Deprecated -public class RubyTag implements Tag { +public class RubyTag implements Tag { private static final String MESSAGE = "[ruby] Tag is deprecated and can't be used anymore. Use [code ruby] instead"; @@ -14,7 +14,8 @@ public RubyTag(Indentator indentator) { throw new TubainaException(MESSAGE); } - public String parse(Chunk chunk) { + @Override + public String parse(RubyChunk chunk) { throw new TubainaException(MESSAGE); } } \ No newline at end of file diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableColumnTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableColumnTag.java index 6bc20ee..eddc65f 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableColumnTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableColumnTag.java @@ -1,14 +1,15 @@ package br.com.caelum.tubaina.parser.html.desktop; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.TableColumnChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.TableColumnTagTemplate; -public class TableColumnTag implements Tag { +public class TableColumnTag implements Tag { private TableColumnTagTemplate template = new TableColumnTagTemplate(); - public String parse(Chunk chunk) { + @Override + public String parse(TableColumnChunk chunk) { return template.parse(chunk); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableRowTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableRowTag.java index 503773c..9bc5a74 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableRowTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableRowTag.java @@ -1,14 +1,15 @@ package br.com.caelum.tubaina.parser.html.desktop; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.TableRowChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.TableRowTagTemplate; -public class TableRowTag implements Tag { +public class TableRowTag implements Tag { private TableRowTagTemplate template = new TableRowTagTemplate(); - public String parse(Chunk chunk) { + @Override + public String parse(TableRowChunk chunk) { return template.parse(chunk); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableTag.java index 1440d35..76ffefb 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableTag.java @@ -1,10 +1,10 @@ package br.com.caelum.tubaina.parser.html.desktop; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.TableChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.TableTagTemplate; -public class TableTag implements Tag { +public class TableTag implements Tag { private TableTagTemplate template; @@ -12,7 +12,8 @@ public TableTag(boolean noborder) { template = new TableTagTemplate(noborder); } - public String parse(Chunk chunk) { + @Override + public String parse(TableChunk chunk) { return template.parse(chunk); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TodoTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TodoTag.java index 0cb92f4..63e2dde 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TodoTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TodoTag.java @@ -5,17 +5,18 @@ import java.io.FileOutputStream; import java.io.PrintStream; -import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.TubainaException; +import br.com.caelum.tubaina.chunk.TodoChunk; import br.com.caelum.tubaina.parser.Tag; -public class TodoTag implements Tag { +public class TodoTag implements Tag { - public String parse(Chunk chunk) { + @Override + public String parse(TodoChunk chunk) { try { PrintStream stream = new PrintStream(new FileOutputStream(new File("todo.log"), true)); stream.println("<==========================================================>"); - stream.println(string.trim()); + stream.println(chunk.getContent().trim()); } catch (FileNotFoundException e) { throw new TubainaException("File could not be read", e); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/XmlTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/XmlTag.java index c1eaab4..e139a28 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/XmlTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/XmlTag.java @@ -1,12 +1,12 @@ package br.com.caelum.tubaina.parser.html.desktop; -import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.TubainaException; +import br.com.caelum.tubaina.chunk.XmlChunk; import br.com.caelum.tubaina.parser.Indentator; import br.com.caelum.tubaina.parser.Tag; @Deprecated -public class XmlTag implements Tag { +public class XmlTag implements Tag { private static final String MESSAGE = "[xml] Tag is deprecated and can't be used anymore. Use [code xml] instead"; @@ -14,7 +14,8 @@ public XmlTag(Indentator indentator) { throw new TubainaException(MESSAGE); } - public String parse(Chunk chunk) { + @Override + public String parse(XmlChunk chunk) { throw new TubainaException(MESSAGE); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/CenteredParagraphTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/CenteredParagraphTag.java index 34b43d5..bc3d9e7 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/CenteredParagraphTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/CenteredParagraphTag.java @@ -1,13 +1,14 @@ package br.com.caelum.tubaina.parser.html.kindle; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.CenteredParagraphChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.CenteredParagraphTagTemplate; -public class CenteredParagraphTag implements Tag { +public class CenteredParagraphTag implements Tag { private CenteredParagraphTagTemplate template = new CenteredParagraphTagTemplate(); - public String parse(Chunk chunk) { + @Override + public String parse(CenteredParagraphChunk chunk) { return template.parse(chunk); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ImageTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ImageTag.java index cd7d7ef..8f3e357 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ImageTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ImageTag.java @@ -1,15 +1,16 @@ package br.com.caelum.tubaina.parser.html.kindle; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.ImageChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.ImageTagTemplate; -public class ImageTag implements Tag { +public class ImageTag implements Tag { private ImageTagTemplate template = new ImageTagTemplate(); - public String parse(Chunk chunk) { - return template.parse(path, options, true); + @Override + public String parse(ImageChunk chunk) { + return template.parse(chunk.getPath(), chunk.getOptions(), true); } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/IndexTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/IndexTag.java index ac8ec9f..92e095d 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/IndexTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/IndexTag.java @@ -1,13 +1,14 @@ package br.com.caelum.tubaina.parser.html.kindle; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.IndexChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.IndexTagTemplate; -public class IndexTag implements Tag { +public class IndexTag implements Tag { private IndexTagTemplate template = new IndexTagTemplate(); - public String parse(Chunk chunk) { + @Override + public String parse(IndexChunk chunk) { return template.parse(chunk); } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ItemTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ItemTag.java index a0a6630..2efafaf 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ItemTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ItemTag.java @@ -1,13 +1,14 @@ package br.com.caelum.tubaina.parser.html.kindle; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.ItemChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.ItemTagTemplate; -public class ItemTag implements Tag { +public class ItemTag implements Tag { private ItemTagTemplate template = new ItemTagTemplate(); - public String parse(Chunk chunk) { + @Override + public String parse(ItemChunk chunk) { return template.parse(chunk); } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/JavaTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/JavaTag.java index 5197350..5859c53 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/JavaTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/JavaTag.java @@ -1,15 +1,16 @@ package br.com.caelum.tubaina.parser.html.kindle; -import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.TubainaException; +import br.com.caelum.tubaina.chunk.JavaChunk; import br.com.caelum.tubaina.parser.Tag; @Deprecated -public class JavaTag implements Tag { +public class JavaTag implements Tag { private static final String MESSAGE = "[java] Tag is deprecated and can't be used anymore. Use [code java] instead"; - public String parse(Chunk chunk) { + @Override + public String parse(JavaChunk chunk) { throw new TubainaException(MESSAGE); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ListTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ListTag.java index 319045c..355b3a3 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ListTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ListTag.java @@ -1,14 +1,15 @@ package br.com.caelum.tubaina.parser.html.kindle; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.ListChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.ListTagTemplate; -public class ListTag implements Tag { +public class ListTag implements Tag { private ListTagTemplate template = new ListTagTemplate(); - public String parse(Chunk chunk) { + @Override + public String parse(ListChunk chunk) { return template.parse(chunk); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/NoteTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/NoteTag.java index faa756b..90dbdb6 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/NoteTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/NoteTag.java @@ -1,12 +1,13 @@ package br.com.caelum.tubaina.parser.html.kindle; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.NoteChunk; import br.com.caelum.tubaina.parser.Tag; -public class NoteTag implements Tag { +public class NoteTag implements Tag { - public String parse(Chunk chunk) { - return "---------------------------
    " + content.trim() + "
    ---------------------------"; + @Override + public String parse(NoteChunk chunk) { + return "---------------------------
    " + chunk.getContent().trim() + "
    ---------------------------"; } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ParagraphTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ParagraphTag.java index 3b1b9a4..812e6fc 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ParagraphTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ParagraphTag.java @@ -1,14 +1,15 @@ package br.com.caelum.tubaina.parser.html.kindle; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.ParagraphChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.ParagraphTagTemplate; -public class ParagraphTag implements Tag { +public class ParagraphTag implements Tag { private ParagraphTagTemplate template = new ParagraphTagTemplate(); - public String parse(Chunk chunk) { + @Override + public String parse(ParagraphChunk chunk) { return template.parse(chunk); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/QuestionTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/QuestionTag.java index 4d199b2..8bf782e 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/QuestionTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/QuestionTag.java @@ -1,14 +1,15 @@ package br.com.caelum.tubaina.parser.html.kindle; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.QuestionChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.QuestionTagTemplate; -public class QuestionTag implements Tag { +public class QuestionTag implements Tag { private QuestionTagTemplate template = new QuestionTagTemplate(); - public String parse(Chunk chunk) { + @Override + public String parse(QuestionChunk chunk) { return template.parse(chunk); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/RubyTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/RubyTag.java index 0be5f65..71aa2b5 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/RubyTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/RubyTag.java @@ -1,15 +1,16 @@ package br.com.caelum.tubaina.parser.html.kindle; -import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.TubainaException; +import br.com.caelum.tubaina.chunk.RubyChunk; import br.com.caelum.tubaina.parser.Tag; @Deprecated -public class RubyTag implements Tag { +public class RubyTag implements Tag { private static final String MESSAGE = "[ruby] Tag is deprecated and can't be used anymore. Use [code ruby] instead"; - public String parse(Chunk chunk) { + @Override + public String parse(RubyChunk chunk) { throw new TubainaException(MESSAGE); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableColumnTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableColumnTag.java index 06c020b..882d10f 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableColumnTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableColumnTag.java @@ -1,14 +1,15 @@ package br.com.caelum.tubaina.parser.html.kindle; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.TableColumnChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.TableColumnTagTemplate; -public class TableColumnTag implements Tag { +public class TableColumnTag implements Tag { private TableColumnTagTemplate template = new TableColumnTagTemplate(); - public String parse(Chunk chunk) { + @Override + public String parse(TableColumnChunk chunk) { return template.parse(chunk); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableRowTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableRowTag.java index adb0806..4ce3e9a 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableRowTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableRowTag.java @@ -1,14 +1,15 @@ package br.com.caelum.tubaina.parser.html.kindle; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.TableRowChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.TableRowTagTemplate; -public class TableRowTag implements Tag { +public class TableRowTag implements Tag { private TableRowTagTemplate template = new TableRowTagTemplate(); - public String parse(Chunk chunk) { + @Override + public String parse(TableRowChunk chunk) { return template.parse(chunk); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableTag.java index 15ef357..d063046 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableTag.java @@ -1,10 +1,10 @@ package br.com.caelum.tubaina.parser.html.kindle; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.TableChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.TableTagTemplate; -public class TableTag implements Tag { +public class TableTag implements Tag { private TableTagTemplate template; @@ -12,7 +12,8 @@ public TableTag(boolean noborder) { template = new TableTagTemplate(noborder); } - public String parse(Chunk chunk) { + @Override + public String parse(TableChunk chunk) { return template.parse(chunk); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TodoTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TodoTag.java index 348338f..15e5351 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TodoTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TodoTag.java @@ -5,17 +5,18 @@ import java.io.FileOutputStream; import java.io.PrintStream; -import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.TubainaException; +import br.com.caelum.tubaina.chunk.TodoChunk; import br.com.caelum.tubaina.parser.Tag; -public class TodoTag implements Tag { +public class TodoTag implements Tag { - public String parse(Chunk chunk) { + @Override + public String parse(TodoChunk chunk) { try { PrintStream stream = new PrintStream(new FileOutputStream(new File("todo.log"), true)); stream.println("<==========================================================>"); - stream.println(string.trim()); + stream.println(chunk.getContent().trim()); } catch (FileNotFoundException e) { throw new TubainaException("File could not be read", e); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/XmlTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/XmlTag.java index 6c05676..f30f6fe 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/XmlTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/XmlTag.java @@ -1,15 +1,16 @@ package br.com.caelum.tubaina.parser.html.kindle; -import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.TubainaException; +import br.com.caelum.tubaina.chunk.XmlChunk; import br.com.caelum.tubaina.parser.Tag; @Deprecated -public class XmlTag implements Tag { +public class XmlTag implements Tag { private static final String MESSAGE = "[xml] Tag is deprecated and can't be used anymore. Use [code xml] instead"; - public String parse(Chunk chunk) { + @Override + public String parse(XmlChunk chunk) { throw new TubainaException(MESSAGE); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/EscapeTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/EscapeTag.java index 4a00d5d..a21dfc7 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/EscapeTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/EscapeTag.java @@ -1,14 +1,12 @@ package br.com.caelum.tubaina.parser.latex; -import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.TubainaException; -import br.com.caelum.tubaina.parser.Tag; -public class EscapeTag implements Tag { +public class EscapeTag { private StringBuilder text = new StringBuilder(); - public String parse(Chunk chunk) { + public String parse(String content) { int posicaoAtual = escapaAteVerbatim(content, 0); while (posicaoAtual < content.length()) { int fimVerbatim = content.indexOf("[/verbatim]", posicaoAtual); diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/ImageTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/ImageTag.java index 850cbf4..2888f3a 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/ImageTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/ImageTag.java @@ -5,62 +5,49 @@ import org.apache.commons.io.FilenameUtils; -import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.TubainaBuilder; +import br.com.caelum.tubaina.chunk.ImageChunk; import br.com.caelum.tubaina.parser.Tag; -public class ImageTag implements Tag { +public class ImageTag implements Tag { - public String parse(Chunk chunk) { - String output = "\\begin{figure}[H]\n\\begin{center}\n"; - - output = output + "\\includegraphics"; - - Pattern label = Pattern.compile("(?s)(?i)label=(\\S+)?"); - Matcher labelMatcher = label.matcher(options); - - Pattern description = Pattern.compile("(?s)(?i)\"(.+?)\""); - Matcher descriptionMatcher = description.matcher(options); + @Override + public String parse(ImageChunk chunk) { + String options = chunk.getOptions(); + double imageWidthInMilimeters = chunk.getWidth() * 25.4 / chunk.getDpi(); - Pattern horizontalScale = Pattern.compile("(?s)(?i)w=(\\d+)%?"); - Matcher horizontalMatcher = horizontalScale.matcher(options); - - Pattern actualWidth = Pattern.compile("(?s)(?i)\\[(.+?),(.+?)\\]"); - Matcher actualWidthMatcher = actualWidth.matcher(options); - - double widthInPixels = Double.MAX_VALUE; - int dpi = 72; - if (actualWidthMatcher.find()) { - widthInPixels = Double.parseDouble(actualWidthMatcher.group(1)); - dpi = Integer.parseInt(actualWidthMatcher.group(2)); - } - - double widthInMilimeters = widthInPixels * 25.4 / dpi; + StringBuilder output = new StringBuilder("\\begin{figure}[H]\n\\begin{center}\n"); + output.append("\\includegraphics"); - if (horizontalMatcher.find()) { - output = output + "[width=" + TubainaBuilder.getMaximumWidth() * (Double.parseDouble(horizontalMatcher.group(1)) / 100) + "mm]"; - } else if (widthInMilimeters > TubainaBuilder.getMaximumWidth()) { - output = output + "[width=\\textwidth]"; + Pattern horizontalScale = Pattern.compile("(?s)(?i)w=(\\d+)%?"); + Matcher widthOptionMatcher = horizontalScale.matcher(options); + if (widthOptionMatcher.find()) { + output.append("[width=" + (TubainaBuilder.getMaximumWidth() * (Double.parseDouble(widthOptionMatcher.group(1)) / 100)) + "mm]"); + } else if (imageWidthInMilimeters > TubainaBuilder.getMaximumWidth()) { + output.append("[width=\\textwidth]"); } else { - output = output + "[scale=1]"; + output.append("[scale=1]"); } - String imgsrc = FilenameUtils.getName(path); - output = output + "{" + imgsrc + "}\n"; + String imgsrc = FilenameUtils.getName(chunk.getPath()); + output.append("{" + imgsrc + "}\n"); + Pattern description = Pattern.compile("(?s)(?i)\"(.+?)\""); + Matcher descriptionMatcher = description.matcher(options); if (descriptionMatcher.find()) { - output = output + "\n\n\\caption{" + descriptionMatcher.group(1) + "}\n\n"; + output.append("\n\n\\caption{" + descriptionMatcher.group(1) + "}\n\n"); } + Pattern label = Pattern.compile("(?s)(?i)label=(\\S+)?"); + Matcher labelMatcher = label.matcher(options); if (labelMatcher.find()) { String givenLabel = labelMatcher.group(1); - - output += "\\label{" + (givenLabel != null? givenLabel : imgsrc) + "}\n"; + output.append("\\label{" + (givenLabel != null? givenLabel : imgsrc) + "}\n"); } - output = output + "\\end{center}\\end{figure}\n\n"; + output.append("\\end{center}\\end{figure}\n\n"); - return output; + return output.toString(); } public Integer getScale(final String string) { diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/IndexTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/IndexTag.java index 47a9fe0..4e3e408 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/IndexTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/IndexTag.java @@ -1,12 +1,13 @@ package br.com.caelum.tubaina.parser.latex; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.IndexChunk; import br.com.caelum.tubaina.parser.Tag; -public class IndexTag implements Tag { +public class IndexTag implements Tag { - public String parse(Chunk chunk) { - return "\n\\index{" + escapeUnderscores(content) + "}\n"; + @Override + public String parse(IndexChunk chunk) { + return "\n\\index{" + escapeUnderscores(chunk.getName()) + "}\n"; } public String escapeUnderscores(String content) { diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/ItemTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/ItemTag.java index a37d55c..1e8ff36 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/ItemTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/ItemTag.java @@ -1,12 +1,13 @@ package br.com.caelum.tubaina.parser.latex; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.ItemChunk; import br.com.caelum.tubaina.parser.Tag; -public class ItemTag implements Tag { +public class ItemTag implements Tag { - public String parse(Chunk chunk) { - return "\n\\item{" + string.trim() + "}\n"; + @Override + public String parse(ItemChunk chunk) { + return "\n\\item{" + chunk.getContent() + "}\n"; } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/JavaTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/JavaTag.java index 3032a21..edc62b8 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/JavaTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/JavaTag.java @@ -1,21 +1,21 @@ package br.com.caelum.tubaina.parser.latex; -import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.TubainaException; +import br.com.caelum.tubaina.chunk.JavaChunk; import br.com.caelum.tubaina.parser.Indentator; import br.com.caelum.tubaina.parser.Tag; @Deprecated -public class JavaTag implements Tag { - - +public class JavaTag implements Tag { + private static final String MESSAGE = "[java] Tag is deprecated and can't be used anymore. Use [code java] instead"; public JavaTag(Indentator indentator) { throw new TubainaException(MESSAGE); } - public String parse(Chunk chunk) { + @Override + public String parse(JavaChunk chunk) { throw new TubainaException(MESSAGE); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/LatexGenerator.java b/src/main/java/br/com/caelum/tubaina/parser/latex/LatexGenerator.java index 9f65be2..3ca36d6 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/LatexGenerator.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/LatexGenerator.java @@ -97,7 +97,7 @@ private void copyResources(File directory, Book b) throws IOException { } List resources = retrieveResources(b); - ResourceManipulator manipulator = new LatexResourceManipulator(directory, answerFile, parser, noAnswer); + ResourceManipulator manipulator = new LatexResourceManipulator(directory, answerFile, noAnswer); copyResources(resources, manipulator); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/LinkTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/LinkTag.java index b987a45..aa2f746 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/LinkTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/LinkTag.java @@ -7,7 +7,7 @@ import br.com.caelum.tubaina.parser.Tag; public class LinkTag implements Tag { - + private final String replace; public LinkTag(String replace) { diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/ListTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/ListTag.java index 1c70422..ba58ec2 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/ListTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/ListTag.java @@ -1,12 +1,14 @@ package br.com.caelum.tubaina.parser.latex; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.ListChunk; import br.com.caelum.tubaina.parser.Tag; -public class ListTag implements Tag { +public class ListTag implements Tag { - public String parse(Chunk chunk) { + @Override + public String parse(ListChunk chunk) { String listHeader = "\\begin{enumerate}["; + String options = chunk.getType(); if (options.contains("number")) listHeader += "1)"; else if (options.contains("letter")) @@ -15,10 +17,10 @@ else if (options.contains("roman")) listHeader += "I)"; else { //If type is invalid, we use itemize environment - return "\\begin{itemize}" + content + "\\end{itemize}"; + return "\\begin{itemize}" + chunk.getContent() + "\\end{itemize}"; } - return listHeader + "]\n" + content + "\n\\end{enumerate}"; + return listHeader + "]\n" + chunk.getContent() + "\n\\end{enumerate}"; } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/NoteTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/NoteTag.java index 04066c5..4d9e194 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/NoteTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/NoteTag.java @@ -1,15 +1,16 @@ package br.com.caelum.tubaina.parser.latex; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.NoteChunk; import br.com.caelum.tubaina.parser.Tag; -public class NoteTag implements Tag { +public class NoteTag implements Tag { - public String parse(Chunk chunk) { + @Override + public String parse(NoteChunk chunk) { // The first \n is the title/content sepparator return "\\begin{tubainanote}\n" + - string + "\n" + + chunk.getContent() + "\n" + "\\end{tubainanote}"; } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/ParagraphTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/ParagraphTag.java index 7f4c35b..2fa0aec 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/ParagraphTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/ParagraphTag.java @@ -1,12 +1,13 @@ package br.com.caelum.tubaina.parser.latex; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.ParagraphChunk; import br.com.caelum.tubaina.parser.Tag; -public class ParagraphTag implements Tag { +public class ParagraphTag implements Tag { - public String parse(Chunk chunk) { - return "\n\n" + string; + @Override + public String parse(ParagraphChunk chunk) { + return "\n\n" + chunk.getContent(); } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/QuestionTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/QuestionTag.java index 41abafc..23b592a 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/QuestionTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/QuestionTag.java @@ -1,12 +1,13 @@ package br.com.caelum.tubaina.parser.latex; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.QuestionChunk; import br.com.caelum.tubaina.parser.Tag; -public class QuestionTag implements Tag { +public class QuestionTag implements Tag { - public String parse(Chunk chunk) { - return "\\item{" + string + "}"; + @Override + public String parse(QuestionChunk chunk) { + return "\\item{" + chunk.getContent() + "}"; } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/RubyTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/RubyTag.java index 5ed0bb3..059eb9e 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/RubyTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/RubyTag.java @@ -1,12 +1,12 @@ package br.com.caelum.tubaina.parser.latex; -import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.TubainaException; +import br.com.caelum.tubaina.chunk.RubyChunk; import br.com.caelum.tubaina.parser.Indentator; import br.com.caelum.tubaina.parser.Tag; @Deprecated -public class RubyTag implements Tag { +public class RubyTag implements Tag { private static final String MESSAGE = "[ruby] Tag is deprecated and can't be used anymore. Use [code ruby] instead"; @@ -14,7 +14,8 @@ public RubyTag(Indentator indentator) { throw new TubainaException(MESSAGE); } - public String parse(Chunk chunk) { + @Override + public String parse(RubyChunk chunk) { throw new TubainaException(MESSAGE); } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/TableColumnTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/TableColumnTag.java index 108c7f4..3f05a97 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/TableColumnTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/TableColumnTag.java @@ -1,12 +1,13 @@ package br.com.caelum.tubaina.parser.latex; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.TableColumnChunk; import br.com.caelum.tubaina.parser.Tag; -public class TableColumnTag implements Tag { +public class TableColumnTag implements Tag { - public String parse(Chunk chunk) { - return string + "& "; + @Override + public String parse(TableColumnChunk chunk) { + return chunk.getContent() + "& "; } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/TableRowTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/TableRowTag.java index b8ea7f8..d29865c 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/TableRowTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/TableRowTag.java @@ -1,11 +1,13 @@ package br.com.caelum.tubaina.parser.latex; -import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.TableRowChunk; import br.com.caelum.tubaina.parser.Tag; -public class TableRowTag implements Tag { +public class TableRowTag implements Tag { - public String parse(Chunk chunk) { + @Override + public String parse(TableRowChunk chunk) { + String string = chunk.getContent(); // Remove the & of the last column (put by the TableColumnTag) int lastColumnBreak = string.lastIndexOf('&'); // There IS a column break diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/TableTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/TableTag.java index c9ff0ad..e758033 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/TableTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/TableTag.java @@ -1,10 +1,10 @@ package br.com.caelum.tubaina.parser.latex; -import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.TubainaException; +import br.com.caelum.tubaina.chunk.TableChunk; import br.com.caelum.tubaina.parser.Tag; -public class TableTag implements Tag { +public class TableTag implements Tag { private final boolean noborder; private final int columns; @@ -14,10 +14,12 @@ public TableTag(boolean noborder, int columns) { this.columns = columns; } - public String parse(Chunk chunk) { + @Override + public String parse(TableChunk chunk) { + String title = chunk.getTitle(); if (this.columns <= 0) throw new TubainaException("There are no columns inside table " + title); - String tag = "\\begin{table}[!h]\n\\caption{" + title + "}\n\\begin{center}\n"; + String tag = "\\begin{table}[!h]\n\\caption{" + title + "}\n\\begin{center}\n"; if (!noborder) tag += "\\rowcolors[]{1}{gray!30}{gray!15}\n"; tag += "\\begin{tabularx}{"; @@ -26,7 +28,7 @@ public String parse(Chunk chunk) { tag += "}\n"; if (!noborder) tag += "\\hline\n"; - tag += text; + tag += chunk.getContent(); if (!noborder) tag += "\n\\hline"; tag += "\n\\end{tabularx}\n\\end{center}\n\\end{table}"; diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/TodoTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/TodoTag.java index 9e1847b..9810dcf 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/TodoTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/TodoTag.java @@ -5,17 +5,18 @@ import java.io.FileOutputStream; import java.io.PrintStream; -import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.TubainaException; +import br.com.caelum.tubaina.chunk.TodoChunk; import br.com.caelum.tubaina.parser.Tag; -public class TodoTag implements Tag { +public class TodoTag implements Tag { - public String parse(Chunk chunk) { + @Override + public String parse(TodoChunk chunk) { try { PrintStream stream = new PrintStream(new FileOutputStream(new File("todo.log"), true)); stream.println("<==========================================================>"); - stream.println(string.trim()); + stream.println(chunk.getContent().trim()); } catch (FileNotFoundException e) { throw new TubainaException("File could not be read", e); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/XmlTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/XmlTag.java index a2ee81d..b3066b5 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/XmlTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/XmlTag.java @@ -1,12 +1,12 @@ package br.com.caelum.tubaina.parser.latex; -import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.TubainaException; +import br.com.caelum.tubaina.chunk.XmlChunk; import br.com.caelum.tubaina.parser.Indentator; import br.com.caelum.tubaina.parser.Tag; @Deprecated -public class XmlTag implements Tag { +public class XmlTag implements Tag { private static final String MESSAGE = "[xml] Tag is deprecated and can't be used anymore. Use [code xml] instead"; @@ -14,7 +14,8 @@ public XmlTag(Indentator indentator) { throw new TubainaException(MESSAGE); } - public String parse(Chunk chunk) { + @Override + public String parse(XmlChunk chunk) { throw new TubainaException(MESSAGE); } diff --git a/src/main/java/br/com/caelum/tubaina/resources/LatexResourceManipulator.java b/src/main/java/br/com/caelum/tubaina/resources/LatexResourceManipulator.java index 859bea6..7f49862 100644 --- a/src/main/java/br/com/caelum/tubaina/resources/LatexResourceManipulator.java +++ b/src/main/java/br/com/caelum/tubaina/resources/LatexResourceManipulator.java @@ -14,7 +14,6 @@ import br.com.caelum.tubaina.TubainaBuilder; import br.com.caelum.tubaina.TubainaException; import br.com.caelum.tubaina.chunk.AnswerChunk; -import br.com.caelum.tubaina.parser.Parser; import br.com.caelum.tubaina.parser.latex.ImageTag; import br.com.caelum.tubaina.util.Utilities; @@ -28,17 +27,15 @@ public class LatexResourceManipulator implements ResourceManipulator { private static final int PAGE_WIDTH = TubainaBuilder.getMaximumWidth(); - private final Parser parser; - private final boolean noAnswer; - public LatexResourceManipulator(File imagePath, File answerFile, Parser parser, boolean noAnswer) { + public LatexResourceManipulator(File imagePath, File answerFile, boolean noAnswer) { this.imagePath = imagePath; this.answerFile = answerFile; - this.parser = parser; this.noAnswer = noAnswer; } + @Override public void copyAndScaleImage(File srcImage, String scale) { Integer width = new ImageTag().getScale(scale); if (srcImage.exists()) { @@ -64,10 +61,11 @@ public void copyAndScaleImage(File srcImage, String scale) { } + @Override public void copyAnswer(AnswerChunk chunk) { String answer = "\\begin{itemize}\n" + "\\item[\\ref{ans:" + chunk.getId() + "}.]{" + - chunk.getRealContent(parser) + "}\n" + + chunk.getContent() + "}\n" + "\\end{itemize}\n"; try { @@ -83,6 +81,7 @@ public void copyAnswer(AnswerChunk chunk) { throw new TubainaException("Invalid Encoding", e); } } + @Override public void copyExercise(int id) { String answer = "\\answerHead{\\ref{ex:"+id+"}}\n"; try { @@ -98,6 +97,7 @@ public void copyExercise(int id) { throw new TubainaException("Invalid Encoding", e); } } + @Override public void copyIndex(String name, int dirNumber) { // Latex makes index automaticaly } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/HtmlAndKindleCodeTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/HtmlAndKindleCodeTagTest.java index 5bcc9cd..53c6f99 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/HtmlAndKindleCodeTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/HtmlAndKindleCodeTagTest.java @@ -11,90 +11,94 @@ import org.junit.Before; import org.junit.Test; +import br.com.caelum.tubaina.chunk.CodeChunk; import br.com.caelum.tubaina.parser.html.desktop.SyntaxHighlighter; public class HtmlAndKindleCodeTagTest { - private String code; - private List emptyList; + private String code; + private List emptyList; - @Before - public void setUp() { - code = "public static void main(String[] args) {\n" + - " String name = \"Gabriel\";\n" + - " System.out.println(\"Hello, \" + name);\n" + - "}"; - emptyList = Collections.emptyList(); - } + @Before + public void setUp() { + code = "public static void main(String[] args) {\n" + " String name = \"Gabriel\";\n" + + " System.out.println(\"Hello, \" + name);\n" + "}"; + emptyList = Collections.emptyList(); + } - @Test - public void plainJavaCode() throws Exception { - String options = "java"; - SyntaxHighlighter htmlCodeHighlighter = mock(SyntaxHighlighter.class); - HtmlAndKindleCodeTag codeTag = new HtmlAndKindleCodeTag(htmlCodeHighlighter); - codeTag.parse(chunk); - verify(htmlCodeHighlighter).highlight(eq(code), eq(options), eq(false), eq(emptyList)); - } + @Test + public void plainJavaCode() throws Exception { + String options = "java"; + SyntaxHighlighter htmlCodeHighlighter = mock(SyntaxHighlighter.class); + HtmlAndKindleCodeTag codeTag = new HtmlAndKindleCodeTag(htmlCodeHighlighter); + CodeChunk chunk = new CodeChunk(code, options); + codeTag.parse(chunk); + verify(htmlCodeHighlighter).highlight(eq(code), eq(options), eq(false), eq(emptyList)); + } - @Test - public void javaCodeWithNumberedLines() throws Exception { - String options = "java #"; - SyntaxHighlighter htmlCodeHighlighter = mock(SyntaxHighlighter.class); - HtmlAndKindleCodeTag codeTag = new HtmlAndKindleCodeTag(htmlCodeHighlighter); - codeTag.parse(chunk); - verify(htmlCodeHighlighter).highlight(eq(code), eq("java"), eq(true), eq(emptyList)); - } + @Test + public void javaCodeWithNumberedLines() throws Exception { + String options = "java #"; + SyntaxHighlighter htmlCodeHighlighter = mock(SyntaxHighlighter.class); + HtmlAndKindleCodeTag codeTag = new HtmlAndKindleCodeTag(htmlCodeHighlighter); + CodeChunk chunk = new CodeChunk(code, options); + codeTag.parse(chunk); + verify(htmlCodeHighlighter).highlight(eq(code), eq("java"), eq(true), eq(emptyList)); + } - @Test - public void plainRubyCode() throws Exception { - String options = "ruby"; - String rubyCode = "@name = \"Gabriel\"\n" + "puts \"Hello, \" + name"; - SyntaxHighlighter htmlCodeHighlighter = mock(SyntaxHighlighter.class); - HtmlAndKindleCodeTag codeTag = new HtmlAndKindleCodeTag(htmlCodeHighlighter); - codeTag.parse(chunk); - verify(htmlCodeHighlighter).highlight(eq(rubyCode), eq("ruby"), eq(false), eq(emptyList)); - } + @Test + public void plainRubyCode() throws Exception { + String options = "ruby"; + String rubyCode = "@name = \"Gabriel\"\n" + "puts \"Hello, \" + name"; + SyntaxHighlighter htmlCodeHighlighter = mock(SyntaxHighlighter.class); + HtmlAndKindleCodeTag codeTag = new HtmlAndKindleCodeTag(htmlCodeHighlighter); + CodeChunk chunk = new CodeChunk(rubyCode, options); + codeTag.parse(chunk); + verify(htmlCodeHighlighter).highlight(eq(rubyCode), eq("ruby"), eq(false), eq(emptyList)); + } - @Test - public void noLanguageDefinedIsTreatedAsText() throws Exception { - String options = ""; - String noParticularLanguage = "Some text explaining some new bizarre\n" - + "syntax in a very code alike way"; - SyntaxHighlighter htmlCodeHighlighter = mock(SyntaxHighlighter.class); - HtmlAndKindleCodeTag codeTag = new HtmlAndKindleCodeTag(htmlCodeHighlighter); - codeTag.parse(chunk); - verify(htmlCodeHighlighter).highlight(eq(noParticularLanguage), eq("text"), eq(false), eq(emptyList)); - } + @Test + public void noLanguageDefinedIsTreatedAsText() throws Exception { + String options = ""; + String noParticularLanguage = "Some text explaining some new bizarre\n" + "syntax in a very code alike way"; + SyntaxHighlighter htmlCodeHighlighter = mock(SyntaxHighlighter.class); + HtmlAndKindleCodeTag codeTag = new HtmlAndKindleCodeTag(htmlCodeHighlighter); + CodeChunk chunk = new CodeChunk(noParticularLanguage, options); + codeTag.parse(chunk); + verify(htmlCodeHighlighter).highlight(eq(noParticularLanguage), eq("text"), eq(false), eq(emptyList)); + } + + @Test + public void noLanguageDefinedIsTreatedAsTextEvenWhenItIsNumbered() throws Exception { + String options = "#"; + String noParticularLanguage = "Some text explaining some new bizarre\n" + "syntax in a very code alike way"; + SyntaxHighlighter htmlCodeHighlighter = mock(SyntaxHighlighter.class); + HtmlAndKindleCodeTag codeTag = new HtmlAndKindleCodeTag(htmlCodeHighlighter); + CodeChunk chunk = new CodeChunk(noParticularLanguage, options); + codeTag.parse(chunk); + verify(htmlCodeHighlighter).highlight(eq(noParticularLanguage), eq("text"), eq(true), eq(emptyList)); + } + + @Test + public void shouldNotConsiderLabelAsLanguage() throws Exception { + String options = "label=world"; + String noParticularLanguage = "Some code"; + SyntaxHighlighter htmlCodeHighlighter = mock(SyntaxHighlighter.class); + HtmlAndKindleCodeTag codeTag = new HtmlAndKindleCodeTag(htmlCodeHighlighter); + CodeChunk chunk = new CodeChunk(noParticularLanguage, options); + codeTag.parse(chunk); + verify(htmlCodeHighlighter).highlight(eq(noParticularLanguage), eq("text"), eq(false), eq(emptyList)); + } + + @Test + public void shouldConsiderLineHighlightOption() throws Exception { + String options = "h=1,2"; + String noParticularLanguage = "Some code"; + SyntaxHighlighter htmlCodeHighlighter = mock(SyntaxHighlighter.class); + HtmlAndKindleCodeTag codeTag = new HtmlAndKindleCodeTag(htmlCodeHighlighter); + CodeChunk chunk = new CodeChunk(noParticularLanguage, options); + codeTag.parse(chunk); + verify(htmlCodeHighlighter).highlight(eq(noParticularLanguage), eq("text"), eq(false), eq(Arrays.asList(1, 2))); + } - @Test - public void noLanguageDefinedIsTreatedAsTextEvenWhenItIsNumbered() throws Exception { - String options = "#"; - String noParticularLanguage = "Some text explaining some new bizarre\n" - + "syntax in a very code alike way"; - SyntaxHighlighter htmlCodeHighlighter = mock(SyntaxHighlighter.class); - HtmlAndKindleCodeTag codeTag = new HtmlAndKindleCodeTag(htmlCodeHighlighter); - codeTag.parse(chunk); - verify(htmlCodeHighlighter).highlight(eq(noParticularLanguage), eq("text"), eq(true), eq(emptyList)); - } - - @Test - public void shouldNotConsiderLabelAsLanguage() throws Exception { - String options = "label=world"; - String noParticularLanguage = "Some code"; - SyntaxHighlighter htmlCodeHighlighter = mock(SyntaxHighlighter.class); - HtmlAndKindleCodeTag codeTag = new HtmlAndKindleCodeTag(htmlCodeHighlighter); - codeTag.parse(chunk); - verify(htmlCodeHighlighter).highlight(eq(noParticularLanguage), eq("text"), eq(false), eq(emptyList)); - } - - @Test - public void shouldConsiderLineHighlightOption() throws Exception { - String options = "h=1,2"; - String noParticularLanguage = "Some code"; - SyntaxHighlighter htmlCodeHighlighter = mock(SyntaxHighlighter.class); - HtmlAndKindleCodeTag codeTag = new HtmlAndKindleCodeTag(htmlCodeHighlighter); - codeTag.parse(chunk); - verify(htmlCodeHighlighter).highlight(eq(noParticularLanguage), eq("text"), eq(false), eq(Arrays.asList(1,2))); - } - } From f5e1e66f682fe52a0bf525313a139822627c004a Mon Sep 17 00:00:00 2001 From: Ceci Fernandes & Chico Sokol Date: Mon, 25 Mar 2013 17:54:54 -0300 Subject: [PATCH 03/17] [Adding Guice] starting to make tests pass. Latex BoxTagTest is a first. --- build.gradle | 1 + .../br/com/caelum/tubaina/CompositeChunk.java | 3 + .../br/com/caelum/tubaina/chunk/BoxChunk.java | 4 +- .../com/caelum/tubaina/chunk/MockedChunk.java | 9 +- .../tubaina/parser/IntroductionTag.java | 12 +++ .../br/com/caelum/tubaina/parser/NullTag.java | 12 +++ .../tubaina/parser/SimpleIndentator.java | 7 +- .../caelum/tubaina/parser/TubainaModule.java | 55 ++++++++++++ .../tubaina/parser/html/desktop/CodeTag.java | 6 +- .../parser/html/desktop/HtmlModule.java | 57 ++++++++++++ .../html/desktop/SyntaxHighlighter.java | 9 +- .../tubaina/parser/html/kindle/CodeTag.java | 6 +- .../parser/html/kindle/KindleModule.java | 53 +++++++++++ .../caelum/tubaina/parser/latex/GistTag.java | 4 +- .../tubaina/parser/latex/LatexModule.java | 64 +++++++++++++ .../tubaina/parser/latex/LatexParser.java | 8 +- .../caelum/tubaina/parser/latex/TableTag.java | 13 +-- .../tubaina/parser/pygments/CodeCache.java | 3 + .../caelum/tubaina/util/CommandExecutor.java | 85 +----------------- .../tubaina/util/SimpleCommandExecutor.java | 90 +++++++++++++++++++ .../tubaina/parser/RegexConfiguratorTest.java | 2 +- .../caelum/tubaina/parser/RegexTagTest.java | 6 +- .../html/desktop/SyntaxHighlighterTest.java | 10 +-- .../tubaina/parser/latex/AbstractTagTest.java | 20 +++++ .../tubaina/parser/latex/BoxTagTest.java | 13 +-- .../tubaina/parser/latex/CodeTagTest.java | 4 +- .../tubaina/parser/latex/TableTagTest.java | 10 +-- .../tubaina/util/CommandExecutorTest.java | 6 +- 28 files changed, 438 insertions(+), 134 deletions(-) create mode 100644 src/main/java/br/com/caelum/tubaina/parser/IntroductionTag.java create mode 100644 src/main/java/br/com/caelum/tubaina/parser/NullTag.java create mode 100644 src/main/java/br/com/caelum/tubaina/parser/TubainaModule.java create mode 100644 src/main/java/br/com/caelum/tubaina/parser/html/desktop/HtmlModule.java create mode 100644 src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleModule.java create mode 100644 src/main/java/br/com/caelum/tubaina/parser/latex/LatexModule.java create mode 100644 src/main/java/br/com/caelum/tubaina/util/SimpleCommandExecutor.java create mode 100644 src/test/java/br/com/caelum/tubaina/parser/latex/AbstractTagTest.java diff --git a/build.gradle b/build.gradle index af901db..4c40d9f 100644 --- a/build.gradle +++ b/build.gradle @@ -44,6 +44,7 @@ dependencies { compile group: 'com.thoughtworks.xstream', name: 'xstream', version: '1.4.2' compile group: 'org.apache.commons', name: 'commons-exec', version: '1.1' compile group: 'com.google.inject', name: 'guice', version: '3.0' + compile group: 'net.vidageek', name: 'mirror', version: '1.6.1' testCompile group: 'junit', name: 'junit', version: '4.+' testCompile group: 'org.mockito', name: 'mockito-all', version: '1.9.0' diff --git a/src/main/java/br/com/caelum/tubaina/CompositeChunk.java b/src/main/java/br/com/caelum/tubaina/CompositeChunk.java index 153c60b..6fcc543 100644 --- a/src/main/java/br/com/caelum/tubaina/CompositeChunk.java +++ b/src/main/java/br/com/caelum/tubaina/CompositeChunk.java @@ -19,4 +19,7 @@ public String getContent() { return content; } + public List getBody() { + return body; + } } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/BoxChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/BoxChunk.java index b0da6a9..6d76954 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/BoxChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/BoxChunk.java @@ -9,9 +9,9 @@ public class BoxChunk extends CompositeChunk { private final String title; - public BoxChunk(final String title, final List body) { + public BoxChunk(String title, List body) { super(body); - this.title = title.trim(); + this.title = title != null ? title.trim() : ""; } public String getTitle() { diff --git a/src/main/java/br/com/caelum/tubaina/chunk/MockedChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/MockedChunk.java index 58d703f..052532a 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/MockedChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/MockedChunk.java @@ -1,16 +1,17 @@ package br.com.caelum.tubaina.chunk; -import br.com.caelum.tubaina.AbstractChunk; +import br.com.caelum.tubaina.Chunk; -public class MockedChunk extends AbstractChunk { +public class MockedChunk implements Chunk { private String content; public MockedChunk(String content) { this.content = content; } - - public String getContent() { + + @Override + public String asString() { return content; } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/IntroductionTag.java b/src/main/java/br/com/caelum/tubaina/parser/IntroductionTag.java new file mode 100644 index 0000000..51e22ad --- /dev/null +++ b/src/main/java/br/com/caelum/tubaina/parser/IntroductionTag.java @@ -0,0 +1,12 @@ +package br.com.caelum.tubaina.parser; + +import br.com.caelum.tubaina.chunk.IntroductionChunk; + +public class IntroductionTag implements Tag { + + @Override + public String parse(IntroductionChunk chunk) { + return chunk.getContent(); + } + +} diff --git a/src/main/java/br/com/caelum/tubaina/parser/NullTag.java b/src/main/java/br/com/caelum/tubaina/parser/NullTag.java new file mode 100644 index 0000000..4ed5223 --- /dev/null +++ b/src/main/java/br/com/caelum/tubaina/parser/NullTag.java @@ -0,0 +1,12 @@ +package br.com.caelum.tubaina.parser; + +import br.com.caelum.tubaina.chunk.NoteChunk; + +public class NullTag implements Tag { + + @Override + public String parse(NoteChunk chunk) { + return ""; + } + +} diff --git a/src/main/java/br/com/caelum/tubaina/parser/SimpleIndentator.java b/src/main/java/br/com/caelum/tubaina/parser/SimpleIndentator.java index 67957dc..5d4a28a 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/SimpleIndentator.java +++ b/src/main/java/br/com/caelum/tubaina/parser/SimpleIndentator.java @@ -6,6 +6,10 @@ public class SimpleIndentator implements Indentator { private final String tabReplacement; + public SimpleIndentator() { + this(4); + } + public SimpleIndentator(int tabSize) { StringBuffer stringBuffer = new StringBuffer(); for (int i = 0; i < tabSize; i++) { @@ -14,7 +18,8 @@ public SimpleIndentator(int tabSize) { this.tabReplacement = stringBuffer.toString(); } - public String indent(String string) { + @Override + public String indent(String string) { string = string.replaceAll("\t", tabReplacement); int spaces = Utilities.getMinIndent(string); string = removeSpaces(string, spaces); diff --git a/src/main/java/br/com/caelum/tubaina/parser/TubainaModule.java b/src/main/java/br/com/caelum/tubaina/parser/TubainaModule.java new file mode 100644 index 0000000..7243bda --- /dev/null +++ b/src/main/java/br/com/caelum/tubaina/parser/TubainaModule.java @@ -0,0 +1,55 @@ +package br.com.caelum.tubaina.parser; + +import java.util.List; + +import net.vidageek.mirror.dsl.Mirror; +import br.com.caelum.tubaina.Book; +import br.com.caelum.tubaina.Chapter; +import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.CompositeChunk; +import br.com.caelum.tubaina.Section; + +import com.google.inject.AbstractModule; +import com.google.inject.Guice; +import com.google.inject.Injector; + +public abstract class TubainaModule extends AbstractModule { + + public TubainaModule() { + super(); + } + + public void inject(Chunk chunk) { + Injector injector = Guice.createInjector(this); + injector.injectMembers(chunk); + if (chunk instanceof CompositeChunk) { + CompositeChunk composite = (CompositeChunk) chunk; + for (Chunk other : composite.getBody()) { + inject(other); + } + } + } + + public void inject(Book book) { + Injector injector = Guice.createInjector(this); + List chapters = book.getChapters(); + for (Chapter chapter : chapters) { + inject(injector, (Chunk) new Mirror().on(chapter).get().field("introduction")); + for (Section section : chapter.getSections()) { + for (Chunk chunk : section.getChunks()) { + inject(injector, chunk); + } + } + } + } + + private void inject(Injector injector, Chunk chunk) { + injector.injectMembers(chunk); + if (chunk instanceof CompositeChunk) { + CompositeChunk composite = (CompositeChunk) chunk; + for (Chunk other : composite.getBody()) { + inject(injector, other); + } + } + } +} diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/CodeTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/CodeTag.java index de78760..502d965 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/CodeTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/CodeTag.java @@ -5,15 +5,15 @@ import br.com.caelum.tubaina.parser.html.HtmlAndKindleCodeTag; import br.com.caelum.tubaina.parser.pygments.CodeCache; import br.com.caelum.tubaina.parser.pygments.CodeOutputType; -import br.com.caelum.tubaina.util.CommandExecutor; +import br.com.caelum.tubaina.util.SimpleCommandExecutor; public class CodeTag implements Tag { private HtmlAndKindleCodeTag htmlCodeTag; public CodeTag() { - SyntaxHighlighter syntaxHighlighter = new SyntaxHighlighter(new CommandExecutor(), - CodeOutputType.KINDLE_HTML, false, new CodeCache(CodeOutputType.HTML)); + SyntaxHighlighter syntaxHighlighter = new SyntaxHighlighter(new SimpleCommandExecutor(), + CodeOutputType.KINDLE_HTML, new CodeCache(CodeOutputType.HTML)); htmlCodeTag = new HtmlAndKindleCodeTag(syntaxHighlighter); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/HtmlModule.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/HtmlModule.java new file mode 100644 index 0000000..29dc9df --- /dev/null +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/HtmlModule.java @@ -0,0 +1,57 @@ +package br.com.caelum.tubaina.parser.html.desktop; + +import br.com.caelum.tubaina.chunk.AnswerChunk; +import br.com.caelum.tubaina.chunk.BoxChunk; +import br.com.caelum.tubaina.chunk.CenteredParagraphChunk; +import br.com.caelum.tubaina.chunk.CodeChunk; +import br.com.caelum.tubaina.chunk.ExerciseChunk; +import br.com.caelum.tubaina.chunk.ImageChunk; +import br.com.caelum.tubaina.chunk.IntroductionChunk; +import br.com.caelum.tubaina.chunk.ItemChunk; +import br.com.caelum.tubaina.chunk.ListChunk; +import br.com.caelum.tubaina.chunk.NoteChunk; +import br.com.caelum.tubaina.chunk.ParagraphChunk; +import br.com.caelum.tubaina.chunk.QuestionChunk; +import br.com.caelum.tubaina.chunk.TableChunk; +import br.com.caelum.tubaina.chunk.TableColumnChunk; +import br.com.caelum.tubaina.chunk.TableRowChunk; +import br.com.caelum.tubaina.parser.IntroductionTag; +import br.com.caelum.tubaina.parser.NullTag; +import br.com.caelum.tubaina.parser.Tag; +import br.com.caelum.tubaina.parser.TubainaModule; + +import com.google.inject.TypeLiteral; + +public class HtmlModule extends TubainaModule { + + private boolean showNotes; + + public HtmlModule(boolean showNotes) { + this.showNotes = showNotes; + } + + public HtmlModule() { + this(true); + } + + @Override + protected void configure() { + bind(new TypeLiteral>() {}).to(AnswerTag.class); + bind(new TypeLiteral>() {}).to(BoxTag.class); + bind(new TypeLiteral>() {}).to(CenteredParagraphTag.class); + bind(new TypeLiteral>() {}).to(CodeTag.class); + bind(new TypeLiteral>() {}).to(ExerciseTag.class); + bind(new TypeLiteral>() {}).to(ImageTag.class); + bind(new TypeLiteral>() {}).to(IntroductionTag.class); + bind(new TypeLiteral>() {}).to(ItemTag.class); + bind(new TypeLiteral>() {}).to(ListTag.class); + bind(new TypeLiteral>() {}).to(showNotes ? NoteTag.class : NullTag.class); + bind(new TypeLiteral>() {}).to(ParagraphTag.class); + bind(new TypeLiteral>() {}).to(QuestionTag.class); + bind(new TypeLiteral>() {}).to(TableColumnTag.class); + bind(new TypeLiteral>() {}).to(TableRowTag.class); + bind(new TypeLiteral>() {}).to(TableTag.class); + } + + +} diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/SyntaxHighlighter.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/SyntaxHighlighter.java index 5996bb4..f09ef50 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/SyntaxHighlighter.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/SyntaxHighlighter.java @@ -4,6 +4,8 @@ import java.util.Collections; import java.util.List; +import com.google.inject.Inject; + import br.com.caelum.tubaina.parser.pygments.CodeCache; import br.com.caelum.tubaina.parser.pygments.CodeOutputType; import br.com.caelum.tubaina.util.CommandExecutor; @@ -11,7 +13,6 @@ public class SyntaxHighlighter { private final CommandExecutor commandExecutor; - private boolean allLinesNumbered; private CodeOutputType output; public static final String HTML_OUTPUT = "html"; @@ -19,10 +20,10 @@ public class SyntaxHighlighter { private CodeCache codeCache; - public SyntaxHighlighter(CommandExecutor commandExecutor, CodeOutputType outputType, boolean allLinesNumbered, CodeCache codeCache) { + @Inject + public SyntaxHighlighter(CommandExecutor commandExecutor, CodeOutputType outputType, CodeCache codeCache) { this.commandExecutor = commandExecutor; this.output = outputType; - this.allLinesNumbered = allLinesNumbered; this.codeCache = codeCache; } @@ -39,7 +40,7 @@ public String highlight(String code, String language, boolean numbered, List buildCommand(String language, boolean numbered, List lines) { StringBuilder options = new StringBuilder(); - if (numbered || allLinesNumbered) { // for kindle output all lines are numbered + if (numbered || output.equals(CodeOutputType.KINDLE_HTML)) { // for kindle output all lines are numbered appendLineNumberingOption(options); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/CodeTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/CodeTag.java index a461175..70d99b4 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/CodeTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/CodeTag.java @@ -6,15 +6,15 @@ import br.com.caelum.tubaina.parser.html.desktop.SyntaxHighlighter; import br.com.caelum.tubaina.parser.pygments.CodeCache; import br.com.caelum.tubaina.parser.pygments.CodeOutputType; -import br.com.caelum.tubaina.util.CommandExecutor; +import br.com.caelum.tubaina.util.SimpleCommandExecutor; public class CodeTag implements Tag { private final HtmlAndKindleCodeTag htmlCodeTag; public CodeTag() { - SyntaxHighlighter syntaxHighlighter = new SyntaxHighlighter(new CommandExecutor(), - CodeOutputType.KINDLE_HTML, true, new CodeCache(CodeOutputType.KINDLE_HTML)); + SyntaxHighlighter syntaxHighlighter = new SyntaxHighlighter(new SimpleCommandExecutor(), + CodeOutputType.KINDLE_HTML, new CodeCache(CodeOutputType.KINDLE_HTML)); this.htmlCodeTag = new HtmlAndKindleCodeTag(syntaxHighlighter); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleModule.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleModule.java new file mode 100644 index 0000000..2c3e6d2 --- /dev/null +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleModule.java @@ -0,0 +1,53 @@ +package br.com.caelum.tubaina.parser.html.kindle; + +import br.com.caelum.tubaina.chunk.AnswerChunk; +import br.com.caelum.tubaina.chunk.BoxChunk; +import br.com.caelum.tubaina.chunk.CenteredParagraphChunk; +import br.com.caelum.tubaina.chunk.CodeChunk; +import br.com.caelum.tubaina.chunk.ExerciseChunk; +import br.com.caelum.tubaina.chunk.ImageChunk; +import br.com.caelum.tubaina.chunk.IntroductionChunk; +import br.com.caelum.tubaina.chunk.ItemChunk; +import br.com.caelum.tubaina.chunk.ListChunk; +import br.com.caelum.tubaina.chunk.NoteChunk; +import br.com.caelum.tubaina.chunk.ParagraphChunk; +import br.com.caelum.tubaina.chunk.QuestionChunk; +import br.com.caelum.tubaina.chunk.TableChunk; +import br.com.caelum.tubaina.chunk.TableColumnChunk; +import br.com.caelum.tubaina.chunk.TableRowChunk; +import br.com.caelum.tubaina.parser.IntroductionTag; +import br.com.caelum.tubaina.parser.NullTag; +import br.com.caelum.tubaina.parser.Tag; +import br.com.caelum.tubaina.parser.TubainaModule; + +import com.google.inject.TypeLiteral; + +public class KindleModule extends TubainaModule { + private boolean showNotes; + + public KindleModule(boolean showNotes) { + this.showNotes = showNotes; + } + public KindleModule() { + this(true); + } + + @Override + protected void configure() { + bind(new TypeLiteral>() {}).to(AnswerTag.class); + bind(new TypeLiteral>() {}).to(BoxTag.class); + bind(new TypeLiteral>() {}).to(CenteredParagraphTag.class); + bind(new TypeLiteral>() {}).to(CodeTag.class); + bind(new TypeLiteral>() {}).to(ExerciseTag.class); + bind(new TypeLiteral>() {}).to(ImageTag.class); + bind(new TypeLiteral>() {}).to(IntroductionTag.class); + bind(new TypeLiteral>() {}).to(ItemTag.class); + bind(new TypeLiteral>() {}).to(ListTag.class); + bind(new TypeLiteral>() {}).to(showNotes ? NoteTag.class : NullTag.class); + bind(new TypeLiteral>() {}).to(ParagraphTag.class); + bind(new TypeLiteral>() {}).to(QuestionTag.class); + bind(new TypeLiteral>() {}).to(TableColumnTag.class); + bind(new TypeLiteral>() {}).to(TableRowTag.class); + bind(new TypeLiteral>() {}).to(TableTag.class); + } +} diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/GistTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/GistTag.java index 4b6d6a0..bd4bec0 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/GistTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/GistTag.java @@ -9,7 +9,7 @@ import br.com.caelum.tubaina.parser.html.desktop.SyntaxHighlighter; import br.com.caelum.tubaina.parser.pygments.CodeCache; import br.com.caelum.tubaina.parser.pygments.CodeOutputType; -import br.com.caelum.tubaina.util.CommandExecutor; +import br.com.caelum.tubaina.util.SimpleCommandExecutor; public class GistTag implements Tag { @@ -17,7 +17,7 @@ public class GistTag implements Tag { private GistResultRetriever retriever; public GistTag(Indentator i, GistResultRetriever retriever) { - this.code = new CodeTag(i, new SyntaxHighlighter(new CommandExecutor(), CodeOutputType.LATEX, false, new CodeCache(CodeOutputType.LATEX))); + this.code = new CodeTag(i, new SyntaxHighlighter(new SimpleCommandExecutor(), CodeOutputType.LATEX, new CodeCache(CodeOutputType.LATEX))); this.retriever = retriever; } diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/LatexModule.java b/src/main/java/br/com/caelum/tubaina/parser/latex/LatexModule.java new file mode 100644 index 0000000..d73c541 --- /dev/null +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/LatexModule.java @@ -0,0 +1,64 @@ +package br.com.caelum.tubaina.parser.latex; + +import br.com.caelum.tubaina.chunk.AnswerChunk; +import br.com.caelum.tubaina.chunk.BoxChunk; +import br.com.caelum.tubaina.chunk.CenteredParagraphChunk; +import br.com.caelum.tubaina.chunk.CodeChunk; +import br.com.caelum.tubaina.chunk.ExerciseChunk; +import br.com.caelum.tubaina.chunk.ImageChunk; +import br.com.caelum.tubaina.chunk.IntroductionChunk; +import br.com.caelum.tubaina.chunk.ItemChunk; +import br.com.caelum.tubaina.chunk.ListChunk; +import br.com.caelum.tubaina.chunk.NoteChunk; +import br.com.caelum.tubaina.chunk.ParagraphChunk; +import br.com.caelum.tubaina.chunk.QuestionChunk; +import br.com.caelum.tubaina.chunk.TableChunk; +import br.com.caelum.tubaina.chunk.TableColumnChunk; +import br.com.caelum.tubaina.chunk.TableRowChunk; +import br.com.caelum.tubaina.parser.Indentator; +import br.com.caelum.tubaina.parser.IntroductionTag; +import br.com.caelum.tubaina.parser.NullTag; +import br.com.caelum.tubaina.parser.SimpleIndentator; +import br.com.caelum.tubaina.parser.Tag; +import br.com.caelum.tubaina.parser.TubainaModule; +import br.com.caelum.tubaina.parser.pygments.CodeOutputType; +import br.com.caelum.tubaina.util.CommandExecutor; +import br.com.caelum.tubaina.util.SimpleCommandExecutor; + +import com.google.inject.TypeLiteral; + +public class LatexModule extends TubainaModule { + + private final boolean showNotes; + + public LatexModule(boolean showNotes) { + this.showNotes = showNotes; + } + + public LatexModule() { + this(true); + } + + @Override + protected void configure() { + bind(new TypeLiteral>() {}).to(AnswerTag.class); + bind(new TypeLiteral>() {}).to(BoxTag.class); + bind(new TypeLiteral>() {}).to(CenteredParagraphTag.class); + bind(new TypeLiteral>() {}).to(CodeTag.class); + bind(new TypeLiteral>() {}).to(ExerciseTag.class); + bind(new TypeLiteral>() {}).to(ImageTag.class); + bind(new TypeLiteral>() {}).to(IntroductionTag.class); + bind(new TypeLiteral>() {}).to(ItemTag.class); + bind(new TypeLiteral>() {}).to(ListTag.class); + bind(new TypeLiteral>() {}).to(showNotes ? NoteTag.class : NullTag.class); + bind(new TypeLiteral>() {}).to(ParagraphTag.class); + bind(new TypeLiteral>() {}).to(QuestionTag.class); + bind(new TypeLiteral>() {}).to(TableColumnTag.class); + bind(new TypeLiteral>() {}).to(TableRowTag.class); + bind(new TypeLiteral>() {}).to(TableTag.class); + + bind(Indentator.class).to(SimpleIndentator.class); + bind(CommandExecutor.class).to(SimpleCommandExecutor.class); + bind(CodeOutputType.class).toInstance(CodeOutputType.LATEX); + } +} diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/LatexParser.java b/src/main/java/br/com/caelum/tubaina/parser/latex/LatexParser.java index 0dc430a..e289d90 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/LatexParser.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/LatexParser.java @@ -12,7 +12,7 @@ import br.com.caelum.tubaina.parser.html.desktop.SyntaxHighlighter; import br.com.caelum.tubaina.parser.pygments.CodeCache; import br.com.caelum.tubaina.parser.pygments.CodeOutputType; -import br.com.caelum.tubaina.util.CommandExecutor; +import br.com.caelum.tubaina.util.SimpleCommandExecutor; public class LatexParser implements Parser { @@ -28,7 +28,7 @@ public class LatexParser implements Parser { public LatexParser(List tags, boolean showNotes, boolean noAnswer) { codeCache = new CodeCache(CodeOutputType.LATEX); - syntaxHighlighter = new SyntaxHighlighter(new CommandExecutor(), CodeOutputType.LATEX, false, codeCache); + syntaxHighlighter = new SyntaxHighlighter(new SimpleCommandExecutor(), CodeOutputType.LATEX, codeCache); this.tags = tags; this.showNotes = showNotes; this.noAnswer = noAnswer; @@ -36,7 +36,7 @@ public LatexParser(List tags, boolean showNotes, boolean noAnswer) { public LatexParser(List tags) { codeCache = new CodeCache(CodeOutputType.LATEX); - syntaxHighlighter = new SyntaxHighlighter(new CommandExecutor(), CodeOutputType.LATEX, false, codeCache); + syntaxHighlighter = new SyntaxHighlighter(new SimpleCommandExecutor(), CodeOutputType.LATEX, codeCache); this.tags = tags; this.showNotes = false; this.noAnswer = false; @@ -142,7 +142,7 @@ public String parseRow(String text) { public String parseTable(String text, String title, boolean noborder, int columns) { - return new TableTag(noborder, columns).parse(chunk); + return new TableTag(noborder).parse(chunk); } public String parseCenteredParagraph(String content) { diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/TableTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/TableTag.java index e758033..71868de 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/TableTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/TableTag.java @@ -7,23 +7,26 @@ public class TableTag implements Tag { private final boolean noborder; - private final int columns; - public TableTag(boolean noborder, int columns) { + public TableTag() { + this(false); + } + + public TableTag(boolean noborder) { this.noborder = noborder; - this.columns = columns; } @Override public String parse(TableChunk chunk) { String title = chunk.getTitle(); - if (this.columns <= 0) + int numberOfColumns = chunk.getMaxNumberOfColumns(); + if (numberOfColumns <= 0) throw new TubainaException("There are no columns inside table " + title); String tag = "\\begin{table}[!h]\n\\caption{" + title + "}\n\\begin{center}\n"; if (!noborder) tag += "\\rowcolors[]{1}{gray!30}{gray!15}\n"; tag += "\\begin{tabularx}{"; - for (int i = 0; i < columns; i++) + for (int i = 0; i < numberOfColumns; i++) tag += "X"; tag += "}\n"; if (!noborder) diff --git a/src/main/java/br/com/caelum/tubaina/parser/pygments/CodeCache.java b/src/main/java/br/com/caelum/tubaina/parser/pygments/CodeCache.java index d0aeeaf..e0ecf2f 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/pygments/CodeCache.java +++ b/src/main/java/br/com/caelum/tubaina/parser/pygments/CodeCache.java @@ -10,6 +10,8 @@ import org.apache.commons.codec.digest.DigestUtils; import org.apache.log4j.Logger; +import com.google.inject.Inject; + import br.com.caelum.tubaina.parser.pygments.CodeOutputType; public class CodeCache { @@ -18,6 +20,7 @@ public class CodeCache { private String tempDir; public static final Logger LOG = Logger.getLogger(CodeCache.class); + @Inject public CodeCache(CodeOutputType output) { this.output = output; this.tempDir = System.getProperty("java.io.tmpdir"); diff --git a/src/main/java/br/com/caelum/tubaina/util/CommandExecutor.java b/src/main/java/br/com/caelum/tubaina/util/CommandExecutor.java index 2cb1019..5c6f4fc 100644 --- a/src/main/java/br/com/caelum/tubaina/util/CommandExecutor.java +++ b/src/main/java/br/com/caelum/tubaina/util/CommandExecutor.java @@ -1,88 +1,11 @@ package br.com.caelum.tubaina.util; -import java.io.IOException; -import java.io.PrintWriter; import java.util.List; -import java.util.Scanner; -import org.apache.log4j.Logger; +public interface CommandExecutor { -import br.com.caelum.tubaina.TubainaException; + public abstract String execute(String command, String input); -public class CommandExecutor { - - private final Logger LOG = Logger.getLogger(CommandExecutor.class); + public abstract String execute(List args, String input); - public String execute(String command, String input) { - Process proc; - try { - LOG.debug("Executing: " + command); - proc = Runtime.getRuntime().exec(command); - } catch (IOException e) { - throw new TubainaException("Could not execute command: "+command, e); - } - - writeInput(input, proc); - verifyExitStatus(command, proc); - String output = readOutput(proc); - - return output; - } - - public String execute(List args, String input) { - Process proc; - try { - LOG.debug("Executing: " + args); - String[] argsArray = buildArgs(args); - proc = Runtime.getRuntime().exec(argsArray); - } catch (IOException e) { - throw new TubainaException("Could not execute command: " + args, e); - } - - writeInput(input, proc); - verifyExitStatus(args.toString(), proc); - String output = readOutput(proc); - - return output; - } - - private String[] buildArgs(List args) { - String[] argsArray = new String[args.size()]; - for (int i = 0; i < argsArray.length; i++) { - argsArray[i] = args.get(i); - } - return argsArray; - } - - private void verifyExitStatus(String command, Process proc) { - try { - proc.waitFor(); - } catch (InterruptedException e) { - throw new TubainaException("Could not execute command: "+command, e); - } - if (proc.exitValue() != 0) { - String commandOutput = ""; - Scanner scanner = new Scanner(proc.getErrorStream()); - scanner.useDelimiter("$$"); - if (scanner.hasNext()) - commandOutput = scanner.next(); - throw new TubainaException("Command: " + command + " could not be executed: " + commandOutput); - } - } - - private String readOutput(Process proc) { - Scanner scanner = new Scanner(proc.getInputStream()); - scanner.useDelimiter("$$"); - String output = ""; - if (scanner.hasNext()) - output = scanner.next(); - return output; - } - - private void writeInput(String input, Process proc) { - PrintWriter writer = new PrintWriter(proc.getOutputStream()); - writer.print(input); - writer.close(); - } - -} +} \ No newline at end of file diff --git a/src/main/java/br/com/caelum/tubaina/util/SimpleCommandExecutor.java b/src/main/java/br/com/caelum/tubaina/util/SimpleCommandExecutor.java new file mode 100644 index 0000000..a75adf6 --- /dev/null +++ b/src/main/java/br/com/caelum/tubaina/util/SimpleCommandExecutor.java @@ -0,0 +1,90 @@ +package br.com.caelum.tubaina.util; + +import java.io.IOException; +import java.io.PrintWriter; +import java.util.List; +import java.util.Scanner; + +import org.apache.log4j.Logger; + +import br.com.caelum.tubaina.TubainaException; + +public class SimpleCommandExecutor implements CommandExecutor { + + private final Logger LOG = Logger.getLogger(SimpleCommandExecutor.class); + + @Override + public String execute(String command, String input) { + Process proc; + try { + LOG.debug("Executing: " + command); + proc = Runtime.getRuntime().exec(command); + } catch (IOException e) { + throw new TubainaException("Could not execute command: "+command, e); + } + + writeInput(input, proc); + verifyExitStatus(command, proc); + String output = readOutput(proc); + + return output; + } + + @Override + public String execute(List args, String input) { + Process proc; + try { + LOG.debug("Executing: " + args); + String[] argsArray = buildArgs(args); + proc = Runtime.getRuntime().exec(argsArray); + } catch (IOException e) { + throw new TubainaException("Could not execute command: " + args, e); + } + + writeInput(input, proc); + verifyExitStatus(args.toString(), proc); + String output = readOutput(proc); + + return output; + } + + private String[] buildArgs(List args) { + String[] argsArray = new String[args.size()]; + for (int i = 0; i < argsArray.length; i++) { + argsArray[i] = args.get(i); + } + return argsArray; + } + + private void verifyExitStatus(String command, Process proc) { + try { + proc.waitFor(); + } catch (InterruptedException e) { + throw new TubainaException("Could not execute command: "+command, e); + } + if (proc.exitValue() != 0) { + String commandOutput = ""; + Scanner scanner = new Scanner(proc.getErrorStream()); + scanner.useDelimiter("$$"); + if (scanner.hasNext()) + commandOutput = scanner.next(); + throw new TubainaException("Command: " + command + " could not be executed: " + commandOutput); + } + } + + private String readOutput(Process proc) { + Scanner scanner = new Scanner(proc.getInputStream()); + scanner.useDelimiter("$$"); + String output = ""; + if (scanner.hasNext()) + output = scanner.next(); + return output; + } + + private void writeInput(String input, Process proc) { + PrintWriter writer = new PrintWriter(proc.getOutputStream()); + writer.print(input); + writer.close(); + } + +} diff --git a/src/test/java/br/com/caelum/tubaina/parser/RegexConfiguratorTest.java b/src/test/java/br/com/caelum/tubaina/parser/RegexConfiguratorTest.java index 11c42ef..8f45af2 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/RegexConfiguratorTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/RegexConfiguratorTest.java @@ -11,7 +11,7 @@ public class RegexConfiguratorTest { public void testReadDefaultRegexFile() throws IOException { RegexConfigurator configurator = new RegexConfigurator(); @SuppressWarnings("unused") - List tags = configurator.read("/regex.properties", "/html.properties"); + List tags = configurator.read("/regex.properties", "/html.properties"); //TODO: Fazer esse teste! } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/RegexTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/RegexTagTest.java index 9ba4454..1b9d916 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/RegexTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/RegexTagTest.java @@ -3,11 +3,11 @@ import java.util.List; public class RegexTagTest { - protected List regexTags; + protected List regexTags; protected String parseWithRegexps(String text) { - for (Tag tag : regexTags) { - text = tag.parse(chunk); + for (RegexTag tag : regexTags) { + text = tag.parse(text); } return text; } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SyntaxHighlighterTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SyntaxHighlighterTest.java index 8f8c45f..e473a91 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SyntaxHighlighterTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SyntaxHighlighterTest.java @@ -12,21 +12,21 @@ import br.com.caelum.tubaina.parser.pygments.CodeCache; import br.com.caelum.tubaina.parser.pygments.CodeOutputType; -import br.com.caelum.tubaina.util.CommandExecutor; +import br.com.caelum.tubaina.util.SimpleCommandExecutor; public class SyntaxHighlighterTest { private String sampleCode; - private CommandExecutor executor; + private SimpleCommandExecutor executor; private SyntaxHighlighter highlighter; private CodeCache codeCache; @Before public void setUp() { this.sampleCode = "public class Foo {\n" + "public int Bar(){\n" + "return 0;\n" + "}\n" + "}"; - this.executor = mock(CommandExecutor.class); + this.executor = mock(SimpleCommandExecutor.class); this.codeCache = mock(CodeCache.class); - this.highlighter = new SyntaxHighlighter(executor, CodeOutputType.HTML, false, codeCache); + this.highlighter = new SyntaxHighlighter(executor, CodeOutputType.HTML, codeCache); } @Test @@ -65,7 +65,7 @@ public void shouldCallPygmentsWithHlLines() throws Exception { @Test public void shouldCallPygmentsWithLatexOutput() throws Exception { - this.highlighter = new SyntaxHighlighter(executor, CodeOutputType.LATEX, false, codeCache); + this.highlighter = new SyntaxHighlighter(executor, CodeOutputType.LATEX, codeCache); highlighter.highlight(sampleCode, "java", false); String encoding = System.getProperty("file.encoding"); List arguments = Arrays.asList("pygmentize", "-O", "encoding=" + encoding diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/AbstractTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/AbstractTagTest.java new file mode 100644 index 0000000..0a9addc --- /dev/null +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/AbstractTagTest.java @@ -0,0 +1,20 @@ +package br.com.caelum.tubaina.parser.latex; + +import java.util.Arrays; +import java.util.List; + +import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.MockedChunk; + +public class AbstractTagTest { + + protected String getContent(Chunk chunk) { + new LatexModule().inject(chunk); + return chunk.asString(); + } + + protected List text(String text) { + return Arrays.asList(new MockedChunk(text)); + } + +} \ No newline at end of file diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/BoxTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/BoxTagTest.java index c9f0474..a0c3fa4 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/BoxTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/BoxTagTest.java @@ -1,27 +1,28 @@ package br.com.caelum.tubaina.parser.latex; + import org.junit.Assert; import org.junit.Test; -public class BoxTagTest { +import br.com.caelum.tubaina.chunk.BoxChunk; + +public class BoxTagTest extends AbstractTagTest { @Test public void testBox() { - BoxTag tag = new BoxTag(); - String result = tag.parse(chunk); + String result = getContent(new BoxChunk("Titulo do Box", text("Texto do Box"))); Assert.assertEquals("\\begin{tubainabox}{Titulo do Box}\nTexto do Box\n\\end{tubainabox}", result); } @Test public void testBoxWithMultilineContent() { - BoxTag tag = new BoxTag(); - String result = tag.parse(chunk); + String result = getContent(new BoxChunk("Titulo do Box", text("Texto do Box\n blablabla\n"))); Assert.assertEquals("\\begin{tubainabox}{Titulo do Box}\nTexto do Box\n blablabla\n\n\\end{tubainabox}", result); } @Test public void testChangeTitleToEmptyStringIfItsNull(){ - String result = new BoxTag().parse(chunk); + String result = getContent(new BoxChunk(null, text("Text"))); Assert.assertEquals("\\begin{tubainabox}{\\ }\nText\n\\end{tubainabox}", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/CodeTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/CodeTagTest.java index f1c0e61..3c8f513 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/CodeTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/CodeTagTest.java @@ -10,7 +10,7 @@ import br.com.caelum.tubaina.parser.html.desktop.SyntaxHighlighter; import br.com.caelum.tubaina.parser.pygments.CodeCache; import br.com.caelum.tubaina.parser.pygments.CodeOutputType; -import br.com.caelum.tubaina.util.CommandExecutor; +import br.com.caelum.tubaina.util.SimpleCommandExecutor; public class CodeTagTest { @@ -19,7 +19,7 @@ public class CodeTagTest { @Before public void setUp() { this.codeTag = new CodeTag(new SimpleIndentator(4), new SyntaxHighlighter( - new CommandExecutor(), CodeOutputType.LATEX, false, new CodeCache(CodeOutputType.LATEX))); + new SimpleCommandExecutor(), CodeOutputType.LATEX, new CodeCache(CodeOutputType.LATEX))); } @Test diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/TableTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/TableTagTest.java index 1725b5d..af10574 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/TableTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/TableTagTest.java @@ -10,7 +10,7 @@ public class TableTagTest { @Test public void testTable() { - TableTag tag = new TableTag(false, 2); + TableTag tag = new TableTag(false); String result = tag.parse(chunk); Assert.assertEquals( "\\begin{table}[!h]\n" + @@ -26,7 +26,7 @@ public void testTable() { @Test public void testTableWithTitle() { - TableTag tag = new TableTag(false, 2); + TableTag tag = new TableTag(false); String result = tag.parse(chunk); Assert.assertEquals( "\\begin{table}[!h]\n" + @@ -42,7 +42,7 @@ public void testTableWithTitle() { @Test public void testTableWithoutBorder() { - TableTag tag = new TableTag(true, 2); + TableTag tag = new TableTag(true); String result = tag.parse(chunk); Assert.assertEquals( "\\begin{table}[!h]\n" + @@ -55,7 +55,7 @@ public void testTableWithoutBorder() { @Test public void testTableWithTitleAndWithoutBorder() { - TableTag tag = new TableTag(true, 2); + TableTag tag = new TableTag(true); String result = tag.parse(chunk); Assert.assertEquals( "\\begin{table}[!h]\n" + @@ -68,7 +68,7 @@ public void testTableWithTitleAndWithoutBorder() { @Test public void testTableWithInvalidNumberOfColums() { - TableTag tag = new TableTag(true, 0); + TableTag tag = new TableTag(true); try { tag.parse(chunk); Assert.fail("Should raise an exception"); diff --git a/src/test/java/br/com/caelum/tubaina/util/CommandExecutorTest.java b/src/test/java/br/com/caelum/tubaina/util/CommandExecutorTest.java index 2087015..c5ae589 100644 --- a/src/test/java/br/com/caelum/tubaina/util/CommandExecutorTest.java +++ b/src/test/java/br/com/caelum/tubaina/util/CommandExecutorTest.java @@ -13,7 +13,7 @@ public class CommandExecutorTest { @Test public void shouldThrowExceptionWithInvalidCommand() throws Exception { try { - new CommandExecutor().execute("asdlkjaslkdhaskjdh", ""); + new SimpleCommandExecutor().execute("asdlkjaslkdhaskjdh", ""); fail(); } catch (TubainaException e) { } @@ -21,7 +21,7 @@ public void shouldThrowExceptionWithInvalidCommand() throws Exception { @Test public void shouldWorkWithValidCommands() throws Exception { - new CommandExecutor().execute("ls -l", ""); - new CommandExecutor().execute(Arrays.asList("ls" ,"-l"), ""); + new SimpleCommandExecutor().execute("ls -l", ""); + new SimpleCommandExecutor().execute(Arrays.asList("ls" ,"-l"), ""); } } From b7834034eb83d1049ac6519e4da6f3f53568c174 Mon Sep 17 00:00:00 2001 From: Cecilia Fernandes Date: Tue, 26 Mar 2013 04:18:09 -0300 Subject: [PATCH 04/17] [Adding Guice] making a lot of Latex tags tests pass --- .../com/caelum/tubaina/chunk/TableChunk.java | 1 + .../caelum/tubaina/parser/latex/JavaTag.java | 3 + .../tubaina/parser/latex/LatexModule.java | 4 +- .../caelum/tubaina/parser/latex/ListTag.java | 2 +- .../caelum/tubaina/parser/latex/TableTag.java | 17 +- .../latex/CenteredParagraphTagTest.java | 11 +- .../tubaina/parser/latex/CodeTagTest.java | 285 +++++++++--------- .../tubaina/parser/latex/ExerciseTagTest.java | 9 +- .../tubaina/parser/latex/GistTagTest.java | 34 +-- .../tubaina/parser/latex/ImageTagTest.java | 66 ++-- .../tubaina/parser/latex/IndexTagTest.java | 10 +- .../tubaina/parser/latex/ItemTagTest.java | 6 +- .../tubaina/parser/latex/JavaTagTest.java | 14 +- .../parser/latex/LatexGeneratorTest.java | 6 +- .../tubaina/parser/latex/ListTagTest.java | 20 +- .../tubaina/parser/latex/NoteTagTest.java | 7 +- .../tubaina/parser/latex/RubyTagTest.java | 9 +- .../parser/latex/TableColumnTagTest.java | 11 +- .../tubaina/parser/latex/TableRowTagTest.java | 15 +- .../tubaina/parser/latex/TableTagTest.java | 120 ++++---- .../tubaina/parser/latex/XmlTagTest.java | 13 +- 21 files changed, 347 insertions(+), 316 deletions(-) diff --git a/src/main/java/br/com/caelum/tubaina/chunk/TableChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/TableChunk.java index e0d00c7..7eab046 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/TableChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/TableChunk.java @@ -45,6 +45,7 @@ public int getMaxNumberOfColumns() { return maxColumns; } + //TODO: change with the opposite public boolean hasNoborder() { return noborder; } diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/JavaTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/JavaTag.java index edc62b8..b3560b4 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/JavaTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/JavaTag.java @@ -1,5 +1,7 @@ package br.com.caelum.tubaina.parser.latex; +import com.google.inject.Inject; + import br.com.caelum.tubaina.TubainaException; import br.com.caelum.tubaina.chunk.JavaChunk; import br.com.caelum.tubaina.parser.Indentator; @@ -10,6 +12,7 @@ public class JavaTag implements Tag { private static final String MESSAGE = "[java] Tag is deprecated and can't be used anymore. Use [code java] instead"; + @Inject public JavaTag(Indentator indentator) { throw new TubainaException(MESSAGE); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/LatexModule.java b/src/main/java/br/com/caelum/tubaina/parser/latex/LatexModule.java index d73c541..7640f68 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/LatexModule.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/LatexModule.java @@ -6,6 +6,7 @@ import br.com.caelum.tubaina.chunk.CodeChunk; import br.com.caelum.tubaina.chunk.ExerciseChunk; import br.com.caelum.tubaina.chunk.ImageChunk; +import br.com.caelum.tubaina.chunk.IndexChunk; import br.com.caelum.tubaina.chunk.IntroductionChunk; import br.com.caelum.tubaina.chunk.ItemChunk; import br.com.caelum.tubaina.chunk.ListChunk; @@ -47,6 +48,7 @@ protected void configure() { bind(new TypeLiteral>() {}).to(CodeTag.class); bind(new TypeLiteral>() {}).to(ExerciseTag.class); bind(new TypeLiteral>() {}).to(ImageTag.class); + bind(new TypeLiteral>() {}).to(IndexTag.class); bind(new TypeLiteral>() {}).to(IntroductionTag.class); bind(new TypeLiteral>() {}).to(ItemTag.class); bind(new TypeLiteral>() {}).to(ListTag.class); @@ -56,7 +58,7 @@ protected void configure() { bind(new TypeLiteral>() {}).to(TableColumnTag.class); bind(new TypeLiteral>() {}).to(TableRowTag.class); bind(new TypeLiteral>() {}).to(TableTag.class); - + bind(Indentator.class).to(SimpleIndentator.class); bind(CommandExecutor.class).to(SimpleCommandExecutor.class); bind(CodeOutputType.class).toInstance(CodeOutputType.LATEX); diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/ListTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/ListTag.java index ba58ec2..87c66f6 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/ListTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/ListTag.java @@ -17,7 +17,7 @@ else if (options.contains("roman")) listHeader += "I)"; else { //If type is invalid, we use itemize environment - return "\\begin{itemize}" + chunk.getContent() + "\\end{itemize}"; + return "\\begin{itemize}\n" + chunk.getContent() + "\\end{itemize}"; } return listHeader + "]\n" + chunk.getContent() + "\n\\end{enumerate}"; diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/TableTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/TableTag.java index 71868de..7b524d5 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/TableTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/TableTag.java @@ -6,33 +6,24 @@ public class TableTag implements Tag { - private final boolean noborder; - - public TableTag() { - this(false); - } - - public TableTag(boolean noborder) { - this.noborder = noborder; - } - @Override public String parse(TableChunk chunk) { String title = chunk.getTitle(); + boolean hasNoborder = chunk.hasNoborder(); int numberOfColumns = chunk.getMaxNumberOfColumns(); if (numberOfColumns <= 0) throw new TubainaException("There are no columns inside table " + title); String tag = "\\begin{table}[!h]\n\\caption{" + title + "}\n\\begin{center}\n"; - if (!noborder) + if (!hasNoborder) tag += "\\rowcolors[]{1}{gray!30}{gray!15}\n"; tag += "\\begin{tabularx}{"; for (int i = 0; i < numberOfColumns; i++) tag += "X"; tag += "}\n"; - if (!noborder) + if (!hasNoborder) tag += "\\hline\n"; tag += chunk.getContent(); - if (!noborder) + if (!hasNoborder) tag += "\n\\hline"; tag += "\n\\end{tabularx}\n\\end{center}\n\\end{table}"; return tag; diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/CenteredParagraphTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/CenteredParagraphTagTest.java index 60d2752..c508821 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/CenteredParagraphTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/CenteredParagraphTagTest.java @@ -3,12 +3,13 @@ import org.junit.Assert; import org.junit.Test; -public class CenteredParagraphTagTest { +import br.com.caelum.tubaina.chunk.CenteredParagraphChunk; + +public class CenteredParagraphTagTest extends AbstractTagTest { @Test public void testCenteredParagraphTag() { - CenteredParagraphTag tag = new CenteredParagraphTag(); - String result = tag.parse(chunk); - Assert.assertEquals("\\begin{center}texto centralizado\\end{center}", - result); + CenteredParagraphChunk chunk = new CenteredParagraphChunk("texto centralizado"); + String result = getContent(chunk); + Assert.assertEquals("\\begin{center}texto centralizado\\end{center}", result); } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/CodeTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/CodeTagTest.java index 3c8f513..95da789 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/CodeTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/CodeTagTest.java @@ -3,149 +3,148 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; -import org.junit.Before; import org.junit.Test; -import br.com.caelum.tubaina.parser.SimpleIndentator; -import br.com.caelum.tubaina.parser.html.desktop.SyntaxHighlighter; -import br.com.caelum.tubaina.parser.pygments.CodeCache; -import br.com.caelum.tubaina.parser.pygments.CodeOutputType; -import br.com.caelum.tubaina.util.SimpleCommandExecutor; - -public class CodeTagTest { - - private CodeTag codeTag; - - @Before - public void setUp() { - this.codeTag = new CodeTag(new SimpleIndentator(4), new SyntaxHighlighter( - new SimpleCommandExecutor(), CodeOutputType.LATEX, new CodeCache(CodeOutputType.LATEX))); - } - - @Test - public void testPropertiesCodeTag() throws Exception { - String options = "properties"; - String string = "blablah blah\n" + "#algum comentario\n" + "texto=valor\n" - + "texto:valor\n" + "texto valor"; - String output = codeTag.parse(chunk); - - assertPygmentsRan(output); - } - - @Test - public void testPropertiesCodeTagWithEscapes() throws Exception { - String options = "properties abc"; - String string = "blablah blah\n" + "#algum comentario\n" + "texto\\=valor=valor\n" - + "texto\\:valor:valor\n" + "texto\\ valor valor\n" + "a b\\#fake comentario"; - String output = codeTag.parse(chunk); - - assertPygmentsRan(output); - } - - @Test - public void languageCodeTagShouldInsertLineNumbersWhenOptionContainsSharp() { - String string = "public static void main(String[] args) {"; - String options = "java #"; - String output = codeTag.parse(chunk); - - assertPygmentsRan(output); - } - - @Test - public void languageCodeTagShouldUnderstandLineNumbersEvenWhenNoLanguageIsSelected() { - String string = "def some: \"bizarre code\" in: unknownLanguage"; - String options = "#"; - String output = codeTag.parse(chunk); - - assertPygmentsRan(output); - } - - @Test - public void languageCodeTagShouldUnderstandLineNumbersAndHighlightsWhenNoLanguageIsSelected() { - String string = "def some: \"bizarre code\" \nin: unknownLanguage"; - String options = "# h=1,2"; - String output = codeTag.parse(chunk); - - assertPygmentsRan(output); - } - - @Test - public void languageCodeTagShouldUnderstandLineNumbersAndCSharpLanguage() { - String string = "public class SomeClass {"; - String options = "c# #"; - String output = codeTag.parse(chunk); - - assertPygmentsRan(output); - } - - @Test - public void codeTagWithReferenceWithoutLanguage() throws Exception { - String options = "label=javacode1"; - String code = "class Main {\n" + "public static void main(String[] args) {\n" - + "System.out.println(\"Hello world\");\n" + "}\n}"; - String output = codeTag.parse(chunk); - - assertTrue(output.startsWith("\\tubainaCodeLabel{javacode1}")); - assertPygmentsRan(output); - } - - @Test - public void codeTagWithReferenceWithLanguage() throws Exception { - String options = "java label=javacode1"; - String code = "class Main {\n" + "public static void main(String[] args) {\n" - + "System.out.println(\"Hello world\");\n" + "}\n}"; - String output = codeTag.parse(chunk); - - assertTrue(output.startsWith("\\tubainaCodeLabel{javacode1}")); - assertPygmentsRan(output); - } - - @Test - public void codeTagWithFileNameWithoutLanguage() throws Exception { - String options = "filename=src/Main.java"; - String code = "class Main {\n" + "public static void main(String[] args) {\n" - + "System.out.println(\"Hello world\");\n" + "}\n}"; - String output = codeTag.parse(chunk); - - assertTrue(output.startsWith("\\tubainaCodeFileName{src/Main.java}\n")); - assertPygmentsRan(output); - } - - @Test - public void codeTagWithFileNameWithLanguage() throws Exception { - String options = "java filename=src/Main.java"; - String code = "class Main {\n" + "public static void main(String[] args) {\n" - + "System.out.println(\"Hello world\");\n" + "}\n}"; - String output = codeTag.parse(chunk); - - assertTrue(output.startsWith("\\tubainaCodeFileName{src/Main.java}\n")); - assertPygmentsRan(output); - } - - @Test - public void codeTagWithFileNameWithLanguageAndLabel() throws Exception { - String options = "java filename=src/Main2.java label=javacode1"; - String code = "class Main {\n" + "public static void main(String[] args) {\n" - + "System.out.println(\"Hello world\");\n" + "}\n}"; - String output = codeTag.parse(chunk); - - assertTrue(output.startsWith("\\tubainaCodeLabel{javacode1}\n")); - assertPygmentsRan(output); - } - - @Test - public void javascriptLangBug() throws Exception { - String options = "javascript"; - String code = "writeTotal(3.14159);"; - String output = codeTag.parse(chunk); - - assertFalse(output.contains("javascript")); - assertPygmentsRan(output); - } - - private void assertPygmentsRan(String output) { - assertTrue(output.contains("\\begin{Verbatim}[commandchars=")); - assertTrue(output.contains("\\end{Verbatim}")); - } - // TODO: file name as an option to code +import br.com.caelum.tubaina.chunk.CodeChunk; + +public class CodeTagTest extends AbstractTagTest { + + @Test + public void testPropertiesCodeTag() throws Exception { + String options = "properties"; + String content = "blablah blah\n" + "#algum comentario\n" + "texto=valor\n" + "texto:valor\n" + "texto valor"; + CodeChunk chunk = new CodeChunk(content, options); + String output = getContent(chunk); + + assertPygmentsRan(output); + } + + @Test + public void testPropertiesCodeTagWithEscapes() throws Exception { + String options = "properties abc"; + String string = "blablah blah\n" + "#algum comentario\n" + "texto\\=valor=valor\n" + "texto\\:valor:valor\n" + + "texto\\ valor valor\n" + "a b\\#fake comentario"; + CodeChunk chunk = new CodeChunk(string, options); + String output = getContent(chunk); + + assertPygmentsRan(output); + } + + @Test + public void languageCodeTagShouldInsertLineNumbersWhenOptionContainsSharp() { + String string = "public static void main(String[] args) {"; + String options = "java #"; + CodeChunk chunk = new CodeChunk(string, options); + String output = getContent(chunk); + + assertPygmentsRan(output); + } + + @Test + public void languageCodeTagShouldUnderstandLineNumbersEvenWhenNoLanguageIsSelected() { + String string = "def some: \"bizarre code\" in: unknownLanguage"; + String options = "#"; + CodeChunk chunk = new CodeChunk(string, options); + String output = getContent(chunk); + + assertPygmentsRan(output); + } + + @Test + public void languageCodeTagShouldUnderstandLineNumbersAndHighlightsWhenNoLanguageIsSelected() { + String string = "def some: \"bizarre code\" \nin: unknownLanguage"; + String options = "# h=1,2"; + CodeChunk chunk = new CodeChunk(string, options); + String output = getContent(chunk); + + assertPygmentsRan(output); + } + + @Test + public void languageCodeTagShouldUnderstandLineNumbersAndCSharpLanguage() { + String string = "public class SomeClass {"; + String options = "c# #"; + CodeChunk chunk = new CodeChunk(string, options); + String output = getContent(chunk); + + assertPygmentsRan(output); + } + + @Test + public void codeTagWithReferenceWithoutLanguage() throws Exception { + String options = "label=javacode1"; + String code = "class Main {\n" + "public static void main(String[] args) {\n" + + "System.out.println(\"Hello world\");\n" + "}\n}"; + CodeChunk chunk = new CodeChunk(code, options); + String output = getContent(chunk); + + assertTrue(output.startsWith("\\tubainaCodeLabel{javacode1}")); + assertPygmentsRan(output); + } + + @Test + public void codeTagWithReferenceWithLanguage() throws Exception { + String options = "java label=javacode1"; + String code = "class Main {\n" + "public static void main(String[] args) {\n" + + "System.out.println(\"Hello world\");\n" + "}\n}"; + CodeChunk chunk = new CodeChunk(code, options); + String output = getContent(chunk); + + + assertTrue(output.startsWith("\\tubainaCodeLabel{javacode1}")); + assertPygmentsRan(output); + } + + @Test + public void codeTagWithFileNameWithoutLanguage() throws Exception { + String options = "filename=src/Main.java"; + String code = "class Main {\n" + "public static void main(String[] args) {\n" + + "System.out.println(\"Hello world\");\n" + "}\n}"; + CodeChunk chunk = new CodeChunk(code, options); + String output = getContent(chunk); + + assertTrue(output.startsWith("\\tubainaCodeFileName{src/Main.java}\n")); + assertPygmentsRan(output); + } + + @Test + public void codeTagWithFileNameWithLanguage() throws Exception { + String options = "java filename=src/Main.java"; + String code = "class Main {\n" + "public static void main(String[] args) {\n" + + "System.out.println(\"Hello world\");\n" + "}\n}"; + CodeChunk chunk = new CodeChunk(code, options); + String output = getContent(chunk); + + assertTrue(output.startsWith("\\tubainaCodeFileName{src/Main.java}\n")); + assertPygmentsRan(output); + } + + @Test + public void codeTagWithFileNameWithLanguageAndLabel() throws Exception { + String options = "java filename=src/Main2.java label=javacode1"; + String code = "class Main {\n" + "public static void main(String[] args) {\n" + + "System.out.println(\"Hello world\");\n" + "}\n}"; + CodeChunk chunk = new CodeChunk(code, options); + String output = getContent(chunk); + + assertTrue(output.startsWith("\\tubainaCodeLabel{javacode1}\n")); + assertPygmentsRan(output); + } + + @Test + public void javascriptLangBug() throws Exception { + String options = "javascript"; + String code = "writeTotal(3.14159);"; + CodeChunk chunk = new CodeChunk(code, options); + String output = getContent(chunk); + + assertFalse(output.contains("javascript")); + assertPygmentsRan(output); + } + + private void assertPygmentsRan(String output) { + assertTrue(output.contains("\\begin{Verbatim}[commandchars=")); + assertTrue(output.contains("\\end{Verbatim}")); + } + // TODO: file name as an option to code } diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/ExerciseTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/ExerciseTagTest.java index 91cbe6b..1bda027 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/ExerciseTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/ExerciseTagTest.java @@ -3,11 +3,14 @@ import org.junit.Assert; import org.junit.Test; -public class ExerciseTagTest { +import br.com.caelum.tubaina.chunk.ExerciseChunk; + +public class ExerciseTagTest extends AbstractTagTest { + @Test public void testExerciseTag(){ - ExerciseTag tag = new ExerciseTag(); - String result = tag.parse(chunk); + ExerciseChunk chunk = new ExerciseChunk(text("texto do exercicio")); + String result = getContent(chunk); Assert.assertEquals("\\label{ex:1}\n\\begin{enumerate}[1)]\ntexto do exercicio\n\\end{enumerate}", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/GistTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/GistTagTest.java index 1704831..bc9ef68 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/GistTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/GistTagTest.java @@ -18,17 +18,16 @@ public class GistTagTest { @Test public void gistedCodeIsRetrievedAndUsed() throws Exception { - GistResultRetriever retriever = new GistResultRetriever( - new GistConnector(new JsonToGistResultConverter(), - new GistRequest())); + GistResultRetriever retriever = new GistResultRetriever(new GistConnector(new JsonToGistResultConverter(), + new GistRequest())); String options = "417835"; - @SuppressWarnings("unused") //code to be retrieved, we can only assert parts of it - String gistedCode = "javascript:(function() {window.frames[3][0].document.getElementById('frameplugin').style.display='none'})()"; + @SuppressWarnings("unused") + // code to be retrieved, we can only assert parts of it + String gistedCode = "javascript:(function() {window.frames[3][0].document.getElementById('frameplugin').style.display='none'})()"; + + String output = new GistTag(new SimpleIndentator(4), retriever).parse(chunk); - String output = new GistTag(new SimpleIndentator(4), retriever).parse( - chunk); - assertPygmentsRan(output); assertTrue(output.contains("javascript")); assertTrue(output.contains("function")); @@ -39,10 +38,8 @@ public void gistedCodeIsParsedWithLineNumbers() throws Exception { String options = "417835 #"; long gistId = 417835; - String json = new Scanner( - JsonToGistResultConverter.class - .getResourceAsStream("/gist.json")).useDelimiter("\\Z") - .next(); + String json = new Scanner(JsonToGistResultConverter.class.getResourceAsStream("/gist.json")) + .useDelimiter("\\Z").next(); GistRequest mockedGistRequest = mock(GistRequest.class); when(mockedGistRequest.get(gistId)).thenReturn(json); @@ -51,16 +48,15 @@ public void gistedCodeIsParsedWithLineNumbers() throws Exception { GistResultRetriever retriever = new GistResultRetriever(connector); - String output = new GistTag(new SimpleIndentator(4), retriever).parse( - chunk); - + String output = new GistTag(new SimpleIndentator(4), retriever).parse(chunk); + assertPygmentsRan(output); assertTrue(output.contains("GivenCode")); } - + private void assertPygmentsRan(String output) { - assertTrue(output.contains("\\begin{Verbatim}[commandchars=")); - assertTrue(output.contains("\\end{Verbatim}")); - } + assertTrue(output.contains("\\begin{Verbatim}[commandchars=")); + assertTrue(output.contains("\\end{Verbatim}")); + } } \ No newline at end of file diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/ImageTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/ImageTagTest.java index f8f374b..b7d3209 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/ImageTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/ImageTagTest.java @@ -2,35 +2,30 @@ import static org.junit.Assert.assertEquals; -import org.junit.Before; import org.junit.Test; -import br.com.caelum.tubaina.parser.Tag; +import br.com.caelum.tubaina.chunk.ImageChunk; -public class ImageTagTest { +public class ImageTagTest extends AbstractTagTest { private static final String END = "\\end{center}\\end{figure}\n\n"; private static final String BEGIN = "\\begin{figure}[H]\n\\begin{center}\n"; - private Tag tag; - - @Before - public void setUp() { - tag = new ImageTag(); - } @Test public void testFullImageTag() { - String result = tag.parse(chunk); + ImageChunk chunk = new ImageChunk("image.png", "\"Imagem de alguma coisa\" w=30", 100, 1); + String result = getContent(chunk); assertEquals( BEGIN + - "\\includegraphics[width=52.5mm]{imagem.png}\n" + + "\\includegraphics[width=52.5mm]{image.png}\n" + "\n\n\\caption{Imagem de alguma coisa}\n\n" + END, result); } @Test public void labelAndNoCaption() throws Exception { - String result = tag.parse(chunk); + ImageChunk chunk = new ImageChunk("image.png", "label=important", 100, 1); + String result = getContent(chunk); assertEquals( BEGIN + "\\includegraphics[width=\\textwidth]{image.png}\n" + @@ -40,7 +35,8 @@ public void labelAndNoCaption() throws Exception { @Test public void labelNotInformed() throws Exception { - String result = tag.parse(chunk); + ImageChunk chunk = new ImageChunk("image.png", "label=", 100, 1); + String result = getContent(chunk); assertEquals( BEGIN + "\\includegraphics[width=\\textwidth]{image.png}\n" + @@ -50,7 +46,8 @@ public void labelNotInformed() throws Exception { @Test public void labelNotInformedFollowedByACaption() throws Exception { - String result = tag.parse(chunk); + ImageChunk chunk = new ImageChunk("image.png", "label= \"a caption to the image\"", 100, 1); + String result = getContent(chunk); assertEquals( BEGIN + "\\includegraphics[width=\\textwidth]{image.png}\n" + @@ -61,7 +58,8 @@ public void labelNotInformedFollowedByACaption() throws Exception { @Test public void labelAndCaption() throws Exception { - String result = tag.parse(chunk); + ImageChunk chunk = new ImageChunk("image.png", "label=important \"a caption to the image\"", 100, 1); + String result = getContent(chunk); assertEquals( BEGIN + "\\includegraphics[width=\\textwidth]{image.png}\n" + @@ -72,72 +70,80 @@ public void labelAndCaption() throws Exception { @Test public void testImageTagWithoutBounds() { - String result = tag.parse(chunk); + ImageChunk chunk = new ImageChunk("image.png", "\"Imagem de alguma coisa\"", 100, 1); + String result = getContent(chunk); assertEquals( BEGIN + - "\\includegraphics[width=\\textwidth]{imagem.png}\n" + + "\\includegraphics[width=\\textwidth]{image.png}\n" + "\n\n\\caption{Imagem de alguma coisa}\n\n" + END, result); } @Test public void testImageTagWithoutDesc() { - String result = tag.parse(chunk); + ImageChunk chunk = new ImageChunk("image.png", "w=42", 100, 1); + String result = getContent(chunk); assertEquals( BEGIN + - "\\includegraphics[width=73.5mm]{imagem.png}\n" + + "\\includegraphics[width=73.5mm]{image.png}\n" + END, result); } @Test public void testImageTagWithPercentageSymbol() { - String result = tag.parse(chunk); + ImageChunk chunk = new ImageChunk("image.png", "w=40%", 100, 1); + String result = getContent(chunk); assertEquals( BEGIN + - "\\includegraphics[width=70.0mm]{imagem.png}\n" + + "\\includegraphics[width=70.0mm]{image.png}\n" + END, result); } @Test public void testImageTagWithoutPercentageSymbol() { - String result = tag.parse(chunk); + ImageChunk chunk = new ImageChunk("image.png", "w=40", 100, 1); + String result = getContent(chunk); assertEquals( BEGIN + - "\\includegraphics[width=70.0mm]{imagem.png}\n" + + "\\includegraphics[width=70.0mm]{image.png}\n" + END, result); } @Test public void testImageTagWithInvalidBounds() { - String result = tag.parse(chunk); + ImageChunk chunk = new ImageChunk("image.png", "w=42", 100, 1); + String result = getContent(chunk); assertEquals( BEGIN + - "\\includegraphics[width=73.5mm]{imagem.png}\n" + + "\\includegraphics[width=73.5mm]{image.png}\n" + END, result); } @Test public void testImageTagWithPath() { - String result = tag.parse(chunk); + ImageChunk chunk = new ImageChunk("some/path/image.png", "w=42", 100, 1); + String result = getContent(chunk); assertEquals( BEGIN + - "\\includegraphics[width=73.5mm]{imagem.png}\n" + + "\\includegraphics[width=73.5mm]{image.png}\n" + END, result); } @Test public void imageTagWithoutDefinedImageProportionShouldConstrainToPageWidthWhenImageIsTooBig() { int tooLargeImageWidthInPixels = 2250; - String result = tag.parse(chunk); + ImageChunk chunk = new ImageChunk("image.png", "[" + tooLargeImageWidthInPixels + "]", 100, 1); + String result = getContent(chunk); assertEquals( BEGIN + - "\\includegraphics[width=\\textwidth]{imagem.png}\n" + + "\\includegraphics[width=\\textwidth]{image.png}\n" + END, result); } @Test public void shouldParseLabelEvenWithStrangeChars() throws Exception { - String result = tag.parse(chunk); + ImageChunk chunk = new ImageChunk("image.png", "label=name-with-strange_chars", 100, 1); + String result = getContent(chunk); assertEquals( BEGIN + "\\includegraphics[width=\\textwidth]{image.png}\n" + diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/IndexTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/IndexTagTest.java index 985b0d7..48dac67 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/IndexTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/IndexTagTest.java @@ -4,17 +4,21 @@ import org.junit.Test; -public class IndexTagTest { +import br.com.caelum.tubaina.chunk.IndexChunk; + +public class IndexTagTest extends AbstractTagTest { @Test public void shouldParseIndexTag() throws Exception { - String result = new IndexTag().parse(chunk); + IndexChunk chunk = new IndexChunk("name"); + String result = getContent(chunk); assertEquals("\n\\index{name}\n", result); } @Test public void shouldEscapeUnderscores() throws Exception { - String result = new IndexTag().parse(chunk); + IndexChunk chunk = new IndexChunk("index_name_underscore"); + String result = getContent(chunk); assertEquals("\n\\index{index\\_name\\_underscore}\n", result); } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/ItemTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/ItemTagTest.java index 3036ab0..783902e 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/ItemTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/ItemTagTest.java @@ -7,11 +7,13 @@ import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.builder.ChunkSplitter; +import br.com.caelum.tubaina.chunk.ItemChunk; -public class ItemTagTest { +public class ItemTagTest extends AbstractTagTest { @Test public void testItem() { - String result = new ItemTag().parse(chunk); + ItemChunk chunk = new ItemChunk(text("texto do item")); + String result = getContent(chunk); Assert.assertEquals("\n\\item{texto do item}\n", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/JavaTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/JavaTagTest.java index 1fa6383..df94a24 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/JavaTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/JavaTagTest.java @@ -2,17 +2,15 @@ import org.junit.Test; -import br.com.caelum.tubaina.TubainaException; -import br.com.caelum.tubaina.parser.SimpleIndentator; -import br.com.caelum.tubaina.parser.html.desktop.JavaTag; +import br.com.caelum.tubaina.chunk.JavaChunk; -@SuppressWarnings("deprecation") -public class JavaTagTest { +@Deprecated +public class JavaTagTest extends AbstractTagTest { - @Test(expected = TubainaException.class) + @Test(expected = Exception.class) public void tagIsDeprecatedAndParsingAgainstItWillAlwaysThrowAnException() { - JavaTag tag = new JavaTag(new SimpleIndentator(4)); - tag.parse(chunk); + JavaChunk chunk = new JavaChunk("#", "System.out.println()"); + getContent(chunk); } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/LatexGeneratorTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/LatexGeneratorTest.java index c467d1b..77cb0f6 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/LatexGeneratorTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/LatexGeneratorTest.java @@ -84,7 +84,8 @@ public void testGenerator() throws IOException { Assert.assertTrue(FileUtilities.contentEquals(new File(TubainaBuilder.DEFAULT_TEMPLATE_DIR, "latex"), temp, new FilenameFilter() { - public boolean accept(File dir, String name) { + @Override + public boolean accept(File dir, String name) { return name.contains(".png"); } })); @@ -100,7 +101,8 @@ public void testGeneratorWithCorrectImages() throws IOException { generator.generate(b, temp); File[] images = temp.listFiles(new FilenameFilter() { - public boolean accept(File dir, String name) { + @Override + public boolean accept(File dir, String name) { return name.contains(".png") || name.contains(".jpg"); } }); diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/ListTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/ListTagTest.java index 2b27424..d1ecc7b 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/ListTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/ListTagTest.java @@ -3,33 +3,35 @@ import org.junit.Assert; import org.junit.Test; -public class ListTagTest { +import br.com.caelum.tubaina.chunk.ListChunk; + +public class ListTagTest extends AbstractTagTest { @Test public void testList() { - ListTag tag = new ListTag(); - String result = tag.parse(chunk); + ListChunk chunk = new ListChunk("", text("conteudo da lista")); + String result = getContent(chunk); Assert.assertEquals("\\begin{itemize}\nconteudo da lista\\end{itemize}", result); } @Test public void testListNumber() { - ListTag tag = new ListTag(); - String result = tag.parse(chunk); + ListChunk chunk = new ListChunk("number", text("conteudo da lista")); + String result = getContent(chunk); Assert.assertEquals("\\begin{enumerate}[1)]\nconteudo da lista\n\\end{enumerate}", result); } @Test public void testListLetter() { - ListTag tag = new ListTag(); - String result = tag.parse(chunk); + ListChunk chunk = new ListChunk("letter", text("conteudo da lista")); + String result = getContent(chunk); Assert.assertEquals("\\begin{enumerate}[a)]\nconteudo da lista\n\\end{enumerate}", result); } @Test public void testListRoman() { - ListTag tag = new ListTag(); - String result = tag.parse(chunk); + ListChunk chunk = new ListChunk("roman", text("conteudo da lista")); + String result = getContent(chunk); Assert.assertEquals("\\begin{enumerate}[I)]\nconteudo da lista\n\\end{enumerate}", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/NoteTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/NoteTagTest.java index 8d852cd..f214448 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/NoteTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/NoteTagTest.java @@ -3,11 +3,14 @@ import org.junit.Assert; import org.junit.Test; -public class NoteTagTest { +import br.com.caelum.tubaina.chunk.NoteChunk; + +public class NoteTagTest extends AbstractTagTest { @Test public void testNoteTag(){ - String result = new NoteTag().parse(chunk); + NoteChunk chunk = new NoteChunk(text(""), text("qualquer texto de nota")); + String result = getContent(chunk); Assert.assertEquals("\\begin{tubainanote}\nqualquer texto de nota\n\\end{tubainanote}", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/RubyTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/RubyTagTest.java index cfc816f..6cbb6dd 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/RubyTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/RubyTagTest.java @@ -2,16 +2,17 @@ import org.junit.Test; -import br.com.caelum.tubaina.TubainaException; +import br.com.caelum.tubaina.chunk.RubyChunk; import br.com.caelum.tubaina.parser.SimpleIndentator; -@SuppressWarnings("deprecation") -public class RubyTagTest { +@Deprecated +public class RubyTagTest extends AbstractTagTest { - @Test(expected=TubainaException.class) + @Test(expected=Exception.class) public void tagIsDeprecatedAndParsingAgainstItWillAlwaysThrowAnException() { RubyTag rubyTag = new RubyTag(new SimpleIndentator(4)); String code = "# this is a ruby comment"; + RubyChunk chunk = new RubyChunk(code, ""); rubyTag.parse(chunk); } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/TableColumnTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/TableColumnTagTest.java index c065961..b6c1061 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/TableColumnTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/TableColumnTagTest.java @@ -1,15 +1,16 @@ package br.com.caelum.tubaina.parser.latex; -import junit.framework.Assert; - +import org.junit.Assert; import org.junit.Test; -public class TableColumnTagTest { +import br.com.caelum.tubaina.chunk.TableColumnChunk; + +public class TableColumnTagTest extends AbstractTagTest { @Test public void testTableColumnTag() { - TableColumnTag tag = new TableColumnTag(); - String result = tag.parse(chunk); + TableColumnChunk chunk = new TableColumnChunk(text("texto da coluna")); + String result = getContent(chunk); Assert.assertEquals("texto da coluna& ", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/TableRowTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/TableRowTagTest.java index ee02f4a..533e841 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/TableRowTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/TableRowTagTest.java @@ -1,22 +1,23 @@ package br.com.caelum.tubaina.parser.latex; -import junit.framework.Assert; - +import org.junit.Assert; import org.junit.Test; -public class TableRowTagTest { +import br.com.caelum.tubaina.chunk.TableRowChunk; + +public class TableRowTagTest extends AbstractTagTest { @Test public void testTableRowTag() { - TableRowTag tag = new TableRowTag(); - String result = tag.parse(chunk); + TableRowChunk chunk = new TableRowChunk(text("linha da tabela")); + String result = getContent(chunk); Assert.assertEquals("linha da tabela\\\\", result); } @Test public void testRemoveLastColumnBreak() { - TableRowTag tag = new TableRowTag(); - String result = tag.parse(chunk); + TableRowChunk chunk = new TableRowChunk(text("coluna1& coluna2& coluna3&")); + String result = getContent(chunk); Assert.assertEquals("coluna1& coluna2& coluna3\\\\", result); } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/TableTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/TableTagTest.java index af10574..28e3613 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/TableTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/TableTagTest.java @@ -1,79 +1,95 @@ package br.com.caelum.tubaina.parser.latex; -import junit.framework.Assert; +import java.util.Arrays; +import java.util.List; +import org.junit.Assert; +import org.junit.Before; import org.junit.Test; +import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.TubainaException; +import br.com.caelum.tubaina.chunk.TableChunk; +import br.com.caelum.tubaina.chunk.TableColumnChunk; +import br.com.caelum.tubaina.chunk.TableRowChunk; -public class TableTagTest { +public class TableTagTest extends AbstractTagTest { + + private List rows; + + @Before + public void setUp() { + TableColumnChunk tableColumnChunk = new TableColumnChunk(text("texto da tabela")); + List colunas = Arrays.asList(tableColumnChunk); + rows = Arrays.asList(new TableRowChunk(colunas)); + } @Test public void testTable() { - TableTag tag = new TableTag(false); - String result = tag.parse(chunk); - Assert.assertEquals( - "\\begin{table}[!h]\n" + - "\\caption{}\n" + - "\\begin{center}\n" + - "\\rowcolors[]{1}{gray!30}{gray!15}\n" + - "\\begin{tabularx}{XX}\n" + - "\\hline\n" + - "texto da tabela\n" + - "\\hline\n" + - "\\end{tabularx}\n\\end{center}\n\\end{table}", result); + TableChunk chunk = new TableChunk("", rows); + String result = getContent(chunk); + Assert.assertEquals("\\begin{table}[!h]\n" + + "\\caption{}\n" + + "\\begin{center}\n" + + "\\rowcolors[]{1}{gray!30}{gray!15}\n" + + "\\begin{tabularx}{X}\n" + + "\\hline\n" + + "texto da tabela\\\\\n" + + "\\hline\n" + + "\\end{tabularx}\n" + + "\\end{center}\n" + + "\\end{table}", result); } + @Test public void testTableWithTitle() { - TableTag tag = new TableTag(false); - String result = tag.parse(chunk); - Assert.assertEquals( - "\\begin{table}[!h]\n" + - "\\caption{titulo}\n" + - "\\begin{center}\n" + - "\\rowcolors[]{1}{gray!30}{gray!15}\n" + - "\\begin{tabularx}{XX}\n" + - "\\hline\n" + - "texto da tabela\n" + - "\\hline\n" + - "\\end{tabularx}\n\\end{center}\n\\end{table}", result); + TableChunk chunk = new TableChunk("\"titulo\"", rows); + String result = getContent(chunk); + Assert.assertEquals("\\begin{table}[!h]\n" + + "\\caption{titulo}\n" + + "\\begin{center}\n" + + "\\rowcolors[]{1}{gray!30}{gray!15}\n" + + "\\begin{tabularx}{X}\n" + + "\\hline\n" + + "texto da tabela\\\\\n" + + "\\hline\n" + + "\\end{tabularx}\n" + + "\\end{center}\n" + + "\\end{table}", result); } @Test public void testTableWithoutBorder() { - TableTag tag = new TableTag(true); - String result = tag.parse(chunk); - Assert.assertEquals( - "\\begin{table}[!h]\n" + - "\\caption{}\n" + - "\\begin{center}\n" + - "\\begin{tabularx}{XX}\n" + - "texto da tabela\n" + - "\\end{tabularx}\n\\end{center}\n\\end{table}", result); + TableChunk chunk = new TableChunk("noborder", rows); + String result = getContent(chunk); + Assert.assertEquals("\\begin{table}[!h]\n" + + "\\caption{}\n" + + "\\begin{center}\n" + + "\\begin{tabularx}{X}\n" + + "texto da tabela\\\\\n" + + "\\end{tabularx}\n" + + "\\end{center}\n" + + "\\end{table}", result); } @Test public void testTableWithTitleAndWithoutBorder() { - TableTag tag = new TableTag(true); - String result = tag.parse(chunk); - Assert.assertEquals( - "\\begin{table}[!h]\n" + - "\\caption{titulo}\n" + - "\\begin{center}\n" + - "\\begin{tabularx}{XX}\n" + - "texto da tabela\n" + - "\\end{tabularx}\n\\end{center}\n\\end{table}", result); + TableChunk chunk = new TableChunk("noborder \"titulo\"", rows); + String result = getContent(chunk); + Assert.assertEquals("\\begin{table}[!h]\n" + + "\\caption{titulo}\n" + + "\\begin{center}\n" + + "\\begin{tabularx}{X}\n" + + "texto da tabela\\\\\n" + + "\\end{tabularx}\n" + + "\\end{center}\n" + + "\\end{table}", result); } - @Test + @Test(expected = TubainaException.class) public void testTableWithInvalidNumberOfColums() { - TableTag tag = new TableTag(true); - try { - tag.parse(chunk); - Assert.fail("Should raise an exception"); - } catch (TubainaException e) { - // ok - } + TableChunk chunk = new TableChunk("", text("texto da tabela")); + getContent(chunk); } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/XmlTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/XmlTagTest.java index ffecd63..317361b 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/XmlTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/XmlTagTest.java @@ -2,16 +2,15 @@ import org.junit.Test; -import br.com.caelum.tubaina.TubainaException; -import br.com.caelum.tubaina.parser.SimpleIndentator; -import br.com.caelum.tubaina.parser.html.desktop.XmlTag; +import br.com.caelum.tubaina.chunk.XmlChunk; -@SuppressWarnings("deprecation") -public class XmlTagTest { +@Deprecated +public class XmlTagTest extends AbstractTagTest { - @Test(expected=TubainaException.class) + @Test(expected=Exception.class) public void tagIsDeprecatedAndParsingAgainstItWillAlwaysThrowAnException() { - new XmlTag(new SimpleIndentator(4)).parse(chunk); + XmlChunk chunk = new XmlChunk("", "And content"); + getContent(chunk); } } From 089535fd05ab15f3a4c04707d636c0c7be63d872 Mon Sep 17 00:00:00 2001 From: Cecilia Fernandes Date: Tue, 26 Mar 2013 18:54:23 -0300 Subject: [PATCH 05/17] [Adding Guice] making a lot of Desktop HTML tags tests pass --- .../com/caelum/tubaina/chunk/TableChunk.java | 11 ++- .../parser/html/HtmlAndKindleCodeTag.java | 82 +++++++++---------- .../tubaina/parser/html/TableTagTemplate.java | 8 +- .../tubaina/parser/html/desktop/TableTag.java | 4 +- .../caelum/tubaina/parser/latex/TableTag.java | 8 +- .../parser/html/desktop/AbstractTagTest.java | 18 ++++ .../parser/html/desktop/AnswerTagTest.java | 8 +- .../parser/html/desktop/BoxTagTest.java | 12 +-- .../desktop/CenteredParagraphTagTest.java | 8 +- .../parser/html/desktop/CodeTagTest.java | 27 +++--- .../parser/html/desktop/ExerciseTagTest.java | 7 +- .../parser/html/desktop/ImageTagTest.java | 19 ++--- .../parser/html/desktop/ItemTagTest.java | 8 +- .../parser/html/desktop/JavaTagTest.java | 13 ++- .../parser/html/desktop/ListTagTest.java | 20 ++--- .../parser/html/desktop/NoteTagTest.java | 7 +- .../parser/html/desktop/ParagraphTagTest.java | 7 +- .../parser/html/desktop/QuestionTagTest.java | 7 +- .../parser/html/desktop/RubyTagTest.java | 16 ++-- .../html/desktop/TableColumnTagTest.java | 11 ++- .../parser/html/desktop/TableRowTagTest.java | 13 ++- .../parser/html/desktop/TableTagTest.java | 23 +++--- .../parser/html/desktop/XmlTagTest.java | 12 +-- 23 files changed, 182 insertions(+), 167 deletions(-) create mode 100644 src/test/java/br/com/caelum/tubaina/parser/html/desktop/AbstractTagTest.java diff --git a/src/main/java/br/com/caelum/tubaina/chunk/TableChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/TableChunk.java index 7eab046..0edcae0 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/TableChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/TableChunk.java @@ -9,12 +9,12 @@ public class TableChunk extends CompositeChunk { - private boolean noborder; + private boolean noBorder; private String title; public TableChunk(String options, List rows) { super(rows); - this.noborder = false; + this.noBorder = false; this.title = ""; parseOptions(options); } @@ -23,7 +23,7 @@ private void parseOptions(String options) { Pattern noborderPattern = Pattern.compile("(\".+\")*noborder(\".+\")*"); Matcher noborderMatcher = noborderPattern.matcher(options); if (noborderMatcher.find()) - this.noborder = true; + this.noBorder = true; Pattern titlePattern = Pattern.compile("\"(.+)\""); Matcher titleMatcher = titlePattern.matcher(options); @@ -45,9 +45,8 @@ public int getMaxNumberOfColumns() { return maxColumns; } - //TODO: change with the opposite - public boolean hasNoborder() { - return noborder; + public boolean hasBorder() { + return !noBorder; } public String getTitle() { diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/HtmlAndKindleCodeTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/HtmlAndKindleCodeTag.java index 694eaaa..c06fbf8 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/HtmlAndKindleCodeTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/HtmlAndKindleCodeTag.java @@ -9,48 +9,48 @@ public class HtmlAndKindleCodeTag implements Tag { - public static final String BEGIN_START = "
     highlights = detectHighlights(options);
    -        boolean numbered = options.contains("#");
    -        SimpleIndentator simpleIndentator = new SimpleIndentator(2);
    -        String indentedCode = simpleIndentator.indent(chunk.getContent());
    -        String label = matchLabel(options);
    -        
    -        String code = htmlCodeHighlighter.highlight(indentedCode, language, numbered, highlights);
    -        
    -        String result = "";
    -        if (!label.isEmpty()) {
    -            result = BEGIN_START + "id='" + label + "'" + BEGIN_END + code + END;
    -        } else {
    -            result = BEGIN_START + BEGIN_END + code + END;
    -        }
    -        return result;
    -    }
    -
    -    private String detectLanguage(String options) {
    -        return codeTagOptionsParser.parseLanguage(options);
    -    }
    -
    -    private List detectHighlights(String options) {
    -        return codeTagOptionsParser.parseHighlights(options);
    -    }
    -
    -    private String matchLabel(String options) {
    -        return codeTagOptionsParser.parseLabel(options);
    -    }
    +		List highlights = detectHighlights(options);
    +		boolean numbered = options.contains("#");
    +		SimpleIndentator simpleIndentator = new SimpleIndentator(2);
    +		String indentedCode = simpleIndentator.indent(chunk.getContent());
    +		String label = matchLabel(options);
    +
    +		String code = htmlCodeHighlighter.highlight(indentedCode, language, numbered, highlights);
    +
    +		String result = "";
    +		if (!label.isEmpty()) {
    +			result = BEGIN_START + "id='" + label + "'" + BEGIN_END + code + END;
    +		} else {
    +			result = BEGIN_START + BEGIN_END + code + END;
    +		}
    +		return result;
    +	}
    +
    +	private String detectLanguage(String options) {
    +		return codeTagOptionsParser.parseLanguage(options);
    +	}
    +
    +	private List detectHighlights(String options) {
    +		return codeTagOptionsParser.parseHighlights(options);
    +	}
    +
    +	private String matchLabel(String options) {
    +		return codeTagOptionsParser.parseLabel(options);
    +	}
     
     }
    diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/TableTagTemplate.java b/src/main/java/br/com/caelum/tubaina/parser/html/TableTagTemplate.java
    index fd0684c..564ba23 100644
    --- a/src/main/java/br/com/caelum/tubaina/parser/html/TableTagTemplate.java
    +++ b/src/main/java/br/com/caelum/tubaina/parser/html/TableTagTemplate.java
    @@ -5,12 +5,6 @@
     
     public class TableTagTemplate implements Tag {
     
    -	private boolean noborder;
    -	
    -	public TableTagTemplate(boolean noborder) {
    -		this.noborder = noborder;
    -	}
    -
     	@Override
     	public String parse(TableChunk chunk) {
     		String result = "";
    @@ -18,7 +12,7 @@ public String parse(TableChunk chunk) {
     		if (title != null && !title.trim().isEmpty())
     			result += "

    " + title + "

    "; result += ""; return result; diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableTag.java index 76ffefb..014856f 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableTag.java @@ -8,8 +8,8 @@ public class TableTag implements Tag { private TableTagTemplate template; - public TableTag(boolean noborder) { - template = new TableTagTemplate(noborder); + public TableTag() { + template = new TableTagTemplate(); } @Override diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/TableTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/TableTag.java index 7b524d5..a7dd208 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/TableTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/TableTag.java @@ -9,21 +9,21 @@ public class TableTag implements Tag { @Override public String parse(TableChunk chunk) { String title = chunk.getTitle(); - boolean hasNoborder = chunk.hasNoborder(); + boolean hasBorder = chunk.hasBorder(); int numberOfColumns = chunk.getMaxNumberOfColumns(); if (numberOfColumns <= 0) throw new TubainaException("There are no columns inside table " + title); String tag = "\\begin{table}[!h]\n\\caption{" + title + "}\n\\begin{center}\n"; - if (!hasNoborder) + if (hasBorder) tag += "\\rowcolors[]{1}{gray!30}{gray!15}\n"; tag += "\\begin{tabularx}{"; for (int i = 0; i < numberOfColumns; i++) tag += "X"; tag += "}\n"; - if (!hasNoborder) + if (hasBorder) tag += "\\hline\n"; tag += chunk.getContent(); - if (!hasNoborder) + if (hasBorder) tag += "\n\\hline"; tag += "\n\\end{tabularx}\n\\end{center}\n\\end{table}"; return tag; diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/AbstractTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/AbstractTagTest.java new file mode 100644 index 0000000..824348a --- /dev/null +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/AbstractTagTest.java @@ -0,0 +1,18 @@ +package br.com.caelum.tubaina.parser.html.desktop; + +import java.util.Arrays; +import java.util.List; + +import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.MockedChunk; + +public class AbstractTagTest { + protected String getContent(Chunk chunk) { + new HtmlModule().inject(chunk); + return chunk.asString(); + } + + protected List text(String text) { + return Arrays.asList(new MockedChunk(text)); + } +} diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/AnswerTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/AnswerTagTest.java index a88b13f..7ca7096 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/AnswerTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/AnswerTagTest.java @@ -3,14 +3,14 @@ import org.junit.Assert; import org.junit.Test; -import br.com.caelum.tubaina.parser.html.desktop.AnswerTag; +import br.com.caelum.tubaina.chunk.AnswerChunk; -public class AnswerTagTest { +public class AnswerTagTest extends AbstractTagTest { @Test public void testAnswerTag(){ - AnswerTag tag = new AnswerTag(); - String result = tag.parse(chunk); + AnswerChunk chunk = new AnswerChunk(text("texto da resposta")); + String result = getContent(chunk); Assert.assertEquals("" + "Click here for the answer
    texto da resposta

    ", result); diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/BoxTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/BoxTagTest.java index 9ff6ac9..4df9cc5 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/BoxTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/BoxTagTest.java @@ -3,21 +3,21 @@ import org.junit.Assert; import org.junit.Test; -import br.com.caelum.tubaina.parser.html.desktop.BoxTag; +import br.com.caelum.tubaina.chunk.BoxChunk; -public class BoxTagTest { +public class BoxTagTest extends AbstractTagTest { @Test public void testBox() { - BoxTag tag = new BoxTag(); - String result = tag.parse(chunk); + BoxChunk chunk = new BoxChunk("Titulo do Box", text("Texto do Box")); + String result = getContent(chunk); Assert.assertEquals("

    Titulo do Box

    \nTexto do Box
    ", result); } @Test public void testBoxWithMultilineContent() { - BoxTag tag = new BoxTag(); - String result = tag.parse(chunk); + BoxChunk chunk = new BoxChunk("Titulo do Box", text("Texto do Box\n blablabla")); + String result = getContent(chunk); Assert.assertEquals("

    Titulo do Box

    \nTexto do Box\n blablabla
    ", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/CenteredParagraphTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/CenteredParagraphTagTest.java index ae6f292..a290129 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/CenteredParagraphTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/CenteredParagraphTagTest.java @@ -3,13 +3,13 @@ import org.junit.Assert; import org.junit.Test; -import br.com.caelum.tubaina.parser.html.desktop.CenteredParagraphTag; +import br.com.caelum.tubaina.chunk.CenteredParagraphChunk; -public class CenteredParagraphTagTest { +public class CenteredParagraphTagTest extends AbstractTagTest { @Test public void testCenteredParagraphTest() { - CenteredParagraphTag tag = new CenteredParagraphTag(); - String result = tag.parse(chunk); + CenteredParagraphChunk chunk = new CenteredParagraphChunk("texto centralizado"); + String result = getContent(chunk); Assert.assertEquals("

    texto centralizado

    ", result); } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/CodeTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/CodeTagTest.java index 88ac438..608bd31 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/CodeTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/CodeTagTest.java @@ -1,13 +1,11 @@ package br.com.caelum.tubaina.parser.html.desktop; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; - +import org.junit.Assert; import org.junit.Test; -import br.com.caelum.tubaina.parser.html.HtmlAndKindleCodeTag; +import br.com.caelum.tubaina.chunk.CodeChunk; -public class CodeTagTest { +public class CodeTagTest extends AbstractTagTest { @Test public void shouldCallHtmlCodeTag() { @@ -15,9 +13,18 @@ public void shouldCallHtmlCodeTag() { " String name = \"Gabriel\";\n" + " System.out.println(\"Hello, \" + name);\n" + "}"; - HtmlAndKindleCodeTag htmlCodeTag = mock(HtmlAndKindleCodeTag.class); - CodeTag codeTag = new CodeTag(htmlCodeTag); - codeTag.parse(chunk); - verify(htmlCodeTag).parse(chunk); - } + CodeChunk chunk = new CodeChunk(code, ""); + String result = getContent(chunk); + Assert.assertEquals("
    " + + "
    1 " +
    +								"public static void main(String[] args) {" +
    +								"\n2 " +
    +								"    String name = "Gabriel";" +
    +								"\n3 " +
    +								"    System.out.println("Hello, " + name);" +
    +								"\n4" +
    +								" }" +
    +								"\n
    " + + "
    ", result); + } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ExerciseTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ExerciseTagTest.java index 3baa19d..1235bbf 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ExerciseTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ExerciseTagTest.java @@ -3,14 +3,15 @@ import org.junit.Assert; import org.junit.Test; -import br.com.caelum.tubaina.parser.html.desktop.ExerciseTag; +import br.com.caelum.tubaina.chunk.ExerciseChunk; -public class ExerciseTagTest { +public class ExerciseTagTest extends AbstractTagTest { @Test public void testExerciseTag(){ - String result = new ExerciseTag().parse(chunk); + ExerciseChunk chunk = new ExerciseChunk(text("texto do exercicio")); + String result = getContent(chunk); Assert.assertEquals("
      texto do exercicio
    ", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ImageTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ImageTagTest.java index b7ccc17..201e686 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ImageTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ImageTagTest.java @@ -1,21 +1,16 @@ package br.com.caelum.tubaina.parser.html.desktop; -import junit.framework.Assert; - import org.junit.Test; import br.com.caelum.tubaina.TubainaException; +import br.com.caelum.tubaina.chunk.ImageChunk; -public class ImageTagTest { +public class ImageTagTest extends AbstractTagTest { - @Test - public void shouldThrowExpectionWhenTagContainsLabel() { - ImageTag tag = new ImageTag(); - try { - tag.parse(chunk); - Assert.fail("should throw excpetion"); - } catch (TubainaException e) { - } - } + @Test(expected=TubainaException.class) + public void shouldThrowExceptionWhenTagContainsLabel() { + ImageChunk chunk = new ImageChunk("image.png", "label=someLabel", 100, 1); + getContent(chunk); + } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ItemTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ItemTagTest.java index de55c39..fecc8e2 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ItemTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ItemTagTest.java @@ -7,12 +7,14 @@ import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.builder.ChunkSplitter; -import br.com.caelum.tubaina.parser.html.desktop.ItemTag; +import br.com.caelum.tubaina.chunk.ItemChunk; + +public class ItemTagTest extends AbstractTagTest { -public class ItemTagTest { @Test public void testItem() { - String result = new ItemTag().parse(chunk); + ItemChunk chunk = new ItemChunk(text("texto do item")); + String result = getContent(chunk); Assert.assertEquals("
  • texto do item
  • ", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/JavaTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/JavaTagTest.java index 2734ad2..2469bd6 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/JavaTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/JavaTagTest.java @@ -2,16 +2,15 @@ import org.junit.Test; -import br.com.caelum.tubaina.TubainaException; -import br.com.caelum.tubaina.parser.SimpleIndentator; +import br.com.caelum.tubaina.chunk.JavaChunk; -@SuppressWarnings("deprecation") -public class JavaTagTest { +@Deprecated +public class JavaTagTest extends AbstractTagTest { - @Test(expected=TubainaException.class) + @Test(expected=Exception.class) public void tagIsDeprecatedAndParsingAgainstItWillAlwaysThrowAnException() { - JavaTag tag = new JavaTag(new SimpleIndentator(4)); - tag.parse(chunk); + JavaChunk chunk = new JavaChunk("#", "System.out.println()"); + getContent(chunk); } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ListTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ListTagTest.java index e291b7b..1352584 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ListTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ListTagTest.java @@ -3,35 +3,35 @@ import org.junit.Assert; import org.junit.Test; -import br.com.caelum.tubaina.parser.html.desktop.ListTag; +import br.com.caelum.tubaina.chunk.ListChunk; -public class ListTagTest { +public class ListTagTest extends AbstractTagTest { @Test public void testList() { - ListTag tag = new ListTag(); - String result = tag.parse(chunk); + ListChunk chunk = new ListChunk("", text("conteudo da lista")); + String result = getContent(chunk); Assert.assertEquals("
      conteudo da lista
    ", result); } @Test public void testListNumber() { - ListTag tag = new ListTag(); - String result = tag.parse(chunk); + ListChunk chunk = new ListChunk("number", text("conteudo da lista")); + String result = getContent(chunk); Assert.assertEquals("
      conteudo da lista
    ", result); } @Test public void testListLetter() { - ListTag tag = new ListTag(); - String result = tag.parse(chunk); + ListChunk chunk = new ListChunk("letter", text("conteudo da lista")); + String result = getContent(chunk); Assert.assertEquals("
      conteudo da lista
    ", result); } @Test public void testListRoman() { - ListTag tag = new ListTag(); - String result = tag.parse(chunk); + ListChunk chunk = new ListChunk("roman", text("conteudo da lista")); + String result = getContent(chunk); Assert.assertEquals("
      conteudo da lista
    ", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/NoteTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/NoteTagTest.java index 87ab5d3..93a55da 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/NoteTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/NoteTagTest.java @@ -3,13 +3,14 @@ import org.junit.Assert; import org.junit.Test; -import br.com.caelum.tubaina.parser.html.desktop.NoteTag; +import br.com.caelum.tubaina.chunk.NoteChunk; -public class NoteTagTest { +public class NoteTagTest extends AbstractTagTest { @Test public void testNoteTag(){ - String result = new NoteTag().parse(chunk); + NoteChunk chunk = new NoteChunk(text(""), text("qualquer texto de nota")); + String result = getContent(chunk); Assert.assertEquals(result, "
    qualquer texto de nota
    "); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ParagraphTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ParagraphTagTest.java index 4ad6284..52cb2ba 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ParagraphTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ParagraphTagTest.java @@ -3,11 +3,14 @@ import org.junit.Assert; import org.junit.Test; -public class ParagraphTagTest { +import br.com.caelum.tubaina.chunk.ParagraphChunk; + +public class ParagraphTagTest extends AbstractTagTest { @Test public void testParagraphTag(){ - String result = new ParagraphTag().parse(chunk); + ParagraphChunk chunk = new ParagraphChunk("qualquer texto"); + String result = getContent(chunk); Assert.assertEquals(result, "

    qualquer texto

    "); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/QuestionTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/QuestionTagTest.java index 8ecc60d..463e81f 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/QuestionTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/QuestionTagTest.java @@ -3,14 +3,15 @@ import org.junit.Assert; import org.junit.Test; -import br.com.caelum.tubaina.parser.html.desktop.QuestionTag; +import br.com.caelum.tubaina.chunk.QuestionChunk; -public class QuestionTagTest { +public class QuestionTagTest extends AbstractTagTest { @Test public void testQuestionTag() { - String result = new QuestionTag().parse(chunk); + QuestionChunk chunk = new QuestionChunk(text("texto da questao")); + String result = getContent(chunk); Assert.assertEquals("
  • texto da questao
  • ", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/RubyTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/RubyTagTest.java index 31a2a7e..45f5051 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/RubyTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/RubyTagTest.java @@ -2,16 +2,14 @@ import org.junit.Test; -import br.com.caelum.tubaina.TubainaException; -import br.com.caelum.tubaina.parser.SimpleIndentator; +import br.com.caelum.tubaina.chunk.RubyChunk; -@SuppressWarnings("deprecation") -public class RubyTagTest { - - @Test(expected=TubainaException.class) +@Deprecated +public class RubyTagTest extends AbstractTagTest { + + @Test(expected = Exception.class) public void tagIsDeprecatedAndParsingAgainstItWillAlwaysThrowAnException() { - RubyTag rubyTag = new RubyTag(new SimpleIndentator(4)); - String code = "# this is a ruby comment"; - rubyTag.parse(chunk); + RubyChunk chunk = new RubyChunk("# this is a ruby comment", "#"); + getContent(chunk); } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/TableColumnTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/TableColumnTagTest.java index 48a23dc..b98843f 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/TableColumnTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/TableColumnTagTest.java @@ -1,17 +1,16 @@ package br.com.caelum.tubaina.parser.html.desktop; -import junit.framework.Assert; - +import org.junit.Assert; import org.junit.Test; -import br.com.caelum.tubaina.parser.html.desktop.TableColumnTag; +import br.com.caelum.tubaina.chunk.TableColumnChunk; -public class TableColumnTagTest { +public class TableColumnTagTest extends AbstractTagTest { @Test public void testTableColumn() { - TableColumnTag tag = new TableColumnTag(); - String result = tag.parse(chunk); + TableColumnChunk chunk = new TableColumnChunk(text("algum texto")); + String result = getContent(chunk); Assert.assertEquals("algum texto", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/TableRowTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/TableRowTagTest.java index 3f7b369..06d4557 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/TableRowTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/TableRowTagTest.java @@ -1,17 +1,16 @@ package br.com.caelum.tubaina.parser.html.desktop; -import junit.framework.Assert; - +import org.junit.Assert; import org.junit.Test; -import br.com.caelum.tubaina.parser.html.desktop.TableRowTag; +import br.com.caelum.tubaina.chunk.TableRowChunk; + +public class TableRowTagTest extends AbstractTagTest { -public class TableRowTagTest { - @Test public void testTableRow() { - TableRowTag tag = new TableRowTag(); - String result = tag.parse(chunk); + TableRowChunk chunk = new TableRowChunk(text("texto")); + String result = getContent(chunk); Assert.assertEquals("texto", result); } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/TableTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/TableTagTest.java index 8ca0e91..5a70448 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/TableTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/TableTagTest.java @@ -1,38 +1,37 @@ package br.com.caelum.tubaina.parser.html.desktop; -import junit.framework.Assert; - +import org.junit.Assert; import org.junit.Test; -import br.com.caelum.tubaina.parser.html.desktop.TableTag; +import br.com.caelum.tubaina.chunk.TableChunk; -public class TableTagTest { +public class TableTagTest extends AbstractTagTest { @Test public void testTable() { - TableTag tag = new TableTag(false); - String result = tag.parse(chunk); + TableChunk chunk = new TableChunk("", text("texto da tabela")); + String result = getContent(chunk); Assert.assertEquals("texto da tabela
    ", result); } @Test public void testTableWithTitle() { - TableTag tag = new TableTag(false); - String result = tag.parse(chunk); + TableChunk chunk = new TableChunk("title=\"titulo\"", text("texto da tabela")); + String result = getContent(chunk); Assert.assertEquals("

    titulo

    texto da tabela
    ", result); } @Test public void testTableWithoutBorder() { - TableTag tag = new TableTag(true); - String result = tag.parse(chunk); + TableChunk chunk = new TableChunk("noborder", text("texto da tabela")); + String result = getContent(chunk); Assert.assertEquals("texto da tabela
    ", result); } @Test public void testTableWithTitleAndWithoutBorder() { - TableTag tag = new TableTag(true); - String result = tag.parse(chunk); + TableChunk chunk = new TableChunk("title=\"titulo\" noborder", text("texto da tabela")); + String result = getContent(chunk); Assert.assertEquals("

    titulo

    texto da tabela
    ", result); } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/XmlTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/XmlTagTest.java index 7065d6f..e6bc339 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/XmlTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/XmlTagTest.java @@ -2,15 +2,15 @@ import org.junit.Test; -import br.com.caelum.tubaina.TubainaException; -import br.com.caelum.tubaina.parser.SimpleIndentator; +import br.com.caelum.tubaina.chunk.XmlChunk; -@SuppressWarnings("deprecation") -public class XmlTagTest { +@Deprecated +public class XmlTagTest extends AbstractTagTest { - @Test(expected=TubainaException.class) + @Test(expected=Exception.class) public void tagIsDeprecatedAndParsingAgainstItWillAlwaysThrowAnException() { - new XmlTag(new SimpleIndentator(4)).parse(chunk); + XmlChunk chunk = new XmlChunk("#", "tag"); + getContent(chunk); } } \ No newline at end of file From f5b3a164a59fc963c8380310acb8a1abe596004b Mon Sep 17 00:00:00 2001 From: Cecilia Fernandes Date: Wed, 27 Mar 2013 15:05:16 -0300 Subject: [PATCH 06/17] [Adding Guice] making a lot of kindle tag tests pass --- .../parser/html/kindle/KindleParser.java | 2 +- .../tubaina/parser/html/kindle/TableTag.java | 6 ++--- .../parser/html/kindle/AbstractTagTest.java | 19 +++++++++++++++ .../parser/html/kindle/AnswerTagTest.java | 9 ++++---- .../parser/html/kindle/BoxTagTest.java | 12 ++++++---- .../html/kindle/CenteredParagraphTagTest.java | 8 +++---- .../parser/html/kindle/ExerciseTagTest.java | 10 ++++---- .../parser/html/kindle/ItemTagTest.java | 15 ++++++------ .../parser/html/kindle/ListTagTest.java | 20 ++++++++-------- .../parser/html/kindle/NoteTagTest.java | 19 ++++++++------- .../parser/html/kindle/ParagraphTagTest.java | 11 +++++---- .../parser/html/kindle/QuestionTagTest.java | 7 ++++-- .../html/kindle/TableColumnTagTest.java | 11 +++++---- .../parser/html/kindle/TableRowTagTest.java | 10 ++++---- .../parser/html/kindle/TableTagTest.java | 23 ++++++++++--------- 15 files changed, 107 insertions(+), 75 deletions(-) create mode 100644 src/test/java/br/com/caelum/tubaina/parser/html/kindle/AbstractTagTest.java diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleParser.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleParser.java index 2b4a12d..adde588 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleParser.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleParser.java @@ -123,7 +123,7 @@ public String parseRow(String text) { public String parseTable(String text, String title, boolean noborder, int columns) { title = this.sanitizer.sanitize(title); - return new TableTag(noborder).parse(chunk); + return new TableTag().parse(chunk); } public String parseCenteredParagraph(String content) { diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableTag.java index d063046..c3c1812 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableTag.java @@ -7,9 +7,9 @@ public class TableTag implements Tag { private TableTagTemplate template; - - public TableTag(boolean noborder) { - template = new TableTagTemplate(noborder); + + public TableTag() { + template = new TableTagTemplate(); } @Override diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/AbstractTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/AbstractTagTest.java new file mode 100644 index 0000000..5fd790d --- /dev/null +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/AbstractTagTest.java @@ -0,0 +1,19 @@ +package br.com.caelum.tubaina.parser.html.kindle; + +import java.util.Arrays; +import java.util.List; + +import br.com.caelum.tubaina.Chunk; +import br.com.caelum.tubaina.chunk.MockedChunk; + +public class AbstractTagTest { + + protected String getContent(Chunk chunk) { + new KindleModule().inject(chunk); + return chunk.asString(); + } + + protected List text(String text) { + return Arrays.asList(new MockedChunk(text)); + } +} diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/AnswerTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/AnswerTagTest.java index 0827d3e..27a55e4 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/AnswerTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/AnswerTagTest.java @@ -3,14 +3,15 @@ import org.junit.Assert; import org.junit.Test; -import br.com.caelum.tubaina.parser.html.kindle.AnswerTag; +import br.com.caelum.tubaina.chunk.AnswerChunk; -public class AnswerTagTest { +public class AnswerTagTest extends AbstractTagTest { + @Test public void testAnswerTag(){ - AnswerTag tag = new AnswerTag(); - String result = tag.parse(chunk); + AnswerChunk chunk = new AnswerChunk(text("texto da resposta")); + String result = getContent(chunk); Assert.assertEquals("
    texto da resposta

    ", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/BoxTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/BoxTagTest.java index 2bf0c83..39a09c4 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/BoxTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/BoxTagTest.java @@ -3,20 +3,22 @@ import org.junit.Assert; import org.junit.Test; -public class BoxTagTest { +import br.com.caelum.tubaina.chunk.BoxChunk; + +public class BoxTagTest extends AbstractTagTest { @Test public void testBox() { - BoxTag tag = new BoxTag(); - String result = tag.parse(chunk); + BoxChunk chunk = new BoxChunk("Título do Box", text("Texto do Box")); + String result = getContent(chunk); Assert.assertEquals(BoxTag.BEGIN + BoxTag.TITLE_BEGIN + "Titulo do Box" + BoxTag.TITLE_END + "Texto do Box" + BoxTag.END, result); } @Test public void testBoxWithMultilineContent() { - BoxTag tag = new BoxTag(); - String result = tag.parse(chunk); + BoxChunk chunk = new BoxChunk("Título do Box", text("Texto do Box\n blablabla")); + String result = getContent(chunk); Assert.assertEquals(BoxTag.BEGIN + BoxTag.TITLE_BEGIN + "Titulo do Box" + BoxTag.TITLE_END + "Texto do Box\n blablabla" + BoxTag.END, result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/CenteredParagraphTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/CenteredParagraphTagTest.java index 1831f77..a5ecf66 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/CenteredParagraphTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/CenteredParagraphTagTest.java @@ -3,13 +3,13 @@ import org.junit.Assert; import org.junit.Test; -import br.com.caelum.tubaina.parser.html.kindle.CenteredParagraphTag; +import br.com.caelum.tubaina.chunk.CenteredParagraphChunk; -public class CenteredParagraphTagTest { +public class CenteredParagraphTagTest extends AbstractTagTest { @Test public void testCenteredParagraphTest() { - CenteredParagraphTag tag = new CenteredParagraphTag(); - String result = tag.parse(chunk); + CenteredParagraphChunk chunk = new CenteredParagraphChunk("texto centralizado"); + String result = getContent(chunk); Assert.assertEquals("

    texto centralizado

    ", result); } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ExerciseTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ExerciseTagTest.java index dd5add6..000fd99 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ExerciseTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ExerciseTagTest.java @@ -3,14 +3,14 @@ import org.junit.Assert; import org.junit.Test; -import br.com.caelum.tubaina.parser.html.kindle.ExerciseTag; +import br.com.caelum.tubaina.chunk.ExerciseChunk; +public class ExerciseTagTest extends AbstractTagTest { -public class ExerciseTagTest { - @Test - public void testExerciseTag(){ - String result = new ExerciseTag().parse(chunk); + public void testExerciseTag() { + ExerciseChunk chunk = new ExerciseChunk(text("texto do exercicio")); + String result = getContent(chunk); Assert.assertEquals("
      texto do exercicio
    ", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ItemTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ItemTagTest.java index 3095026..f8f75ae 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ItemTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ItemTagTest.java @@ -7,21 +7,20 @@ import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.builder.ChunkSplitter; -import br.com.caelum.tubaina.parser.html.kindle.ItemTag; +import br.com.caelum.tubaina.chunk.ItemChunk; -public class ItemTagTest { +public class ItemTagTest extends AbstractTagTest { @Test public void testItem() { - String result = new ItemTag().parse(chunk); + ItemChunk chunk = new ItemChunk(text("texto do item")); + String result = getContent(chunk); Assert.assertEquals("
  • texto do item
  • ", result); } @Test public void testItemSplitt() { - List chunks = new ChunkSplitter(null, "list") - .splitChunks("* blah\n\n*bleh\n \n * blih "); - Assert.assertEquals(3, chunks.size() ); + List chunks = new ChunkSplitter(null, "list").splitChunks("* blah\n\n*bleh\n \n * blih "); + Assert.assertEquals(3, chunks.size()); } - - + } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ListTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ListTagTest.java index 7ee1ed6..16d0734 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ListTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ListTagTest.java @@ -3,35 +3,35 @@ import org.junit.Assert; import org.junit.Test; -import br.com.caelum.tubaina.parser.html.kindle.ListTag; +import br.com.caelum.tubaina.chunk.ListChunk; -public class ListTagTest { +public class ListTagTest extends AbstractTagTest { @Test public void testList() { - ListTag tag = new ListTag(); - String result = tag.parse(chunk); + ListChunk chunk = new ListChunk("", text("conteudo da lista")); + String result = getContent(chunk); Assert.assertEquals("
      conteudo da lista
    ", result); } @Test public void testListNumber() { - ListTag tag = new ListTag(); - String result = tag.parse(chunk); + ListChunk chunk = new ListChunk("number", text("conteudo da lista")); + String result = getContent(chunk); Assert.assertEquals("
      conteudo da lista
    ", result); } @Test public void testListLetter() { - ListTag tag = new ListTag(); - String result = tag.parse(chunk); + ListChunk chunk = new ListChunk("letter", text("conteudo da lista")); + String result = getContent(chunk); Assert.assertEquals("
      conteudo da lista
    ", result); } @Test public void testListRoman() { - ListTag tag = new ListTag(); - String result = tag.parse(chunk); + ListChunk chunk = new ListChunk("roman", text("conteudo da lista")); + String result = getContent(chunk); Assert.assertEquals("
      conteudo da lista
    ", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/NoteTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/NoteTagTest.java index 2883fe4..f8db31a 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/NoteTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/NoteTagTest.java @@ -3,14 +3,17 @@ import org.junit.Assert; import org.junit.Test; -public class NoteTagTest { +import br.com.caelum.tubaina.chunk.NoteChunk; - @Test - public void testNoteTag() { - String result = new NoteTag().parse(chunk); - String begin = "---------------------------
    "; - String end = "
    ---------------------------"; - Assert.assertEquals(result, begin + "qualquer texto de nota" + end); - } +public class NoteTagTest extends AbstractTagTest { + + @Test + public void testNoteTag() { + NoteChunk chunk = new NoteChunk(text(""), text("qualquer texto de nota")); + String result = getContent(chunk); + String begin = "---------------------------
    "; + String end = "
    ---------------------------"; + Assert.assertEquals(result, begin + "qualquer texto de nota" + end); + } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ParagraphTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ParagraphTagTest.java index 1be8767..e862200 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ParagraphTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ParagraphTagTest.java @@ -3,12 +3,15 @@ import org.junit.Assert; import org.junit.Test; -public class ParagraphTagTest { +import br.com.caelum.tubaina.chunk.ParagraphChunk; + +public class ParagraphTagTest extends AbstractTagTest { @Test - public void testParagraphTag(){ - String result = new ParagraphTag().parse(chunk); + public void testParagraphTag() { + ParagraphChunk chunk = new ParagraphChunk("qualquer texto"); + String result = getContent(chunk); Assert.assertEquals(result, "

    qualquer texto

    "); } - + } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/QuestionTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/QuestionTagTest.java index 7114b49..4880e6e 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/QuestionTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/QuestionTagTest.java @@ -3,11 +3,14 @@ import org.junit.Assert; import org.junit.Test; -public class QuestionTagTest { +import br.com.caelum.tubaina.chunk.QuestionChunk; + +public class QuestionTagTest extends AbstractTagTest { @Test public void testQuestionTag() { - String result = new QuestionTag().parse(chunk); + QuestionChunk chunk = new QuestionChunk(text("texto da questao")); + String result = getContent(chunk); Assert.assertEquals("
  • texto da questao
  • ", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/TableColumnTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/TableColumnTagTest.java index 0597e0e..0ca130b 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/TableColumnTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/TableColumnTagTest.java @@ -1,15 +1,16 @@ package br.com.caelum.tubaina.parser.html.kindle; -import junit.framework.Assert; - +import org.junit.Assert; import org.junit.Test; -public class TableColumnTagTest { +import br.com.caelum.tubaina.chunk.TableColumnChunk; + +public class TableColumnTagTest extends AbstractTagTest { @Test public void testTableColumn() { - TableColumnTag tag = new TableColumnTag(); - String result = tag.parse(chunk); + TableColumnChunk chunk = new TableColumnChunk(text("algum texto")); + String result = getContent(chunk); Assert.assertEquals("algum texto", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/TableRowTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/TableRowTagTest.java index b52aef4..fcedb21 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/TableRowTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/TableRowTagTest.java @@ -1,16 +1,16 @@ package br.com.caelum.tubaina.parser.html.kindle; -import junit.framework.Assert; - +import org.junit.Assert; import org.junit.Test; +import br.com.caelum.tubaina.chunk.TableRowChunk; -public class TableRowTagTest { +public class TableRowTagTest extends AbstractTagTest { @Test public void testTableRow() { - TableRowTag tag = new TableRowTag(); - String result = tag.parse(chunk); + TableRowChunk chunk = new TableRowChunk(text("texto")); + String result = getContent(chunk); Assert.assertEquals("texto", result); } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/TableTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/TableTagTest.java index 1103577..dfa5332 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/TableTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/TableTagTest.java @@ -1,36 +1,37 @@ package br.com.caelum.tubaina.parser.html.kindle; -import junit.framework.Assert; - +import org.junit.Assert; import org.junit.Test; -public class TableTagTest { +import br.com.caelum.tubaina.chunk.TableChunk; + +public class TableTagTest extends AbstractTagTest { @Test public void testTable() { - TableTag tag = new TableTag(false); - String result = tag.parse(chunk); + TableChunk chunk = new TableChunk("", text("texto da tabela")); + String result = getContent(chunk); Assert.assertEquals("texto da tabela
    ", result); } @Test public void testTableWithTitle() { - TableTag tag = new TableTag(false); - String result = tag.parse(chunk); + TableChunk chunk = new TableChunk("\"titulo\"", text("texto da tabela")); + String result = getContent(chunk); Assert.assertEquals("

    titulo

    texto da tabela
    ", result); } @Test public void testTableWithoutBorder() { - TableTag tag = new TableTag(true); - String result = tag.parse(chunk); + TableChunk chunk = new TableChunk("noborder", text("texto da tabela")); + String result = getContent(chunk); Assert.assertEquals("texto da tabela
    ", result); } @Test public void testTableWithTitleAndWithoutBorder() { - TableTag tag = new TableTag(true); - String result = tag.parse(chunk); + TableChunk chunk = new TableChunk("noborder \"titulo\"", text("texto da tabela")); + String result = getContent(chunk); Assert.assertEquals("

    titulo

    texto da tabela
    ", result); } } From 2173b612ffab18efb0305848554e3d2ca5feeffd Mon Sep 17 00:00:00 2001 From: Ceci Fernandes & Chico Sokol Date: Wed, 27 Mar 2013 16:27:35 -0300 Subject: [PATCH 07/17] [Adding Guice] Making LatexGeneratorTest pass --- src/main/java/br/com/caelum/tubaina/Book.java | 9 +- .../java/br/com/caelum/tubaina/Chapter.java | 3 +- .../java/br/com/caelum/tubaina/ParseType.java | 2 +- .../caelum/tubaina/builder/BookBuilder.java | 8 +- .../com/caelum/tubaina/chunk/ImageChunk.java | 2 +- .../parser/{NullTag.java => NullNoteTag.java} | 2 +- .../br/com/caelum/tubaina/parser/Parser.java | 21 --- .../parser/html/desktop/HtmlModule.java | 4 +- .../parser/html/kindle/KindleModule.java | 4 +- .../tubaina/parser/latex/LatexModule.java | 12 +- .../tubaina/parser/latex/LatexParser.java | 168 ++---------------- .../caelum/tubaina/parser/latex/LinkTag.java | 26 --- .../tubaina/parser/latex/NullAnswerTag.java | 14 ++ .../tubaina/builder/BookBuilderTest.java | 6 +- .../tubaina/parser/latex/GistTagTest.java | 5 +- .../parser/latex/LatexGeneratorTest.java | 23 +-- .../tubaina/parser/latex/LatexParserTest.java | 3 +- .../tubaina/parser/latex/LinkTagTest.java | 83 --------- templates/latex/book.ftl | 4 +- templates/latex/cover.ftl | 4 - 20 files changed, 72 insertions(+), 331 deletions(-) rename src/main/java/br/com/caelum/tubaina/parser/{NullTag.java => NullNoteTag.java} (74%) delete mode 100644 src/main/java/br/com/caelum/tubaina/parser/latex/LinkTag.java create mode 100644 src/main/java/br/com/caelum/tubaina/parser/latex/NullAnswerTag.java delete mode 100644 src/test/java/br/com/caelum/tubaina/parser/latex/LinkTagTest.java diff --git a/src/main/java/br/com/caelum/tubaina/Book.java b/src/main/java/br/com/caelum/tubaina/Book.java index c45def7..136dde3 100644 --- a/src/main/java/br/com/caelum/tubaina/Book.java +++ b/src/main/java/br/com/caelum/tubaina/Book.java @@ -11,14 +11,11 @@ public class Book { private String name; - private final boolean showNotes; - private final List introductionChapters; - public Book(String name, List bookParts, boolean showNotes, List introductionChapters) { + public Book(String name, List bookParts, List introductionChapters) { this.parts = bookParts; this.name = name; - this.showNotes = showNotes; this.introductionChapters = introductionChapters; } @@ -38,10 +35,6 @@ public String getName() { return name; } - public boolean isInstructorBook() { - return showNotes; - } - public List getIntroductionChapters() { return introductionChapters; } diff --git a/src/main/java/br/com/caelum/tubaina/Chapter.java b/src/main/java/br/com/caelum/tubaina/Chapter.java index 1d171f8..f742bc3 100644 --- a/src/main/java/br/com/caelum/tubaina/Chapter.java +++ b/src/main/java/br/com/caelum/tubaina/Chapter.java @@ -2,7 +2,6 @@ import java.util.List; -import br.com.caelum.tubaina.parser.Parser; import br.com.caelum.tubaina.resources.Resource; import br.com.caelum.tubaina.util.TitleShortener; import br.com.caelum.tubaina.util.TitleSlug; @@ -48,7 +47,7 @@ public List getResources() { return resources; } - public String getIntroduction(Parser p){ + public String getIntroduction(){ return this.introduction.asString(); } diff --git a/src/main/java/br/com/caelum/tubaina/ParseType.java b/src/main/java/br/com/caelum/tubaina/ParseType.java index 0cfaf4b..12a234f 100644 --- a/src/main/java/br/com/caelum/tubaina/ParseType.java +++ b/src/main/java/br/com/caelum/tubaina/ParseType.java @@ -24,7 +24,7 @@ public enum ParseType { public Parser getParser(RegexConfigurator conf, boolean noAnswer, boolean showNotes, String linkParameter) throws IOException { List tags = conf.read("/regex.properties", "/latex.properties"); tags.add(new LinkTag("\\\\link{$1}$2")); - return new LatexParser(tags, showNotes, noAnswer); + return new LatexParser(tags); } @Override diff --git a/src/main/java/br/com/caelum/tubaina/builder/BookBuilder.java b/src/main/java/br/com/caelum/tubaina/builder/BookBuilder.java index bcd838d..7fcff90 100644 --- a/src/main/java/br/com/caelum/tubaina/builder/BookBuilder.java +++ b/src/main/java/br/com/caelum/tubaina/builder/BookBuilder.java @@ -37,7 +37,7 @@ public void addAllReaders(List chapterReaders, List introducti } public void addReaderFromString(String fileContent) { - addAllReaders(Arrays.asList((AfcFile) new AfcFile(new StringReader(fileContent), "file from string")), + addAllReaders(Arrays.asList(new AfcFile(new StringReader(fileContent), "file from string")), new ArrayList()); } @@ -54,13 +54,9 @@ public void addAllReadersOfNonNumberedFromStrings(List introductionChapt } public Book build() { - return this.build(false); - } - - public Book build(boolean showNotes) { List introductionChapters = parseIntroductionChapters(); parseBookChapters(); - return new Book(name, bookPartsBuilder.build(), showNotes, introductionChapters); + return new Book(name, bookPartsBuilder.build(), introductionChapters); } private void parseBookChapters() { diff --git a/src/main/java/br/com/caelum/tubaina/chunk/ImageChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/ImageChunk.java index 9454442..49deab9 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/ImageChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/ImageChunk.java @@ -12,7 +12,7 @@ public class ImageChunk extends AbstractChunk { public ImageChunk(String path, String options, double width, int dpi) { this.path = path; - this.options = options; + this.options = options == null ? "" : options; this.width = width; this.dpi = dpi; } diff --git a/src/main/java/br/com/caelum/tubaina/parser/NullTag.java b/src/main/java/br/com/caelum/tubaina/parser/NullNoteTag.java similarity index 74% rename from src/main/java/br/com/caelum/tubaina/parser/NullTag.java rename to src/main/java/br/com/caelum/tubaina/parser/NullNoteTag.java index 4ed5223..d72c232 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/NullTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/NullNoteTag.java @@ -2,7 +2,7 @@ import br.com.caelum.tubaina.chunk.NoteChunk; -public class NullTag implements Tag { +public class NullNoteTag implements Tag { @Override public String parse(NoteChunk chunk) { diff --git a/src/main/java/br/com/caelum/tubaina/parser/Parser.java b/src/main/java/br/com/caelum/tubaina/parser/Parser.java index cf7065e..cd6efee 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/Parser.java +++ b/src/main/java/br/com/caelum/tubaina/parser/Parser.java @@ -2,25 +2,4 @@ public interface Parser { public String parse(String text); - public String parseParagraph(String text); - public String parseParagraphInsideItem(String text); - public String parseJava(String text, String options); - public String parseBox(String text, String options); - public String parseImage(String text, String options); - public String parseCode(String text, String options); - public String parseGist(String options); - public String parseList(String text, String options); - public String parseXml(String text, String options); - public String parseExercise(String text, int id); - public String parseAnswer(String text, int id); - public String parseQuestion(String text); - public String parseNote(String text, String title); - public String parseItem(String text); - public String parseTodo(String text); - public String parseIndex(String name); - public String parseTable(String text, String title, boolean noborder, int columns); - public String parseRow(String text); - public String parseColumn(String text); - public String parseCenteredParagraph(String content); - public String parseRuby(String content, String options); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/HtmlModule.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/HtmlModule.java index 29dc9df..8924243 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/HtmlModule.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/HtmlModule.java @@ -16,7 +16,7 @@ import br.com.caelum.tubaina.chunk.TableColumnChunk; import br.com.caelum.tubaina.chunk.TableRowChunk; import br.com.caelum.tubaina.parser.IntroductionTag; -import br.com.caelum.tubaina.parser.NullTag; +import br.com.caelum.tubaina.parser.NullNoteTag; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.TubainaModule; @@ -45,7 +45,7 @@ protected void configure() { bind(new TypeLiteral>() {}).to(IntroductionTag.class); bind(new TypeLiteral>() {}).to(ItemTag.class); bind(new TypeLiteral>() {}).to(ListTag.class); - bind(new TypeLiteral>() {}).to(showNotes ? NoteTag.class : NullTag.class); + bind(new TypeLiteral>() {}).to(showNotes ? NoteTag.class : NullNoteTag.class); bind(new TypeLiteral>() {}).to(ParagraphTag.class); bind(new TypeLiteral>() {}).to(QuestionTag.class); bind(new TypeLiteral>() {}).to(TableColumnTag.class); diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleModule.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleModule.java index 2c3e6d2..777e4cc 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleModule.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleModule.java @@ -16,7 +16,7 @@ import br.com.caelum.tubaina.chunk.TableColumnChunk; import br.com.caelum.tubaina.chunk.TableRowChunk; import br.com.caelum.tubaina.parser.IntroductionTag; -import br.com.caelum.tubaina.parser.NullTag; +import br.com.caelum.tubaina.parser.NullNoteTag; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.TubainaModule; @@ -43,7 +43,7 @@ protected void configure() { bind(new TypeLiteral>() {}).to(IntroductionTag.class); bind(new TypeLiteral>() {}).to(ItemTag.class); bind(new TypeLiteral>() {}).to(ListTag.class); - bind(new TypeLiteral>() {}).to(showNotes ? NoteTag.class : NullTag.class); + bind(new TypeLiteral>() {}).to(showNotes ? NoteTag.class : NullNoteTag.class); bind(new TypeLiteral>() {}).to(ParagraphTag.class); bind(new TypeLiteral>() {}).to(QuestionTag.class); bind(new TypeLiteral>() {}).to(TableColumnTag.class); diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/LatexModule.java b/src/main/java/br/com/caelum/tubaina/parser/latex/LatexModule.java index 7640f68..cfacdb8 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/LatexModule.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/LatexModule.java @@ -18,7 +18,7 @@ import br.com.caelum.tubaina.chunk.TableRowChunk; import br.com.caelum.tubaina.parser.Indentator; import br.com.caelum.tubaina.parser.IntroductionTag; -import br.com.caelum.tubaina.parser.NullTag; +import br.com.caelum.tubaina.parser.NullNoteTag; import br.com.caelum.tubaina.parser.SimpleIndentator; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.TubainaModule; @@ -31,18 +31,20 @@ public class LatexModule extends TubainaModule { private final boolean showNotes; + private final boolean noAnswer; - public LatexModule(boolean showNotes) { + public LatexModule(boolean showNotes, boolean noAnswer) { this.showNotes = showNotes; + this.noAnswer = noAnswer; } public LatexModule() { - this(true); + this(true, false); } @Override protected void configure() { - bind(new TypeLiteral>() {}).to(AnswerTag.class); + bind(new TypeLiteral>() {}).to(noAnswer ? NullAnswerTag.class : AnswerTag.class); bind(new TypeLiteral>() {}).to(BoxTag.class); bind(new TypeLiteral>() {}).to(CenteredParagraphTag.class); bind(new TypeLiteral>() {}).to(CodeTag.class); @@ -52,7 +54,7 @@ protected void configure() { bind(new TypeLiteral>() {}).to(IntroductionTag.class); bind(new TypeLiteral>() {}).to(ItemTag.class); bind(new TypeLiteral>() {}).to(ListTag.class); - bind(new TypeLiteral>() {}).to(showNotes ? NoteTag.class : NullTag.class); + bind(new TypeLiteral>() {}).to(showNotes ? NoteTag.class : NullNoteTag.class); bind(new TypeLiteral>() {}).to(ParagraphTag.class); bind(new TypeLiteral>() {}).to(QuestionTag.class); bind(new TypeLiteral>() {}).to(TableColumnTag.class); diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/LatexParser.java b/src/main/java/br/com/caelum/tubaina/parser/latex/LatexParser.java index e289d90..afc771b 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/LatexParser.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/LatexParser.java @@ -2,160 +2,24 @@ import java.util.List; -import br.com.caelum.tubaina.gists.GistConnector; -import br.com.caelum.tubaina.gists.GistRequest; -import br.com.caelum.tubaina.gists.GistResultRetriever; -import br.com.caelum.tubaina.gists.JsonToGistResultConverter; import br.com.caelum.tubaina.parser.Parser; -import br.com.caelum.tubaina.parser.SimpleIndentator; -import br.com.caelum.tubaina.parser.Tag; -import br.com.caelum.tubaina.parser.html.desktop.SyntaxHighlighter; -import br.com.caelum.tubaina.parser.pygments.CodeCache; -import br.com.caelum.tubaina.parser.pygments.CodeOutputType; -import br.com.caelum.tubaina.util.SimpleCommandExecutor; +import br.com.caelum.tubaina.parser.RegexTag; public class LatexParser implements Parser { - private static final String VSPACE = "\n\\\\[1em]\n"; - public static final int MAX_LINE_LENGTH = 93; - - private final List tags; - - private boolean showNotes; - private final boolean noAnswer; - private SyntaxHighlighter syntaxHighlighter; - private CodeCache codeCache; - - public LatexParser(List tags, boolean showNotes, boolean noAnswer) { - codeCache = new CodeCache(CodeOutputType.LATEX); - syntaxHighlighter = new SyntaxHighlighter(new SimpleCommandExecutor(), CodeOutputType.LATEX, codeCache); - this.tags = tags; - this.showNotes = showNotes; - this.noAnswer = noAnswer; - } - - public LatexParser(List tags) { - codeCache = new CodeCache(CodeOutputType.LATEX); - syntaxHighlighter = new SyntaxHighlighter(new SimpleCommandExecutor(), CodeOutputType.LATEX, codeCache); - this.tags = tags; - this.showNotes = false; - this.noAnswer = false; - } - - public String parse(String string) { - // TODO: remove eventual $1, $2 from the string so as not to be - // interpreted - string = new EscapeTag().parse(chunk); - for (Tag tag : tags) { - string = tag.parse(chunk); - } - return string; - } - - public String parseBox(String text, String options) { - String string = new BoxTag().parse(chunk); - return VSPACE + string + VSPACE; - } - - public String parseImage(String text, String options) { - return new ImageTag().parse(chunk); - } - - @Deprecated - public String parseJava(String text, String options) { - String string = new JavaTag(new SimpleIndentator(4)) - .parse(chunk); - return string; - } - - public String parseParagraph(String text) { - text = parse(text); - return new ParagraphTag().parse(chunk); - } - - public String parseCode(String text, String options) { - String string = new CodeTag(new SimpleIndentator(4), syntaxHighlighter) - .parse(chunk); - return string + VSPACE; - } - - public String parseGist(String options) { - - GistResultRetriever retriever = new GistResultRetriever(new GistConnector( - new JsonToGistResultConverter(), new GistRequest())); - SimpleIndentator ident = new SimpleIndentator(4); - - String string = new GistTag(ident, retriever).parse(chunk); - return string + VSPACE; - } - - public String parseList(String text, String options) { - String string = new ListTag().parse(chunk); - return string; - } - - @Deprecated - public String parseXml(String text, String options) { - return new XmlTag(new SimpleIndentator(4)).parse(chunk) - + VSPACE; - } - - public String parseExercise(String text, int id) { - return new ExerciseTag().parse(chunk); - } - - public String parseAnswer(String text, int id) { - if (!noAnswer) - return new AnswerTag().parse(chunk); - return ""; - } - - public String parseQuestion(String text) { - return new QuestionTag().parse(chunk); - } - - public String parseNote(String text, String title) { - if (this.showNotes) - return new NoteTag().parse(chunk); - return ""; - } - - public String parseItem(String text) { - return new ItemTag().parse(chunk); - } - - public String parseTodo(String text) { - return new TodoTag().parse(chunk); - } - - public String parseIndex(String name) { - return new IndexTag().parse(chunk); - } - - public String parseColumn(String text) { - return new TableColumnTag().parse(chunk); - } - - public String parseRow(String text) { - return new TableRowTag().parse(chunk); - } - - public String parseTable(String text, String title, boolean noborder, - int columns) { - return new TableTag(noborder).parse(chunk); - } - - public String parseCenteredParagraph(String content) { - return new CenteredParagraphTag().parse(chunk); - } - - @Deprecated - public String parseRuby(String content, String options) { - String result = new RubyTag(new SimpleIndentator(4)).parse(chunk); - return result + VSPACE; - } - - public String parseParagraphInsideItem(String text) { - return parse(text); - } + private final List tags; + + public LatexParser(List tags) { + this.tags = tags; + } + + @Override + public String parse(String string) { + // TODO: remove eventual $1, $2 from the string so as not to be interpreted + string = new EscapeTag().parse(string); + for (RegexTag tag : tags) { + string = tag.parse(string); + } + return string; + } } \ No newline at end of file diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/LinkTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/LinkTag.java deleted file mode 100644 index aa2f746..0000000 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/LinkTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package br.com.caelum.tubaina.parser.latex; - -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import br.com.caelum.tubaina.Chunk; -import br.com.caelum.tubaina.parser.Tag; - -public class LinkTag implements Tag { - - private final String replace; - - public LinkTag(String replace) { - this.replace = replace; - } - - @Override - public String parse(Chunk chunk) { - String r = "(?s)(?i)((?:https?|ftp|file)://[-a-zA-Z0-9+&@#}{/?=~_|!:,.;\\\\]*[-a-zA-Z0-9+&@#/}{%=~_|])(:|;|,|\\.|\"|'|\\(|\\)|<|>|\\s|%%|$$)"; - Pattern regex = Pattern.compile(r); - Matcher matcher = regex.matcher(content); - String text = matcher.replaceAll(replace); - return text; - } - -} diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/NullAnswerTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/NullAnswerTag.java new file mode 100644 index 0000000..b124b92 --- /dev/null +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/NullAnswerTag.java @@ -0,0 +1,14 @@ +package br.com.caelum.tubaina.parser.latex; + +import br.com.caelum.tubaina.chunk.AnswerChunk; +import br.com.caelum.tubaina.parser.Tag; + +//TODO: unify with NullNoteTag +public class NullAnswerTag implements Tag{ + + @Override + public String parse(AnswerChunk chunk) { + return ""; + } + +} diff --git a/src/test/java/br/com/caelum/tubaina/builder/BookBuilderTest.java b/src/test/java/br/com/caelum/tubaina/builder/BookBuilderTest.java index c18a117..012ee00 100644 --- a/src/test/java/br/com/caelum/tubaina/builder/BookBuilderTest.java +++ b/src/test/java/br/com/caelum/tubaina/builder/BookBuilderTest.java @@ -71,7 +71,7 @@ public void testBuildSimpleBook() { Assert.assertEquals("texto da segunda seção", sections1.get(1).getChunks().get(0) .asString()); - Assert.assertEquals("Algum texto de introdução", chapters.get(1).getIntroduction(parser)); + Assert.assertEquals("Algum texto de introdução", chapters.get(1).getIntroduction()); } @@ -94,7 +94,7 @@ public void testChapterWithoutSectionsAndWithIntroduction() { Assert.assertEquals(1, chapters.size()); Assert.assertEquals("O que é java?", chapters.get(0).getTitle()); Assert.assertEquals(0, sections.size()); - Assert.assertEquals("texto da introdução", chapters.get(0).getIntroduction(parser)); + Assert.assertEquals("texto da introdução", chapters.get(0).getIntroduction()); } @Test @@ -108,7 +108,7 @@ public void testChapterWithSectionsAndWithIntroduction() { Assert.assertEquals("O que é java?", chapters.get(0).getTitle()); Assert.assertEquals(2, sections.size()); - Assert.assertEquals("texto da introdução", chapters.get(0).getIntroduction(parser)); + Assert.assertEquals("texto da introdução", chapters.get(0).getIntroduction()); Assert.assertEquals("Primeira seção", sections.get(0).getTitle()); Assert.assertEquals("texto da prim seção", sections.get(0).getChunks().get(0).asString()); diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/GistTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/GistTagTest.java index bc9ef68..6ec2cb1 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/GistTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/GistTagTest.java @@ -8,13 +8,14 @@ import org.junit.Test; +import br.com.caelum.tubaina.chunk.GistChunk; import br.com.caelum.tubaina.gists.GistConnector; import br.com.caelum.tubaina.gists.GistRequest; import br.com.caelum.tubaina.gists.GistResultRetriever; import br.com.caelum.tubaina.gists.JsonToGistResultConverter; import br.com.caelum.tubaina.parser.SimpleIndentator; -public class GistTagTest { +public class GistTagTest extends AbstractTagTest { @Test public void gistedCodeIsRetrievedAndUsed() throws Exception { @@ -26,6 +27,7 @@ public void gistedCodeIsRetrievedAndUsed() throws Exception { // code to be retrieved, we can only assert parts of it String gistedCode = "javascript:(function() {window.frames[3][0].document.getElementById('frameplugin').style.display='none'})()"; + GistChunk chunk = new GistChunk(options); String output = new GistTag(new SimpleIndentator(4), retriever).parse(chunk); assertPygmentsRan(output); @@ -48,6 +50,7 @@ public void gistedCodeIsParsedWithLineNumbers() throws Exception { GistResultRetriever retriever = new GistResultRetriever(connector); + GistChunk chunk = new GistChunk(options); String output = new GistTag(new SimpleIndentator(4), retriever).parse(chunk); assertPygmentsRan(output); diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/LatexGeneratorTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/LatexGeneratorTest.java index 77cb0f6..b8f1c64 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/LatexGeneratorTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/LatexGeneratorTest.java @@ -21,7 +21,7 @@ import br.com.caelum.tubaina.TubainaException; import br.com.caelum.tubaina.builder.BookBuilder; import br.com.caelum.tubaina.parser.RegexConfigurator; -import br.com.caelum.tubaina.parser.Tag; +import br.com.caelum.tubaina.parser.RegexTag; import br.com.caelum.tubaina.resources.ResourceLocator; import br.com.caelum.tubaina.util.FileUtilities; @@ -35,7 +35,7 @@ public class LatexGeneratorTest { @Before public void setUp() throws IOException { RegexConfigurator configurator = new RegexConfigurator(); - List tags = configurator.read("/regex.properties", "/html.properties"); + List tags = configurator.read("/regex.properties", "/html.properties"); parser = new LatexParser(tags); File path = new File("src/test/resources"); @@ -65,6 +65,7 @@ public void deleteTempFiles() throws IOException { @Test public void testGenerator() throws IOException { + new LatexModule().inject(book); generator.generate(book, temp); // Book LaTeX @@ -97,6 +98,7 @@ public void testGeneratorWithCorrectImages() throws IOException { builder.addReaderFromString("[chapter qualquer um]\n" + "[img baseJpgImage.jpg]"); Book b = builder.build(); + new LatexModule().inject(b); generator.generate(b, temp); @@ -119,6 +121,7 @@ public void testGeneratorWithDoubledImage() throws TubainaException, IOException + "[img baseJpgImage.jpg]\n[img baseJpgImage.jpg]"); Book b = builder.build(); + new LatexModule().inject(b); try { generator.generate(b, temp); } catch (TubainaException t) { @@ -134,6 +137,7 @@ public void testGeneratorWithNonExistantImage() throws TubainaException, IOExcep + "[img src/test/resources/someImage.gif]"); try { Book b = builder.build(); + new LatexModule().inject(b); generator.generate(b, temp); Assert.fail("Should raise an exception"); } catch (TubainaException t) { @@ -144,8 +148,8 @@ public void testGeneratorWithNonExistantImage() throws TubainaException, IOExcep @Test public void testGeneratorForInstructorTextbook() throws IOException { RegexConfigurator configurator = new RegexConfigurator(); - List tags = configurator.read("/regex.properties", "/html.properties"); - LatexParser parser = new LatexParser(tags, true, false); + List tags = configurator.read("/regex.properties", "/html.properties"); + LatexParser parser = new LatexParser(tags); File path = new File("src/test/resources"); ResourceLocator.initialize(path); @@ -153,13 +157,11 @@ public void testGeneratorForInstructorTextbook() throws IOException { BookBuilder builder = new BookBuilder("Do Instrutor"); builder.addReaderFromString("[chapter com notas]\n" + "[note]uma nota para o instrutor[/note]"); - Book b = builder.build(true); - Assert.assertTrue(b.isInstructorBook()); + Book b = builder.build(); + new LatexModule(true, true).inject(b); customGenerator.generate(b, temp); File texFile = new File(temp, "teste.tex"); Assert.assertTrue("Book file should exist", texFile.exists()); - Assert.assertTrue("Should have INSTRUCTOR TEXTBOOK on the first page", - containsText(texFile, "INSTRUCTOR TEXTBOOK")); Assert.assertTrue("Should display the note", containsText(texFile, "uma nota para o instrutor")); } @@ -169,8 +171,8 @@ public void testGeneratorForStudentTextbook() throws IOException { BookBuilder builder = new BookBuilder("Do Aluno"); builder.addReaderFromString("[chapter com notas]\n" + "[note]uma nota para o instrutor[/note]"); - Book b = builder.build(false); - Assert.assertFalse(b.isInstructorBook()); + Book b = builder.build(); + new LatexModule(false, true).inject(b); generator.generate(b, temp); File texFile = new File(temp, "teste.tex"); Assert.assertTrue("Book file should exist", texFile.exists()); @@ -188,6 +190,7 @@ public void shouldCopyImagesFromIntroduction() throws IOException { List introductionReaders = Arrays.asList(new AfcFile(new StringReader("[chapter intro]\n[img " + imagePath + "]"), "file from string")); builder.addAllReaders(chapterReaders, introductionReaders); Book b = builder.build(); + new LatexModule().inject(b); generator.generate(b, temp); File copied = new File(temp, imagePath); diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/LatexParserTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/LatexParserTest.java index be04641..1f6ecfe 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/LatexParserTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/LatexParserTest.java @@ -10,6 +10,7 @@ import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.builder.ChunkSplitter; import br.com.caelum.tubaina.parser.RegexConfigurator; +import br.com.caelum.tubaina.parser.RegexTag; import br.com.caelum.tubaina.parser.Tag; public class LatexParserTest { @@ -19,7 +20,7 @@ public class LatexParserTest { @Before public void setUp() throws IOException { RegexConfigurator configurator = new RegexConfigurator(); - List tags = configurator.read("/regex.properties", "/latex.properties"); + List tags = configurator.read("/regex.properties", "/latex.properties"); this.parser = new LatexParser(tags); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/LinkTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/LinkTagTest.java deleted file mode 100644 index 8444633..0000000 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/LinkTagTest.java +++ /dev/null @@ -1,83 +0,0 @@ -package br.com.caelum.tubaina.parser.latex; - -import static org.junit.Assert.assertEquals; - -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -public class LinkTagTest { - - private LinkTag linkTag; - - @Before - public void setUp() { - this.linkTag = new LinkTag("\\\\href{$1}{$1}$2"); - } - - @Test - public void testLinkWithHttpTagInline() { - testLink("http://www.caelum.com.br/"); - } - - @Test - public void testLinkWithHttpsTagInline() { - testLink("https://www.caelum.com.br/"); - } - - @Test - public void testLinkWithParentheses() { - String result = linkTag.parse(chunk); - Assert.assertEquals("(\\href{http://www.caelum.com.br/}{http://www.caelum.com.br/})", result); - } - - @Test - public void shouldReplaceTwoLinks() { - String content = "http://caelum.com.br/ rest of the text http://caelum.com.br/ another"; - String result = linkTag.parse(chunk); - assertEquals("\\href{http://caelum.com.br/}{http://caelum.com.br/} " + - "rest of the text \\href{http://caelum.com.br/}" + - "{http://caelum.com.br/} another", result); - } - - @Test - public void testLinkWithBracesInsideBug() { - testLink("http://localhost/{id}"); - } - - @Test - public void testLinkWithMultipleBracesInsideBug() { - testLink("http://farm{farm-id}.static.flickr.com/{server-id}/{id}_{secret}.jpg"); - } - - @Test - public void shouldNotConsiderPunctuationSymbolsAtTheEndOfUrlForLink() throws Exception { - testHttpAndHttps("This is a link ", "caelum.com.br", "."); - testHttpAndHttps("This is a link ", "caelum.com.br", ";"); - testHttpAndHttps("This is a link ", "caelum.com.br", ":"); - testHttpAndHttps("This is a link ", "caelum.com.br", ";"); - } - - @Test - public void shouldReplaceLinkWhenItsBeforeEndOfLine() throws Exception { - String text = "Então visite http://www.xcubelabs.com/the-android-story.php e http://www.theverge.com/2011/12/7/2585779/android-history\n"; - text = linkTag.parse(chunk); - assertEquals("Então visite \\href{http://www.xcubelabs.com/the-android-story.php}{http://www.xcubelabs.com/the-android-story.php} e \\href{http://www.theverge.com/2011/12/7/2585779/android-history}{http://www.theverge.com/2011/12/7/2585779/android-history}\n", text); - } - - private void testLink(String link) { - String result = linkTag.parse(chunk); - Assert.assertEquals("\\href{" + link + "}{" + link + "}", result); - } - - private void testHttpAndHttps(String textBefore, String link, String textAfter) { - String http = textBefore + "http://" + link + textAfter; - String text = linkTag.parse(chunk); - assertEquals(textBefore + "\\href{http://" + link + "}{http://" + link + "}" + textAfter, text); - - String https = textBefore + "https://" + link + textAfter; - text = linkTag.parse(chunk); - assertEquals(textBefore + "\\href{https://" + link + "}{https://" + link + "}" + textAfter, text); - } - -} diff --git a/templates/latex/book.ftl b/templates/latex/book.ftl index 8f4520b..28a23b2 100644 --- a/templates/latex/book.ftl +++ b/templates/latex/book.ftl @@ -3,11 +3,11 @@ <#list book.chapters as chapter> \chapter{${parser.parse(chapter.title)}} \label{${chapter.label}} -${chapter.getIntroduction(parser)} +${chapter.getIntroduction()} <#list chapter.sections as section> \section{${parser.parse(section.title!"")}} <#list section.chunks as chunk> -${chunk.getContent(parser)!""} +${chunk.asString()!""} diff --git a/templates/latex/cover.ftl b/templates/latex/cover.ftl index aa3753b..de6c71d 100644 --- a/templates/latex/cover.ftl +++ b/templates/latex/cover.ftl @@ -1,8 +1,4 @@ \thispagestyle{empty} -<#if book.isInstructorBook()> -\centerline{\Huge INSTRUCTOR TEXTBOOK} -\newpage - \vspace*{2.5cm} \large \centerline{\bf ${book.name}} From c1c13a26d907d8ddfb41d7b4fde8a276e2752aee Mon Sep 17 00:00:00 2001 From: Ceci Fernandes & Chico Sokol Date: Wed, 27 Mar 2013 17:31:41 -0300 Subject: [PATCH 08/17] [Adding Guice] All LaTeX tests passing! Yuhuu --- .../tubaina/builder/BookBuilderTest.java | 3 +- .../caelum/tubaina/parser/RegexTagTest.java | 2 +- .../tubaina/parser/latex/LatexParserTest.java | 36 +------------------ .../parser/latex/ParagraphTagTest.java | 17 +++++++++ 4 files changed, 21 insertions(+), 37 deletions(-) create mode 100644 src/test/java/br/com/caelum/tubaina/parser/latex/ParagraphTagTest.java diff --git a/src/test/java/br/com/caelum/tubaina/builder/BookBuilderTest.java b/src/test/java/br/com/caelum/tubaina/builder/BookBuilderTest.java index 012ee00..ff170b4 100644 --- a/src/test/java/br/com/caelum/tubaina/builder/BookBuilderTest.java +++ b/src/test/java/br/com/caelum/tubaina/builder/BookBuilderTest.java @@ -164,7 +164,8 @@ public void testParagraphChunk() { Assert.assertEquals(1, chunks.size()); Assert.assertEquals(ParagraphChunk.class, chunks.get(0).getClass()); - Assert.assertEquals("Algum texto de parágrafo", chunks.get(0).asString()); + ParagraphChunk paragraphChunk = (ParagraphChunk) chunks.get(0); + Assert.assertEquals("Algum texto de parágrafo", paragraphChunk.getContent()); } @Test diff --git a/src/test/java/br/com/caelum/tubaina/parser/RegexTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/RegexTagTest.java index 1b9d916..ccc1c9f 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/RegexTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/RegexTagTest.java @@ -2,7 +2,7 @@ import java.util.List; -public class RegexTagTest { +public abstract class RegexTagTest { protected List regexTags; protected String parseWithRegexps(String text) { diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/LatexParserTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/LatexParserTest.java index 1f6ecfe..1d0e0df 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/LatexParserTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/LatexParserTest.java @@ -7,12 +7,10 @@ import org.junit.Before; import org.junit.Test; -import br.com.caelum.tubaina.Chunk; -import br.com.caelum.tubaina.builder.ChunkSplitter; import br.com.caelum.tubaina.parser.RegexConfigurator; import br.com.caelum.tubaina.parser.RegexTag; -import br.com.caelum.tubaina.parser.Tag; +//TODO: make paragraph with bold, boxes with inner chunks, for example, somewhere else. public class LatexParserTest { private LatexParser parser; @@ -83,12 +81,6 @@ public void testTwoInlineCodeTagsWithTwoColonsInside() { result); } - @Test - public void testParseParagraph() { - Assert.assertEquals("\n\nola mundo", parser.parseParagraph("ola mundo")); - Assert.assertEquals("\n\n\\definition{test}", parser.parseParagraph("**test**")); - } - @Test public void testQuotationTagInline() { String result = parser.parse("[quote ola mundo --Anonimo]"); @@ -137,20 +129,6 @@ public void testTitleTagInlineWithInnerTags() { Assert.assertEquals("\\sectiontitle{ola \\definition{mu\\underlined{n}do}}", result); } - // /////////////// missing BOX TAG tests //////////////////// - - @Test - public void testTagSoloTag() { - String result = parser.parseIndex("ola mundo"); - Assert.assertEquals("\n\\index{ola mundo}\n", result); - } - - @Test - public void testTagMultiTag() { - String result = parser.parseIndex("ola mundo, olamundo"); - Assert.assertEquals("\n\\index{ola mundo, olamundo}\n", result); - } - @Test public void testQuotationTag() { String result = parser.parse("\"\""); @@ -177,18 +155,6 @@ public void testEscapeSpecialChars() { Assert.assertEquals("\\$ \\char92 \\_ \\char126 \\% \\# \\char94 \\& \\{ \\}", result); } - @Test - public void testItemSplittBug() { - String input = "* Refactoring, Martin Fowler\n\n" - + "* Effective Java, Joshua Bloch\n\n* Design Patterns, Erich Gamma et al"; - List chunks = new ChunkSplitter(null, "list").splitChunks(input); - Assert.assertEquals(3, chunks.size()); - Assert.assertEquals("\n\\item{Refactoring, Martin Fowler}\n", chunks.get(0).asString()); - Assert.assertEquals("\n\\item{Effective Java, Joshua Bloch}\n", chunks.get(1).asString()); - Assert.assertEquals("\n\\item{Design Patterns, Erich Gamma et al}\n", chunks.get(2) - .asString()); - } - @Test public void testQuoteInsideCodeInline() { String input = "%%String s = \"string\"%%"; diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/ParagraphTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/ParagraphTagTest.java new file mode 100644 index 0000000..432f22d --- /dev/null +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/ParagraphTagTest.java @@ -0,0 +1,17 @@ +package br.com.caelum.tubaina.parser.latex; + +import org.junit.Assert; +import org.junit.Test; + +import br.com.caelum.tubaina.chunk.ParagraphChunk; + +public class ParagraphTagTest extends AbstractTagTest { + + @Test + public void testParagraphTag(){ + ParagraphChunk chunk = new ParagraphChunk("qualquer texto"); + String result = getContent(chunk); + Assert.assertEquals(result, "\n\nqualquer texto"); + } + +} From 2288462355fbebf58213acb851ede50fbff553d2 Mon Sep 17 00:00:00 2001 From: Ceci Fernandes & Chico Sokol Date: Wed, 27 Mar 2013 18:24:12 -0300 Subject: [PATCH 09/17] [Adding Guice] FlatHtmlGeneratorTest passing --- .../java/br/com/caelum/tubaina/BookPart.java | 3 +- .../java/br/com/caelum/tubaina/ParseType.java | 4 +- .../tubaina/builder/BookPartsBuilder.java | 1 + .../tubaina/parser/html/IndexTagTemplate.java | 10 +- .../parser/html/ParagraphTagTemplate.java | 10 +- .../tubaina/parser/html/TableTagTemplate.java | 9 +- .../tubaina/parser/html/desktop/BoxTag.java | 14 +- .../parser/html/desktop/HtmlParser.java | 145 ++---------------- .../tubaina/parser/html/desktop/IndexTag.java | 10 +- .../parser/html/desktop/ParagraphTag.java | 10 +- .../tubaina/parser/html/desktop/TableTag.java | 8 +- .../tubaina/parser/html/kindle/BoxTag.java | 12 +- .../tubaina/parser/html/kindle/IndexTag.java | 10 +- .../parser/html/kindle/ParagraphTag.java | 10 +- .../tubaina/parser/html/kindle/TableTag.java | 8 +- .../tubaina/parser/latex/LatexParser.java | 1 - src/main/resources/html.properties | 3 + src/main/resources/kindle.properties | 3 + src/main/resources/latex.properties | 3 + .../html/desktop/FlatHtmlGeneratorTest.java | 15 +- .../parser/html/desktop/HtmlParserTest.java | 88 +---------- .../html/desktop/SectionToStringTest.java | 2 +- .../SingleHtmlChapterGeneratorTest.java | 2 +- .../html/desktop/SingleHtmlGeneratorTest.java | 2 +- .../html/kindle/ChapterToKindleTest.java | 2 +- .../IntroductionChaptersToKindleTest.java | 2 +- .../html/kindle/KindleGeneratorTest.java | 2 +- .../parser/html/kindle/PartToKindleTest.java | 2 +- .../parser/latex/LatexGeneratorTest.java | 1 + templates/html/chapter.ftl | 4 +- templates/kindle/bookPart.ftl | 4 +- 31 files changed, 150 insertions(+), 250 deletions(-) diff --git a/src/main/java/br/com/caelum/tubaina/BookPart.java b/src/main/java/br/com/caelum/tubaina/BookPart.java index a8de918..4e7be51 100644 --- a/src/main/java/br/com/caelum/tubaina/BookPart.java +++ b/src/main/java/br/com/caelum/tubaina/BookPart.java @@ -7,7 +7,6 @@ import org.apache.commons.io.FilenameUtils; import br.com.caelum.tubaina.chunk.IntroductionChunk; -import br.com.caelum.tubaina.parser.Parser; import br.com.caelum.tubaina.resources.ImageResource; import br.com.caelum.tubaina.resources.Resource; import br.com.caelum.tubaina.resources.ResourceLocator; @@ -53,7 +52,7 @@ public boolean isPrintable() { return printable; } - public String getIntroduction(Parser p) { + public String getIntroduction() { return introductionChunk == null ? "" : introductionChunk.asString(); } diff --git a/src/main/java/br/com/caelum/tubaina/ParseType.java b/src/main/java/br/com/caelum/tubaina/ParseType.java index 12a234f..d17dacf 100644 --- a/src/main/java/br/com/caelum/tubaina/ParseType.java +++ b/src/main/java/br/com/caelum/tubaina/ParseType.java @@ -39,7 +39,7 @@ public Generator getGenerator(Parser parser, TubainaBuilderData data) { public Parser getParser(RegexConfigurator conf, boolean noAnswer, boolean showNotes, String linkParameter) throws IOException { List tags = conf.read("/regex.properties", "/html.properties"); tags.add(new LinkTag("$1$2")); - return new HtmlParser(tags, noAnswer, showNotes); + return new HtmlParser(tags); } @Override @@ -52,7 +52,7 @@ protected Generator getGenerator(Parser parser, TubainaBuilderData data) { public Parser getParser(RegexConfigurator conf, boolean noAnswer, boolean showNotes, String linkParameter) throws IOException { List tags = conf.read("/regex.properties", "/html.properties"); tags.add(new LinkTag("$1$2")); - return new HtmlParser(tags, noAnswer, showNotes); + return new HtmlParser(tags); } @Override diff --git a/src/main/java/br/com/caelum/tubaina/builder/BookPartsBuilder.java b/src/main/java/br/com/caelum/tubaina/builder/BookPartsBuilder.java index e1a93f3..f15a773 100644 --- a/src/main/java/br/com/caelum/tubaina/builder/BookPartsBuilder.java +++ b/src/main/java/br/com/caelum/tubaina/builder/BookPartsBuilder.java @@ -26,6 +26,7 @@ public BookPartsBuilder() { extractor = new BookPartParametersExtractor(); } + //TODO: why do we send introductionTex and introductionChunk? public BookPartsBuilder addPartFrom(String text) { if (containsPartTag(text)) { String bookPartTitle = extractPartBookTitle(text); diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/IndexTagTemplate.java b/src/main/java/br/com/caelum/tubaina/parser/html/IndexTagTemplate.java index d4a5c45..b684f19 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/IndexTagTemplate.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/IndexTagTemplate.java @@ -2,12 +2,20 @@ import br.com.caelum.tubaina.chunk.IndexChunk; import br.com.caelum.tubaina.parser.Tag; +import br.com.caelum.tubaina.util.HtmlSanitizer; public class IndexTagTemplate implements Tag { + private final HtmlSanitizer sanitizer; + + public IndexTagTemplate(HtmlSanitizer sanitizer) { + this.sanitizer = sanitizer; + } + @Override public String parse(IndexChunk chunk) { - return "\n\n"; + String index = sanitizer.sanitize(chunk.getName()); + return "\n\n"; } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/ParagraphTagTemplate.java b/src/main/java/br/com/caelum/tubaina/parser/html/ParagraphTagTemplate.java index 22589b4..450c3a8 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/ParagraphTagTemplate.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/ParagraphTagTemplate.java @@ -2,12 +2,20 @@ import br.com.caelum.tubaina.chunk.ParagraphChunk; import br.com.caelum.tubaina.parser.Tag; +import br.com.caelum.tubaina.util.HtmlSanitizer; public class ParagraphTagTemplate implements Tag { + private final HtmlSanitizer sanitizer; + + public ParagraphTagTemplate(HtmlSanitizer sanitizer) { + this.sanitizer = sanitizer; + } + @Override public String parse(ParagraphChunk chunk) { - return "

    " + chunk.getContent() + "

    "; + String content = sanitizer.sanitize(chunk.getContent()); + return "

    " + content + "

    "; } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/TableTagTemplate.java b/src/main/java/br/com/caelum/tubaina/parser/html/TableTagTemplate.java index 564ba23..0ec8393 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/TableTagTemplate.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/TableTagTemplate.java @@ -2,13 +2,20 @@ import br.com.caelum.tubaina.chunk.TableChunk; import br.com.caelum.tubaina.parser.Tag; +import br.com.caelum.tubaina.util.HtmlSanitizer; public class TableTagTemplate implements Tag { + private final HtmlSanitizer sanitizer; + + public TableTagTemplate(HtmlSanitizer sanitizer) { + this.sanitizer = sanitizer; + } + @Override public String parse(TableChunk chunk) { String result = ""; - String title = chunk.getTitle(); + String title = sanitizer.sanitize(chunk.getTitle()); if (title != null && !title.trim().isEmpty()) result += "

    " + title + "

    "; result += " { + private final HtmlSanitizer sanitizer; + + @Inject + public BoxTag(HtmlSanitizer sanitizer) { + this.sanitizer = sanitizer; + } + @Override public String parse(BoxChunk chunk) { - - return "

    " + chunk.getTitle().trim() + String title = sanitizer.sanitize(chunk.getTitle().trim()); + return "

    " + title + "

    \n" + chunk.getContent().trim() + "
    "; } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/HtmlParser.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/HtmlParser.java index c940f7e..eb0e549 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/HtmlParser.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/HtmlParser.java @@ -3,143 +3,22 @@ import java.util.List; import br.com.caelum.tubaina.parser.Parser; -import br.com.caelum.tubaina.parser.SimpleIndentator; -import br.com.caelum.tubaina.parser.Tag; -import br.com.caelum.tubaina.util.HtmlSanitizer; +import br.com.caelum.tubaina.parser.RegexTag; public class HtmlParser implements Parser { - public static final int MAX_LINE_LENGTH = 80; + private final List tags; - private final List tags; + public HtmlParser(List tags) { + this.tags = tags; + } - private final HtmlSanitizer sanitizer = new HtmlSanitizer(); - - private final boolean noAnswer; - - private final boolean showNotes; - - public HtmlParser(List tags, boolean noAnswer, boolean showNotes) { - this.tags = tags; - this.noAnswer = noAnswer; - this.showNotes = showNotes; - } - - public String parse(String string) { - // TODO: remove eventual $1, $2 from the string so as not to be - // interpreted - - for (Tag tag : tags) { - string = tag.parse(chunk); - } - return string; - } - - public String parseBox(String text, String options) { - String title = this.sanitizer.sanitize(options); - return new BoxTag().parse(chunk); - - } - - public String parseImage(String text, String options) { - return new ImageTag().parse(chunk); - } - - @Deprecated - public String parseJava(String text, String options) { - String string = new JavaTag(new SimpleIndentator(4)) - .parse(chunk); - return string; - } - - public String parseParagraph(String text) { - String string = this.sanitizer.sanitize(text); - string = new ParagraphTag().parse(chunk); - string = this.parse(string); - return string; - } - - public String parseCode(String text, String options) { - return new CodeTag().parse(chunk); - } - - public String parseGist(String options) { - return new GistTag().parse(chunk); - } - - public String parseList(String text, String options) { - return new ListTag().parse(chunk); - } - - @Deprecated - public String parseXml(String text, String options) { - text = this.sanitizer.sanitize(text); - String string = new XmlTag(new SimpleIndentator(4)).parse(chunk); - return string; - } - - public String parseExercise(String text, int id) { - String string = new ExerciseTag().parse(chunk); - return string; - } - - public String parseAnswer(String text, int id) { - if (!noAnswer) - return new AnswerTag().parse(chunk); - return ""; - } - - public String parseQuestion(String text) { - String string = new QuestionTag().parse(chunk); - return string; - } - - public String parseNote(String text, String title) { - if (showNotes) - return new NoteTag().parse(chunk); - return ""; - } - - public String parseItem(String text) { - return new ItemTag().parse(chunk); - } - - public String parseTodo(String text) { - return new TodoTag().parse(chunk); - } - - public String parseIndex(String name) { - name = this.sanitizer.sanitize(name); - return new IndexTag().parse(chunk); - } - - public String parseColumn(String text) { - return new TableColumnTag().parse(chunk); - } - - public String parseRow(String text) { - return new TableRowTag().parse(chunk); - } - - public String parseTable(String text, String title, boolean noborder, - int columns) { - title = this.sanitizer.sanitize(title); - return new TableTag(noborder).parse(chunk); - } - - public String parseCenteredParagraph(String content) { - return new CenteredParagraphTag().parse(chunk); - } - - @Deprecated - public String parseRuby(String content, String options) { - return new RubyTag(new SimpleIndentator(4)).parse(chunk); - } - - public String parseParagraphInsideItem(String text) { - String string = this.sanitizer.sanitize(text); - string = this.parse(string); - return string; - } + @Override + public String parse(String string) { + for (RegexTag tag : tags) { + string = tag.parse(string); + } + return string; + } } \ No newline at end of file diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/IndexTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/IndexTag.java index 83e8cbe..7847abd 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/IndexTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/IndexTag.java @@ -1,11 +1,19 @@ package br.com.caelum.tubaina.parser.html.desktop; +import com.google.inject.Inject; + import br.com.caelum.tubaina.chunk.IndexChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.IndexTagTemplate; +import br.com.caelum.tubaina.util.HtmlSanitizer; public class IndexTag implements Tag { - private IndexTagTemplate template = new IndexTagTemplate(); + private IndexTagTemplate template; + + @Inject + public IndexTag(HtmlSanitizer sanitizer) { + this.template = new IndexTagTemplate(sanitizer); + } @Override public String parse(IndexChunk chunk) { diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ParagraphTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ParagraphTag.java index 893d160..2d09615 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ParagraphTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ParagraphTag.java @@ -1,12 +1,20 @@ package br.com.caelum.tubaina.parser.html.desktop; +import com.google.inject.Inject; + import br.com.caelum.tubaina.chunk.ParagraphChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.ParagraphTagTemplate; +import br.com.caelum.tubaina.util.HtmlSanitizer; public class ParagraphTag implements Tag { - private ParagraphTagTemplate template = new ParagraphTagTemplate(); + private final ParagraphTagTemplate template; + + @Inject + public ParagraphTag(HtmlSanitizer sanitizer) { + this.template = new ParagraphTagTemplate(sanitizer); + } @Override public String parse(ParagraphChunk chunk) { diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableTag.java index 014856f..d97d58d 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableTag.java @@ -1,15 +1,19 @@ package br.com.caelum.tubaina.parser.html.desktop; +import com.google.inject.Inject; + import br.com.caelum.tubaina.chunk.TableChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.TableTagTemplate; +import br.com.caelum.tubaina.util.HtmlSanitizer; public class TableTag implements Tag { private TableTagTemplate template; - public TableTag() { - template = new TableTagTemplate(); + @Inject + public TableTag(HtmlSanitizer sanitizer) { + template = new TableTagTemplate(sanitizer); } @Override diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/BoxTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/BoxTag.java index 9274462..2511492 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/BoxTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/BoxTag.java @@ -1,7 +1,10 @@ package br.com.caelum.tubaina.parser.html.kindle; +import com.google.inject.Inject; + import br.com.caelum.tubaina.chunk.BoxChunk; import br.com.caelum.tubaina.parser.Tag; +import br.com.caelum.tubaina.util.HtmlSanitizer; public class BoxTag implements Tag { @@ -10,10 +13,17 @@ public class BoxTag implements Tag { static final String END = BEGIN; static final String TITLE_BEGIN = ""; static final String TITLE_END = "\n"; + private final HtmlSanitizer sanitizer; + + @Inject + public BoxTag(HtmlSanitizer sanitizer) { + this.sanitizer = sanitizer; + } @Override public String parse(BoxChunk chunk) { - return BEGIN + TITLE_BEGIN + chunk.getTitle().trim() + TITLE_END + chunk.getContent().trim() + END; + String title = sanitizer.sanitize(chunk.getTitle().trim()); + return BEGIN + TITLE_BEGIN + title + TITLE_END + chunk.getContent().trim() + END; } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/IndexTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/IndexTag.java index 92e095d..68f35c4 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/IndexTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/IndexTag.java @@ -1,12 +1,20 @@ package br.com.caelum.tubaina.parser.html.kindle; +import com.google.inject.Inject; + import br.com.caelum.tubaina.chunk.IndexChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.IndexTagTemplate; +import br.com.caelum.tubaina.util.HtmlSanitizer; public class IndexTag implements Tag { - private IndexTagTemplate template = new IndexTagTemplate(); + private final IndexTagTemplate template; + @Inject + public IndexTag(HtmlSanitizer sanitizer) { + this.template = new IndexTagTemplate(sanitizer); + } + @Override public String parse(IndexChunk chunk) { return template.parse(chunk); diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ParagraphTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ParagraphTag.java index 812e6fc..5761dc9 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ParagraphTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ParagraphTag.java @@ -1,12 +1,20 @@ package br.com.caelum.tubaina.parser.html.kindle; +import com.google.inject.Inject; + import br.com.caelum.tubaina.chunk.ParagraphChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.ParagraphTagTemplate; +import br.com.caelum.tubaina.util.HtmlSanitizer; public class ParagraphTag implements Tag { - private ParagraphTagTemplate template = new ParagraphTagTemplate(); + private ParagraphTagTemplate template; + + @Inject + public ParagraphTag(HtmlSanitizer sanitizer) { + this.template = new ParagraphTagTemplate(sanitizer); + } @Override public String parse(ParagraphChunk chunk) { diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableTag.java index c3c1812..2171d85 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableTag.java @@ -1,15 +1,19 @@ package br.com.caelum.tubaina.parser.html.kindle; +import com.google.inject.Inject; + import br.com.caelum.tubaina.chunk.TableChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.TableTagTemplate; +import br.com.caelum.tubaina.util.HtmlSanitizer; public class TableTag implements Tag { private TableTagTemplate template; - public TableTag() { - template = new TableTagTemplate(); + @Inject + public TableTag(HtmlSanitizer sanitizer) { + template = new TableTagTemplate(sanitizer); } @Override diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/LatexParser.java b/src/main/java/br/com/caelum/tubaina/parser/latex/LatexParser.java index afc771b..70c44e8 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/LatexParser.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/LatexParser.java @@ -15,7 +15,6 @@ public LatexParser(List tags) { @Override public String parse(String string) { - // TODO: remove eventual $1, $2 from the string so as not to be interpreted string = new EscapeTag().parse(string); for (RegexTag tag : tags) { string = tag.parse(string); diff --git a/src/main/resources/html.properties b/src/main/resources/html.properties index ed5d365..6ae64bc 100644 --- a/src/main/resources/html.properties +++ b/src/main/resources/html.properties @@ -18,6 +18,9 @@ quote=$1 #Label footnote= +#Link +link=$1$2 + #E-mail email=$1@$2 diff --git a/src/main/resources/kindle.properties b/src/main/resources/kindle.properties index 942a183..0465049 100644 --- a/src/main/resources/kindle.properties +++ b/src/main/resources/kindle.properties @@ -21,6 +21,9 @@ footnote= #E-mail email=$1@$2 +#Link +link=$1$2 + #Unimportant section title=

    $1

    diff --git a/src/main/resources/latex.properties b/src/main/resources/latex.properties index 02e7ddf..32a82da 100644 --- a/src/main/resources/latex.properties +++ b/src/main/resources/latex.properties @@ -24,6 +24,9 @@ footnote=$2\\\\footnote{$1} #E-mail email=\\\\email{$1}{$2} +#Link +link=\\\\link{$1}$2 + #Unimportant section title=\\\\sectiontitle{$1} diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/FlatHtmlGeneratorTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/FlatHtmlGeneratorTest.java index 67d10c4..b9e0e63 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/FlatHtmlGeneratorTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/FlatHtmlGeneratorTest.java @@ -20,16 +20,14 @@ import br.com.caelum.tubaina.TubainaException; import br.com.caelum.tubaina.builder.BookBuilder; import br.com.caelum.tubaina.parser.RegexConfigurator; -import br.com.caelum.tubaina.parser.Tag; +import br.com.caelum.tubaina.parser.RegexTag; import br.com.caelum.tubaina.resources.ResourceLocator; import br.com.caelum.tubaina.util.FileUtilities; public class FlatHtmlGeneratorTest { private FlatHtmlGenerator generator; - private Book book; - private File temp; private TubainaBuilderData data; @@ -37,8 +35,8 @@ public class FlatHtmlGeneratorTest { @Before public void setUp() throws IOException { RegexConfigurator configurator = new RegexConfigurator(); - List tags = configurator.read("/regex.properties", "/html.properties"); - HtmlParser parser = new HtmlParser(tags, false, true); + List tags = configurator.read("/regex.properties", "/html.properties"); + HtmlParser parser = new HtmlParser(tags); File path = new File("src/test/resources"); ResourceLocator.initialize(path); @@ -67,6 +65,7 @@ public void deleteTempFiles() throws IOException { @Test public void shouldCreateDirectoriesAndCopyFiles() throws Exception { + new HtmlModule().inject(book); generator.generate(book, temp); File livro = new File(temp, "livro/"); @@ -85,6 +84,7 @@ public void shouldCreateDirectoriesAndCopyFiles() throws Exception { @Test public void shouldCreateDirectoriesForChapters() throws Exception { + new HtmlModule().inject(book); generator.generate(book, temp); File livro = new File(temp, "livro/"); File index = new File(livro, "index.html"); @@ -102,6 +102,7 @@ public void shouldCreateDirectoriesForChapters() throws Exception { @Test public void shouldNotCreateDirectoriesForSections() throws IOException { + new HtmlModule().inject(book); generator.generate(book, temp); File livro = new File(temp, "livro/"); @@ -125,6 +126,7 @@ public void testGeneratorWithCorrectImages() throws IOException { builder.addReaderFromString("[chapter qualquer um]\n" + "[img baseJpgImage.jpg]"); Book b = builder.build(); + new HtmlModule().inject(b); generator.generate(b, temp); // testar se a imagem foi copiada pro diretorio images @@ -144,6 +146,7 @@ public void testGeneratorWithDoubledImage() throws TubainaException, IOException builder.addReaderFromString(content); Book b = builder.build(); + new HtmlModule().inject(b); try { generator.generate(b, temp); } catch (TubainaException t) { @@ -160,6 +163,7 @@ public void testGeneratorWithUnexistantImage() throws TubainaException, IOExcept builder.addReaderFromString(chapterContent); try { Book b = builder.build(); + new HtmlModule().inject(b); generator.generate(b, temp); Assert.fail("Should raise an exception"); } catch (TubainaException t) { @@ -175,6 +179,7 @@ public void testGeneratorWithDuppedChapterName() throws TubainaException, IOExce builder.addReaderFromString(fileContent); try { Book b = builder.build(); + new HtmlModule().inject(b); generator.generate(b, temp); Assert.fail("Should raise an exception"); } catch (TubainaException t) { diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/HtmlParserTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/HtmlParserTest.java index 2eef4e5..8ed713f 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/HtmlParserTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/HtmlParserTest.java @@ -7,11 +7,8 @@ import org.junit.Before; import org.junit.Test; -import br.com.caelum.tubaina.Chunk; -import br.com.caelum.tubaina.builder.ChunkSplitter; import br.com.caelum.tubaina.parser.RegexConfigurator; -import br.com.caelum.tubaina.parser.Tag; -import br.com.caelum.tubaina.parser.latex.LinkTag; +import br.com.caelum.tubaina.parser.RegexTag; public class HtmlParserTest { @@ -20,9 +17,8 @@ public class HtmlParserTest { @Before public void setUp() throws IOException { RegexConfigurator configurator = new RegexConfigurator(); - List tags = configurator.read("/regex.properties", "/html.properties"); - tags.add(new LinkTag("$1$2")); - this.parser = new HtmlParser(tags, false, true); + List tags = configurator.read("/regex.properties", "/html.properties"); + this.parser = new HtmlParser(tags); } @Test @@ -79,12 +75,6 @@ public void testTwoInlineCodeTagsWithTwoColonsInside() { String result = parser.parse("ola %%mundo <:: superclasse%% texto %%mais codigo <:: superclasse%%"); Assert.assertEquals("ola mundo :: superclasse texto mais codigo :: superclasse", result); } - - @Test - public void testParagraphTagWithInnerTagsInline() { - String result = parser.parseParagraph("**Ola** ::mundo::. %%Tchau%% **::__mundo__::**."); - Assert.assertEquals("

    Ola mundo. Tchau mundo.

    ", result); - } @Test public void testQuotationTagInline() { @@ -111,19 +101,19 @@ public void testLabelTagMultiline() { } @Test - public void testLinkComHttpTagInline() { + public void testLinkWithHttpTagInline() { String result = parser.parse("http://www.caelum.com.br"); Assert.assertEquals("http://www.caelum.com.br", result); } @Test - public void testLinkComHttpsTagInline() { + public void testLinkWithHttpsTagInline() { String result = parser.parse("https://www.caelum.com.br"); Assert.assertEquals("https://www.caelum.com.br", result); } @Test - public void testLinkComParentesis() { + public void testLinkWithParenthesis() { String result = parser.parse("(http://www.caelum.com.br)"); Assert.assertEquals("(http://www.caelum.com.br)", result); } @@ -152,61 +142,6 @@ public void testTitleTagInlineWithInnerTags() { Assert.assertEquals("

    ola mundo

    ", result); } - @Test - public void testBoxTagWithoutInnerTags() { - String result = parser.parseBox("ola mundo", "Titulo do Box"); - Assert.assertEquals("

    Titulo do Box

    \nola mundo
    ", result); - } - - @Test - public void testBoxTagWithInnerTags() { - //Should not parse. BoxTag just create the box structure - String result = parser.parseBox("__ola__ **mundo**", "Titulo do Box"); - Assert.assertEquals("

    Titulo do Box

    \n__ola__ **mundo**
    ", result); - } - - @Test - public void testBoxTagWithInnerTagsOnTitle() { - String result = parser.parseBox("ola mundo", "Titulo **do Box**"); - Assert.assertEquals("

    Titulo do Box

    \nola mundo
    ", result); - } - - @Test - public void testBulletedList() { - String result = parser.parseList("conteudo da lista", "algo que nao importa"); - Assert.assertEquals("
      conteudo da lista
    ", result); - } - - @Test - public void testNumberList() { - String result = parser.parseList("conteudo da lista", "number"); - Assert.assertEquals("
      conteudo da lista
    ", result); - } - - @Test - public void testLetterList() { - String result = parser.parseList("conteudo da lista", "letter"); - Assert.assertEquals("
      conteudo da lista
    ", result); - } - - @Test - public void testRomanList() { - String result = parser.parseList("conteudo da lista", "roman"); - Assert.assertEquals("
      conteudo da lista
    ", result); - } - - @Test - public void testTagSoloTag() { - String result = parser.parseIndex("ola mundo"); - Assert.assertEquals("\n\n", result); - } - - @Test - public void testTagMultiTag() { - String result = parser.parseIndex("ola mundo, olamundo"); - Assert.assertEquals("\n\n", result); - } - @Test public void testQuotationTag(){ String result = parser.parse("\"\""); @@ -219,15 +154,4 @@ public void testQuotationTagWithText(){ Assert.assertEquals("\"qualquer coisa escrito aqui\"", result); } - @Test - public void testParagraphInsiideItem(){ - String input = "* Refactoring, Martin Fowler\n\n" + - "* Effective Java, Joshua Bloch\n\n* Design Patterns, Erich Gamma et al"; - List chunks = new ChunkSplitter(null, "list").splitChunks(input); - Assert.assertEquals(3, chunks.size()); - Assert.assertEquals("
  • Refactoring, Martin Fowler
  • ", chunks.get(0).asString()); - Assert.assertEquals("
  • Effective Java, Joshua Bloch
  • ", chunks.get(1).asString()); - Assert.assertEquals("
  • Design Patterns, Erich Gamma et al
  • ", chunks.get(2).asString()); - } - } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SectionToStringTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SectionToStringTest.java index 9fdfeb2..55b91ee 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SectionToStringTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SectionToStringTest.java @@ -28,7 +28,7 @@ public void setUp() throws IOException { cfg.setDirectoryForTemplateLoading(new File(TubainaBuilder.DEFAULT_TEMPLATE_DIR, "html/")); cfg.setObjectWrapper(new BeansWrapper()); - Parser parser = new HtmlParser(new RegexConfigurator().read("/regex.properties", "/html.properties"), false, true); + Parser parser = new HtmlParser(new RegexConfigurator().read("/regex.properties", "/html.properties")); ArrayList dirTree = new ArrayList(); dirTree.add("livro"); dirTree.add("livro/01-capitulo"); diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SingleHtmlChapterGeneratorTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SingleHtmlChapterGeneratorTest.java index b08815a..6ab504e 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SingleHtmlChapterGeneratorTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SingleHtmlChapterGeneratorTest.java @@ -28,7 +28,7 @@ public void shouldGenerateChapterInsideADiv() throws Exception { cfg.setDirectoryForTemplateLoading(new File(TubainaBuilder.DEFAULT_TEMPLATE_DIR, "singlehtml/")); cfg.setObjectWrapper(new BeansWrapper()); - Parser parser = new HtmlParser(new RegexConfigurator().read("/regex.properties", "/html.properties"), false, true); + Parser parser = new HtmlParser(new RegexConfigurator().read("/regex.properties", "/html.properties")); ArrayList dirTree = new ArrayList(); dirTree.add("livro"); diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SingleHtmlGeneratorTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SingleHtmlGeneratorTest.java index fd0db8a..bbaef14 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SingleHtmlGeneratorTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SingleHtmlGeneratorTest.java @@ -32,7 +32,7 @@ public class SingleHtmlGeneratorTest { public void setUp() throws IOException { RegexConfigurator configurator = new RegexConfigurator(); List tags = configurator.read("/regex.properties", "/html.properties"); - HtmlParser parser = new HtmlParser(tags, false, true); + HtmlParser parser = new HtmlParser(tags); File path = new File("src/test/resources"); ResourceLocator.initialize(path); diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ChapterToKindleTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ChapterToKindleTest.java index 66f0078..bee404e 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ChapterToKindleTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ChapterToKindleTest.java @@ -28,7 +28,7 @@ public void setUp() throws IOException { cfg.setObjectWrapper(new BeansWrapper()); Parser parser = new HtmlParser(new RegexConfigurator().read("/regex.properties", - "/kindle.properties"), false, true); + "/kindle.properties")); chapterToString = new ChapterToKindle(parser, cfg); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/IntroductionChaptersToKindleTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/IntroductionChaptersToKindleTest.java index 787daf4..057e0bb 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/IntroductionChaptersToKindleTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/IntroductionChaptersToKindleTest.java @@ -34,7 +34,7 @@ public void setUp() throws IOException { cfg.setObjectWrapper(new BeansWrapper()); Parser parser = new HtmlParser(new RegexConfigurator().read("/regex.properties", - "/html.properties"), false, true); + "/html.properties")); ResourceManipulatorFactory kindleResourceManipulatorFactory = new KindleResourceManipulatorFactory(); File temp = new File("tmp"); diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/KindleGeneratorTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/KindleGeneratorTest.java index 6bc5603..ac4d462 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/KindleGeneratorTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/KindleGeneratorTest.java @@ -36,7 +36,7 @@ public class KindleGeneratorTest { public void setUp() throws IOException { RegexConfigurator configurator = new RegexConfigurator(); List tags = configurator.read("/regex.properties", "/html.properties"); - HtmlParser parser = new HtmlParser(tags, false, true); + HtmlParser parser = new HtmlParser(tags); File path = new File("src/test/resources"); ResourceLocator.initialize(path); diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/PartToKindleTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/PartToKindleTest.java index 8b4a50a..16706b4 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/PartToKindleTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/PartToKindleTest.java @@ -35,7 +35,7 @@ public void setUp() throws IOException { cfg.setObjectWrapper(new BeansWrapper()); Parser parser = new HtmlParser(new RegexConfigurator().read("/regex.properties", - "/kindle.properties"), false, true); + "/kindle.properties")); partToKindle = new PartToKindle(parser, cfg, new ArrayList()); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/LatexGeneratorTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/LatexGeneratorTest.java index b8f1c64..368312a 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/LatexGeneratorTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/LatexGeneratorTest.java @@ -25,6 +25,7 @@ import br.com.caelum.tubaina.resources.ResourceLocator; import br.com.caelum.tubaina.util.FileUtilities; +//TODO: Add tests concerning books separated into parts public class LatexGeneratorTest { private LatexGenerator generator; private Book book; diff --git a/templates/html/chapter.ftl b/templates/html/chapter.ftl index 402e685..9077f56 100644 --- a/templates/html/chapter.ftl +++ b/templates/html/chapter.ftl @@ -8,7 +8,7 @@

    ${sanitizer.sanitize(chapter.title)}

    - ${chapter.getIntroduction(parser)} + ${chapter.getIntroduction()} <#assign sectionCount = 1> <#list chapter.sections as section> @@ -16,7 +16,7 @@

    ${chapter.chapterNumber}.${sectionCount} - ${sanitizer.sanitize(section.title)}

    <#list section.chunks as chunk> - ${chunk.getContent(parser)!""} + ${chunk.asString()!""}
    diff --git a/templates/kindle/bookPart.ftl b/templates/kindle/bookPart.ftl index d84d7d6..3bec980 100644 --- a/templates/kindle/bookPart.ftl +++ b/templates/kindle/bookPart.ftl @@ -3,9 +3,9 @@ <#if !part.getIllustrationPath().isEmpty()> - ${part.getIntroduction(parser)} + ${part.getIntroduction()} ${chaptersContent} - + \ No newline at end of file From 85f004ffd973defc22a46310854bcd0ef480b9f2 Mon Sep 17 00:00:00 2001 From: Cecilia Fernandes Date: Mon, 1 Apr 2013 16:09:56 -0300 Subject: [PATCH 10/17] [Adding Guice] Still working on making tests pass. Missing solution to ParagraphInsideListChunk + tag --- .../java/br/com/caelum/tubaina/Chapter.java | 5 +- .../java/br/com/caelum/tubaina/ParseType.java | 8 +- .../br/com/caelum/tubaina/TubainaBuilder.java | 2 +- .../caelum/tubaina/parser/MockedModule.java | 73 ++ .../tubaina/parser/html/ImageTagTemplate.java | 4 +- .../tubaina/parser/html/IndexTagTemplate.java | 6 +- .../parser/html/ParagraphTagTemplate.java | 6 +- .../tubaina/parser/html/TableTagTemplate.java | 6 +- .../tubaina/parser/html/desktop/BoxTag.java | 6 +- .../parser/html/desktop/HtmlModule.java | 4 + .../tubaina/parser/html/desktop/IndexTag.java | 4 +- .../parser/html/desktop/ParagraphTag.java | 4 +- .../tubaina/parser/html/desktop/TableTag.java | 4 +- .../tubaina/parser/html/kindle/BoxTag.java | 6 +- .../tubaina/parser/html/kindle/IndexTag.java | 4 +- .../parser/html/kindle/KindleModule.java | 4 + .../parser/html/kindle/KindleParser.java | 139 +-- .../parser/html/kindle/ParagraphTag.java | 4 +- .../tubaina/parser/html/kindle/TableTag.java | 4 +- .../caelum/tubaina/util/HtmlSanitizer.java | 3 +- .../br/com/caelum/tubaina/util/Sanitizer.java | 7 + .../tubaina/builder/BookBuilderTest.java | 809 +++++++++--------- .../parser/html/ImageTagTemplateTest.java | 3 +- .../parser/html/desktop/AnswerTagTest.java | 3 +- .../html/desktop/SectionToStringTest.java | 3 +- .../html/desktop/SingleHtmlGeneratorTest.java | 4 +- .../parser/html/kindle/AnswerTagTest.java | 3 +- .../parser/html/kindle/BoxTagTest.java | 4 +- .../parser/html/kindle/CodeTagTest.java | 8 +- .../html/kindle/KindleGeneratorTest.java | 4 +- .../parser/html/kindle/KindleParserTest.java | 90 +- .../tubaina/parser/latex/ExerciseTagTest.java | 3 +- templates/html/section.ftl | 2 +- templates/kindle/chapter.ftl | 4 +- templates/singlehtml/chapter.ftl | 4 +- 35 files changed, 543 insertions(+), 704 deletions(-) create mode 100644 src/main/java/br/com/caelum/tubaina/parser/MockedModule.java create mode 100644 src/main/java/br/com/caelum/tubaina/util/Sanitizer.java diff --git a/src/main/java/br/com/caelum/tubaina/Chapter.java b/src/main/java/br/com/caelum/tubaina/Chapter.java index f742bc3..7c09c9e 100644 --- a/src/main/java/br/com/caelum/tubaina/Chapter.java +++ b/src/main/java/br/com/caelum/tubaina/Chapter.java @@ -2,6 +2,7 @@ import java.util.List; +import br.com.caelum.tubaina.chunk.IntroductionChunk; import br.com.caelum.tubaina.resources.Resource; import br.com.caelum.tubaina.util.TitleShortener; import br.com.caelum.tubaina.util.TitleSlug; @@ -14,7 +15,7 @@ public class Chapter { private List resources; - private Chunk introduction; + private IntroductionChunk introduction; private int chapterNumber; @@ -24,7 +25,7 @@ public class Chapter { private final String label; - public Chapter(String title, String label, Chunk introduction, List
    sections, List resources, int chapterNumber, boolean introductionChapter) { + public Chapter(String title, String label, IntroductionChunk introduction, List
    sections, List resources, int chapterNumber, boolean introductionChapter) { this.title = title; this.label = label; this.sections = sections; diff --git a/src/main/java/br/com/caelum/tubaina/ParseType.java b/src/main/java/br/com/caelum/tubaina/ParseType.java index d17dacf..f78803f 100644 --- a/src/main/java/br/com/caelum/tubaina/ParseType.java +++ b/src/main/java/br/com/caelum/tubaina/ParseType.java @@ -6,7 +6,6 @@ import br.com.caelum.tubaina.parser.Parser; import br.com.caelum.tubaina.parser.RegexConfigurator; import br.com.caelum.tubaina.parser.RegexTag; -import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.desktop.FlatHtmlGenerator; import br.com.caelum.tubaina.parser.html.desktop.Generator; import br.com.caelum.tubaina.parser.html.desktop.HtmlParser; @@ -15,7 +14,6 @@ import br.com.caelum.tubaina.parser.html.kindle.KindleParser; import br.com.caelum.tubaina.parser.latex.LatexGenerator; import br.com.caelum.tubaina.parser.latex.LatexParser; -import br.com.caelum.tubaina.parser.latex.LinkTag; public enum ParseType { @@ -23,7 +21,6 @@ public enum ParseType { @Override public Parser getParser(RegexConfigurator conf, boolean noAnswer, boolean showNotes, String linkParameter) throws IOException { List tags = conf.read("/regex.properties", "/latex.properties"); - tags.add(new LinkTag("\\\\link{$1}$2")); return new LatexParser(tags); } @@ -38,7 +35,6 @@ public Generator getGenerator(Parser parser, TubainaBuilderData data) { @Override public Parser getParser(RegexConfigurator conf, boolean noAnswer, boolean showNotes, String linkParameter) throws IOException { List tags = conf.read("/regex.properties", "/html.properties"); - tags.add(new LinkTag("$1$2")); return new HtmlParser(tags); } @@ -51,7 +47,6 @@ protected Generator getGenerator(Parser parser, TubainaBuilderData data) { @Override public Parser getParser(RegexConfigurator conf, boolean noAnswer, boolean showNotes, String linkParameter) throws IOException { List tags = conf.read("/regex.properties", "/html.properties"); - tags.add(new LinkTag("$1$2")); return new HtmlParser(tags); } @@ -65,8 +60,7 @@ protected Generator getGenerator(Parser parser, TubainaBuilderData data) { @Override public Parser getParser(RegexConfigurator conf, boolean noAnswer, boolean showNotes, String linkParameter) throws IOException { List tags = conf.read("/regex.properties", "/kindle.properties"); - tags.add(new LinkTag("$1$2")); - return new KindleParser(tags, noAnswer, showNotes); + return new KindleParser(tags); } @Override diff --git a/src/main/java/br/com/caelum/tubaina/TubainaBuilder.java b/src/main/java/br/com/caelum/tubaina/TubainaBuilder.java index 8a1aa21..131d4bc 100644 --- a/src/main/java/br/com/caelum/tubaina/TubainaBuilder.java +++ b/src/main/java/br/com/caelum/tubaina/TubainaBuilder.java @@ -60,7 +60,7 @@ public void build() throws IOException { Book b = null; try { - b = builder.build(data.isShowNotes()); + b = builder.build(); } catch (TubainaException e) { if (dontCare) { LOG.warn(e); diff --git a/src/main/java/br/com/caelum/tubaina/parser/MockedModule.java b/src/main/java/br/com/caelum/tubaina/parser/MockedModule.java new file mode 100644 index 0000000..e8ec4a2 --- /dev/null +++ b/src/main/java/br/com/caelum/tubaina/parser/MockedModule.java @@ -0,0 +1,73 @@ +package br.com.caelum.tubaina.parser; + +import br.com.caelum.tubaina.CompositeChunk; +import br.com.caelum.tubaina.chunk.BoxChunk; +import br.com.caelum.tubaina.chunk.CenteredParagraphChunk; +import br.com.caelum.tubaina.chunk.CodeChunk; +import br.com.caelum.tubaina.chunk.GistChunk; +import br.com.caelum.tubaina.chunk.ImageChunk; +import br.com.caelum.tubaina.chunk.IntroductionChunk; +import br.com.caelum.tubaina.chunk.ItemChunk; +import br.com.caelum.tubaina.chunk.ListChunk; +import br.com.caelum.tubaina.chunk.ParagraphChunk; +import br.com.caelum.tubaina.chunk.TableChunk; +import br.com.caelum.tubaina.chunk.TableColumnChunk; +import br.com.caelum.tubaina.chunk.TableRowChunk; + +import com.google.inject.TypeLiteral; + +public class MockedModule extends TubainaModule { + + @Override + protected void configure() { + Tag tag = new Tag() { + @Override + public String parse(CompositeChunk chunk) { + return chunk.getContent(); + } + + }; + bind(new TypeLiteral>() {}).toInstance(new Tag() { + @Override + public String parse(CenteredParagraphChunk chunk) { + return chunk.getContent(); + } + + }); + bind(new TypeLiteral>() {}).toInstance(new Tag() { + @Override + public String parse(GistChunk chunk) { + return chunk.getOptions(); + } + + }); + bind(new TypeLiteral>() {}).toInstance(new Tag() { + @Override + public String parse(ParagraphChunk chunk) { + return chunk.getContent(); + } + + }); + bind(new TypeLiteral>() {}).toInstance(new Tag() { + @Override + public String parse(ImageChunk chunk) { + return chunk.getPath(); + } + + }); + bind(new TypeLiteral>() {}).toInstance(new Tag() { + @Override + public String parse(CodeChunk chunk) { + return chunk.getContent(); + } + + }); + bind(new TypeLiteral>() {}).toInstance(tag); + bind(new TypeLiteral>() {}).toInstance(tag); + bind(new TypeLiteral>() {}).toInstance(tag); + bind(new TypeLiteral>() {}).toInstance(tag); + bind(new TypeLiteral>() {}).toInstance(tag); + bind(new TypeLiteral>() {}).toInstance(tag); + bind(new TypeLiteral>() {}).toInstance(tag); + } +} diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/ImageTagTemplate.java b/src/main/java/br/com/caelum/tubaina/parser/html/ImageTagTemplate.java index 217d968..557a01f 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/ImageTagTemplate.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/ImageTagTemplate.java @@ -30,9 +30,9 @@ public String parse(final String path, final String options, boolean shouldUseHT Matcher descriptionMatcher = description.matcher(options); // The image is resized when copied if (descriptionMatcher.find()) { - output.append(" alt=\"" + descriptionMatcher.group(1) + "\" />"); + output.append("alt=\"" + descriptionMatcher.group(1) + "\" />"); } else { - output.append(" alt=\"" + imgsrc + "\" />"); + output.append("alt=\"" + imgsrc + "\" />"); } return output.toString(); diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/IndexTagTemplate.java b/src/main/java/br/com/caelum/tubaina/parser/html/IndexTagTemplate.java index b684f19..8bea1ff 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/IndexTagTemplate.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/IndexTagTemplate.java @@ -2,13 +2,13 @@ import br.com.caelum.tubaina.chunk.IndexChunk; import br.com.caelum.tubaina.parser.Tag; -import br.com.caelum.tubaina.util.HtmlSanitizer; +import br.com.caelum.tubaina.util.Sanitizer; public class IndexTagTemplate implements Tag { - private final HtmlSanitizer sanitizer; + private final Sanitizer sanitizer; - public IndexTagTemplate(HtmlSanitizer sanitizer) { + public IndexTagTemplate(Sanitizer sanitizer) { this.sanitizer = sanitizer; } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/ParagraphTagTemplate.java b/src/main/java/br/com/caelum/tubaina/parser/html/ParagraphTagTemplate.java index 450c3a8..abb7100 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/ParagraphTagTemplate.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/ParagraphTagTemplate.java @@ -2,13 +2,13 @@ import br.com.caelum.tubaina.chunk.ParagraphChunk; import br.com.caelum.tubaina.parser.Tag; -import br.com.caelum.tubaina.util.HtmlSanitizer; +import br.com.caelum.tubaina.util.Sanitizer; public class ParagraphTagTemplate implements Tag { - private final HtmlSanitizer sanitizer; + private final Sanitizer sanitizer; - public ParagraphTagTemplate(HtmlSanitizer sanitizer) { + public ParagraphTagTemplate(Sanitizer sanitizer) { this.sanitizer = sanitizer; } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/TableTagTemplate.java b/src/main/java/br/com/caelum/tubaina/parser/html/TableTagTemplate.java index 0ec8393..5c75cfc 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/TableTagTemplate.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/TableTagTemplate.java @@ -2,13 +2,13 @@ import br.com.caelum.tubaina.chunk.TableChunk; import br.com.caelum.tubaina.parser.Tag; -import br.com.caelum.tubaina.util.HtmlSanitizer; +import br.com.caelum.tubaina.util.Sanitizer; public class TableTagTemplate implements Tag { - private final HtmlSanitizer sanitizer; + private final Sanitizer sanitizer; - public TableTagTemplate(HtmlSanitizer sanitizer) { + public TableTagTemplate(Sanitizer sanitizer) { this.sanitizer = sanitizer; } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/BoxTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/BoxTag.java index 540c57d..bec9d1e 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/BoxTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/BoxTag.java @@ -4,14 +4,14 @@ import br.com.caelum.tubaina.chunk.BoxChunk; import br.com.caelum.tubaina.parser.Tag; -import br.com.caelum.tubaina.util.HtmlSanitizer; +import br.com.caelum.tubaina.util.Sanitizer; public class BoxTag implements Tag { - private final HtmlSanitizer sanitizer; + private final Sanitizer sanitizer; @Inject - public BoxTag(HtmlSanitizer sanitizer) { + public BoxTag(Sanitizer sanitizer) { this.sanitizer = sanitizer; } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/HtmlModule.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/HtmlModule.java index 8924243..ca4d99a 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/HtmlModule.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/HtmlModule.java @@ -19,6 +19,8 @@ import br.com.caelum.tubaina.parser.NullNoteTag; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.TubainaModule; +import br.com.caelum.tubaina.util.HtmlSanitizer; +import br.com.caelum.tubaina.util.Sanitizer; import com.google.inject.TypeLiteral; @@ -51,6 +53,8 @@ protected void configure() { bind(new TypeLiteral>() {}).to(TableColumnTag.class); bind(new TypeLiteral>() {}).to(TableRowTag.class); bind(new TypeLiteral>() {}).to(TableTag.class); + + bind(Sanitizer.class).to(HtmlSanitizer.class); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/IndexTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/IndexTag.java index 7847abd..de817c9 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/IndexTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/IndexTag.java @@ -5,13 +5,13 @@ import br.com.caelum.tubaina.chunk.IndexChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.IndexTagTemplate; -import br.com.caelum.tubaina.util.HtmlSanitizer; +import br.com.caelum.tubaina.util.Sanitizer; public class IndexTag implements Tag { private IndexTagTemplate template; @Inject - public IndexTag(HtmlSanitizer sanitizer) { + public IndexTag(Sanitizer sanitizer) { this.template = new IndexTagTemplate(sanitizer); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ParagraphTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ParagraphTag.java index 2d09615..08235eb 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ParagraphTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ParagraphTag.java @@ -5,14 +5,14 @@ import br.com.caelum.tubaina.chunk.ParagraphChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.ParagraphTagTemplate; -import br.com.caelum.tubaina.util.HtmlSanitizer; +import br.com.caelum.tubaina.util.Sanitizer; public class ParagraphTag implements Tag { private final ParagraphTagTemplate template; @Inject - public ParagraphTag(HtmlSanitizer sanitizer) { + public ParagraphTag(Sanitizer sanitizer) { this.template = new ParagraphTagTemplate(sanitizer); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableTag.java index d97d58d..eff0eb5 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableTag.java @@ -5,14 +5,14 @@ import br.com.caelum.tubaina.chunk.TableChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.TableTagTemplate; -import br.com.caelum.tubaina.util.HtmlSanitizer; +import br.com.caelum.tubaina.util.Sanitizer; public class TableTag implements Tag { private TableTagTemplate template; @Inject - public TableTag(HtmlSanitizer sanitizer) { + public TableTag(Sanitizer sanitizer) { template = new TableTagTemplate(sanitizer); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/BoxTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/BoxTag.java index 2511492..47be6c5 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/BoxTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/BoxTag.java @@ -4,7 +4,7 @@ import br.com.caelum.tubaina.chunk.BoxChunk; import br.com.caelum.tubaina.parser.Tag; -import br.com.caelum.tubaina.util.HtmlSanitizer; +import br.com.caelum.tubaina.util.Sanitizer; public class BoxTag implements Tag { @@ -13,10 +13,10 @@ public class BoxTag implements Tag { static final String END = BEGIN; static final String TITLE_BEGIN = ""; static final String TITLE_END = "\n"; - private final HtmlSanitizer sanitizer; + private final Sanitizer sanitizer; @Inject - public BoxTag(HtmlSanitizer sanitizer) { + public BoxTag(Sanitizer sanitizer) { this.sanitizer = sanitizer; } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/IndexTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/IndexTag.java index 68f35c4..6890a81 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/IndexTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/IndexTag.java @@ -5,13 +5,13 @@ import br.com.caelum.tubaina.chunk.IndexChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.IndexTagTemplate; -import br.com.caelum.tubaina.util.HtmlSanitizer; +import br.com.caelum.tubaina.util.Sanitizer; public class IndexTag implements Tag { private final IndexTagTemplate template; @Inject - public IndexTag(HtmlSanitizer sanitizer) { + public IndexTag(Sanitizer sanitizer) { this.template = new IndexTagTemplate(sanitizer); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleModule.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleModule.java index 777e4cc..88f8d00 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleModule.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleModule.java @@ -19,6 +19,8 @@ import br.com.caelum.tubaina.parser.NullNoteTag; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.TubainaModule; +import br.com.caelum.tubaina.util.HtmlSanitizer; +import br.com.caelum.tubaina.util.Sanitizer; import com.google.inject.TypeLiteral; @@ -49,5 +51,7 @@ protected void configure() { bind(new TypeLiteral>() {}).to(TableColumnTag.class); bind(new TypeLiteral>() {}).to(TableRowTag.class); bind(new TypeLiteral>() {}).to(TableTag.class); + + bind(Sanitizer.class).to(HtmlSanitizer.class); } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleParser.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleParser.java index adde588..289930c 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleParser.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleParser.java @@ -3,136 +3,21 @@ import java.util.List; import br.com.caelum.tubaina.parser.Parser; -import br.com.caelum.tubaina.parser.Tag; -import br.com.caelum.tubaina.util.HtmlSanitizer; +import br.com.caelum.tubaina.parser.RegexTag; public class KindleParser implements Parser { - public static final int MAX_LINE_LENGTH = 80; - - private final List tags; - - private final HtmlSanitizer sanitizer = new HtmlSanitizer(); - - private final boolean noAnswer; - - private final boolean showNotes; - - public KindleParser(List tags, boolean noAnswer, boolean showNotes) { - this.tags = tags; - this.noAnswer = noAnswer; - this.showNotes = showNotes; - } - - public String parse(String string) { - // TODO: remove eventual $1, $2 from the string so as not to be - // interpreted - - for (Tag tag : tags) { - string = tag.parse(chunk); - } - return string; - } - - public String parseBox(String text, String options) { - String title = this.sanitizer.sanitize(options); - return new BoxTag().parse(chunk); - - } - - public String parseImage(String text, String options) { - return new ImageTag().parse(chunk); - } - - public String parseJava(String text, String options) { - return null; - } - - public String parseParagraph(String text) { - String string = this.sanitizer.sanitize(text); - string = new ParagraphTag().parse(chunk); - string = this.parse(string); - return string; - } - - public String parseParagraphInsideItem(String text) { - String string = this.sanitizer.sanitize(text); - string = this.parse(string); - return string; - } - - public String parseCode(String text, String options) { - return new CodeTag().parse(chunk); - } - - public String parseGist(String options) { - return new GistTag().parse(chunk); - } - - public String parseList(String text, String options) { - return new ListTag().parse(chunk); - } - - public String parseXml(String text, String options) { - return null; - } - - public String parseExercise(String text, int id) { - String string = new ExerciseTag().parse(chunk); - return string; - } - - public String parseAnswer(String text, int id) { - if (!noAnswer) - return new AnswerTag().parse(chunk); - return ""; - } - - public String parseQuestion(String text) { - String string = new QuestionTag().parse(chunk); - return string; - } - - public String parseNote(String text, String title) { - if (!showNotes) - return ""; - return new NoteTag().parse(chunk); - } - - public String parseItem(String text) { - return new ItemTag().parse(chunk); - } - - public String parseTodo(String text) { - return new TodoTag().parse(chunk); - } - - public String parseIndex(String name) { - name = this.sanitizer.sanitize(name); - return new IndexTag().parse(chunk); - } - - public String parseColumn(String text) { - return new TableColumnTag().parse(chunk); - } - - public String parseRow(String text) { - return new TableRowTag().parse(chunk); - } - - public String parseTable(String text, String title, boolean noborder, - int columns) { - title = this.sanitizer.sanitize(title); - return new TableTag().parse(chunk); - } - - public String parseCenteredParagraph(String content) { - return new CenteredParagraphTag().parse(chunk); - } - - public String parseRuby(String content, String options) { - return null; - } + private final List tags; + public KindleParser(List tags) { + this.tags = tags; + } + @Override + public String parse(String string) { + for (RegexTag tag : tags) { + string = tag.parse(string); + } + return string; + } } \ No newline at end of file diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ParagraphTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ParagraphTag.java index 5761dc9..e17334d 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ParagraphTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ParagraphTag.java @@ -5,14 +5,14 @@ import br.com.caelum.tubaina.chunk.ParagraphChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.ParagraphTagTemplate; -import br.com.caelum.tubaina.util.HtmlSanitizer; +import br.com.caelum.tubaina.util.Sanitizer; public class ParagraphTag implements Tag { private ParagraphTagTemplate template; @Inject - public ParagraphTag(HtmlSanitizer sanitizer) { + public ParagraphTag(Sanitizer sanitizer) { this.template = new ParagraphTagTemplate(sanitizer); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableTag.java index 2171d85..9adad7c 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableTag.java @@ -5,14 +5,14 @@ import br.com.caelum.tubaina.chunk.TableChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.TableTagTemplate; -import br.com.caelum.tubaina.util.HtmlSanitizer; +import br.com.caelum.tubaina.util.Sanitizer; public class TableTag implements Tag { private TableTagTemplate template; @Inject - public TableTag(HtmlSanitizer sanitizer) { + public TableTag(Sanitizer sanitizer) { template = new TableTagTemplate(sanitizer); } diff --git a/src/main/java/br/com/caelum/tubaina/util/HtmlSanitizer.java b/src/main/java/br/com/caelum/tubaina/util/HtmlSanitizer.java index 2494d16..53fcc92 100644 --- a/src/main/java/br/com/caelum/tubaina/util/HtmlSanitizer.java +++ b/src/main/java/br/com/caelum/tubaina/util/HtmlSanitizer.java @@ -3,7 +3,7 @@ import java.util.HashMap; import java.util.Map; -public class HtmlSanitizer { +public class HtmlSanitizer implements Sanitizer { private Map map; @@ -80,6 +80,7 @@ public HtmlSanitizer() { map.put('&', "&"); } + @Override public String sanitize(String text) { if (text == null) return ""; diff --git a/src/main/java/br/com/caelum/tubaina/util/Sanitizer.java b/src/main/java/br/com/caelum/tubaina/util/Sanitizer.java new file mode 100644 index 0000000..63c5e31 --- /dev/null +++ b/src/main/java/br/com/caelum/tubaina/util/Sanitizer.java @@ -0,0 +1,7 @@ +package br.com.caelum.tubaina.util; + +public interface Sanitizer { + + public abstract String sanitize(String text); + +} \ No newline at end of file diff --git a/src/test/java/br/com/caelum/tubaina/builder/BookBuilderTest.java b/src/test/java/br/com/caelum/tubaina/builder/BookBuilderTest.java index ff170b4..ab463f4 100644 --- a/src/test/java/br/com/caelum/tubaina/builder/BookBuilderTest.java +++ b/src/test/java/br/com/caelum/tubaina/builder/BookBuilderTest.java @@ -24,442 +24,395 @@ import br.com.caelum.tubaina.chunk.JavaChunk; import br.com.caelum.tubaina.chunk.ListChunk; import br.com.caelum.tubaina.chunk.ParagraphChunk; -import br.com.caelum.tubaina.chunk.RubyChunk; import br.com.caelum.tubaina.chunk.TableChunk; -import br.com.caelum.tubaina.parser.MockedParser; -import br.com.caelum.tubaina.parser.Parser; +import br.com.caelum.tubaina.parser.MockedModule; import br.com.caelum.tubaina.resources.ResourceLocator; public class BookBuilderTest { - private Parser parser; + private MockedModule module; - @Before - public void setUp() { - parser = new MockedParser(); - ResourceLocator.initialize("."); - } + @Before + public void setUp() { + ResourceLocator.initialize("."); + module = new MockedModule(); + } - @Test - public void testBuildSimpleBook() { - - BookBuilder builder = new BookBuilder("livro"); + @Test + public void testBuildSimpleBook() { - String content = "[chapter O que é java? ]\n" + "texto da seção\n" - + "[section Primeira seção]\n" + "texto da prim seção\n" - + "[section Segunda seção]\n" + "texto da segunda seção\n\n"; - - builder.addReaderFromString(content); - builder.addReaderFromString("[chapter Introdução]\n" - + "Algum texto de introdução\n"); - - Book book = builder.build(); - Assert.assertEquals("livro", book.getName()); - - List chapters = book.getChapters(); - - Assert.assertEquals(2, chapters.size()); - List
    sections1 = chapters.get(0).getSections(); - - Assert.assertEquals("O que é java?", chapters.get(0).getTitle()); - Assert.assertEquals(2, sections1.size()); - - Assert.assertEquals("Primeira seção", sections1.get(0).getTitle()); - Assert.assertEquals("texto da prim seção", sections1.get(0).getChunks().get(0).asString()); - - Assert.assertEquals("Segunda seção", sections1.get(1).getTitle()); - Assert.assertEquals("texto da segunda seção", sections1.get(1).getChunks().get(0) - .asString()); - - Assert.assertEquals("Algum texto de introdução", chapters.get(1).getIntroduction()); - - } - - @Test - public void testChapterWithoutSections() { - List chapters = getChapters("[chapter O que é java? ]"); - - Assert.assertEquals(1, chapters.size()); - Assert.assertEquals(0, chapters.get(0).getSections().size()); - Assert.assertEquals("O que é java?", chapters.get(0).getTitle()); - } - - @Test - public void testChapterWithoutSectionsAndWithIntroduction() { - List chapters = getChapters("[chapter O que é java? ]\n" - + "texto da introdução"); - - List
    sections = chapters.get(0).getSections(); - - Assert.assertEquals(1, chapters.size()); - Assert.assertEquals("O que é java?", chapters.get(0).getTitle()); - Assert.assertEquals(0, sections.size()); - Assert.assertEquals("texto da introdução", chapters.get(0).getIntroduction()); - } + BookBuilder builder = new BookBuilder("livro"); - @Test - public void testChapterWithSectionsAndWithIntroduction() { - List chapters = getChapters("[chapter O que é java? ]\n" - + "texto da introdução\n" + "[section Primeira seção]\n" + "texto da prim seção\n" - + "[section Segunda seção]\n" + "texto da segunda seção\n\n"); - - Assert.assertEquals(1, chapters.size()); - List
    sections = chapters.get(0).getSections(); - Assert.assertEquals("O que é java?", chapters.get(0).getTitle()); - Assert.assertEquals(2, sections.size()); - - Assert.assertEquals("texto da introdução", chapters.get(0).getIntroduction()); + String content = "[chapter O que é java? ]\n" + "texto da seção\n" + "[section Primeira seção]\n" + + "texto da prim seção\n" + "[section Segunda seção]\n" + "texto da segunda seção\n\n"; + + builder.addReaderFromString(content); + builder.addReaderFromString("[chapter Introdução]\n" + "Algum texto de introdução\n"); + + Book book = builder.build(); + module.inject(book); + Assert.assertEquals("livro", book.getName()); + + List chapters = book.getChapters(); + + Assert.assertEquals(2, chapters.size()); + List
    sections1 = chapters.get(0).getSections(); + + Assert.assertEquals("O que é java?", chapters.get(0).getTitle()); + Assert.assertEquals(2, sections1.size()); + + Assert.assertEquals("Primeira seção", sections1.get(0).getTitle()); + Assert.assertEquals("texto da prim seção", sections1.get(0).getChunks().get(0).asString()); + + Assert.assertEquals("Segunda seção", sections1.get(1).getTitle()); + Assert.assertEquals("texto da segunda seção", sections1.get(1).getChunks().get(0).asString()); + + Assert.assertEquals("Algum texto de introdução", chapters.get(1).getIntroduction()); + + } + + @Test + public void testChapterWithoutSections() { + List chapters = getChapters("[chapter O que é java? ]"); + + Assert.assertEquals(1, chapters.size()); + Assert.assertEquals(0, chapters.get(0).getSections().size()); + Assert.assertEquals("O que é java?", chapters.get(0).getTitle()); + } + + @Test + public void testChapterWithoutSectionsAndWithIntroduction() { + List chapters = getChapters("[chapter O que é java? ]\n" + "texto da introdução"); + + List
    sections = chapters.get(0).getSections(); + + Assert.assertEquals(1, chapters.size()); + Assert.assertEquals("O que é java?", chapters.get(0).getTitle()); + Assert.assertEquals(0, sections.size()); + Assert.assertEquals("texto da introdução", chapters.get(0).getIntroduction()); + } + + @Test + public void testChapterWithSectionsAndWithIntroduction() { + List chapters = getChapters("[chapter O que é java? ]\n" + "texto da introdução\n" + + "[section Primeira seção]\n" + "texto da prim seção\n" + "[section Segunda seção]\n" + + "texto da segunda seção\n\n"); + + Assert.assertEquals(1, chapters.size()); + List
    sections = chapters.get(0).getSections(); + Assert.assertEquals("O que é java?", chapters.get(0).getTitle()); + Assert.assertEquals(2, sections.size()); + + Assert.assertEquals("texto da introdução", chapters.get(0).getIntroduction()); + + Assert.assertEquals("Primeira seção", sections.get(0).getTitle()); + Assert.assertEquals("texto da prim seção", sections.get(0).getChunks().get(0).asString()); + + Assert.assertEquals("Segunda seção", sections.get(1).getTitle()); + Assert.assertEquals("texto da segunda seção", sections.get(1).getChunks().get(0).asString()); + } + + @Test + public void testChapterWithSectionsAndWithoutIntroduction() { + List chapters = getChapters("[chapter O que é java? ]\n" + "[section Primeira seção]\n" + + "texto da prim seção\n" + "[section Segunda seção]\n" + "texto da segunda seção\n\n"); + + Assert.assertEquals(1, chapters.size()); + List
    sections = chapters.get(0).getSections(); + Assert.assertEquals("O que é java?", chapters.get(0).getTitle()); + Assert.assertEquals(2, sections.size()); + + Assert.assertEquals("Primeira seção", sections.get(0).getTitle()); + Assert.assertEquals("texto da prim seção", sections.get(0).getChunks().get(0).asString()); + + Assert.assertEquals("Segunda seção", sections.get(1).getTitle()); + Assert.assertEquals("texto da segunda seção", sections.get(1).getChunks().get(0).asString()); + } + + @Test(expected = TubainaException.class) + public void testMultiChaptersMustThrowAnException() { + getChapters("[chapter O que é java? ]\n" + "texto da introdução\n" + "[section Primeira seção]\n" + + "texto da prim seção\n" + "[section Segunda seção]\n" + "texto da segunda seção\n\n" + + "[chapter Introdução]\n" + "Algum texto de introdução\n"); + + } + + private List getChapters(final String content) { + BookBuilder builder = new BookBuilder("livro"); + builder.addReaderFromString(content); + Book b = builder.build(); + module.inject(b); + List chapters = b.getChapters(); + return chapters; + } + + @Test + public void testParagraphChunk() { + List chapters = getChapters("[chapter Capítulo cheio de Chunks]\n" + "[section secao]" + + "\n\nAlgum texto de parágrafo"); + + List chunks = chapters.get(0).getSections().get(0).getChunks(); + Assert.assertEquals(1, chunks.size()); + + Assert.assertEquals(ParagraphChunk.class, chunks.get(0).getClass()); + ParagraphChunk paragraphChunk = (ParagraphChunk) chunks.get(0); + Assert.assertEquals("Algum texto de parágrafo", paragraphChunk.getContent()); + } + + @Test + public void testBoxChunk() throws Exception { + List chapters = getChapters("[chapter Capítulo cheio de Chunks]\n" + "[section secao]" + + "\n\n[box Alguma coisa]\n" + "Algum corpo de texto\n\n" + "[/box]\n\n"); + + List chunks = chapters.get(0).getSections().get(0).getChunks(); + Assert.assertEquals(1, chunks.size()); + + Assert.assertEquals(BoxChunk.class, chunks.get(0).getClass()); + Assert.assertEquals("Algum corpo de texto", chunks.get(0).asString()); + + Field field = BoxChunk.class.getDeclaredField("title"); + field.setAccessible(true); + + String title = (String) field.get(chunks.get(0)); + Assert.assertEquals("Alguma coisa", title); + } + + @Test + public void testCodeChunk() { + List chapters = getChapters("[chapter Capítulo cheio de Chunks]\n" + "[section secao]" + + "\n\n[code]\n" + "Algum corpo de texto\n" + "que é preformatado\n" + "[/code]\n\n"); + + List chunks = chapters.get(0).getSections().get(0).getChunks(); + Assert.assertEquals(1, chunks.size()); + + Assert.assertEquals(CodeChunk.class, chunks.get(0).getClass()); + Assert.assertEquals("\nAlgum corpo de texto\nque é preformatado\n", chunks.get(0).asString()); + } + + @Test + public void testGistsChunk() { + List chapters = getChapters("[chapter Capítulo cheio de Chunks]\n" + "[section secao]" + + "\n\n[gist 1940936]\n\n"); + + List chunks = chapters.get(0).getSections().get(0).getChunks(); + Assert.assertEquals(1, chunks.size()); + + Assert.assertEquals(GistChunk.class, chunks.get(0).getClass()); + Assert.assertEquals("1940936", chunks.get(0).asString()); + } + + @Test + public void testImageChunk() throws Exception { + List chapters = getChapters("[chapter Capítulo cheio de Chunks]\n" + "[section secao]" + + "\n\n[img src/test/resources/baseJpgImage.jpg w=30 \"Descrição\" ]\n\n"); + + List chunks = chapters.get(0).getSections().get(0).getChunks(); + Assert.assertEquals(1, chunks.size()); + + Assert.assertEquals(ImageChunk.class, chunks.get(0).getClass()); + Assert.assertEquals("src/test/resources/baseJpgImage.jpg", chunks.get(0).asString()); + + Field field = ImageChunk.class.getDeclaredField("width"); + field.setAccessible(true); + + double width = field.getDouble(chunks.get(0)); + Assert.assertEquals(627, width, 0.0001); + + Field field2 = ImageChunk.class.getDeclaredField("options"); + field2.setAccessible(true); + + String options = (String) field2.get(chunks.get(0)); + Assert.assertEquals("w=30 \"Descrição\"", options); + } + + @Test + public void testListChunk() { + List chapters = getChapters("[chapter Capítulo cheio de Chunks]\n" + "[section secao]" + + "\n\n[list]* uma lista\n\n* com alguns itens\n\n * pra ter certeza que funciona[/list]\n\n"); + + List chunks = chapters.get(0).getSections().get(0).getChunks(); + Assert.assertEquals(1, chunks.size()); + + Assert.assertEquals(ListChunk.class, chunks.get(0).getClass()); + Assert.assertEquals("uma listacom alguns itenspra ter certeza que funciona", chunks.get(0).asString()); + } + + @Test + public void testTableChunk() { + List chapters = getChapters("[chapter Capítulo com tabela]\n" + "[section secao]" + + "\n\n[table][row]\n[col]uma tabela[/col]\n[col]com várias colunas[/col]\n[/row]\n" + + "[row]\n[col]e várias[/col]\n[col]linhas também[/col]\n[/row]\n[/table]\n"); + + List chunks = chapters.get(0).getSections().get(0).getChunks(); + Assert.assertEquals(1, chunks.size()); + + Assert.assertEquals(TableChunk.class, chunks.get(0).getClass()); + Assert.assertEquals("uma tabelacom várias colunase váriaslinhas também", chunks.get(0).asString()); + } + + @Test + public void testCenteredParagraphChunk() { + List chapters = getChapters("[chapter Capítulo com texto centralizado]\n" + "[section secao]" + + "\n\n[center]Algum texto centralizado\n\nCom várias linhas[/center]\n\n"); + + List chunks = chapters.get(0).getSections().get(0).getChunks(); + Assert.assertEquals(1, chunks.size()); + + Chunk chunk = chunks.get(0); + Assert.assertEquals(CenteredParagraphChunk.class, chunk.getClass()); + CenteredParagraphChunk castChunk = (CenteredParagraphChunk) chunk; + Assert.assertEquals("Algum texto centralizado\n\nCom várias linhas", castChunk.getContent()); + } + + @Test + public void testChunkTypesTogether() throws Exception { + List chapters = getChapters("[chapter Capítulo cheio de Chunks]\n" + "[section secao]" + + "Um chunk de Paragrafo normal\n" + "Com um monte de coisas escritas\n" + "Em várias linhas\n\n" + + "[code java] Agora um chunk com código java\n" + "Também multiline\n" + "\n\n" + "[/code]\n" + + "Mais algum texto que deveria ser chunk de parágrafo\n" + "[box Um chunk de box]\n" + + "Algo escrito dentro dele\n\n" + "Com pseudo-parágrafos [/box]\n\n" + + "[code] Um monte de código genérico \n[/code][list]* uma lista\n\n*" + + " com alguns itens\n\n * pra ter certeza que funciona[/list]\n\n" + + "[table][row]\n[col]uma tabela[/col]\n[col]com várias colunas[/col]\n[/row]\n" + + "[row]\n[col]e várias[/col]\n[col]linhas também[/col]\n[/row]\n[/table]\n\n" + + "[center]Algum texto centralizado\n\nCom várias linhas[/center]\n\n"); + + Assert.assertEquals(1, chapters.size()); + + List
    sections = chapters.get(0).getSections(); + + Assert.assertEquals("Capítulo cheio de Chunks", chapters.get(0).getTitle()); + Assert.assertEquals(1, sections.size()); + + List chunks = sections.get(0).getChunks(); + + Assert.assertEquals(8, chunks.size()); + + // Primeiro Chunk + Assert.assertEquals(ParagraphChunk.class, chunks.get(0).getClass()); + Assert.assertEquals( + "Um chunk de Paragrafo normal\n" + "Com um monte de coisas escritas\n" + "Em várias linhas", chunks + .get(0).asString()); + + // Segundo chunk + Assert.assertEquals(JavaChunk.class, chunks.get(1).getClass()); + Assert.assertEquals("Agora um chunk com código java\n" + "Também multiline", chunks.get(1).asString().trim()); + + // Terceiro Chunk + Assert.assertEquals(ParagraphChunk.class, chunks.get(2).getClass()); + Assert.assertEquals("Mais algum texto que deveria ser chunk de parágrafo", chunks.get(2).asString()); + + // Quarto Chunk + Assert.assertEquals(BoxChunk.class, chunks.get(3).getClass()); + Assert.assertEquals("Algo escrito dentro dele" + "Com pseudo-parágrafos", chunks.get(3).asString()); + + Field field = BoxChunk.class.getDeclaredField("title"); + field.setAccessible(true); + + String title = (String) field.get(chunks.get(3)); + Assert.assertEquals("Um chunk de box", title); + + // Quinto Chunk + Assert.assertEquals(CodeChunk.class, chunks.get(4).getClass()); + Assert.assertEquals(" Um monte de código genérico \n", chunks.get(4).asString()); + + // Sexto Chunk + Assert.assertEquals(ListChunk.class, chunks.get(5).getClass()); + Assert.assertEquals("uma listacom alguns itenspra ter certeza que funciona", chunks.get(5).asString()); + + // Sétimo Chunk + Assert.assertEquals(TableChunk.class, chunks.get(6).getClass()); + Assert.assertEquals("uma tabelacom várias colunase váriaslinhas também", chunks.get(6).asString()); + + // Oitavo Chunk + Assert.assertEquals(CenteredParagraphChunk.class, chunks.get(7).getClass()); + Assert.assertEquals("Algum texto centralizado\n\nCom várias linhas", chunks.get(7).asString()); + } + + @Test + public void testBookWithMultipleParts() throws Exception { + BookBuilder builder = new BookBuilder("livro"); + String content = "[part \"parte um\"]\n" + "[chapter capitulo um]\n" + "introducao do capitulo um\n" + + "[section secao um]\n" + "conteudo da secao um"; + builder.addReaderFromString(content); + Book b = builder.build(); + module.inject(b); + BookPart bookPart = b.getParts().get(0); + Chapter chapter = bookPart.getChapters().get(0); + assertEquals("capitulo um", chapter.getTitle()); + assertEquals("secao um", chapter.getSections().get(0).getTitle()); + + assertEquals("parte um", bookPart.getTitle()); + assertEquals(true, bookPart.isPrintable()); + } + + @Test + public void testBookWithChapterOutsideParts() throws Exception { + BookBuilder builder = new BookBuilder("livro"); + String chapter0 = "[chapter capitulo zero]"; + String chapter1 = "[part \"parte um\"]\n" + "[chapter capitulo um]\n" + "introducao do capitulo um\n" + + "[section secao um]\n" + "conteudo da secao um"; + builder.addReaderFromStrings(Arrays.asList(chapter0, chapter1)); + Book b = builder.build(); + module.inject(b); + BookPart bookPart = b.getParts().get(1); + Chapter chapter = bookPart.getChapters().get(0); + assertEquals("capitulo um", chapter.getTitle()); + assertEquals("secao um", chapter.getSections().get(0).getTitle()); + + assertEquals("parte um", bookPart.getTitle()); + assertEquals(true, bookPart.isPrintable()); + + assertEquals(false, b.getParts().get(0).isPrintable()); + } + + @Test + public void testBookWithIntroductionChapters() throws Exception { + BookBuilder builder = new BookBuilder("livro"); + String chapter = "[chapter chatper zero]\n" + "Some text"; + String preface = "[chapter preface]\n" + "Some preface text"; + String about = "[chapter about]\n" + "About the authors"; + List chapters = Arrays.asList(chapter); + List introductionChapters = Arrays.asList(preface, about); + builder.addReaderFromStrings(chapters); + builder.addAllReadersOfNonNumberedFromStrings(introductionChapters); + + Book book = builder.build(); + module.inject(book); + assertEquals(2, book.getIntroductionChapters().size()); + assertEquals("preface", book.getIntroductionChapters().get(0).getTitle()); + assertEquals("about", book.getIntroductionChapters().get(1).getTitle()); + } + + @Test + public void testBookWithPartsWithIllustrations() throws Exception { + BookBuilder builder = new BookBuilder("livro"); + String content = "[part \"parte um\" illustration=resources/image.png]\n" + "[chapter capitulo um]\n" + + "introducao do capitulo um\n" + "[section secao um]\n" + "conteudo da secao um"; + builder.addReaderFromString(content); + Book b = builder.build(); + module.inject(b); + BookPart bookPart = b.getParts().get(0); + Chapter chapter = bookPart.getChapters().get(0); + assertEquals("capitulo um", chapter.getTitle()); + assertEquals("secao um", chapter.getSections().get(0).getTitle()); + + assertEquals("parte um", bookPart.getTitle()); + assertEquals(true, bookPart.isPrintable()); + } + + @Test + public void testBookWithChapterWithLabel() throws Exception { + BookBuilder builder = new BookBuilder("livro"); + String content = "[chapter capitulo um label=\"label of this chapter\"]\n" + "introducao do capitulo um\n" + + "[section secao um]\n" + "conteudo da secao um"; + builder.addReaderFromString(content); + Book b = builder.build(); + module.inject(b); + BookPart bookPart = b.getParts().get(0); + Chapter chapter = bookPart.getChapters().get(0); + assertEquals("capitulo um", chapter.getTitle()); + assertEquals("label of this chapter", chapter.getLabel()); + } - Assert.assertEquals("Primeira seção", sections.get(0).getTitle()); - Assert.assertEquals("texto da prim seção", sections.get(0).getChunks().get(0).asString()); - - Assert.assertEquals("Segunda seção", sections.get(1).getTitle()); - Assert.assertEquals("texto da segunda seção", sections.get(1).getChunks().get(0) - .asString()); - } - - @Test - public void testChapterWithSectionsAndWithoutIntroduction() { - List chapters = getChapters("[chapter O que é java? ]\n" - + "[section Primeira seção]\n" + "texto da prim seção\n" - + "[section Segunda seção]\n" + "texto da segunda seção\n\n"); - - Assert.assertEquals(1, chapters.size()); - List
    sections = chapters.get(0).getSections(); - Assert.assertEquals("O que é java?", chapters.get(0).getTitle()); - Assert.assertEquals(2, sections.size()); - - Assert.assertEquals("Primeira seção", sections.get(0).getTitle()); - Assert.assertEquals("texto da prim seção", sections.get(0).getChunks().get(0).asString()); - - Assert.assertEquals("Segunda seção", sections.get(1).getTitle()); - Assert.assertEquals("texto da segunda seção", sections.get(1).getChunks().get(0) - .asString()); - } - - @Test( - expected = TubainaException.class) - public void testMultiChaptersMustThrowAnException() { - getChapters("[chapter O que é java? ]\n" + "texto da introdução\n" - + "[section Primeira seção]\n" + "texto da prim seção\n" - + "[section Segunda seção]\n" + "texto da segunda seção\n\n" - + "[chapter Introdução]\n" + "Algum texto de introdução\n"); - - } - - private List getChapters(final String content) { - BookBuilder builder = new BookBuilder("livro"); - builder.addReaderFromString(content); - Book b = builder.build(); - List chapters = b.getChapters(); - return chapters; - } - - @Test - public void testParagraphChunk() { - List chapters = getChapters("[chapter Capítulo cheio de Chunks]\n" - + "[section secao]" + "\n\nAlgum texto de parágrafo"); - - List chunks = chapters.get(0).getSections().get(0).getChunks(); - Assert.assertEquals(1, chunks.size()); - - Assert.assertEquals(ParagraphChunk.class, chunks.get(0).getClass()); - ParagraphChunk paragraphChunk = (ParagraphChunk) chunks.get(0); - Assert.assertEquals("Algum texto de parágrafo", paragraphChunk.getContent()); - } - - @Test - public void testJavaChunk() { - - List chapters = getChapters("[chapter Capítulo cheio de Chunks]\n" - + "[section secao]" + "\n\n[java]\n" + "public class AlgumCodigoJava\n" + "{\n}\n" - + "[/java]\n\n"); - - List chunks = chapters.get(0).getSections().get(0).getChunks(); - Assert.assertEquals(1, chunks.size()); - - Assert.assertEquals(JavaChunk.class, chunks.get(0).getClass()); - Assert.assertEquals("\npublic class AlgumCodigoJava\n{\n}\n", chunks.get(0).asString()); - } - - @Test - public void testBoxChunk() throws Exception { - List chapters = getChapters("[chapter Capítulo cheio de Chunks]\n" - + "[section secao]" + "\n\n[box Alguma coisa]\n" + "Algum corpo de texto\n\n" - + "[/box]\n\n"); - - List chunks = chapters.get(0).getSections().get(0).getChunks(); - Assert.assertEquals(1, chunks.size()); - - Assert.assertEquals(BoxChunk.class, chunks.get(0).getClass()); - Assert.assertEquals("Algum corpo de texto", chunks.get(0).asString()); - - Field field = BoxChunk.class.getDeclaredField("title"); - field.setAccessible(true); - - String title = (String) field.get(chunks.get(0)); - Assert.assertEquals("Alguma coisa", title); - } - - @Test - public void testCodeChunk() { - List chapters = getChapters("[chapter Capítulo cheio de Chunks]\n" - + "[section secao]" + "\n\n[code]\n" + "Algum corpo de texto\n" - + "que é preformatado\n" + "[/code]\n\n"); - - List chunks = chapters.get(0).getSections().get(0).getChunks(); - Assert.assertEquals(1, chunks.size()); - - Assert.assertEquals(CodeChunk.class, chunks.get(0).getClass()); - Assert.assertEquals("\nAlgum corpo de texto\nque é preformatado\n", chunks.get(0) - .asString()); - } - - @Test - public void testGistsChunk() { - List chapters = getChapters("[chapter Capítulo cheio de Chunks]\n" - + "[section secao]" + "\n\n[gist 1940936]\n\n"); - - List chunks = chapters.get(0).getSections().get(0).getChunks(); - Assert.assertEquals(1, chunks.size()); - - Assert.assertEquals(GistChunk.class, chunks.get(0).getClass()); - Assert.assertEquals("1940936", chunks.get(0).asString()); - } - - @Test - public void testRubyChunk() { - List chapters = getChapters("[chapter Capítulo cheio de Chunks]\n" - + "[section secao]" + "\n\n[ruby]\n" + "Algum corpo de texto\n" - + "que é preformatado\n" + "[/ruby]\n\n"); - - List chunks = chapters.get(0).getSections().get(0).getChunks(); - Assert.assertEquals(1, chunks.size()); - - Assert.assertEquals(RubyChunk.class, chunks.get(0).getClass()); - Assert.assertEquals("\nAlgum corpo de texto\nque é preformatado\n", chunks.get(0) - .asString()); - } - - @Test - public void testImageChunk() throws Exception { - List chapters = getChapters("[chapter Capítulo cheio de Chunks]\n" - + "[section secao]" - + "\n\n[img src/test/resources/baseJpgImage.jpg w=30 \"Descrição\" ]\n\n"); - - List chunks = chapters.get(0).getSections().get(0).getChunks(); - Assert.assertEquals(1, chunks.size()); - - Assert.assertEquals(ImageChunk.class, chunks.get(0).getClass()); - Assert.assertEquals("src/test/resources/baseJpgImage.jpg", chunks.get(0).asString()); - - Field field = ImageChunk.class.getDeclaredField("width"); - field.setAccessible(true); - - double width = field.getDouble(chunks.get(0)); - Assert.assertEquals(627, width, 0.0001); - - Field field2 = ImageChunk.class.getDeclaredField("options"); - field2.setAccessible(true); - - String options = (String) field2.get(chunks.get(0)); - Assert.assertEquals("w=30 \"Descrição\"", options); - } - - @Test - public void testListChunk() { - List chapters = getChapters("[chapter Capítulo cheio de Chunks]\n" - + "[section secao]" - + "\n\n[list]* uma lista\n\n* com alguns itens\n\n * pra ter certeza que funciona[/list]\n\n"); - - List chunks = chapters.get(0).getSections().get(0).getChunks(); - Assert.assertEquals(1, chunks.size()); - - Assert.assertEquals(ListChunk.class, chunks.get(0).getClass()); - Assert.assertEquals("uma listacom alguns itenspra ter certeza que funciona", chunks.get(0) - .asString()); - } - - @Test - public void testTableChunk() { - List chapters = getChapters("[chapter Capítulo com tabela]\n" - + "[section secao]" - + "\n\n[table][row]\n[col]uma tabela[/col]\n[col]com várias colunas[/col]\n[/row]\n" - + "[row]\n[col]e várias[/col]\n[col]linhas também[/col]\n[/row]\n[/table]\n"); - - List chunks = chapters.get(0).getSections().get(0).getChunks(); - Assert.assertEquals(1, chunks.size()); - - Assert.assertEquals(TableChunk.class, chunks.get(0).getClass()); - Assert.assertEquals("uma tabelacom várias colunase váriaslinhas também", chunks.get(0) - .asString()); - } - - @Test - public void testCenteredParagraphChunk() { - List chapters = getChapters("[chapter Capítulo com texto centralizado]\n" - + "[section secao]" - + "\n\n[center]Algum texto centralizado\n\nCom várias linhas[/center]\n\n"); - - List chunks = chapters.get(0).getSections().get(0).getChunks(); - Assert.assertEquals(1, chunks.size()); - - Assert.assertEquals(CenteredParagraphChunk.class, chunks.get(0).getClass()); - Assert.assertEquals("Algum texto centralizado\n\nCom várias linhas", chunks.get(0) - .asString()); - } - - @Test - public void testChunkTypesTogether() throws Exception { - List chapters = getChapters("[chapter Capítulo cheio de Chunks]\n" - + "[section secao]" + "Um chunk de Paragrafo normal\n" - + "Com um monte de coisas escritas\n" + "Em várias linhas\n\n" - + "[java] Agora um chunk com código java\n" + "Também multiline\n" + "\n\n" - + "[/java]\n" + "Mais algum texto que deveria ser chunk de parágrafo\n" - + "[box Um chunk de box]\n" + "Algo escrito dentro dele\n\n" - + "Com pseudo-parágrafos [/box]\n\n" - + "[code] Um monte de código genérico \n[/code][list]* uma lista\n\n*" - + " com alguns itens\n\n * pra ter certeza que funciona[/list]\n\n" - + "[table][row]\n[col]uma tabela[/col]\n[col]com várias colunas[/col]\n[/row]\n" - + "[row]\n[col]e várias[/col]\n[col]linhas também[/col]\n[/row]\n[/table]\n\n" - + "[center]Algum texto centralizado\n\nCom várias linhas[/center]\n\n"); - - Assert.assertEquals(1, chapters.size()); - - List
    sections = chapters.get(0).getSections(); - - Assert.assertEquals("Capítulo cheio de Chunks", chapters.get(0).getTitle()); - Assert.assertEquals(1, sections.size()); - - List chunks = sections.get(0).getChunks(); - - Assert.assertEquals(8, chunks.size()); - - // Primeiro Chunk - Assert.assertEquals(ParagraphChunk.class, chunks.get(0).getClass()); - Assert.assertEquals("Um chunk de Paragrafo normal\n" + "Com um monte de coisas escritas\n" - + "Em várias linhas", chunks.get(0).asString()); - - // Segundo chunk - Assert.assertEquals(JavaChunk.class, chunks.get(1).getClass()); - Assert.assertEquals("Agora um chunk com código java\n" + "Também multiline", chunks.get(1) - .asString().trim()); - - // Terceiro Chunk - Assert.assertEquals(ParagraphChunk.class, chunks.get(2).getClass()); - Assert.assertEquals("Mais algum texto que deveria ser chunk de parágrafo", chunks.get(2) - .asString()); - - // Quarto Chunk - Assert.assertEquals(BoxChunk.class, chunks.get(3).getClass()); - Assert.assertEquals("Algo escrito dentro dele" + "Com pseudo-parágrafos", chunks.get(3) - .asString()); - - Field field = BoxChunk.class.getDeclaredField("title"); - field.setAccessible(true); - - String title = (String) field.get(chunks.get(3)); - Assert.assertEquals("Um chunk de box", title); - - // Quinto Chunk - Assert.assertEquals(CodeChunk.class, chunks.get(4).getClass()); - Assert.assertEquals(" Um monte de código genérico \n", chunks.get(4).asString()); - - // Sexto Chunk - Assert.assertEquals(ListChunk.class, chunks.get(5).getClass()); - Assert.assertEquals("uma listacom alguns itenspra ter certeza que funciona", chunks.get(5) - .asString()); - - // Sétimo Chunk - Assert.assertEquals(TableChunk.class, chunks.get(6).getClass()); - Assert.assertEquals("uma tabelacom várias colunase váriaslinhas também", chunks.get(6) - .asString()); - - // Oitavo Chunk - Assert.assertEquals(CenteredParagraphChunk.class, chunks.get(7).getClass()); - Assert.assertEquals("Algum texto centralizado\n\nCom várias linhas", chunks.get(7) - .asString()); - } - - @Test - public void testBookWithMultipleParts() throws Exception { - BookBuilder builder = new BookBuilder("livro"); - String content = "[part \"parte um\"]\n" + "[chapter capitulo um]\n" - + "introducao do capitulo um\n" + "[section secao um]\n" + "conteudo da secao um"; - builder.addReaderFromString(content); - Book b = builder.build(); - BookPart bookPart = b.getParts().get(0); - Chapter chapter = bookPart.getChapters().get(0); - assertEquals("capitulo um", chapter.getTitle()); - assertEquals("secao um", chapter.getSections().get(0).getTitle()); - - assertEquals("parte um", bookPart.getTitle()); - assertEquals(true, bookPart.isPrintable()); - } - - @Test - public void testBookWithChapterOutsideParts() throws Exception { - BookBuilder builder = new BookBuilder("livro"); - String chapter0 = "[chapter capitulo zero]"; - String chapter1 = "[part \"parte um\"]\n" + "[chapter capitulo um]\n" - + "introducao do capitulo um\n" + "[section secao um]\n" + "conteudo da secao um"; - builder.addReaderFromStrings(Arrays.asList(chapter0, chapter1)); - Book b = builder.build(); - BookPart bookPart = b.getParts().get(1); - Chapter chapter = bookPart.getChapters().get(0); - assertEquals("capitulo um", chapter.getTitle()); - assertEquals("secao um", chapter.getSections().get(0).getTitle()); - - assertEquals("parte um", bookPart.getTitle()); - assertEquals(true, bookPart.isPrintable()); - - assertEquals(false, b.getParts().get(0).isPrintable()); - } - - @Test - public void testBookWithIntroductionChapters() throws Exception { - BookBuilder builder = new BookBuilder("livro"); - String chapter = "[chapter chatper zero]\n" + "Some text"; - String preface = "[chapter preface]\n" + "Some preface text"; - String about = "[chapter about]\n" + "About the authors"; - List chapters = Arrays.asList(chapter); - List introductionChapters = Arrays.asList(preface, about); - builder.addReaderFromStrings(chapters); - builder.addAllReadersOfNonNumberedFromStrings(introductionChapters); - - Book book = builder.build(); - assertEquals(2, book.getIntroductionChapters().size()); - assertEquals("preface", book.getIntroductionChapters().get(0).getTitle()); - assertEquals("about", book.getIntroductionChapters().get(1).getTitle()); - } - - @Test - public void testBookWithPartsWithIllustrations() throws Exception { - BookBuilder builder = new BookBuilder("livro"); - String content = "[part \"parte um\" illustration=resources/image.png]\n" + "[chapter capitulo um]\n" - + "introducao do capitulo um\n" + "[section secao um]\n" + "conteudo da secao um"; - builder.addReaderFromString(content); - Book b = builder.build(); - BookPart bookPart = b.getParts().get(0); - Chapter chapter = bookPart.getChapters().get(0); - assertEquals("capitulo um", chapter.getTitle()); - assertEquals("secao um", chapter.getSections().get(0).getTitle()); - - assertEquals("parte um", bookPart.getTitle()); - assertEquals(true, bookPart.isPrintable()); - } - - @Test - public void testBookWithChapterWithLabel() throws Exception { - BookBuilder builder = new BookBuilder("livro"); - String content = "[chapter capitulo um label=\"label of this chapter\"]\n" - + "introducao do capitulo um\n" + "[section secao um]\n" + "conteudo da secao um"; - builder.addReaderFromString(content); - Book b = builder.build(); - BookPart bookPart = b.getParts().get(0); - Chapter chapter = bookPart.getChapters().get(0); - assertEquals("capitulo um", chapter.getTitle()); - assertEquals("label of this chapter", chapter.getLabel()); - } - } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/ImageTagTemplateTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/ImageTagTemplateTest.java index 709d30e..beeb2ea 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/ImageTagTemplateTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/ImageTagTemplateTest.java @@ -1,7 +1,6 @@ package br.com.caelum.tubaina.parser.html; -import junit.framework.Assert; - +import org.junit.Assert; import org.junit.Before; import org.junit.Test; diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/AnswerTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/AnswerTagTest.java index 7ca7096..10c7ec9 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/AnswerTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/AnswerTagTest.java @@ -10,8 +10,9 @@ public class AnswerTagTest extends AbstractTagTest { @Test public void testAnswerTag(){ AnswerChunk chunk = new AnswerChunk(text("texto da resposta")); + int id = chunk.getId(); String result = getContent(chunk); - Assert.assertEquals("" + + Assert.assertEquals("" + "Click here for the answer
    texto da resposta

    ", result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SectionToStringTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SectionToStringTest.java index 55b91ee..fd34af3 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SectionToStringTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SectionToStringTest.java @@ -4,8 +4,7 @@ import java.io.IOException; import java.util.ArrayList; -import junit.framework.Assert; - +import org.junit.Assert; import org.junit.Before; import org.junit.Test; diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SingleHtmlGeneratorTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SingleHtmlGeneratorTest.java index bbaef14..34d362f 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SingleHtmlGeneratorTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SingleHtmlGeneratorTest.java @@ -21,7 +21,7 @@ import br.com.caelum.tubaina.TubainaException; import br.com.caelum.tubaina.builder.BookBuilder; import br.com.caelum.tubaina.parser.RegexConfigurator; -import br.com.caelum.tubaina.parser.Tag; +import br.com.caelum.tubaina.parser.RegexTag; import br.com.caelum.tubaina.resources.ResourceLocator; public class SingleHtmlGeneratorTest { @@ -31,7 +31,7 @@ public class SingleHtmlGeneratorTest { @Before public void setUp() throws IOException { RegexConfigurator configurator = new RegexConfigurator(); - List tags = configurator.read("/regex.properties", "/html.properties"); + List tags = configurator.read("/regex.properties", "/html.properties"); HtmlParser parser = new HtmlParser(tags); File path = new File("src/test/resources"); diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/AnswerTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/AnswerTagTest.java index 27a55e4..21fcbbf 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/AnswerTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/AnswerTagTest.java @@ -11,9 +11,10 @@ public class AnswerTagTest extends AbstractTagTest { @Test public void testAnswerTag(){ AnswerChunk chunk = new AnswerChunk(text("texto da resposta")); + int id = chunk.getId(); String result = getContent(chunk); Assert.assertEquals("
    texto da resposta

    ", result); + "id=\"answer" + id + "\">texto da resposta


    ", result); } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/BoxTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/BoxTagTest.java index 39a09c4..9be3f45 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/BoxTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/BoxTagTest.java @@ -11,7 +11,7 @@ public class BoxTagTest extends AbstractTagTest { public void testBox() { BoxChunk chunk = new BoxChunk("Título do Box", text("Texto do Box")); String result = getContent(chunk); - Assert.assertEquals(BoxTag.BEGIN + BoxTag.TITLE_BEGIN + "Titulo do Box" + BoxTag.TITLE_END + Assert.assertEquals(BoxTag.BEGIN + BoxTag.TITLE_BEGIN + "Título do Box" + BoxTag.TITLE_END + "Texto do Box" + BoxTag.END, result); } @@ -19,7 +19,7 @@ public void testBox() { public void testBoxWithMultilineContent() { BoxChunk chunk = new BoxChunk("Título do Box", text("Texto do Box\n blablabla")); String result = getContent(chunk); - Assert.assertEquals(BoxTag.BEGIN + BoxTag.TITLE_BEGIN + "Titulo do Box" + Assert.assertEquals(BoxTag.BEGIN + BoxTag.TITLE_BEGIN + "Título do Box" + BoxTag.TITLE_END + "Texto do Box\n blablabla" + BoxTag.END, result); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/CodeTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/CodeTagTest.java index 3f92e39..ec3da5f 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/CodeTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/CodeTagTest.java @@ -5,11 +5,11 @@ import org.junit.Test; +import br.com.caelum.tubaina.chunk.CodeChunk; import br.com.caelum.tubaina.parser.html.HtmlAndKindleCodeTag; -import br.com.caelum.tubaina.parser.html.kindle.CodeTag; -public class CodeTagTest { +public class CodeTagTest extends AbstractTagTest { @Test public void shouldCallHtmlCodeTag() { @@ -18,8 +18,8 @@ public void shouldCallHtmlCodeTag() { " System.out.println(\"Hello, \" + name);\n" + "}"; HtmlAndKindleCodeTag htmlCodeTag = mock(HtmlAndKindleCodeTag.class); - CodeTag codeTag = new CodeTag(htmlCodeTag); - codeTag.parse(chunk); + CodeChunk chunk = new CodeChunk(code, ""); + getContent(chunk); verify(htmlCodeTag).parse(chunk); } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/KindleGeneratorTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/KindleGeneratorTest.java index ac4d462..ac955ac 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/KindleGeneratorTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/KindleGeneratorTest.java @@ -24,7 +24,7 @@ import br.com.caelum.tubaina.TubainaException; import br.com.caelum.tubaina.builder.BookBuilder; import br.com.caelum.tubaina.parser.RegexConfigurator; -import br.com.caelum.tubaina.parser.Tag; +import br.com.caelum.tubaina.parser.RegexTag; import br.com.caelum.tubaina.parser.html.desktop.HtmlParser; import br.com.caelum.tubaina.resources.ResourceLocator; @@ -35,7 +35,7 @@ public class KindleGeneratorTest { @Before public void setUp() throws IOException { RegexConfigurator configurator = new RegexConfigurator(); - List tags = configurator.read("/regex.properties", "/html.properties"); + List tags = configurator.read("/regex.properties", "/html.properties"); HtmlParser parser = new HtmlParser(tags); File path = new File("src/test/resources"); diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/KindleParserTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/KindleParserTest.java index f47c8b6..75c5f99 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/KindleParserTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/KindleParserTest.java @@ -10,8 +10,7 @@ import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.builder.ChunkSplitter; import br.com.caelum.tubaina.parser.RegexConfigurator; -import br.com.caelum.tubaina.parser.Tag; -import br.com.caelum.tubaina.parser.latex.LinkTag; +import br.com.caelum.tubaina.parser.RegexTag; public class KindleParserTest { @@ -20,9 +19,8 @@ public class KindleParserTest { @Before public void setUp() throws IOException { RegexConfigurator configurator = new RegexConfigurator(); - List tags = configurator.read("/regex.properties", "/kindle.properties"); - tags.add(new LinkTag("$1$2")); - this.parser = new KindleParser(tags, false, true); + List tags = configurator.read("/regex.properties", "/kindle.properties"); + this.parser = new KindleParser(tags); } @Test @@ -83,14 +81,6 @@ public void testTwoInlineCodeTagsWithTwoColonsInside() { result); } - @Test - public void testParagraphTagWithInnerTagsInline() { - String result = parser.parseParagraph("**Ola** ::mundo::. %%Tchau%% **::__mundo__::**."); - Assert.assertEquals( - "

    Ola mundo. Tchau mundo.

    ", - result); - } - @Test public void testQuotationTagInline() { String result = parser.parse("[quote ola mundo --Anonimo]"); @@ -161,64 +151,6 @@ public void testTitleTagInlineWithInnerTags() { Assert.assertEquals("

    ola mundo

    ", result); } - @Test - public void testBoxTagWithoutInnerTags() { - String result = parser.parseBox("ola mundo", "Titulo do Box"); - Assert.assertEquals(BoxTag.BEGIN + BoxTag.TITLE_BEGIN + "Titulo do Box" + BoxTag.TITLE_END - + "ola mundo" + BoxTag.END, result); - } - - @Test - public void testBoxTagWithInnerTags() { - // Should not parse. BoxTag just create the box structure - String result = parser.parseBox("__ola__ **mundo**", "Titulo do Box"); - Assert.assertEquals(BoxTag.BEGIN + BoxTag.TITLE_BEGIN + "Titulo do Box" + BoxTag.TITLE_END - + "__ola__ **mundo**" + BoxTag.END, result); - } - - @Test - public void testBoxTagWithInnerTagsOnTitle() { - String result = parser.parseBox("ola mundo", "Titulo **do Box**"); - Assert.assertEquals(BoxTag.BEGIN + BoxTag.TITLE_BEGIN + "Titulo do Box" - + BoxTag.TITLE_END + "ola mundo" + BoxTag.END, result); - } - - @Test - public void testBulletedList() { - String result = parser.parseList("conteudo da lista", "algo que nao importa"); - Assert.assertEquals("
      conteudo da lista
    ", result); - } - - @Test - public void testNumberList() { - String result = parser.parseList("conteudo da lista", "number"); - Assert.assertEquals("
      conteudo da lista
    ", result); - } - - @Test - public void testLetterList() { - String result = parser.parseList("conteudo da lista", "letter"); - Assert.assertEquals("
      conteudo da lista
    ", result); - } - - @Test - public void testRomanList() { - String result = parser.parseList("conteudo da lista", "roman"); - Assert.assertEquals("
      conteudo da lista
    ", result); - } - - @Test - public void testTagSoloTag() { - String result = parser.parseIndex("ola mundo"); - Assert.assertEquals("\n\n", result); - } - - @Test - public void testTagMultiTag() { - String result = parser.parseIndex("ola mundo, olamundo"); - Assert.assertEquals("\n\n", result); - } - @Test public void testQuotationTag() { String result = parser.parse("\"\""); @@ -243,20 +175,4 @@ public void testItemSplittBug() { .asString()); } - @Test - public void testNoteTagShouldntBeParsed() throws IOException { - RegexConfigurator configurator = new RegexConfigurator(); - List tags = configurator.read("/regex.properties", "/kindle.properties"); - this.parser = new KindleParser(tags, false, false); - String input = "Should not appear"; - Assert.assertEquals("", parser.parseNote(input, "")); - } - - @Test - public void testNoteTagShouldBeParsed() throws IOException { - String input = "Should appear"; - String begin = "---------------------------
    "; - String end = "
    ---------------------------"; - Assert.assertEquals(begin + "Should appear" + end, parser.parseNote(input, "")); - } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/ExerciseTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/ExerciseTagTest.java index 1bda027..30fb2e3 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/ExerciseTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/ExerciseTagTest.java @@ -10,8 +10,9 @@ public class ExerciseTagTest extends AbstractTagTest { @Test public void testExerciseTag(){ ExerciseChunk chunk = new ExerciseChunk(text("texto do exercicio")); + int lastExerciseCount = ExerciseChunk.getExerciseCount() - 1; String result = getContent(chunk); - Assert.assertEquals("\\label{ex:1}\n\\begin{enumerate}[1)]\ntexto do exercicio\n\\end{enumerate}", result); + Assert.assertEquals("\\label{ex:" + lastExerciseCount + "}\n\\begin{enumerate}[1)]\ntexto do exercicio\n\\end{enumerate}", result); } } diff --git a/templates/html/section.ftl b/templates/html/section.ftl index b9fa5ab..4ac4f05 100644 --- a/templates/html/section.ftl +++ b/templates/html/section.ftl @@ -8,7 +8,7 @@

    ${curchap}.${cursec} - ${section.title}

    <#list section.chunks as chunk> - ${chunk.getContent(parser)!""} + ${chunk.asString()!""}
    diff --git a/templates/kindle/chapter.ftl b/templates/kindle/chapter.ftl index 235674c..f2400e4 100644 --- a/templates/kindle/chapter.ftl +++ b/templates/kindle/chapter.ftl @@ -2,7 +2,7 @@

    ${chapter.chapterNumber} - ${sanitizer.sanitize(chapter.title)}

    - ${chapter.getIntroduction(parser)} + ${chapter.getIntroduction()} <#assign sectionCount = 1> @@ -13,7 +13,7 @@ <#list section.chunks as chunk> - ${chunk.getContent(parser)!""} + ${chunk.asString()!""}
    diff --git a/templates/singlehtml/chapter.ftl b/templates/singlehtml/chapter.ftl index 9ea38cd..c575187 100644 --- a/templates/singlehtml/chapter.ftl +++ b/templates/singlehtml/chapter.ftl @@ -2,7 +2,7 @@
    Capítulo${chapter.chapterNumber}

    ${sanitizer.sanitize(chapter.title)}

    - ${chapter.getIntroduction(parser)} + ${chapter.getIntroduction()} <#assign sectionCount = 1> <#list chapter.sections as section> @@ -10,7 +10,7 @@

    ${chapter.chapterNumber}.${sectionCount} - ${sanitizer.sanitize(section.title)}

    <#list section.chunks as chunk> - ${chunk.getContent(parser)!""} + ${chunk.asString()!""}
    From 717c9abc4b4d81d9d48dccf1f7b7bd6e9e4beedb Mon Sep 17 00:00:00 2001 From: Cecilia Fernandes Date: Tue, 2 Apr 2013 18:52:37 -0300 Subject: [PATCH 11/17] [Adding Guice] Injecting book at the BookBuilder class --- .../java/br/com/caelum/tubaina/ParseType.java | 29 +++++++++++++- .../br/com/caelum/tubaina/TubainaBuilder.java | 3 ++ .../tubaina/builder/ChunksMakerBuilder.java | 3 +- .../replacer/ParagraphInsideItemReplacer.java | 19 --------- .../chunk/ParagraphInsideItemChunk.java | 16 -------- .../parser/{latex => }/NullAnswerTag.java | 3 +- .../parser/html/desktop/HtmlModule.java | 9 +++-- .../parser/html/kindle/KindleModule.java | 9 +++-- .../tubaina/parser/latex/LatexModule.java | 3 +- .../tubaina/builder/BookBuilderTest.java | 2 +- .../builder/ChunksMakerBuilderTest.java | 3 +- .../builder/replacer/ItemReplacerTest.java | 10 +---- .../builder/replacer/ListReplacerTest.java | 4 +- .../ParagraphInsideItemReplacerTest.java | 40 ------------------- .../html/desktop/SectionToStringTest.java | 9 ++++- .../html/desktop/SingleHtmlGeneratorTest.java | 1 - 16 files changed, 60 insertions(+), 103 deletions(-) delete mode 100644 src/main/java/br/com/caelum/tubaina/builder/replacer/ParagraphInsideItemReplacer.java delete mode 100644 src/main/java/br/com/caelum/tubaina/chunk/ParagraphInsideItemChunk.java rename src/main/java/br/com/caelum/tubaina/parser/{latex => }/NullAnswerTag.java (71%) delete mode 100644 src/test/java/br/com/caelum/tubaina/builder/replacer/ParagraphInsideItemReplacerTest.java diff --git a/src/main/java/br/com/caelum/tubaina/ParseType.java b/src/main/java/br/com/caelum/tubaina/ParseType.java index f78803f..108bc19 100644 --- a/src/main/java/br/com/caelum/tubaina/ParseType.java +++ b/src/main/java/br/com/caelum/tubaina/ParseType.java @@ -6,13 +6,17 @@ import br.com.caelum.tubaina.parser.Parser; import br.com.caelum.tubaina.parser.RegexConfigurator; import br.com.caelum.tubaina.parser.RegexTag; +import br.com.caelum.tubaina.parser.TubainaModule; import br.com.caelum.tubaina.parser.html.desktop.FlatHtmlGenerator; import br.com.caelum.tubaina.parser.html.desktop.Generator; +import br.com.caelum.tubaina.parser.html.desktop.HtmlModule; import br.com.caelum.tubaina.parser.html.desktop.HtmlParser; import br.com.caelum.tubaina.parser.html.desktop.SingleHtmlGenerator; import br.com.caelum.tubaina.parser.html.kindle.KindleGenerator; +import br.com.caelum.tubaina.parser.html.kindle.KindleModule; import br.com.caelum.tubaina.parser.html.kindle.KindleParser; import br.com.caelum.tubaina.parser.latex.LatexGenerator; +import br.com.caelum.tubaina.parser.latex.LatexModule; import br.com.caelum.tubaina.parser.latex.LatexParser; public enum ParseType { @@ -29,6 +33,11 @@ public Generator getGenerator(Parser parser, TubainaBuilderData data) { return new LatexGenerator(parser, data); } + @Override + public TubainaModule getModule(TubainaBuilderData data) { + return new LatexModule(data.isShowNotes(), data.isNoAnswer()); + } + }, HTMLFLAT { @@ -42,6 +51,11 @@ public Parser getParser(RegexConfigurator conf, boolean noAnswer, boolean showNo protected Generator getGenerator(Parser parser, TubainaBuilderData data) { return new FlatHtmlGenerator(parser, data); } + + @Override + public TubainaModule getModule(TubainaBuilderData data) { + return new HtmlModule(data.isShowNotes(), data.isNoAnswer()); + } }, HTML { @Override @@ -54,6 +68,11 @@ public Parser getParser(RegexConfigurator conf, boolean noAnswer, boolean showNo protected Generator getGenerator(Parser parser, TubainaBuilderData data) { return new SingleHtmlGenerator(parser, data); } + + @Override + public TubainaModule getModule(TubainaBuilderData data) { + return new HtmlModule(data.isShowNotes(), data.isNoAnswer()); + } }, KINDLE { @@ -67,6 +86,11 @@ public Parser getParser(RegexConfigurator conf, boolean noAnswer, boolean showNo protected Generator getGenerator(Parser parser, TubainaBuilderData data) { return new KindleGenerator(parser, data); } + + @Override + public TubainaModule getModule(TubainaBuilderData data) { + return new KindleModule(data.isShowNotes(), data.isNoAnswer()); + } }; public String getType() { @@ -76,4 +100,7 @@ public String getType() { protected abstract Generator getGenerator(Parser parser, TubainaBuilderData data); protected abstract Parser getParser(RegexConfigurator conf, boolean noAnswer, boolean showNotes, String linkParameter) throws IOException; -} + + public abstract TubainaModule getModule(TubainaBuilderData data); + +} \ No newline at end of file diff --git a/src/main/java/br/com/caelum/tubaina/TubainaBuilder.java b/src/main/java/br/com/caelum/tubaina/TubainaBuilder.java index 131d4bc..6bb6d84 100644 --- a/src/main/java/br/com/caelum/tubaina/TubainaBuilder.java +++ b/src/main/java/br/com/caelum/tubaina/TubainaBuilder.java @@ -16,6 +16,7 @@ import org.apache.log4j.Logger; import br.com.caelum.tubaina.builder.BookBuilder; +import br.com.caelum.tubaina.parser.TubainaModule; import br.com.caelum.tubaina.parser.html.desktop.Generator; import br.com.caelum.tubaina.resources.ResourceLocator; @@ -68,6 +69,8 @@ public void build() throws IOException { throw e; } } + TubainaModule module = parseType.getModule(data); + module.inject(b); GeneratorFactory generatorFactory = new GeneratorFactory(); Generator generator = generatorFactory.generatorFor(parseType, data); diff --git a/src/main/java/br/com/caelum/tubaina/builder/ChunksMakerBuilder.java b/src/main/java/br/com/caelum/tubaina/builder/ChunksMakerBuilder.java index a73db71..96877f2 100644 --- a/src/main/java/br/com/caelum/tubaina/builder/ChunksMakerBuilder.java +++ b/src/main/java/br/com/caelum/tubaina/builder/ChunksMakerBuilder.java @@ -18,7 +18,6 @@ import br.com.caelum.tubaina.builder.replacer.JavaReplacer; import br.com.caelum.tubaina.builder.replacer.ListReplacer; import br.com.caelum.tubaina.builder.replacer.NoteReplacer; -import br.com.caelum.tubaina.builder.replacer.ParagraphInsideItemReplacer; import br.com.caelum.tubaina.builder.replacer.ParagraphReplacer; import br.com.caelum.tubaina.builder.replacer.QuestionReplacer; import br.com.caelum.tubaina.builder.replacer.Replacer; @@ -108,7 +107,7 @@ public ChunksMakerBuilder(List resources) { replacers.add(new RubyReplacer()); replacers.add(new CenteredParagraphReplacer()); - replacers.add(new ParagraphInsideItemReplacer(paragraphTerminator)); + replacers.add(new ParagraphReplacer(paragraphTerminator)); replacerMap.put("item", replacers); // List tag diff --git a/src/main/java/br/com/caelum/tubaina/builder/replacer/ParagraphInsideItemReplacer.java b/src/main/java/br/com/caelum/tubaina/builder/replacer/ParagraphInsideItemReplacer.java deleted file mode 100644 index 05884b9..0000000 --- a/src/main/java/br/com/caelum/tubaina/builder/replacer/ParagraphInsideItemReplacer.java +++ /dev/null @@ -1,19 +0,0 @@ -package br.com.caelum.tubaina.builder.replacer; - -import java.util.regex.Matcher; - -import br.com.caelum.tubaina.Chunk; -import br.com.caelum.tubaina.chunk.ParagraphInsideItemChunk; - -public class ParagraphInsideItemReplacer extends ParagraphReplacer { - - public ParagraphInsideItemReplacer(String specialTerms) { - super(specialTerms); - } - - @Override - public Chunk createChunk(Matcher matcher) { - return new ParagraphInsideItemChunk(matcher.group(1)); - } - -} diff --git a/src/main/java/br/com/caelum/tubaina/chunk/ParagraphInsideItemChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/ParagraphInsideItemChunk.java deleted file mode 100644 index 2e1e25f..0000000 --- a/src/main/java/br/com/caelum/tubaina/chunk/ParagraphInsideItemChunk.java +++ /dev/null @@ -1,16 +0,0 @@ -package br.com.caelum.tubaina.chunk; - -import br.com.caelum.tubaina.AbstractChunk; - -public class ParagraphInsideItemChunk extends AbstractChunk { - - private final String content; - - public ParagraphInsideItemChunk(String content) { - this.content = content; - } - - public String getContent() { - return content; - } -} diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/NullAnswerTag.java b/src/main/java/br/com/caelum/tubaina/parser/NullAnswerTag.java similarity index 71% rename from src/main/java/br/com/caelum/tubaina/parser/latex/NullAnswerTag.java rename to src/main/java/br/com/caelum/tubaina/parser/NullAnswerTag.java index b124b92..f9a31c0 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/NullAnswerTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/NullAnswerTag.java @@ -1,7 +1,6 @@ -package br.com.caelum.tubaina.parser.latex; +package br.com.caelum.tubaina.parser; import br.com.caelum.tubaina.chunk.AnswerChunk; -import br.com.caelum.tubaina.parser.Tag; //TODO: unify with NullNoteTag public class NullAnswerTag implements Tag{ diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/HtmlModule.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/HtmlModule.java index ca4d99a..e1c0040 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/HtmlModule.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/HtmlModule.java @@ -16,6 +16,7 @@ import br.com.caelum.tubaina.chunk.TableColumnChunk; import br.com.caelum.tubaina.chunk.TableRowChunk; import br.com.caelum.tubaina.parser.IntroductionTag; +import br.com.caelum.tubaina.parser.NullAnswerTag; import br.com.caelum.tubaina.parser.NullNoteTag; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.TubainaModule; @@ -27,18 +28,20 @@ public class HtmlModule extends TubainaModule { private boolean showNotes; + private boolean noAnswer; - public HtmlModule(boolean showNotes) { + public HtmlModule(boolean showNotes, boolean noAnswer) { this.showNotes = showNotes; + this.noAnswer = noAnswer; } public HtmlModule() { - this(true); + this(true, false); } @Override protected void configure() { - bind(new TypeLiteral>() {}).to(AnswerTag.class); + bind(new TypeLiteral>() {}).to(noAnswer ? NullAnswerTag.class : AnswerTag.class); bind(new TypeLiteral>() {}).to(BoxTag.class); bind(new TypeLiteral>() {}).to(CenteredParagraphTag.class); bind(new TypeLiteral>() {}).to(CodeTag.class); diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleModule.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleModule.java index 88f8d00..92f17b4 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleModule.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleModule.java @@ -16,6 +16,7 @@ import br.com.caelum.tubaina.chunk.TableColumnChunk; import br.com.caelum.tubaina.chunk.TableRowChunk; import br.com.caelum.tubaina.parser.IntroductionTag; +import br.com.caelum.tubaina.parser.NullAnswerTag; import br.com.caelum.tubaina.parser.NullNoteTag; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.TubainaModule; @@ -26,17 +27,19 @@ public class KindleModule extends TubainaModule { private boolean showNotes; + private boolean noAnswer; - public KindleModule(boolean showNotes) { + public KindleModule(boolean showNotes, boolean noAnswer) { this.showNotes = showNotes; + this.noAnswer = noAnswer; } public KindleModule() { - this(true); + this(true, false); } @Override protected void configure() { - bind(new TypeLiteral>() {}).to(AnswerTag.class); + bind(new TypeLiteral>() {}).to(noAnswer ? NullAnswerTag.class : AnswerTag.class); bind(new TypeLiteral>() {}).to(BoxTag.class); bind(new TypeLiteral>() {}).to(CenteredParagraphTag.class); bind(new TypeLiteral>() {}).to(CodeTag.class); diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/LatexModule.java b/src/main/java/br/com/caelum/tubaina/parser/latex/LatexModule.java index cfacdb8..b5415da 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/LatexModule.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/LatexModule.java @@ -18,6 +18,7 @@ import br.com.caelum.tubaina.chunk.TableRowChunk; import br.com.caelum.tubaina.parser.Indentator; import br.com.caelum.tubaina.parser.IntroductionTag; +import br.com.caelum.tubaina.parser.NullAnswerTag; import br.com.caelum.tubaina.parser.NullNoteTag; import br.com.caelum.tubaina.parser.SimpleIndentator; import br.com.caelum.tubaina.parser.Tag; @@ -32,7 +33,7 @@ public class LatexModule extends TubainaModule { private final boolean showNotes; private final boolean noAnswer; - + public LatexModule(boolean showNotes, boolean noAnswer) { this.showNotes = showNotes; this.noAnswer = noAnswer; diff --git a/src/test/java/br/com/caelum/tubaina/builder/BookBuilderTest.java b/src/test/java/br/com/caelum/tubaina/builder/BookBuilderTest.java index ab463f4..174d59a 100644 --- a/src/test/java/br/com/caelum/tubaina/builder/BookBuilderTest.java +++ b/src/test/java/br/com/caelum/tubaina/builder/BookBuilderTest.java @@ -295,7 +295,7 @@ public void testChunkTypesTogether() throws Exception { .get(0).asString()); // Segundo chunk - Assert.assertEquals(JavaChunk.class, chunks.get(1).getClass()); + Assert.assertEquals(CodeChunk.class, chunks.get(1).getClass()); Assert.assertEquals("Agora um chunk com código java\n" + "Também multiline", chunks.get(1).asString().trim()); // Terceiro Chunk diff --git a/src/test/java/br/com/caelum/tubaina/builder/ChunksMakerBuilderTest.java b/src/test/java/br/com/caelum/tubaina/builder/ChunksMakerBuilderTest.java index 08328a9..8fcaac0 100644 --- a/src/test/java/br/com/caelum/tubaina/builder/ChunksMakerBuilderTest.java +++ b/src/test/java/br/com/caelum/tubaina/builder/ChunksMakerBuilderTest.java @@ -21,7 +21,6 @@ import br.com.caelum.tubaina.chunk.ListChunk; import br.com.caelum.tubaina.chunk.NoteChunk; import br.com.caelum.tubaina.chunk.ParagraphChunk; -import br.com.caelum.tubaina.chunk.ParagraphInsideItemChunk; import br.com.caelum.tubaina.chunk.QuestionChunk; import br.com.caelum.tubaina.chunk.RubyChunk; import br.com.caelum.tubaina.chunk.TableChunk; @@ -149,7 +148,7 @@ public void testChunksMakerBuilderForItem() { Assert.assertEquals(RubyChunk.class, chunks.get(10).getClass()); Assert.assertEquals(CenteredParagraphChunk.class, chunks.get(11) .getClass()); - Assert.assertEquals(ParagraphInsideItemChunk.class, chunks.get(12).getClass()); + Assert.assertEquals(ParagraphChunk.class, chunks.get(12).getClass()); } @Test diff --git a/src/test/java/br/com/caelum/tubaina/builder/replacer/ItemReplacerTest.java b/src/test/java/br/com/caelum/tubaina/builder/replacer/ItemReplacerTest.java index ce63b6f..7e64682 100644 --- a/src/test/java/br/com/caelum/tubaina/builder/replacer/ItemReplacerTest.java +++ b/src/test/java/br/com/caelum/tubaina/builder/replacer/ItemReplacerTest.java @@ -10,7 +10,6 @@ import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.builder.ChunkSplitter; import br.com.caelum.tubaina.chunk.ItemChunk; -import br.com.caelum.tubaina.parser.MockedParser; import br.com.caelum.tubaina.resources.Resource; public class ItemReplacerTest { @@ -24,18 +23,13 @@ public void setUp() { @Test public void testJavaCodeInsideItem() { - String test = "* quero que o codigo java abaixo não tenha itens \n" + "[java]blah blah[/java]" + "[java] \n" - + "/**\n" + " * texto qualquer\n\n" + " *outro comentario\n" + "[/java]\n" + String test = "* quero que o codigo java abaixo não tenha itens \n" + "[code java]blah blah[/code]" + "[code java] \n" + + "/**\n" + " * texto qualquer\n\n" + " *outro comentario\n" + "[/code]\n" + " *mas que isso seja outro item"; List chunks = new ChunkSplitter(resources, "list").splitChunks(test); - MockedParser parser = new MockedParser(); Assert.assertEquals(2, chunks.size()); Assert.assertEquals(ItemChunk.class, chunks.get(0).getClass()); - Assert.assertEquals("quero que o codigo java abaixo não tenha itens" + "blah blah \n" + "/**\n" - + " * texto qualquer\n\n" + " *outro comentario\n", chunks.get(0).asString()); Assert.assertEquals(ItemChunk.class, chunks.get(1).getClass()); - Assert.assertEquals("mas que isso seja outro item", chunks.get(1).asString()); - } @Test(expected = RuntimeException.class) diff --git a/src/test/java/br/com/caelum/tubaina/builder/replacer/ListReplacerTest.java b/src/test/java/br/com/caelum/tubaina/builder/replacer/ListReplacerTest.java index 2bbc893..c103670 100644 --- a/src/test/java/br/com/caelum/tubaina/builder/replacer/ListReplacerTest.java +++ b/src/test/java/br/com/caelum/tubaina/builder/replacer/ListReplacerTest.java @@ -12,7 +12,7 @@ import br.com.caelum.tubaina.TubainaException; import br.com.caelum.tubaina.chunk.ItemChunk; import br.com.caelum.tubaina.chunk.ListChunk; -import br.com.caelum.tubaina.chunk.ParagraphInsideItemChunk; +import br.com.caelum.tubaina.chunk.ParagraphChunk; import br.com.caelum.tubaina.resources.Resource; public class ListReplacerTest { @@ -65,7 +65,7 @@ public void testCreateSublistsProperly() throws Exception { List chunks2 = (List) itemBody.get(chunks1.get(0)); Assert.assertEquals(2, chunks2.size()); - Assert.assertEquals(ParagraphInsideItemChunk.class, chunks2.get(0).getClass()); + Assert.assertEquals(ParagraphChunk.class, chunks2.get(0).getClass()); Assert.assertEquals(ListChunk.class, chunks2.get(1).getClass()); List chunks3 = (List) listBody.get(chunks2.get(1)); List chunks4 = (List) itemBody.get(chunks3.get(0)); diff --git a/src/test/java/br/com/caelum/tubaina/builder/replacer/ParagraphInsideItemReplacerTest.java b/src/test/java/br/com/caelum/tubaina/builder/replacer/ParagraphInsideItemReplacerTest.java deleted file mode 100644 index c6f4d80..0000000 --- a/src/test/java/br/com/caelum/tubaina/builder/replacer/ParagraphInsideItemReplacerTest.java +++ /dev/null @@ -1,40 +0,0 @@ -package br.com.caelum.tubaina.builder.replacer; - -import java.util.ArrayList; -import java.util.List; - -import junit.framework.Assert; - -import org.junit.Before; -import org.junit.Test; - -import br.com.caelum.tubaina.Chunk; -import br.com.caelum.tubaina.chunk.ParagraphInsideItemChunk; - -public class ParagraphInsideItemReplacerTest { - private List chunks; - private ParagraphInsideItemReplacer replacer; - - @Before - public void setUp() { - // just to test, set the exercise tag as the only paragraph terminator tag - replacer = new ParagraphInsideItemReplacer("exercise"); - chunks = new ArrayList(); - } - - @Test - public void testAcceptSimpleParagraph() { - String text = "some text."; - Assert.assertTrue(replacer.accepts(text)); - String remaining = replacer.execute(text, chunks); - Assert.assertEquals("", remaining); - Assert.assertEquals(1, chunks.size()); - Assert.assertEquals(ParagraphInsideItemChunk.class, chunks.get(0).getClass()); - } - - @Test - public void testDoesntAcceptQuestionTagInsideParagraph() { - String text = "[question]question[/question]"; - Assert.assertFalse("Should not accept question tag inside paragraph", replacer.accepts(text)); - } -} \ No newline at end of file diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SectionToStringTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SectionToStringTest.java index fd34af3..57865d1 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SectionToStringTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SectionToStringTest.java @@ -8,6 +8,7 @@ import org.junit.Before; import org.junit.Test; +import br.com.caelum.tubaina.Book; import br.com.caelum.tubaina.Section; import br.com.caelum.tubaina.TubainaBuilder; import br.com.caelum.tubaina.builder.BookBuilder; @@ -48,7 +49,9 @@ private int countOccurrences(final String text, final String substring) { @Test public void testSection() { Section section = createSection("este é o texto da seção"); - String string = sectionToString.generateSection(new BookBuilder("livro").build(), "capitulo", 7, section, 4, 2) + Book book = new BookBuilder("livro").build(); + new HtmlModule().inject(book); + String string = sectionToString.generateSection(book, "capitulo", 7, section, 4, 2) .toString(); Assert.assertEquals(1, countOccurrences(string, "class=\"sectionChapter\">(\\s)*capitulo(\\s)*<")); Assert.assertEquals(1, countOccurrences(string, "7.4 - Title")); @@ -58,7 +61,9 @@ public void testSection() { @Test public void testFlatSection() { Section section = createSection("este é o texto da seção"); - String string = sectionToString.generateSection(new BookBuilder("livro").build(), "capitulo", 7, section, 4, 2) + Book book = new BookBuilder("livro").build(); + new HtmlModule().inject(book); + String string = sectionToString.generateSection(book, "capitulo", 7, section, 4, 2) .toString(); Assert.assertEquals(1, countOccurrences(string, "class=\"sectionChapter\">(\\s)*capitulo(\\s)*<")); Assert.assertEquals(1, countOccurrences(string, "7.4 - Title")); diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SingleHtmlGeneratorTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SingleHtmlGeneratorTest.java index 34d362f..af4ade4 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SingleHtmlGeneratorTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SingleHtmlGeneratorTest.java @@ -44,7 +44,6 @@ public void setUp() throws IOException { directory = new File("tmp"); directory.mkdir(); - } @After From ff1b2cb1881e14c6177483a9d997c2349b4065a6 Mon Sep 17 00:00:00 2001 From: Cecilia Fernandes Date: Wed, 3 Apr 2013 18:47:11 -0300 Subject: [PATCH 12/17] [Adding Guice] Almost there. 9 failing tests --- src/main/java/br/com/caelum/tubaina/Book.java | 55 +-- .../com/caelum/tubaina/GeneratorFactory.java | 17 - .../java/br/com/caelum/tubaina/ParseType.java | 18 +- .../br/com/caelum/tubaina/TubainaBuilder.java | 299 ++++++++-------- .../caelum/tubaina/parser/TubainaModule.java | 48 ++- .../builder/replacer/ListReplacerTest.java | 2 +- .../html/desktop/SectionToStringTest.java | 9 +- .../SingleHtmlChapterGeneratorTest.java | 10 +- .../html/desktop/SingleHtmlGeneratorTest.java | 291 ++++++++-------- .../html/kindle/ChapterToKindleTest.java | 63 ++-- .../IntroductionChaptersToKindleTest.java | 1 + .../html/kindle/KindleGeneratorTest.java | 12 +- .../parser/html/kindle/KindleParserTest.java | 320 +++++++++--------- .../parser/html/kindle/PartToKindleTest.java | 9 +- templates/kindle/introductionChapters.ftl | 4 +- 15 files changed, 588 insertions(+), 570 deletions(-) delete mode 100644 src/main/java/br/com/caelum/tubaina/GeneratorFactory.java diff --git a/src/main/java/br/com/caelum/tubaina/Book.java b/src/main/java/br/com/caelum/tubaina/Book.java index 136dde3..ce97df8 100644 --- a/src/main/java/br/com/caelum/tubaina/Book.java +++ b/src/main/java/br/com/caelum/tubaina/Book.java @@ -11,46 +11,47 @@ public class Book { private String name; - private final List introductionChapters; - + private final List introductionChapters; + public Book(String name, List bookParts, List introductionChapters) { - this.parts = bookParts; + this.parts = bookParts; this.name = name; - this.introductionChapters = introductionChapters; + this.introductionChapters = introductionChapters; } + //TODO: remove this. Book has parts, parts have chapters public List getChapters() { - ArrayList allChapters = new ArrayList(); + ArrayList allChapters = new ArrayList(); for (BookPart part : parts) { - allChapters.addAll(part.getChapters()); - } + allChapters.addAll(part.getChapters()); + } return allChapters; } - + public List getParts() { - return parts; - } + return parts; + } public String getName() { return name; } public List getIntroductionChapters() { - return introductionChapters; - } - - public List getResources() { - List resources = new ArrayList(); - for (Chapter c : this.getChapters()) { - resources.addAll(c.getResources()); - } - for (Chapter c : this.getIntroductionChapters()) { - resources.addAll(c.getResources()); - } - for (BookPart bp : this.getParts()) { - resources.addAll(bp.getResources()); - } - return resources; - } - + return introductionChapters; + } + + public List getResources() { + List resources = new ArrayList(); + for (Chapter c : this.getChapters()) { + resources.addAll(c.getResources()); + } + for (Chapter c : this.getIntroductionChapters()) { + resources.addAll(c.getResources()); + } + for (BookPart bp : this.getParts()) { + resources.addAll(bp.getResources()); + } + return resources; + } + } diff --git a/src/main/java/br/com/caelum/tubaina/GeneratorFactory.java b/src/main/java/br/com/caelum/tubaina/GeneratorFactory.java deleted file mode 100644 index 68e830e..0000000 --- a/src/main/java/br/com/caelum/tubaina/GeneratorFactory.java +++ /dev/null @@ -1,17 +0,0 @@ -package br.com.caelum.tubaina; - -import java.io.IOException; - -import br.com.caelum.tubaina.parser.Parser; -import br.com.caelum.tubaina.parser.RegexConfigurator; -import br.com.caelum.tubaina.parser.html.desktop.Generator; - -public class GeneratorFactory { - - public Generator generatorFor(ParseType parseType, TubainaBuilderData data) throws IOException { - Parser parser = parseType.getParser(new RegexConfigurator(), data.isNoAnswer(), data.isShowNotes(), data.getLinkParameter()); - return parseType.getGenerator(parser, data); - - } - -} diff --git a/src/main/java/br/com/caelum/tubaina/ParseType.java b/src/main/java/br/com/caelum/tubaina/ParseType.java index 108bc19..49b8a5e 100644 --- a/src/main/java/br/com/caelum/tubaina/ParseType.java +++ b/src/main/java/br/com/caelum/tubaina/ParseType.java @@ -23,8 +23,8 @@ public enum ParseType { LATEX { @Override - public Parser getParser(RegexConfigurator conf, boolean noAnswer, boolean showNotes, String linkParameter) throws IOException { - List tags = conf.read("/regex.properties", "/latex.properties"); + public Parser getParser() throws IOException { + List tags = new RegexConfigurator().read("/regex.properties", "/latex.properties"); return new LatexParser(tags); } @@ -42,8 +42,8 @@ public TubainaModule getModule(TubainaBuilderData data) { HTMLFLAT { @Override - public Parser getParser(RegexConfigurator conf, boolean noAnswer, boolean showNotes, String linkParameter) throws IOException { - List tags = conf.read("/regex.properties", "/html.properties"); + public Parser getParser() throws IOException { + List tags = new RegexConfigurator().read("/regex.properties", "/html.properties"); return new HtmlParser(tags); } @@ -59,8 +59,8 @@ public TubainaModule getModule(TubainaBuilderData data) { }, HTML { @Override - public Parser getParser(RegexConfigurator conf, boolean noAnswer, boolean showNotes, String linkParameter) throws IOException { - List tags = conf.read("/regex.properties", "/html.properties"); + public Parser getParser() throws IOException { + List tags = new RegexConfigurator().read("/regex.properties", "/html.properties"); return new HtmlParser(tags); } @@ -77,8 +77,8 @@ public TubainaModule getModule(TubainaBuilderData data) { KINDLE { @Override - public Parser getParser(RegexConfigurator conf, boolean noAnswer, boolean showNotes, String linkParameter) throws IOException { - List tags = conf.read("/regex.properties", "/kindle.properties"); + public Parser getParser() throws IOException { + List tags = new RegexConfigurator().read("/regex.properties", "/kindle.properties"); return new KindleParser(tags); } @@ -99,7 +99,7 @@ public String getType() { protected abstract Generator getGenerator(Parser parser, TubainaBuilderData data); - protected abstract Parser getParser(RegexConfigurator conf, boolean noAnswer, boolean showNotes, String linkParameter) throws IOException; + protected abstract Parser getParser() throws IOException; public abstract TubainaModule getModule(TubainaBuilderData data); diff --git a/src/main/java/br/com/caelum/tubaina/TubainaBuilder.java b/src/main/java/br/com/caelum/tubaina/TubainaBuilder.java index 6bb6d84..2eee29f 100644 --- a/src/main/java/br/com/caelum/tubaina/TubainaBuilder.java +++ b/src/main/java/br/com/caelum/tubaina/TubainaBuilder.java @@ -22,156 +22,153 @@ public class TubainaBuilder { - public static final File DEFAULT_TEMPLATE_DIR = new File("templates"); - - public static final Logger LOG = Logger.getLogger(TubainaBuilder.class); - - private static Integer codeLength = 93; // believe us... this is what - // fits in Latex A4 templates. - - private static Integer maximumImageWidth = 175; - - private File inputDir = new File("."); - - private File outputDir = new File("."); - - private String bookName = "book"; - - private final ParseType parseType; - - private boolean dontCare = false; - - private TubainaBuilderData data = new TubainaBuilderData(false, DEFAULT_TEMPLATE_DIR, false, - false, "book"); - - public TubainaBuilder(ParseType type) { - this.parseType = type; - } - - public void build() throws IOException { - List introductionAfcFiles = new ArrayList(); - ResourceLocator.initialize(inputDir); - List afcFiles = getAfcsFrom(inputDir); - File introductionChapterDirs = new File(inputDir, "introduction"); - if (introductionChapterDirs.exists()) { - introductionAfcFiles = getAfcsFrom(introductionChapterDirs); - } - BookBuilder builder = new BookBuilder(bookName); - builder.addAllReaders(afcFiles, introductionAfcFiles); - - Book b = null; - try { - b = builder.build(); - } catch (TubainaException e) { - if (dontCare) { - LOG.warn(e); - } else { - throw e; - } - } - TubainaModule module = parseType.getModule(data); - module.inject(b); - - GeneratorFactory generatorFactory = new GeneratorFactory(); - Generator generator = generatorFactory.generatorFor(parseType, data); - - File file = new File(outputDir, parseType.getType()); - FileUtils.forceMkdir(file); - File bibliographyFile = new File(inputDir, "bib.xml"); - if (bibliographyFile.exists()) { - FileUtils.copyFileToDirectory(bibliographyFile, file); - } - - try { - generator.generate(b, file); - } catch (TubainaException e) { - LOG.warn(e.getMessage()); - } - } - - static List getAfcsFrom(final File file) throws UnsupportedEncodingException, - FileNotFoundException { - List afcFiles = new ArrayList(); - List files = new ArrayList(); - Collections.addAll(files, file.list(new SuffixFileFilter(".afc"))); - Collections.sort(files); - for (String fileName : files) { - InputStreamReader reader = new InputStreamReader(new BOMInputStream(new FileInputStream(new File(file, fileName))), "UTF-8"); - afcFiles.add(new AfcFile(reader, fileName)); - } - return afcFiles; - } - - public TubainaBuilder inputDir(File inputDir) { - this.inputDir = inputDir; - return this; - } - - public TubainaBuilder outputDir(File outputDir) { - this.outputDir = outputDir; - return this; - } - - public TubainaBuilder strictXhtml() { - this.data.setStrictXhtml(true); - return this; - } - - public TubainaBuilder templateDir(File templateDir) { - this.data.setTemplateDir(templateDir); - return this; - } - - public TubainaBuilder showNotes() { - this.data.setShowNotes(true); - return this; - } - - public TubainaBuilder dontCare() { - this.dontCare = true; - return this; - } - - public TubainaBuilder noAnswer() { - this.data.setNoAnswer(true); - return this; - } - - public TubainaBuilder outputFileName(String fileName) { - this.data.setOutputFileName(fileName); - return this; - } - - public TubainaBuilder bookName(String bookName) { - this.bookName = bookName; - return this; - } - - public TubainaBuilder codeLength(Integer length) { - codeLength = length; - return this; - } - - public TubainaBuilder maximumImageWidth(Integer width) { - maximumImageWidth = width; - return this; - } - - public TubainaBuilder withIfdefs(List ifdefs) { - this.data.setIfdefs(ifdefs); - return this; - } - - public static Integer getCodeLength() { - return codeLength; - } - - public static Integer getMaximumWidth() { - return maximumImageWidth; - } - - public void withLinkParameter(String linkParameter) { - this.data.setLinkParameter(linkParameter); - } + public static final File DEFAULT_TEMPLATE_DIR = new File("templates"); + + public static final Logger LOG = Logger.getLogger(TubainaBuilder.class); + + private static Integer codeLength = 93; // believe us... this is what + // fits in Latex A4 templates. + + private static Integer maximumImageWidth = 175; + + private File inputDir = new File("."); + + private File outputDir = new File("."); + + private String bookName = "book"; + + private final ParseType parseType; + + private boolean dontCare = false; + + private TubainaBuilderData data = new TubainaBuilderData(false, DEFAULT_TEMPLATE_DIR, false, false, "book"); + + public TubainaBuilder(ParseType type) { + this.parseType = type; + } + + public void build() throws IOException { + List introductionAfcFiles = new ArrayList(); + ResourceLocator.initialize(inputDir); + List afcFiles = getAfcsFrom(inputDir); + File introductionChapterDirs = new File(inputDir, "introduction"); + if (introductionChapterDirs.exists()) { + introductionAfcFiles = getAfcsFrom(introductionChapterDirs); + } + BookBuilder builder = new BookBuilder(bookName); + builder.addAllReaders(afcFiles, introductionAfcFiles); + + Book b = null; + try { + b = builder.build(); + } catch (TubainaException e) { + if (dontCare) { + LOG.warn(e); + } else { + throw e; + } + } + TubainaModule module = parseType.getModule(data); + module.inject(b); + + File file = new File(outputDir, parseType.getType()); + FileUtils.forceMkdir(file); + File bibliographyFile = new File(inputDir, "bib.xml"); + if (bibliographyFile.exists()) { + FileUtils.copyFileToDirectory(bibliographyFile, file); + } + + Generator generator = parseType.getGenerator(parseType.getParser(), data); + try { + generator.generate(b, file); + } catch (TubainaException e) { + LOG.warn(e.getMessage()); + } + } + + static List getAfcsFrom(final File file) throws UnsupportedEncodingException, FileNotFoundException { + List afcFiles = new ArrayList(); + List files = new ArrayList(); + Collections.addAll(files, file.list(new SuffixFileFilter(".afc"))); + Collections.sort(files); + for (String fileName : files) { + InputStreamReader reader = new InputStreamReader(new BOMInputStream(new FileInputStream(new File(file, + fileName))), "UTF-8"); + afcFiles.add(new AfcFile(reader, fileName)); + } + return afcFiles; + } + + public TubainaBuilder inputDir(File inputDir) { + this.inputDir = inputDir; + return this; + } + + public TubainaBuilder outputDir(File outputDir) { + this.outputDir = outputDir; + return this; + } + + public TubainaBuilder strictXhtml() { + this.data.setStrictXhtml(true); + return this; + } + + public TubainaBuilder templateDir(File templateDir) { + this.data.setTemplateDir(templateDir); + return this; + } + + public TubainaBuilder showNotes() { + this.data.setShowNotes(true); + return this; + } + + public TubainaBuilder dontCare() { + this.dontCare = true; + return this; + } + + public TubainaBuilder noAnswer() { + this.data.setNoAnswer(true); + return this; + } + + public TubainaBuilder outputFileName(String fileName) { + this.data.setOutputFileName(fileName); + return this; + } + + public TubainaBuilder bookName(String bookName) { + this.bookName = bookName; + return this; + } + + public TubainaBuilder codeLength(Integer length) { + codeLength = length; + return this; + } + + public TubainaBuilder maximumImageWidth(Integer width) { + maximumImageWidth = width; + return this; + } + + public TubainaBuilder withIfdefs(List ifdefs) { + this.data.setIfdefs(ifdefs); + return this; + } + + public static Integer getCodeLength() { + return codeLength; + } + + public static Integer getMaximumWidth() { + return maximumImageWidth; + } + + public void withLinkParameter(String linkParameter) { + this.data.setLinkParameter(linkParameter); + } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/TubainaModule.java b/src/main/java/br/com/caelum/tubaina/parser/TubainaModule.java index 7243bda..667ed12 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/TubainaModule.java +++ b/src/main/java/br/com/caelum/tubaina/parser/TubainaModule.java @@ -4,6 +4,7 @@ import net.vidageek.mirror.dsl.Mirror; import br.com.caelum.tubaina.Book; +import br.com.caelum.tubaina.BookPart; import br.com.caelum.tubaina.Chapter; import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.CompositeChunk; @@ -15,12 +16,44 @@ public abstract class TubainaModule extends AbstractModule { + private Injector injector; + public TubainaModule() { super(); + injector = Guice.createInjector(this); + } + + public void inject(Book book) { + List parts = book.getParts(); + for (BookPart part : parts) { + inject(part); + } + } + + public void inject(BookPart part) { + Chunk introductionChunk = (Chunk) new Mirror().on(part).get().field("introductionChunk"); + if (introductionChunk != null) + inject(injector, introductionChunk); + List chapters = part.getChapters(); + for (Chapter chapter : chapters) { + inject(chapter); + } + } + + public void inject(Chapter chapter) { + inject(injector, (Chunk) new Mirror().on(chapter).get().field("introduction")); + for (Section section : chapter.getSections()) { + inject(section); + } + } + + public void inject(Section section) { + for (Chunk chunk : section.getChunks()) { + inject(injector, chunk); + } } public void inject(Chunk chunk) { - Injector injector = Guice.createInjector(this); injector.injectMembers(chunk); if (chunk instanceof CompositeChunk) { CompositeChunk composite = (CompositeChunk) chunk; @@ -29,19 +62,6 @@ public void inject(Chunk chunk) { } } } - - public void inject(Book book) { - Injector injector = Guice.createInjector(this); - List chapters = book.getChapters(); - for (Chapter chapter : chapters) { - inject(injector, (Chunk) new Mirror().on(chapter).get().field("introduction")); - for (Section section : chapter.getSections()) { - for (Chunk chunk : section.getChunks()) { - inject(injector, chunk); - } - } - } - } private void inject(Injector injector, Chunk chunk) { injector.injectMembers(chunk); diff --git a/src/test/java/br/com/caelum/tubaina/builder/replacer/ListReplacerTest.java b/src/test/java/br/com/caelum/tubaina/builder/replacer/ListReplacerTest.java index c103670..156fac3 100644 --- a/src/test/java/br/com/caelum/tubaina/builder/replacer/ListReplacerTest.java +++ b/src/test/java/br/com/caelum/tubaina/builder/replacer/ListReplacerTest.java @@ -51,7 +51,7 @@ public void testCreateSublistsProperly() throws Exception { Assert.assertEquals(1, chunks.size()); Assert.assertEquals(ListChunk.class, chunks.get(0).getClass()); - Field listBody = ListChunk.class.getDeclaredField("body"); + Field listBody = ListChunk.class.getSuperclass().getDeclaredField("body"); listBody.setAccessible(true); List chunks1 = (List) listBody.get(chunks.get(0)); diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SectionToStringTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SectionToStringTest.java index 57865d1..6f8355c 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SectionToStringTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SectionToStringTest.java @@ -51,8 +51,8 @@ public void testSection() { Section section = createSection("este é o texto da seção"); Book book = new BookBuilder("livro").build(); new HtmlModule().inject(book); - String string = sectionToString.generateSection(book, "capitulo", 7, section, 4, 2) - .toString(); + new HtmlModule().inject(section); + String string = sectionToString.generateSection(book, "capitulo", 7, section, 4, 2).toString(); Assert.assertEquals(1, countOccurrences(string, "class=\"sectionChapter\">(\\s)*capitulo(\\s)*<")); Assert.assertEquals(1, countOccurrences(string, "7.4 - Title")); Assert.assertEquals(1, countOccurrences(string, "este é o texto da seção")); @@ -63,8 +63,9 @@ public void testFlatSection() { Section section = createSection("este é o texto da seção"); Book book = new BookBuilder("livro").build(); new HtmlModule().inject(book); - String string = sectionToString.generateSection(book, "capitulo", 7, section, 4, 2) - .toString(); + new HtmlModule().inject(section); + + String string = sectionToString.generateSection(book, "capitulo", 7, section, 4, 2).toString(); Assert.assertEquals(1, countOccurrences(string, "class=\"sectionChapter\">(\\s)*capitulo(\\s)*<")); Assert.assertEquals(1, countOccurrences(string, "7.4 - Title")); Assert.assertEquals(1, countOccurrences(string, "este é o texto da seção")); diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SingleHtmlChapterGeneratorTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SingleHtmlChapterGeneratorTest.java index 6ab504e..be680bf 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SingleHtmlChapterGeneratorTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SingleHtmlChapterGeneratorTest.java @@ -3,10 +3,10 @@ import java.io.File; import java.util.ArrayList; -import junit.framework.Assert; - +import org.junit.Assert; import org.junit.Test; +import br.com.caelum.tubaina.Book; import br.com.caelum.tubaina.Chapter; import br.com.caelum.tubaina.TubainaBuilder; import br.com.caelum.tubaina.builder.BookBuilder; @@ -41,7 +41,11 @@ public void shouldGenerateChapterInsideADiv() throws Exception { Chapter c = createChapter("introducao", "[section primeira] conteudo da primeira " + "\n[section segunda] conteudo da segunda"); - String string = singleHtmlChapterGenerator.generateSingleHtmlChapter(new BookBuilder("some name").build(), c).toString(); + Book book = new BookBuilder("some name").build(); + new HtmlModule().inject(book); + new HtmlModule().inject(c); + + String string = singleHtmlChapterGenerator.generateSingleHtmlChapter(book, c).toString(); Assert.assertEquals(1, countOccurrences(string, "
    ")); } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SingleHtmlGeneratorTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SingleHtmlGeneratorTest.java index af4ade4..55a4251 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SingleHtmlGeneratorTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/SingleHtmlGeneratorTest.java @@ -25,152 +25,153 @@ import br.com.caelum.tubaina.resources.ResourceLocator; public class SingleHtmlGeneratorTest { - private SingleHtmlGenerator generator; - private File directory; + private SingleHtmlGenerator generator; + private File directory; - @Before - public void setUp() throws IOException { - RegexConfigurator configurator = new RegexConfigurator(); - List tags = configurator.read("/regex.properties", "/html.properties"); - HtmlParser parser = new HtmlParser(tags); + @Before + public void setUp() throws IOException { + RegexConfigurator configurator = new RegexConfigurator(); + List tags = configurator.read("/regex.properties", "/html.properties"); + HtmlParser parser = new HtmlParser(tags); - File path = new File("src/test/resources"); - ResourceLocator.initialize(path); - - TubainaBuilderData data = new TubainaBuilderData(false, - TubainaBuilder.DEFAULT_TEMPLATE_DIR, false, false, "book"); + File path = new File("src/test/resources"); + ResourceLocator.initialize(path); + + TubainaBuilderData data = new TubainaBuilderData(false, TubainaBuilder.DEFAULT_TEMPLATE_DIR, false, false, + "book"); - generator = new SingleHtmlGenerator(parser, data); - - directory = new File("tmp"); - directory.mkdir(); - } - - @After - public void deleteTempFiles() throws IOException { - FileUtils.deleteDirectory(directory); - } - - @Test - public void shouldCreateAppropriateDirectoryStructure() throws Exception { - Book book = createsSimpleBookWithTitle("livro"); - - generator.generate(book, directory); - - File bookRoot = new File(directory, "livro/"); - File includes = new File(bookRoot, "includes/"); - - assertTrue("should contain directory with chosen book name", bookRoot.exists()); - assertTrue("should contain includes directory", includes.exists()); - } - - private Book createsSimpleBookWithTitle(String title) { - BookBuilder builder = new BookBuilder(title); - - String fileContent = "[chapter O que é java? ]\n" + "texto da seção\n" - + "[section Primeira seção]\n" + "texto da prim seção\n" - + "[section Segunda seção]\n" + "texto da segunda seção\n\n"; - builder.addReaderFromString(fileContent); - - builder.addReaderFromString("[chapter Introdução]\n" - + "Algum texto de introdução\n"); - - return builder.build(); - } - - @Test - public void shouldCreateTheBookFile() throws Exception { - Book book = createsSimpleBookWithTitle("livro"); - - generator.generate(book, directory); - - File bookRoot = new File(directory, "livro/"); - File theBookItself = new File(bookRoot, "index.html"); - - assertTrue("should create the index.html containing the whole book", theBookItself.exists()); - } - - @Test - public void shouldCreateADirectoryForEachChapterThatContainsImages() throws Exception { - BookBuilder builder = new BookBuilder("Com Imagens"); - builder.addReaderFromString("[chapter Um capítulo]\n" - + "Uma introdução com imagem: \n\n" + "[img baseJpgImage.jpg]"); - builder.addReaderFromString("[chapter Outro capítulo]\n" - + "Uma introdução com imagem: \n\n" + "[img basePngImage.png]"); - Book imageBook = builder.build(); - - generator.generate(imageBook, directory); - - File bookRoot = new File(directory, "com-imagens/"); - File firstChapter = new File(bookRoot, "um-capitulo/"); - File firstChaptersImage = new File(firstChapter, "baseJpgImage.jpg"); - File secondChapter = new File(bookRoot, "outro-capitulo/"); - File secondChaptersImage = new File(secondChapter, "basePngImage.png"); - - assertTrue(bookRoot.exists()); - assertTrue(firstChapter.exists()); - assertTrue(firstChaptersImage.exists()); - assertTrue(secondChapter.exists()); - assertTrue(secondChaptersImage.exists()); - } - - @Test - public void shouldNotCreateADirectoryChapterThatDoesntContainAnyImages() throws Exception { - BookBuilder builder = new BookBuilder("Com Imagens"); - builder.addReaderFromString("[chapter Um capítulo]\n" - + "Uma introdução com imagem:\n"); - builder.addReaderFromString("[chapter Outro capítulo]\n" - + "Uma introdução com imagem: \n\n" + "[img basePngImage.png]"); - Book imageBook = builder.build(); - - generator.generate(imageBook, directory); - - File bookRoot = new File(directory, "com-imagens/"); - File firstChapter = new File(bookRoot, "um-capitulo/"); - - assertTrue(bookRoot.exists()); - assertFalse(firstChapter.exists()); - } - - @Test - public void testGeneratorWithCorrectImages() throws IOException { - BookBuilder builder = new BookBuilder("Com imagens"); - builder.addReaderFromString("[chapter qualquer um]\n" - + "[img baseJpgImage.jpg]"); - Book b = builder.build(); - - generator.generate(b, directory); - // testar se a imagem foi copiada pro diretorio images - File chapterDir = new File(directory, "com-imagens/qualquer-um/"); - Assert.assertTrue(chapterDir.exists()); - - Assert.assertEquals(1, chapterDir.list(new SuffixFileFilter(Arrays.asList("jpg"))).length); - File copied = new File(chapterDir, "baseJpgImage.jpg"); - Assert.assertTrue(copied.exists()); - } - - @Test - public void testGeneratorWithDoubledImage() throws TubainaException, IOException { - BookBuilder builder = new BookBuilder("Com imagens"); - String fileContent = "[chapter qualquer um]\n" - + "[img baseJpgImage.jpg]\n[img baseJpgImage.jpg]"; - builder.addReaderFromString(fileContent); - - Book b = builder.build(); - try { - generator.generate(b, directory); - } catch (TubainaException e) { - Assert.fail("Should not complain if one uses twice the same image"); - } - } - - @Test(expected = TubainaException.class) - public void testGeneratorWithUnexistantImage() throws TubainaException, IOException { - BookBuilder builder = new BookBuilder("Com imagens"); - String fileContent = "[chapter qualquer um]\n" - + "[img src/test/resources/someImage.gif]"; - builder.addReaderFromString(fileContent); - Book b = builder.build(); - generator.generate(b, directory); - } + generator = new SingleHtmlGenerator(parser, data); + + directory = new File("tmp"); + directory.mkdir(); + } + + @After + public void deleteTempFiles() throws IOException { + FileUtils.deleteDirectory(directory); + } + + @Test + public void shouldCreateAppropriateDirectoryStructure() throws Exception { + Book book = createsSimpleBookWithTitle("livro"); + new HtmlModule().inject(book); + + generator.generate(book, directory); + + File bookRoot = new File(directory, "livro/"); + File includes = new File(bookRoot, "includes/"); + + assertTrue("should contain directory with chosen book name", bookRoot.exists()); + assertTrue("should contain includes directory", includes.exists()); + } + + private Book createsSimpleBookWithTitle(String title) { + BookBuilder builder = new BookBuilder(title); + + String fileContent = "[chapter O que é java? ]\n" + "texto da seção\n" + "[section Primeira seção]\n" + + "texto da prim seção\n" + "[section Segunda seção]\n" + "texto da segunda seção\n\n"; + builder.addReaderFromString(fileContent); + + builder.addReaderFromString("[chapter Introdução]\n" + "Algum texto de introdução\n"); + + return builder.build(); + } + + @Test + public void shouldCreateTheBookFile() throws Exception { + Book book = createsSimpleBookWithTitle("livro"); + new HtmlModule().inject(book); + + generator.generate(book, directory); + + File bookRoot = new File(directory, "livro/"); + File theBookItself = new File(bookRoot, "index.html"); + + assertTrue("should create the index.html containing the whole book", theBookItself.exists()); + } + + @Test + public void shouldCreateADirectoryForEachChapterThatContainsImages() throws Exception { + BookBuilder builder = new BookBuilder("Com Imagens"); + builder.addReaderFromString("[chapter Um capítulo]\n" + "Uma introdução com imagem: \n\n" + + "[img baseJpgImage.jpg]"); + builder.addReaderFromString("[chapter Outro capítulo]\n" + "Uma introdução com imagem: \n\n" + + "[img basePngImage.png]"); + Book imageBook = builder.build(); + new HtmlModule().inject(imageBook); + + generator.generate(imageBook, directory); + + File bookRoot = new File(directory, "com-imagens/"); + File firstChapter = new File(bookRoot, "um-capitulo/"); + File firstChaptersImage = new File(firstChapter, "baseJpgImage.jpg"); + File secondChapter = new File(bookRoot, "outro-capitulo/"); + File secondChaptersImage = new File(secondChapter, "basePngImage.png"); + + assertTrue(bookRoot.exists()); + assertTrue(firstChapter.exists()); + assertTrue(firstChaptersImage.exists()); + assertTrue(secondChapter.exists()); + assertTrue(secondChaptersImage.exists()); + } + + @Test + public void shouldNotCreateADirectoryChapterThatDoesntContainAnyImages() throws Exception { + BookBuilder builder = new BookBuilder("Com Imagens"); + builder.addReaderFromString("[chapter Um capítulo]\n" + "Uma introdução com imagem:\n"); + builder.addReaderFromString("[chapter Outro capítulo]\n" + "Uma introdução com imagem: \n\n" + + "[img basePngImage.png]"); + Book imageBook = builder.build(); + new HtmlModule().inject(imageBook); + + generator.generate(imageBook, directory); + + File bookRoot = new File(directory, "com-imagens/"); + File firstChapter = new File(bookRoot, "um-capitulo/"); + + assertTrue(bookRoot.exists()); + assertFalse(firstChapter.exists()); + } + + @Test + public void testGeneratorWithCorrectImages() throws IOException { + BookBuilder builder = new BookBuilder("Com imagens"); + builder.addReaderFromString("[chapter qualquer um]\n" + "[img baseJpgImage.jpg]"); + Book b = builder.build(); + new HtmlModule().inject(b); + + generator.generate(b, directory); + // testar se a imagem foi copiada pro diretorio images + File chapterDir = new File(directory, "com-imagens/qualquer-um/"); + Assert.assertTrue(chapterDir.exists()); + + Assert.assertEquals(1, chapterDir.list(new SuffixFileFilter(Arrays.asList("jpg"))).length); + File copied = new File(chapterDir, "baseJpgImage.jpg"); + Assert.assertTrue(copied.exists()); + } + + @Test + public void testGeneratorWithDoubledImage() throws TubainaException, IOException { + BookBuilder builder = new BookBuilder("Com imagens"); + String fileContent = "[chapter qualquer um]\n" + "[img baseJpgImage.jpg]\n[img baseJpgImage.jpg]"; + builder.addReaderFromString(fileContent); + + Book b = builder.build(); + new HtmlModule().inject(b); + + try { + generator.generate(b, directory); + } catch (TubainaException e) { + Assert.fail("Should not complain if one uses twice the same image"); + } + } + + @Test(expected = TubainaException.class) + public void testGeneratorWithUnexistantImage() throws TubainaException, IOException { + BookBuilder builder = new BookBuilder("Com imagens"); + String fileContent = "[chapter qualquer um]\n" + "[img src/test/resources/someImage.gif]"; + builder.addReaderFromString(fileContent); + Book b = builder.build(); + generator.generate(b, directory); + } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ChapterToKindleTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ChapterToKindleTest.java index bee404e..96e3d37 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ChapterToKindleTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ChapterToKindleTest.java @@ -19,36 +19,35 @@ public class ChapterToKindleTest { - private ChapterToKindle chapterToString; - - @Before - public void setUp() throws IOException { - Configuration cfg = new Configuration(); - cfg.setDirectoryForTemplateLoading(new File(TubainaBuilder.DEFAULT_TEMPLATE_DIR, "kindle")); - cfg.setObjectWrapper(new BeansWrapper()); - - Parser parser = new HtmlParser(new RegexConfigurator().read("/regex.properties", - "/kindle.properties")); - chapterToString = new ChapterToKindle(parser, cfg); - } - - private Chapter createChapter(String title, String introduction, String content) { - return new ChapterBuilder(title, introduction, content, 1).build(); - } - - private int countOccurrences(String text, String substring) { - String[] tokens = text.split(substring); - return tokens.length - 1; - } - - @Test - public void testGenerateChapterWithSections() { - Chapter chapter = createChapter("chapter title", "introduction", - "[section section one] section content"); - - String generatedContent = chapterToString.generateKindleHtmlChapter(chapter).toString(); - assertEquals(2, countOccurrences(generatedContent, "
    ")); - assertEquals(1, countOccurrences(generatedContent, "\\d+ - chapter title")); - assertEquals(1, countOccurrences(generatedContent, "\\W*\\d+\\.1 - section one\\W*")); - } + private ChapterToKindle chapterToString; + + @Before + public void setUp() throws IOException { + Configuration cfg = new Configuration(); + cfg.setDirectoryForTemplateLoading(new File(TubainaBuilder.DEFAULT_TEMPLATE_DIR, "kindle")); + cfg.setObjectWrapper(new BeansWrapper()); + + Parser parser = new HtmlParser(new RegexConfigurator().read("/regex.properties", "/kindle.properties")); + chapterToString = new ChapterToKindle(parser, cfg); + } + + private Chapter createChapter(String title, String introduction, String content) { + return new ChapterBuilder(title, introduction, content, 1).build(); + } + + private int countOccurrences(String text, String substring) { + String[] tokens = text.split(substring); + return tokens.length - 1; + } + + @Test + public void testGenerateChapterWithSections() { + Chapter chapter = createChapter("chapter title", "introduction", "[section section one] section content"); + new KindleModule().inject(chapter); + + String generatedContent = chapterToString.generateKindleHtmlChapter(chapter).toString(); + assertEquals(2, countOccurrences(generatedContent, "
    ")); + assertEquals(1, countOccurrences(generatedContent, "\\d+ - chapter title")); + assertEquals(1, countOccurrences(generatedContent, "\\W*\\d+\\.1 - section one\\W*")); + } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/IntroductionChaptersToKindleTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/IntroductionChaptersToKindleTest.java index 057e0bb..09b435d 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/IntroductionChaptersToKindleTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/IntroductionChaptersToKindleTest.java @@ -46,6 +46,7 @@ public void setUp() throws IOException { @Test public void shouldGenerateIntroductionChapters() throws Exception { Chapter preface = new ChapterBuilder("preface", "label", "preface text", "", 0, true).build(); + new KindleModule().inject(preface); String introductionChapters = introductionChaptersToKindle.generateIntroductionChapters( Arrays.asList(preface)).toString(); assertTrue(introductionChapters.contains("

    preface

    ")); diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/KindleGeneratorTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/KindleGeneratorTest.java index ac955ac..18c1c87 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/KindleGeneratorTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/KindleGeneratorTest.java @@ -59,6 +59,7 @@ public void deleteTempFiles() throws IOException { @Test public void shouldCreateAppropriateDirectoryStructure() throws Exception { Book book = createsSimpleBookWithTitle("livro"); + new KindleModule().inject(book); generator.generate(book, tempDir); @@ -84,6 +85,7 @@ private Book createsSimpleBookWithTitle(String title) { @Test public void shouldCreateTheBookFile() throws Exception { Book book = createsSimpleBookWithTitle("livro"); + new KindleModule().inject(book); generator.generate(book, tempDir); @@ -100,6 +102,7 @@ public void shouldCreateADirectoryForEachChapterThatContainsImages() throws Exce builder.addReaderFromString("[chapter Outro capítulo]\n" + "Uma introdução com imagem: \n\n" + "[img basePngImage.png]"); Book imageBook = builder.build(); + new KindleModule().inject(imageBook); generator.generate(imageBook, tempDir); @@ -122,6 +125,7 @@ public void shouldNotCreateADirectoryChapterThatDoesntContainAnyImages() throws builder.addReaderFromString("[chapter Outro capítulo]\n" + "Uma introdução com imagem: \n\n" + "[img basePngImage.png]"); Book imageBook = builder.build(); + new KindleModule().inject(imageBook); generator.generate(imageBook, tempDir); @@ -136,6 +140,7 @@ public void testGeneratorWithCorrectImages() throws IOException { builder.addReaderFromString("[chapter qualquer um]\n" + "[img baseJpgImage.jpg]"); Book b = builder.build(); + new KindleModule().inject(b); generator.generate(b, tempDir); // testar se a imagem foi copiada pro diretorio images @@ -154,6 +159,7 @@ public void testGeneratorWithDoubledImage() throws TubainaException, IOException + "[img baseJpgImage.jpg]\n[img baseJpgImage.jpg]"); Book b = builder.build(); + new KindleModule().inject(b); try { generator.generate(b, tempDir); } catch (TubainaException e) { @@ -168,9 +174,9 @@ public void shouldCopyImagesFromIntroduction() throws IOException { String imageName = "introImage.jpg"; List introductionReaders = Arrays.asList(new AfcFile(new StringReader("[chapter intro]\n[img " + imageName + "]"), "file from string")); builder.addAllReaders(chapterReaders, introductionReaders); - Book b = builder.build(); - - generator.generate(b, tempDir); + Book book = builder.build(); + new KindleModule().inject(book); + generator.generate(book, tempDir); File introDir = new File(tempDir, IntroductionChaptersToKindle.RESOURCES_PATH); File copied = new File(introDir, imageName); diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/KindleParserTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/KindleParserTest.java index 75c5f99..2d22c2b 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/KindleParserTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/KindleParserTest.java @@ -11,168 +11,168 @@ import br.com.caelum.tubaina.builder.ChunkSplitter; import br.com.caelum.tubaina.parser.RegexConfigurator; import br.com.caelum.tubaina.parser.RegexTag; +import br.com.caelum.tubaina.parser.html.desktop.HtmlModule; public class KindleParserTest { - private KindleParser parser; - - @Before - public void setUp() throws IOException { - RegexConfigurator configurator = new RegexConfigurator(); - List tags = configurator.read("/regex.properties", "/kindle.properties"); - this.parser = new KindleParser(tags); - } - - @Test - public void testBoldTagInline() { - String result = parser.parse("ola **mundo**"); - Assert.assertEquals("ola mundo", result); - } - - @Test - public void testBoldTagMultiline() { - String result = parser.parse("ola **mu\nndo**"); - Assert.assertEquals("ola mu\nndo", result); - } - - @Test - public void testItalicTagInline() { - String result = parser.parse("ola ::mundo::"); - Assert.assertEquals("ola mundo", result); - } - - @Test - public void testItalicTagMultiline() { - String result = parser.parse("ola ::mu\nndo::"); - Assert.assertEquals("ola mu\nndo", result); - } - - @Test - public void testUnderlineTagInline() { - String result = parser.parse("ola __mundo__"); - Assert.assertEquals("ola mundo", result); - } - - @Test - public void testUnderlineTagMultiline() { - String result = parser.parse("ola __mu\nndo__"); - Assert.assertEquals("ola mu\nndo", result); - } - - @Test - public void testInlineCodeTagInline() { - String result = parser.parse("ola %%mundo%%"); - Assert.assertEquals("ola mundo", result); - } - - @Test - public void testInlineCodeTagMultiline() { - String result = parser.parse("ola %%mu\nndo%%"); - Assert.assertEquals("ola mu\nndo", result); - } - - // Test for inline Ruby code with inheritance symbol (::) - @Test - public void testTwoInlineCodeTagsWithTwoColonsInside() { - String result = parser - .parse("ola %%mundo <:: superclasse%% texto %%mais codigo <:: superclasse%%"); - Assert.assertEquals( - "ola mundo :: superclasse texto mais codigo :: superclasse", - result); - } - - @Test - public void testQuotationTagInline() { - String result = parser.parse("[quote ola mundo --Anonimo]"); - Assert.assertEquals("

    ola mundo
    --Anonimo

    ", result); - } - - @Test - public void testQuotationTagMultiline() { - String result = parser.parse("[quote ola mu\nndo-- Anonimo]"); - Assert.assertEquals("

    ola mu\nndo
    --Anonimo

    ", result); - } - - @Test - public void testLabelTagInline() { - String result = parser.parse("[footnote ola mundo]HelloWorld[/footnote]"); - Assert.assertEquals("", result); - } - - @Test - public void testLabelTagMultiline() { - String result = parser.parse("[footnote ola \nmundo]Hello\nWorld[/footnote]"); - Assert.assertEquals("", - result); - } - - @Test - public void testLinkComHttpTagInline() { - String result = parser.parse("http://www.caelum.com.br"); - Assert.assertEquals("http://www.caelum.com.br", - result); - } - - @Test - public void testLinkComHttpsTagInline() { - String result = parser.parse("https://www.caelum.com.br"); - Assert.assertEquals("https://www.caelum.com.br", - result); - } - - @Test - public void testLinkComParentesis() { - String result = parser.parse("(http://www.caelum.com.br)"); - Assert.assertEquals("(http://www.caelum.com.br)", - result); - } - - @Test - public void testMailTagInline() { - String result = parser.parse("[mail]olamundo@caelum.com.br[/mail]"); - Assert.assertEquals("olamundo@caelum.com.br", result); - } - - @Test - public void testMailTagWithUnderscoreInline() { - String result = parser.parse("[mail]ola\\_mundo@caelum.com.br[/mail]"); - Assert.assertEquals("ola\\_mundo@caelum.com.br", result); - } - - @Test - public void testTitleTagInline() { - String result = parser.parse("[title ola mundo]"); - Assert.assertEquals("

    ola mundo

    ", result); - } - - @Test - public void testTitleTagInlineWithInnerTags() { - String result = parser.parse("[title ola **mu__n__do**]"); - Assert.assertEquals("

    ola mundo

    ", result); - } - - @Test - public void testQuotationTag() { - String result = parser.parse("\"\""); - Assert.assertEquals("\"\"", result); - } - - @Test - public void testQuotationTagWithText() { - String result = parser.parse("\"qualquer coisa escrito aqui\""); - Assert.assertEquals("\"qualquer coisa escrito aqui\"", result); - } - - @Test - public void testItemSplittBug() { - String input = "* Refactoring, Martin Fowler\n\n" - + "* Effective Java, Joshua Bloch\n\n* Design Patterns, Erich Gamma et al"; - List chunks = new ChunkSplitter(null, "list").splitChunks(input); - Assert.assertEquals(3, chunks.size()); - Assert.assertEquals("
  • Refactoring, Martin Fowler
  • ", chunks.get(0).asString()); - Assert.assertEquals("
  • Effective Java, Joshua Bloch
  • ", chunks.get(1).asString()); - Assert.assertEquals("
  • Design Patterns, Erich Gamma et al
  • ", chunks.get(2) - .asString()); - } + private KindleParser parser; + + @Before + public void setUp() throws IOException { + RegexConfigurator configurator = new RegexConfigurator(); + List tags = configurator.read("/regex.properties", "/kindle.properties"); + this.parser = new KindleParser(tags); + } + + @Test + public void testBoldTagInline() { + String result = parser.parse("ola **mundo**"); + Assert.assertEquals("ola mundo", result); + } + + @Test + public void testBoldTagMultiline() { + String result = parser.parse("ola **mu\nndo**"); + Assert.assertEquals("ola mu\nndo", result); + } + + @Test + public void testItalicTagInline() { + String result = parser.parse("ola ::mundo::"); + Assert.assertEquals("ola mundo", result); + } + + @Test + public void testItalicTagMultiline() { + String result = parser.parse("ola ::mu\nndo::"); + Assert.assertEquals("ola mu\nndo", result); + } + + @Test + public void testUnderlineTagInline() { + String result = parser.parse("ola __mundo__"); + Assert.assertEquals("ola mundo", result); + } + + @Test + public void testUnderlineTagMultiline() { + String result = parser.parse("ola __mu\nndo__"); + Assert.assertEquals("ola mu\nndo", result); + } + + @Test + public void testInlineCodeTagInline() { + String result = parser.parse("ola %%mundo%%"); + Assert.assertEquals("ola mundo", result); + } + + @Test + public void testInlineCodeTagMultiline() { + String result = parser.parse("ola %%mu\nndo%%"); + Assert.assertEquals("ola mu\nndo", result); + } + + // Test for inline Ruby code with inheritance symbol (::) + @Test + public void testTwoInlineCodeTagsWithTwoColonsInside() { + String result = parser.parse("ola %%mundo <:: superclasse%% texto %%mais codigo <:: superclasse%%"); + Assert.assertEquals( + "ola mundo :: superclasse texto mais codigo :: superclasse", + result); + } + + @Test + public void testQuotationTagInline() { + String result = parser.parse("[quote ola mundo --Anonimo]"); + Assert.assertEquals("

    ola mundo
    --Anonimo

    ", result); + } + + @Test + public void testQuotationTagMultiline() { + String result = parser.parse("[quote ola mu\nndo-- Anonimo]"); + Assert.assertEquals("

    ola mu\nndo
    --Anonimo

    ", result); + } + + @Test + public void testLabelTagInline() { + String result = parser.parse("[footnote ola mundo]HelloWorld[/footnote]"); + Assert.assertEquals("", result); + } + + @Test + public void testLabelTagMultiline() { + String result = parser.parse("[footnote ola \nmundo]Hello\nWorld[/footnote]"); + Assert.assertEquals("", result); + } + + @Test + public void testLinkComHttpTagInline() { + String result = parser.parse("http://www.caelum.com.br"); + Assert.assertEquals("http://www.caelum.com.br", result); + } + + @Test + public void testLinkComHttpsTagInline() { + String result = parser.parse("https://www.caelum.com.br"); + Assert.assertEquals("https://www.caelum.com.br", result); + } + + @Test + public void testLinkComParentesis() { + String result = parser.parse("(http://www.caelum.com.br)"); + Assert.assertEquals("(http://www.caelum.com.br)", result); + } + + @Test + public void testMailTagInline() { + String result = parser.parse("[mail]olamundo@caelum.com.br[/mail]"); + Assert.assertEquals("olamundo@caelum.com.br", result); + } + + @Test + public void testMailTagWithUnderscoreInline() { + String result = parser.parse("[mail]ola\\_mundo@caelum.com.br[/mail]"); + Assert.assertEquals("ola\\_mundo@caelum.com.br", result); + } + + @Test + public void testTitleTagInline() { + String result = parser.parse("[title ola mundo]"); + Assert.assertEquals("

    ola mundo

    ", result); + } + + @Test + public void testTitleTagInlineWithInnerTags() { + String result = parser.parse("[title ola **mu__n__do**]"); + Assert.assertEquals("

    ola mundo

    ", result); + } + + @Test + public void testQuotationTag() { + String result = parser.parse("\"\""); + Assert.assertEquals("\"\"", result); + } + + @Test + public void testQuotationTagWithText() { + String result = parser.parse("\"qualquer coisa escrito aqui\""); + Assert.assertEquals("\"qualquer coisa escrito aqui\"", result); + } + + //This is actually a bug... It was due to the removal of the ParagraphInsideItem___ + @Test + public void testItemSplittBug() { + String input = "* Refactoring, Martin Fowler\n\n" + + "* Effective Java, Joshua Bloch\n\n* Design Patterns, Erich Gamma et al"; + List chunks = new ChunkSplitter(null, "list").splitChunks(input); + HtmlModule module = new HtmlModule(); + for (Chunk chunk : chunks) { + module.inject(chunk); + } + Assert.assertEquals(3, chunks.size()); + Assert.assertEquals("
  • Refactoring, Martin Fowler
  • ", chunks.get(0).asString()); + Assert.assertEquals("
  • Effective Java, Joshua Bloch
  • ", chunks.get(1).asString()); + Assert.assertEquals("
  • Design Patterns, Erich Gamma et al
  • ", chunks.get(2).asString()); + } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/PartToKindleTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/PartToKindleTest.java index 16706b4..35e15ec 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/PartToKindleTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/PartToKindleTest.java @@ -55,7 +55,10 @@ public void testGeneratePartWithChapters() { "[section section one] section content"); List bookParts = new BookPartsBuilder().addPartFrom("[part \"parte 1\"]") .addChaptersToLastAddedPart(Arrays.asList(chapter)).build(); - String generatedContent = partToKindle.generateKindlePart(bookParts.get(0), + BookPart part = bookParts.get(0); + new KindleModule().inject(part); + + String generatedContent = partToKindle.generateKindlePart(part, new TubainaHtmlDir(null, null, new KindleResourceManipulatorFactory()), 1) .toString(); assertEquals(1, countOccurrences(generatedContent, "

    Part 1 - parte 1

    ")); @@ -70,7 +73,9 @@ public void testGenerateANotPrintablePartWithChapters() { "[section section one] section content"); List bookParts = new BookPartsBuilder().addChaptersToLastAddedPart( Arrays.asList(chapter)).build(); - String generatedContent = partToKindle.generateKindlePart(bookParts.get(0), + BookPart part = bookParts.get(0); + new KindleModule().inject(part); + String generatedContent = partToKindle.generateKindlePart(part, new TubainaHtmlDir(null, null, new KindleResourceManipulatorFactory()), 1).toString(); assertEquals(0, countOccurrences(generatedContent, "

    .*

    ")); assertEquals(1, countOccurrences(generatedContent, "\\d+ - chapter title")); diff --git a/templates/kindle/introductionChapters.ftl b/templates/kindle/introductionChapters.ftl index aea7a44..d1a04ed 100644 --- a/templates/kindle/introductionChapters.ftl +++ b/templates/kindle/introductionChapters.ftl @@ -2,14 +2,14 @@

    ${sanitizer.sanitize(chapter.title)}

    - ${chapter.getIntroduction(parser)} + ${chapter.getIntroduction()} <#list chapter.sections as section>

    ${sanitizer.sanitize(section.title)}

    <#list section.chunks as chunk> - ${chunk.getContent(parser)!""} + ${chunk.asString()!""}
    From d1874dd4906bfed843b392d27b649e5888eef21e Mon Sep 17 00:00:00 2001 From: Cecilia Fernandes Date: Thu, 4 Apr 2013 23:55:41 -0300 Subject: [PATCH 13/17] [Adding Guice] All green\! --- .../tubaina/builder/ChunksMakerBuilder.java | 2 +- .../builder/replacer/ParagraphReplacer.java | 12 +- .../caelum/tubaina/chunk/ParagraphChunk.java | 10 +- .../caelum/tubaina/parser/TubainaModule.java | 50 ++- .../parser/html/HtmlAndKindleCodeTag.java | 3 + .../parser/html/ParagraphTagTemplate.java | 2 + .../tubaina/parser/html/kindle/CodeTag.java | 13 +- .../parser/html/kindle/KindleModule.java | 7 + .../tubaina/parser/latex/BookToLatex.java | 2 +- .../tubaina/parser/latex/LatexGenerator.java | 7 +- .../builder/replacer/ListReplacerTest.java | 2 +- .../parser/html/desktop/AnswerTagTest.java | 2 +- .../parser/html/desktop/ParagraphTagTest.java | 12 +- .../parser/html/kindle/CodeTagTest.java | 25 -- .../parser/html/kindle/KindleParserTest.java | 1 - .../parser/html/kindle/ParagraphTagTest.java | 10 +- .../parser/latex/LatexGeneratorTest.java | 351 +++++++++--------- .../parser/latex/ParagraphTagTest.java | 2 +- 18 files changed, 270 insertions(+), 243 deletions(-) delete mode 100644 src/test/java/br/com/caelum/tubaina/parser/html/kindle/CodeTagTest.java diff --git a/src/main/java/br/com/caelum/tubaina/builder/ChunksMakerBuilder.java b/src/main/java/br/com/caelum/tubaina/builder/ChunksMakerBuilder.java index 96877f2..c682bab 100644 --- a/src/main/java/br/com/caelum/tubaina/builder/ChunksMakerBuilder.java +++ b/src/main/java/br/com/caelum/tubaina/builder/ChunksMakerBuilder.java @@ -107,7 +107,7 @@ public ChunksMakerBuilder(List resources) { replacers.add(new RubyReplacer()); replacers.add(new CenteredParagraphReplacer()); - replacers.add(new ParagraphReplacer(paragraphTerminator)); + replacers.add(new ParagraphReplacer(paragraphTerminator, true)); replacerMap.put("item", replacers); // List tag diff --git a/src/main/java/br/com/caelum/tubaina/builder/replacer/ParagraphReplacer.java b/src/main/java/br/com/caelum/tubaina/builder/replacer/ParagraphReplacer.java index bef16ba..4cfa9ec 100644 --- a/src/main/java/br/com/caelum/tubaina/builder/replacer/ParagraphReplacer.java +++ b/src/main/java/br/com/caelum/tubaina/builder/replacer/ParagraphReplacer.java @@ -12,13 +12,20 @@ public class ParagraphReplacer implements Replacer { private final Pattern pattern; private final Pattern tagPattern = Pattern.compile("(?s)(?i)\\A\\[(.+)\\].*\\[/\\1\\]"); + + private final boolean isInsideItem; - public ParagraphReplacer(String specialTerms) { + public ParagraphReplacer(String specialTerms, boolean isInsideItem) { + this.isInsideItem = isInsideItem; this.pattern = Pattern.compile("(?s)(?i)\\A\\s*(.+?)(\\n(\\s)*?\\n|\\s*\\[(" + specialTerms + ")|\\s*\\z)"); } + public ParagraphReplacer(String specialTerms) { + this(specialTerms, false); + } + @Override public String execute(String text, List chunks) { Matcher matcher = pattern.matcher(text); matcher.find(); @@ -26,6 +33,7 @@ public String execute(String text, List chunks) { return text.substring(matcher.end(1)); } + @Override public boolean accepts(String text) { Matcher tagMatcher = tagPattern.matcher(text); if (tagMatcher.find()) @@ -40,7 +48,7 @@ public boolean accepts(String text) { } public Chunk createChunk(Matcher matcher) { - return new ParagraphChunk(matcher.group(1)); + return new ParagraphChunk(matcher.group(1), isInsideItem); } } diff --git a/src/main/java/br/com/caelum/tubaina/chunk/ParagraphChunk.java b/src/main/java/br/com/caelum/tubaina/chunk/ParagraphChunk.java index 8d82c0f..d831a36 100644 --- a/src/main/java/br/com/caelum/tubaina/chunk/ParagraphChunk.java +++ b/src/main/java/br/com/caelum/tubaina/chunk/ParagraphChunk.java @@ -4,13 +4,19 @@ public class ParagraphChunk extends AbstractChunk{ - private String content; + private final String content; + private final boolean isInsideItem; - public ParagraphChunk(String content) { + public ParagraphChunk(String content, boolean isInsideItem) { this.content = content; + this.isInsideItem = isInsideItem; } public String getContent() { return content; } + + public boolean isInsideItem() { + return isInsideItem; + } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/TubainaModule.java b/src/main/java/br/com/caelum/tubaina/parser/TubainaModule.java index 667ed12..2e737fc 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/TubainaModule.java +++ b/src/main/java/br/com/caelum/tubaina/parser/TubainaModule.java @@ -16,21 +16,30 @@ public abstract class TubainaModule extends AbstractModule { - private Injector injector; - public TubainaModule() { super(); - injector = Guice.createInjector(this); } + // TODO: remove this if/else, i.e., chapters always belong to a part public void inject(Book book) { + Injector injector = Guice.createInjector(this); + List chapters = book.getIntroductionChapters(); List parts = book.getParts(); - for (BookPart part : parts) { - inject(part); + if (parts.size() != 0) { + for (BookPart part : parts) { + inject(part, injector); + } + } else { + for (Chapter chapter : book.getChapters()) { + inject(chapter); + } + } + for (Chapter introductionChapter : chapters) { + inject(introductionChapter); } } - - public void inject(BookPart part) { + + private void inject(BookPart part, Injector injector) { Chunk introductionChunk = (Chunk) new Mirror().on(part).get().field("introductionChunk"); if (introductionChunk != null) inject(injector, introductionChunk); @@ -40,20 +49,20 @@ public void inject(BookPart part) { } } - public void inject(Chapter chapter) { + private void inject(Chapter chapter, Injector injector) { inject(injector, (Chunk) new Mirror().on(chapter).get().field("introduction")); for (Section section : chapter.getSections()) { inject(section); } } - public void inject(Section section) { + private void inject(Section section, Injector injector) { for (Chunk chunk : section.getChunks()) { inject(injector, chunk); } } - public void inject(Chunk chunk) { + private void inject(Chunk chunk, Injector injector) { injector.injectMembers(chunk); if (chunk instanceof CompositeChunk) { CompositeChunk composite = (CompositeChunk) chunk; @@ -72,4 +81,25 @@ private void inject(Injector injector, Chunk chunk) { } } } + + // I'm not proud of this. This is tests infrastructure, though. + public void inject(BookPart part) { + Injector injector = Guice.createInjector(this); + inject(part, injector); + } + + public void inject(Chapter chapter) { + Injector injector = Guice.createInjector(this); + inject(chapter, injector); + } + + public void inject(Section section) { + Injector injector = Guice.createInjector(this); + inject(section, injector); + } + + public void inject(Chunk chunk) { + Injector injector = Guice.createInjector(this); + inject(chunk, injector); + } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/HtmlAndKindleCodeTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/HtmlAndKindleCodeTag.java index c06fbf8..3da40e6 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/HtmlAndKindleCodeTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/HtmlAndKindleCodeTag.java @@ -2,6 +2,8 @@ import java.util.List; +import com.google.inject.Inject; + import br.com.caelum.tubaina.chunk.CodeChunk; import br.com.caelum.tubaina.parser.SimpleIndentator; import br.com.caelum.tubaina.parser.Tag; @@ -15,6 +17,7 @@ public class HtmlAndKindleCodeTag implements Tag { private SyntaxHighlighter htmlCodeHighlighter; private CodeTagOptionsParser codeTagOptionsParser; + @Inject public HtmlAndKindleCodeTag(SyntaxHighlighter htmlCodeHighlighter) { codeTagOptionsParser = new CodeTagOptionsParser(); this.htmlCodeHighlighter = htmlCodeHighlighter; diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/ParagraphTagTemplate.java b/src/main/java/br/com/caelum/tubaina/parser/html/ParagraphTagTemplate.java index abb7100..0d33fee 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/ParagraphTagTemplate.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/ParagraphTagTemplate.java @@ -15,6 +15,8 @@ public ParagraphTagTemplate(Sanitizer sanitizer) { @Override public String parse(ParagraphChunk chunk) { String content = sanitizer.sanitize(chunk.getContent()); + if (chunk.isInsideItem()) + return content; return "

    " + content + "

    "; } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/CodeTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/CodeTag.java index 70d99b4..8538e4d 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/CodeTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/CodeTag.java @@ -3,21 +3,14 @@ import br.com.caelum.tubaina.chunk.CodeChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.HtmlAndKindleCodeTag; -import br.com.caelum.tubaina.parser.html.desktop.SyntaxHighlighter; -import br.com.caelum.tubaina.parser.pygments.CodeCache; -import br.com.caelum.tubaina.parser.pygments.CodeOutputType; -import br.com.caelum.tubaina.util.SimpleCommandExecutor; + +import com.google.inject.Inject; public class CodeTag implements Tag { private final HtmlAndKindleCodeTag htmlCodeTag; - public CodeTag() { - SyntaxHighlighter syntaxHighlighter = new SyntaxHighlighter(new SimpleCommandExecutor(), - CodeOutputType.KINDLE_HTML, new CodeCache(CodeOutputType.KINDLE_HTML)); - this.htmlCodeTag = new HtmlAndKindleCodeTag(syntaxHighlighter); - } - + @Inject public CodeTag(HtmlAndKindleCodeTag htmlCodeTag) { this.htmlCodeTag = htmlCodeTag; } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleModule.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleModule.java index 92f17b4..4d713d6 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleModule.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleModule.java @@ -20,8 +20,12 @@ import br.com.caelum.tubaina.parser.NullNoteTag; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.TubainaModule; +import br.com.caelum.tubaina.parser.pygments.CodeCache; +import br.com.caelum.tubaina.parser.pygments.CodeOutputType; +import br.com.caelum.tubaina.util.CommandExecutor; import br.com.caelum.tubaina.util.HtmlSanitizer; import br.com.caelum.tubaina.util.Sanitizer; +import br.com.caelum.tubaina.util.SimpleCommandExecutor; import com.google.inject.TypeLiteral; @@ -56,5 +60,8 @@ protected void configure() { bind(new TypeLiteral>() {}).to(TableTag.class); bind(Sanitizer.class).to(HtmlSanitizer.class); + bind(CommandExecutor.class).to(SimpleCommandExecutor.class); + bind(CodeOutputType.class).toInstance(CodeOutputType.KINDLE_HTML); + bind(CodeCache.class); } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/BookToLatex.java b/src/main/java/br/com/caelum/tubaina/parser/latex/BookToLatex.java index 3c0eebc..40d578e 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/BookToLatex.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/BookToLatex.java @@ -18,7 +18,7 @@ public BookToLatex(final Parser parser) { this.parser = parser; } - public StringBuffer generateLatex(final Book book, final Configuration cfg, List ifdefs) { + public StringBuffer generateLatex(Book book, Configuration cfg, List ifdefs) { Map map = new HashMap(); for (String string : ifdefs) { map.put(string, true); diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/LatexGenerator.java b/src/main/java/br/com/caelum/tubaina/parser/latex/LatexGenerator.java index 3ca36d6..22a0fc1 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/LatexGenerator.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/LatexGenerator.java @@ -51,20 +51,20 @@ public LatexGenerator(Parser parser, TubainaBuilderData data) { this.ifdefs = data.getIfdefs(); } + @Override public void generate(Book book, File directory) throws IOException { Configuration cfg = new Configuration(); cfg.setDirectoryForTemplateLoading(templateDir); cfg.setObjectWrapper(new BeansWrapper()); cfg.setDefaultEncoding("UTF-8"); - PrintStream stream; writeBibTex(directory); StringBuffer latex = new BookToLatex(parser).generateLatex(book, cfg, ifdefs); // print the latex document to an archive File fileBook = new File(directory, latexOutputFileName); - stream = new PrintStream(fileBook, "UTF-8"); + PrintStream stream = new PrintStream(fileBook, "UTF-8"); stream.append(latex); stream.close(); @@ -104,7 +104,8 @@ private void copyResources(File directory, Book b) throws IOException { private void copyFileWithExtenstion(File directory, List extenstions) throws IOException { for (final String extension : extenstions) { File[] files = new File(templateDir, "latex").listFiles(new FilenameFilter() { - public boolean accept(File dir, String name) { + @Override + public boolean accept(File dir, String name) { return name.endsWith(extension); } }); diff --git a/src/test/java/br/com/caelum/tubaina/builder/replacer/ListReplacerTest.java b/src/test/java/br/com/caelum/tubaina/builder/replacer/ListReplacerTest.java index 156fac3..62b8c2c 100644 --- a/src/test/java/br/com/caelum/tubaina/builder/replacer/ListReplacerTest.java +++ b/src/test/java/br/com/caelum/tubaina/builder/replacer/ListReplacerTest.java @@ -60,7 +60,7 @@ public void testCreateSublistsProperly() throws Exception { Assert.assertEquals(ItemChunk.class, chunks1.get(1).getClass()); Assert.assertEquals(ItemChunk.class, chunks1.get(2).getClass()); - Field itemBody = ItemChunk.class.getDeclaredField("body"); + Field itemBody = ItemChunk.class.getSuperclass().getDeclaredField("body"); itemBody.setAccessible(true); List chunks2 = (List) itemBody.get(chunks1.get(0)); diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/AnswerTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/AnswerTagTest.java index 10c7ec9..408bb44 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/AnswerTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/AnswerTagTest.java @@ -14,7 +14,7 @@ public void testAnswerTag(){ String result = getContent(chunk); Assert.assertEquals("" + "Click here for the answer
    texto da resposta

    ", result); + "id=\"answer" + id + "\">texto da resposta

    ", result); } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ParagraphTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ParagraphTagTest.java index 52cb2ba..159627e 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ParagraphTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/ParagraphTagTest.java @@ -8,10 +8,16 @@ public class ParagraphTagTest extends AbstractTagTest { @Test - public void testParagraphTag(){ - ParagraphChunk chunk = new ParagraphChunk("qualquer texto"); + public void generalParagraphTag(){ + ParagraphChunk chunk = new ParagraphChunk("qualquer texto", false); String result = getContent(chunk); Assert.assertEquals(result, "

    qualquer texto

    "); } - + + @Test + public void insideItemParagraphTag() { + ParagraphChunk chunk = new ParagraphChunk("qualquer texto", true); + String result = getContent(chunk); + Assert.assertEquals(result, "qualquer texto"); + } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/CodeTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/CodeTagTest.java deleted file mode 100644 index ec3da5f..0000000 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/CodeTagTest.java +++ /dev/null @@ -1,25 +0,0 @@ -package br.com.caelum.tubaina.parser.html.kindle; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; - -import org.junit.Test; - -import br.com.caelum.tubaina.chunk.CodeChunk; -import br.com.caelum.tubaina.parser.html.HtmlAndKindleCodeTag; - - -public class CodeTagTest extends AbstractTagTest { - - @Test - public void shouldCallHtmlCodeTag() { - String code = "public static void main(String[] args) {\n" + - " String name = \"Gabriel\";\n" + - " System.out.println(\"Hello, \" + name);\n" + - "}"; - HtmlAndKindleCodeTag htmlCodeTag = mock(HtmlAndKindleCodeTag.class); - CodeChunk chunk = new CodeChunk(code, ""); - getContent(chunk); - verify(htmlCodeTag).parse(chunk); - } -} diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/KindleParserTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/KindleParserTest.java index 2d22c2b..bc0b18f 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/KindleParserTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/KindleParserTest.java @@ -159,7 +159,6 @@ public void testQuotationTagWithText() { Assert.assertEquals("\"qualquer coisa escrito aqui\"", result); } - //This is actually a bug... It was due to the removal of the ParagraphInsideItem___ @Test public void testItemSplittBug() { String input = "* Refactoring, Martin Fowler\n\n" diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ParagraphTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ParagraphTagTest.java index e862200..2f50175 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ParagraphTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/ParagraphTagTest.java @@ -8,10 +8,16 @@ public class ParagraphTagTest extends AbstractTagTest { @Test - public void testParagraphTag() { - ParagraphChunk chunk = new ParagraphChunk("qualquer texto"); + public void generalParagraphTag() { + ParagraphChunk chunk = new ParagraphChunk("qualquer texto", false); String result = getContent(chunk); Assert.assertEquals(result, "

    qualquer texto

    "); } + @Test + public void insideItemParagraphTag() { + ParagraphChunk chunk = new ParagraphChunk("qualquer texto", true); + String result = getContent(chunk); + Assert.assertEquals(result, "qualquer texto"); + } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/LatexGeneratorTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/LatexGeneratorTest.java index 368312a..42d6698 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/LatexGeneratorTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/LatexGeneratorTest.java @@ -27,185 +27,176 @@ //TODO: Add tests concerning books separated into parts public class LatexGeneratorTest { - private LatexGenerator generator; - private Book book; - private File temp; - private LatexParser parser; - private TubainaBuilderData data; - - @Before - public void setUp() throws IOException { - RegexConfigurator configurator = new RegexConfigurator(); - List tags = configurator.read("/regex.properties", "/html.properties"); - parser = new LatexParser(tags); - - File path = new File("src/test/resources"); - ResourceLocator.initialize(path); - data = new TubainaBuilderData(false, TubainaBuilder.DEFAULT_TEMPLATE_DIR, false, false, - "teste"); - - generator = new LatexGenerator(parser, data); - - BookBuilder builder = new BookBuilder("livro"); - builder.addReaderFromString( - "[chapter O que é java? ]\n" + "texto da seção\n" - + "[section Primeira seção]\n" + "texto da prim seção\n" - + "[section Segunda seção]\n" + "texto da segunda seção\n\n"); - builder.addReaderFromString("[chapter Introdução]\n" - + "Algum texto de introdução\n"); - book = builder.build(); - temp = new File("tmp"); - temp.mkdir(); - } - - @After - public void deleteTempFiles() throws IOException { - // Probably not working on Windows. See HtmlGeneratorTest - FileUtils.deleteDirectory(temp); - } - - @Test - public void testGenerator() throws IOException { - new LatexModule().inject(book); - generator.generate(book, temp); - - // Book LaTeX - File texFile = new File(temp, "teste.tex"); - Assert.assertTrue("Book file should exist", texFile.exists()); - - // Answer book LaTeX - File answerFile = new File(temp, "answer.tex"); - Assert.assertFalse("Answer file should NOT exist", answerFile.exists()); - - // Resources - File styleFile = new File(temp, "tubaina.sty"); - Assert.assertTrue("Style file should exist", styleFile.exists()); - - File xcolorStyleFile = new File(temp, "xcolor.sty"); - Assert.assertTrue("Xcolor style file should exist", xcolorStyleFile.exists()); - - Assert.assertTrue(FileUtilities.contentEquals(new File(TubainaBuilder.DEFAULT_TEMPLATE_DIR, - "latex"), temp, new FilenameFilter() { - @Override + private LatexGenerator generator; + private Book book; + private File temp; + private LatexParser parser; + private TubainaBuilderData data; + + @Before + public void setUp() throws IOException { + RegexConfigurator configurator = new RegexConfigurator(); + List tags = configurator.read("/regex.properties", "/html.properties"); + parser = new LatexParser(tags); + + File path = new File("src/test/resources"); + ResourceLocator.initialize(path); + data = new TubainaBuilderData(false, TubainaBuilder.DEFAULT_TEMPLATE_DIR, false, false, "teste"); + + generator = new LatexGenerator(parser, data); + + BookBuilder builder = new BookBuilder("livro"); + builder.addReaderFromString("[chapter O que é java? ]\n" + "texto da seção\n" + + "[section Primeira seção]\n" + "texto da prim seção\n" + "[section Segunda seção]\n" + + "texto da segunda seção\n\n"); + builder.addReaderFromString("[chapter Introdução]\n" + "Algum texto de introdução\n"); + book = builder.build(); + temp = new File("tmp"); + temp.mkdir(); + } + + @After + public void deleteTempFiles() throws IOException { + // Probably not working on Windows. See HtmlGeneratorTest + FileUtils.deleteDirectory(temp); + } + + @Test + public void testGenerator() throws IOException { + new LatexModule().inject(book); + generator.generate(book, temp); + + // Book LaTeX + File texFile = new File(temp, "teste.tex"); + Assert.assertTrue("Book file should exist", texFile.exists()); + + // Answer book LaTeX + File answerFile = new File(temp, "answer.tex"); + Assert.assertFalse("Answer file should NOT exist", answerFile.exists()); + + // Resources + File styleFile = new File(temp, "tubaina.sty"); + Assert.assertTrue("Style file should exist", styleFile.exists()); + + File xcolorStyleFile = new File(temp, "xcolor.sty"); + Assert.assertTrue("Xcolor style file should exist", xcolorStyleFile.exists()); + + Assert.assertTrue(FileUtilities.contentEquals(new File(TubainaBuilder.DEFAULT_TEMPLATE_DIR, "latex"), temp, + new FilenameFilter() { + @Override + public boolean accept(File dir, String name) { + return name.contains(".png"); + } + })); + } + + @Test + public void testGeneratorWithCorrectImages() throws IOException { + BookBuilder builder = new BookBuilder("Com imagens"); + builder.addReaderFromString("[chapter qualquer um]\n" + "[img baseJpgImage.jpg]"); + Book b = builder.build(); + new LatexModule().inject(b); + + generator.generate(b, temp); + + File[] images = temp.listFiles(new FilenameFilter() { + @Override public boolean accept(File dir, String name) { - return name.contains(".png"); - } - })); - } - - @Test - public void testGeneratorWithCorrectImages() throws IOException { - BookBuilder builder = new BookBuilder("Com imagens"); - builder.addReaderFromString("[chapter qualquer um]\n" - + "[img baseJpgImage.jpg]"); - Book b = builder.build(); - new LatexModule().inject(b); - - generator.generate(b, temp); - - File[] images = temp.listFiles(new FilenameFilter() { - @Override - public boolean accept(File dir, String name) { - return name.contains(".png") || name.contains(".jpg"); - } - }); - - Assert.assertEquals(2, images.length); - File copied = new File(temp, "baseJpgImage.jpg"); - Assert.assertTrue(copied.exists()); - } - - @Test - public void testGeneratorWithDoubledImage() throws TubainaException, IOException { - BookBuilder builder = new BookBuilder("Com imagens"); - builder.addReaderFromString("[chapter qualquer um]\n" - + "[img baseJpgImage.jpg]\n[img baseJpgImage.jpg]"); - - Book b = builder.build(); - new LatexModule().inject(b); - try { - generator.generate(b, temp); - } catch (TubainaException t) { - Assert.fail("Should not raise an exception"); - } - // OK - } - - @Test - public void testGeneratorWithNonExistantImage() throws TubainaException, IOException { - BookBuilder builder = new BookBuilder("Com imagens"); - builder.addReaderFromString("[chapter qualquer um]\n" - + "[img src/test/resources/someImage.gif]"); - try { - Book b = builder.build(); - new LatexModule().inject(b); - generator.generate(b, temp); - Assert.fail("Should raise an exception"); - } catch (TubainaException t) { - // OK - } - } - - @Test - public void testGeneratorForInstructorTextbook() throws IOException { - RegexConfigurator configurator = new RegexConfigurator(); - List tags = configurator.read("/regex.properties", "/html.properties"); - LatexParser parser = new LatexParser(tags); - - File path = new File("src/test/resources"); - ResourceLocator.initialize(path); - LatexGenerator customGenerator = new LatexGenerator(parser, data); - BookBuilder builder = new BookBuilder("Do Instrutor"); - builder.addReaderFromString("[chapter com notas]\n" - + "[note]uma nota para o instrutor[/note]"); - Book b = builder.build(); - new LatexModule(true, true).inject(b); - customGenerator.generate(b, temp); - File texFile = new File(temp, "teste.tex"); - Assert.assertTrue("Book file should exist", texFile.exists()); - Assert.assertTrue("Should display the note", - containsText(texFile, "uma nota para o instrutor")); - } - - @Test - public void testGeneratorForStudentTextbook() throws IOException { - BookBuilder builder = new BookBuilder("Do Aluno"); - builder.addReaderFromString("[chapter com notas]\n" - + "[note]uma nota para o instrutor[/note]"); - Book b = builder.build(); - new LatexModule(false, true).inject(b); - generator.generate(b, temp); - File texFile = new File(temp, "teste.tex"); - Assert.assertTrue("Book file should exist", texFile.exists()); - Assert.assertFalse("Should not have INSTRUCTOR TEXTBOOK on the first page", - containsText(texFile, "INSTRUCTOR TEXTBOOK")); - Assert.assertFalse("Should not display the note", - containsText(texFile, "uma nota para o instrutor")); - } - - @Test - public void shouldCopyImagesFromIntroduction() throws IOException { - BookBuilder builder = new BookBuilder("With images in intro"); - List chapterReaders = new ArrayList(); - String imagePath = "introImage.jpg"; - List introductionReaders = Arrays.asList(new AfcFile(new StringReader("[chapter intro]\n[img " + imagePath + "]"), "file from string")); - builder.addAllReaders(chapterReaders, introductionReaders); - Book b = builder.build(); - new LatexModule().inject(b); - - generator.generate(b, temp); - File copied = new File(temp, imagePath); - - Assert.assertTrue(copied.exists()); - } - - private boolean containsText(File texFile, String text) throws IOException { - List lines = FileUtils.readLines(texFile); - boolean containsText = false; - for (String line : lines) { - if (line.contains(text)) - containsText = true; - } - return containsText; - } + return name.contains(".png") || name.contains(".jpg"); + } + }); + + Assert.assertEquals(2, images.length); + File copied = new File(temp, "baseJpgImage.jpg"); + Assert.assertTrue(copied.exists()); + } + + @Test + public void testGeneratorWithDoubledImage() throws TubainaException, IOException { + BookBuilder builder = new BookBuilder("Com imagens"); + builder.addReaderFromString("[chapter qualquer um]\n" + "[img baseJpgImage.jpg]\n[img baseJpgImage.jpg]"); + + Book b = builder.build(); + new LatexModule().inject(b); + try { + generator.generate(b, temp); + } catch (TubainaException t) { + Assert.fail("Should not raise an exception"); + } + // OK + } + + @Test + public void testGeneratorWithNonExistantImage() throws TubainaException, IOException { + BookBuilder builder = new BookBuilder("Com imagens"); + builder.addReaderFromString("[chapter qualquer um]\n" + "[img src/test/resources/someImage.gif]"); + try { + Book b = builder.build(); + new LatexModule().inject(b); + generator.generate(b, temp); + Assert.fail("Should raise an exception"); + } catch (TubainaException t) { + // OK + } + } + + @Test + public void testGeneratorForInstructorTextbook() throws IOException { + RegexConfigurator configurator = new RegexConfigurator(); + List tags = configurator.read("/regex.properties", "/html.properties"); + LatexParser parser = new LatexParser(tags); + + File path = new File("src/test/resources"); + ResourceLocator.initialize(path); + BookBuilder builder = new BookBuilder("Do Instrutor"); + builder.addReaderFromString("[chapter com notas]\n" + "Algo mais no capitulo.\n\n[note]uma nota para o instrutor[/note]"); + Book b = builder.build(); + new LatexModule(true, true).inject(b); + new LatexGenerator(parser, data).generate(b, temp); + File texFile = new File(temp, "teste.tex"); + Assert.assertTrue("Book file should exist", texFile.exists()); + + Assert.assertTrue("Should display the note", containsText(texFile, "uma nota para o instrutor")); + } + + @Test + public void testGeneratorForStudentTextbook() throws IOException { + BookBuilder builder = new BookBuilder("Do Aluno"); + builder.addReaderFromString("[chapter com notas]\n" + "[note]uma nota para o instrutor[/note]"); + Book b = builder.build(); + new LatexModule(false, true).inject(b); + generator.generate(b, temp); + File texFile = new File(temp, "teste.tex"); + Assert.assertTrue("Book file should exist", texFile.exists()); + Assert.assertFalse("Should not have INSTRUCTOR TEXTBOOK on the first page", + containsText(texFile, "INSTRUCTOR TEXTBOOK")); + Assert.assertFalse("Should not display the note", containsText(texFile, "uma nota para o instrutor")); + } + + @Test + public void shouldCopyImagesFromIntroduction() throws IOException { + BookBuilder builder = new BookBuilder("With images in intro"); + List chapterReaders = new ArrayList(); + String imagePath = "introImage.jpg"; + List introductionReaders = Arrays.asList(new AfcFile(new StringReader("[chapter intro]\n[img " + + imagePath + "]"), "file from string")); + builder.addAllReaders(chapterReaders, introductionReaders); + Book b = builder.build(); + new LatexModule().inject(b); + + generator.generate(b, temp); + File copied = new File(temp, imagePath); + + Assert.assertTrue(copied.exists()); + } + + private boolean containsText(File texFile, String text) throws IOException { + List lines = FileUtils.readLines(texFile); + boolean containsText = false; + for (String line : lines) { + if (line.contains(text)) + containsText = true; + } + return containsText; + } } diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/ParagraphTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/ParagraphTagTest.java index 432f22d..21ae45b 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/ParagraphTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/ParagraphTagTest.java @@ -9,7 +9,7 @@ public class ParagraphTagTest extends AbstractTagTest { @Test public void testParagraphTag(){ - ParagraphChunk chunk = new ParagraphChunk("qualquer texto"); + ParagraphChunk chunk = new ParagraphChunk("qualquer texto", false); String result = getContent(chunk); Assert.assertEquals(result, "\n\nqualquer texto"); } From e1161b861394892dd9f67d37558443006555235c Mon Sep 17 00:00:00 2001 From: Cecilia Fernandes Date: Fri, 5 Apr 2013 15:33:37 -0300 Subject: [PATCH 14/17] [Adding Guice] TodoTagTest and Manifest on build.gradle. --- build.gradle | 39 ++++++++++++++++--- .../parser/html/desktop/HtmlModule.java | 2 + .../parser/html/kindle/KindleModule.java | 2 + .../tubaina/parser/latex/LatexModule.java | 2 + .../parser/html/desktop/TodoTagTest.java | 16 ++++++++ .../parser/html/kindle/TodoTagTest.java | 16 ++++++++ .../tubaina/parser/latex/TodoTagTest.java | 16 ++++++++ 7 files changed, 87 insertions(+), 6 deletions(-) create mode 100644 src/test/java/br/com/caelum/tubaina/parser/html/desktop/TodoTagTest.java create mode 100644 src/test/java/br/com/caelum/tubaina/parser/html/kindle/TodoTagTest.java create mode 100644 src/test/java/br/com/caelum/tubaina/parser/latex/TodoTagTest.java diff --git a/build.gradle b/build.gradle index 4c40d9f..39e2389 100644 --- a/build.gradle +++ b/build.gradle @@ -4,12 +4,39 @@ apply plugin: 'eclipse' version = '1.8-SNAPSHOT' manifest.mainAttributes("Main-Class": "br.com.caelum.tubaina.Tubaina", - "Class-Path": "lib/commons-logging-1.1.1.jar lib/commons-codec-1.4.jar " + - "lib/commons-cli-1.1.jar lib/gson-2.1.jar lib/commons-io-2.4.jar lib/httpclient-4.1.3.jar "+ - "lib/httpcore-4.1.4.jar lib/freemarker-2.3.19.jar lib/jai_codec.jar lib/jai_core.jar " + - "lib/jai_imageio.jar lib/java2html-5.0.jar lib/log4j-1.2.12.jar lib/Tidy.jar lib/jericho-html-3.1.jar "+ - "lib/itext-2.1.7.jar lib/xstream-1.4.2.jar lib/xmlpull-1.1.3.1.jar lib/xpp3_min-1.1.4c.jar " + - "lib/commons-exec-1.1.jar") + "Class-Path": "lib/ant-contrib-0.6.jar" + + " lib/aopalliance-1.0.jar" + + " lib/asm-3.1.jar" + + " lib/bcmail-jdk14-1.38.jar" + + " lib/bcmail-jdk14-138.jar" + + " lib/bcprov-jdk14-1.38.jar" + + " lib/bcprov-jdk14-138.jar" + + " lib/bctsp-jdk14-1.38.jar" + + " lib/cglib-2.2.1-v20090111.jar" + + " lib/commons-cli-1.1.jar" + + " lib/commons-codec-1.4.jar" + + " lib/commons-exec-1.1.jar" + + " lib/commons-io-2.4.jar" + + " lib/commons-logging-1.1.1.jar" + + " lib/freemarker-2.3.19.jar" + + " lib/gson-2.1.jar" + + " lib/guice-3.0.jar" + + " lib/httpclient-4.1.3.jar" + + " lib/httpcore-4.1.4.jar" + + " lib/itext-2.1.7.jar" + + " lib/jai_codec.jar" + + " lib/jai_core.jar" + + " lib/jai_imageio.jar" + + " lib/java2html-5.0.jar" + + " lib/javax.inject-1.jar" + + " lib/jericho-html-3.1.jar" + + " lib/log4j-1.2.12.jar" + + " lib/maven-ant-tasks-2.1.1.jar" + + " lib/mirror-1.6.1.jar" + + " lib/Tidy.jar" + + " lib/xmlpull-1.1.3.1.jar" + + " lib/xpp3_min-1.1.4c.jar" + + " lib/xstream-1.4.2.jar") [compileJava, compileTestJava]*.options*.encoding='UTF-8' diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/HtmlModule.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/HtmlModule.java index e1c0040..166bce0 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/HtmlModule.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/HtmlModule.java @@ -15,6 +15,7 @@ import br.com.caelum.tubaina.chunk.TableChunk; import br.com.caelum.tubaina.chunk.TableColumnChunk; import br.com.caelum.tubaina.chunk.TableRowChunk; +import br.com.caelum.tubaina.chunk.TodoChunk; import br.com.caelum.tubaina.parser.IntroductionTag; import br.com.caelum.tubaina.parser.NullAnswerTag; import br.com.caelum.tubaina.parser.NullNoteTag; @@ -56,6 +57,7 @@ protected void configure() { bind(new TypeLiteral>() {}).to(TableColumnTag.class); bind(new TypeLiteral>() {}).to(TableRowTag.class); bind(new TypeLiteral>() {}).to(TableTag.class); + bind(new TypeLiteral>() {}).to(TodoTag.class); bind(Sanitizer.class).to(HtmlSanitizer.class); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleModule.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleModule.java index 4d713d6..f9c332a 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleModule.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleModule.java @@ -15,6 +15,7 @@ import br.com.caelum.tubaina.chunk.TableChunk; import br.com.caelum.tubaina.chunk.TableColumnChunk; import br.com.caelum.tubaina.chunk.TableRowChunk; +import br.com.caelum.tubaina.chunk.TodoChunk; import br.com.caelum.tubaina.parser.IntroductionTag; import br.com.caelum.tubaina.parser.NullAnswerTag; import br.com.caelum.tubaina.parser.NullNoteTag; @@ -58,6 +59,7 @@ protected void configure() { bind(new TypeLiteral>() {}).to(TableColumnTag.class); bind(new TypeLiteral>() {}).to(TableRowTag.class); bind(new TypeLiteral>() {}).to(TableTag.class); + bind(new TypeLiteral>() {}).to(TodoTag.class); bind(Sanitizer.class).to(HtmlSanitizer.class); bind(CommandExecutor.class).to(SimpleCommandExecutor.class); diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/LatexModule.java b/src/main/java/br/com/caelum/tubaina/parser/latex/LatexModule.java index b5415da..31aeeb1 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/LatexModule.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/LatexModule.java @@ -16,6 +16,7 @@ import br.com.caelum.tubaina.chunk.TableChunk; import br.com.caelum.tubaina.chunk.TableColumnChunk; import br.com.caelum.tubaina.chunk.TableRowChunk; +import br.com.caelum.tubaina.chunk.TodoChunk; import br.com.caelum.tubaina.parser.Indentator; import br.com.caelum.tubaina.parser.IntroductionTag; import br.com.caelum.tubaina.parser.NullAnswerTag; @@ -61,6 +62,7 @@ protected void configure() { bind(new TypeLiteral>() {}).to(TableColumnTag.class); bind(new TypeLiteral>() {}).to(TableRowTag.class); bind(new TypeLiteral>() {}).to(TableTag.class); + bind(new TypeLiteral>() {}).to(TodoTag.class); bind(Indentator.class).to(SimpleIndentator.class); bind(CommandExecutor.class).to(SimpleCommandExecutor.class); diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/TodoTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/TodoTagTest.java new file mode 100644 index 0000000..728820d --- /dev/null +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/TodoTagTest.java @@ -0,0 +1,16 @@ +package br.com.caelum.tubaina.parser.html.desktop; + +import org.junit.Assert; +import org.junit.Test; + +import br.com.caelum.tubaina.chunk.TodoChunk; + +public class TodoTagTest extends AbstractTagTest { + + @Test + public void todoContentIsEmpty() throws Exception { + TodoChunk chunk = new TodoChunk("Something I have to do later"); + String content = getContent(chunk); + Assert.assertTrue(content.isEmpty()); + } +} diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/kindle/TodoTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/TodoTagTest.java new file mode 100644 index 0000000..45f7e79 --- /dev/null +++ b/src/test/java/br/com/caelum/tubaina/parser/html/kindle/TodoTagTest.java @@ -0,0 +1,16 @@ +package br.com.caelum.tubaina.parser.html.kindle; + +import org.junit.Assert; +import org.junit.Test; + +import br.com.caelum.tubaina.chunk.TodoChunk; + +public class TodoTagTest extends AbstractTagTest { + + @Test + public void todoContentIsEmpty() throws Exception { + TodoChunk chunk = new TodoChunk("Something I have to do later"); + String content = getContent(chunk); + Assert.assertTrue(content.isEmpty()); + } +} diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/TodoTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/TodoTagTest.java new file mode 100644 index 0000000..97c0272 --- /dev/null +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/TodoTagTest.java @@ -0,0 +1,16 @@ +package br.com.caelum.tubaina.parser.latex; + +import org.junit.Assert; +import org.junit.Test; + +import br.com.caelum.tubaina.chunk.TodoChunk; + +public class TodoTagTest extends AbstractTagTest { + + @Test + public void todoContentIsEmpty() throws Exception { + TodoChunk chunk = new TodoChunk("Something I have to do later"); + String content = getContent(chunk); + Assert.assertTrue(content.isEmpty()); + } +} From 1fd359cb6099d139147131d932495cc5bb660b19 Mon Sep 17 00:00:00 2001 From: Cecilia Fernandes Date: Wed, 24 Apr 2013 15:38:37 -0300 Subject: [PATCH 15/17] minors --- src/main/java/br/com/caelum/tubaina/builder/BookBuilder.java | 2 -- .../java/br/com/caelum/tubaina/builder/BookBuilderTest.java | 1 - 2 files changed, 3 deletions(-) diff --git a/src/main/java/br/com/caelum/tubaina/builder/BookBuilder.java b/src/main/java/br/com/caelum/tubaina/builder/BookBuilder.java index 7fcff90..46a855b 100644 --- a/src/main/java/br/com/caelum/tubaina/builder/BookBuilder.java +++ b/src/main/java/br/com/caelum/tubaina/builder/BookBuilder.java @@ -125,6 +125,4 @@ private String extractIntroduction(String content) { return introduction; } - - } diff --git a/src/test/java/br/com/caelum/tubaina/builder/BookBuilderTest.java b/src/test/java/br/com/caelum/tubaina/builder/BookBuilderTest.java index 174d59a..624e4e5 100644 --- a/src/test/java/br/com/caelum/tubaina/builder/BookBuilderTest.java +++ b/src/test/java/br/com/caelum/tubaina/builder/BookBuilderTest.java @@ -21,7 +21,6 @@ import br.com.caelum.tubaina.chunk.CodeChunk; import br.com.caelum.tubaina.chunk.GistChunk; import br.com.caelum.tubaina.chunk.ImageChunk; -import br.com.caelum.tubaina.chunk.JavaChunk; import br.com.caelum.tubaina.chunk.ListChunk; import br.com.caelum.tubaina.chunk.ParagraphChunk; import br.com.caelum.tubaina.chunk.TableChunk; From 981ca9429d01c8196b3001708657f5ec791229e5 Mon Sep 17 00:00:00 2001 From: Cecilia Fernandes Date: Wed, 24 Apr 2013 16:41:08 -0300 Subject: [PATCH 16/17] Caling RegexTag from the right places (not only tests) --- .../br/com/caelum/tubaina/AbstractChunk.java | 4 +- .../java/br/com/caelum/tubaina/ParseType.java | 51 ++++++++++++------- .../tubaina/bibliography/Bibliography.java | 1 - .../bibliography/BibliographyFactory.java | 1 - .../parser/html/HtmlAndKindleCodeTag.java | 4 +- .../parser/html/ParagraphTagTemplate.java | 7 ++- .../tubaina/parser/html/desktop/BoxTag.java | 11 ++-- .../parser/html/desktop/HtmlModule.java | 3 ++ .../tubaina/parser/html/desktop/IndexTag.java | 4 +- .../parser/html/desktop/ParagraphTag.java | 9 ++-- .../html/desktop/SyntaxHighlighter.java | 4 +- .../tubaina/parser/html/desktop/TableTag.java | 4 +- .../tubaina/parser/html/kindle/AnswerTag.java | 1 - .../tubaina/parser/html/kindle/BoxTag.java | 11 ++-- .../tubaina/parser/html/kindle/IndexTag.java | 4 +- .../parser/html/kindle/KindleModule.java | 3 ++ .../parser/html/kindle/ParagraphTag.java | 9 ++-- .../tubaina/parser/html/kindle/TableTag.java | 4 +- .../caelum/tubaina/parser/latex/BoxTag.java | 14 ++++- .../caelum/tubaina/parser/latex/CodeTag.java | 4 +- .../caelum/tubaina/parser/latex/JavaTag.java | 4 +- .../tubaina/parser/latex/LatexModule.java | 3 ++ .../tubaina/parser/latex/ParagraphTag.java | 12 ++++- .../tubaina/parser/pygments/CodeCache.java | 2 - .../gists/JsonToGistResultConverterTest.java | 2 +- .../BibliographyReferenceReplacerTest.java | 2 - .../CodeReferenceReplacerTest.java | 2 - .../ImageReferenceReplacerTest.java | 2 - .../ReferenceParserTest.java | 4 -- .../tubaina/parser/latex/BoxTagTest.java | 2 +- 30 files changed, 114 insertions(+), 74 deletions(-) diff --git a/src/main/java/br/com/caelum/tubaina/AbstractChunk.java b/src/main/java/br/com/caelum/tubaina/AbstractChunk.java index f925975..e375316 100644 --- a/src/main/java/br/com/caelum/tubaina/AbstractChunk.java +++ b/src/main/java/br/com/caelum/tubaina/AbstractChunk.java @@ -1,9 +1,9 @@ package br.com.caelum.tubaina; -import com.google.inject.Inject; - import br.com.caelum.tubaina.parser.Tag; +import com.google.inject.Inject; + public abstract class AbstractChunk > implements Chunk{ @Inject diff --git a/src/main/java/br/com/caelum/tubaina/ParseType.java b/src/main/java/br/com/caelum/tubaina/ParseType.java index 49b8a5e..badf000 100644 --- a/src/main/java/br/com/caelum/tubaina/ParseType.java +++ b/src/main/java/br/com/caelum/tubaina/ParseType.java @@ -23,9 +23,13 @@ public enum ParseType { LATEX { @Override - public Parser getParser() throws IOException { - List tags = new RegexConfigurator().read("/regex.properties", "/latex.properties"); - return new LatexParser(tags); + public Parser getParser() { + try { + List tags = new RegexConfigurator().read("/regex.properties", "/latex.properties"); + return new LatexParser(tags); + } catch (IOException e) { + throw new RuntimeException("Couldn't find either regex or latex.properties", e); + } } @Override @@ -42,13 +46,17 @@ public TubainaModule getModule(TubainaBuilderData data) { HTMLFLAT { @Override - public Parser getParser() throws IOException { - List tags = new RegexConfigurator().read("/regex.properties", "/html.properties"); - return new HtmlParser(tags); + public Parser getParser() { + try { + List tags = new RegexConfigurator().read("/regex.properties", "/html.properties"); + return new HtmlParser(tags); + } catch (IOException e) { + throw new RuntimeException("Couldn't find either regex or html.properties", e); + } } @Override - protected Generator getGenerator(Parser parser, TubainaBuilderData data) { + public Generator getGenerator(Parser parser, TubainaBuilderData data) { return new FlatHtmlGenerator(parser, data); } @@ -59,13 +67,17 @@ public TubainaModule getModule(TubainaBuilderData data) { }, HTML { @Override - public Parser getParser() throws IOException { - List tags = new RegexConfigurator().read("/regex.properties", "/html.properties"); - return new HtmlParser(tags); + public Parser getParser() { + try { + List tags = new RegexConfigurator().read("/regex.properties", "/html.properties"); + return new HtmlParser(tags); + } catch (IOException e) { + throw new RuntimeException("Couldn't find either regex or html.properties", e); + } } @Override - protected Generator getGenerator(Parser parser, TubainaBuilderData data) { + public Generator getGenerator(Parser parser, TubainaBuilderData data) { return new SingleHtmlGenerator(parser, data); } @@ -74,16 +86,19 @@ public TubainaModule getModule(TubainaBuilderData data) { return new HtmlModule(data.isShowNotes(), data.isNoAnswer()); } }, - KINDLE { @Override - public Parser getParser() throws IOException { - List tags = new RegexConfigurator().read("/regex.properties", "/kindle.properties"); - return new KindleParser(tags); + public Parser getParser() { + try { + List tags = new RegexConfigurator().read("/regex.properties", "/kindle.properties"); + return new KindleParser(tags); + } catch (IOException e) { + throw new RuntimeException("Couldn't find either regex or kindle.properties", e); + } } @Override - protected Generator getGenerator(Parser parser, TubainaBuilderData data) { + public Generator getGenerator(Parser parser, TubainaBuilderData data) { return new KindleGenerator(parser, data); } @@ -97,9 +112,9 @@ public String getType() { return this.toString().toLowerCase(); } - protected abstract Generator getGenerator(Parser parser, TubainaBuilderData data); + public abstract Generator getGenerator(Parser parser, TubainaBuilderData data); - protected abstract Parser getParser() throws IOException; + public abstract Parser getParser(); public abstract TubainaModule getModule(TubainaBuilderData data); diff --git a/src/main/java/br/com/caelum/tubaina/bibliography/Bibliography.java b/src/main/java/br/com/caelum/tubaina/bibliography/Bibliography.java index b7815ff..6050a02 100644 --- a/src/main/java/br/com/caelum/tubaina/bibliography/Bibliography.java +++ b/src/main/java/br/com/caelum/tubaina/bibliography/Bibliography.java @@ -3,7 +3,6 @@ import java.util.ArrayList; import java.util.List; - import com.thoughtworks.xstream.annotations.XStreamAlias; @XStreamAlias("bibliography") diff --git a/src/main/java/br/com/caelum/tubaina/bibliography/BibliographyFactory.java b/src/main/java/br/com/caelum/tubaina/bibliography/BibliographyFactory.java index 4ef568c..e310220 100644 --- a/src/main/java/br/com/caelum/tubaina/bibliography/BibliographyFactory.java +++ b/src/main/java/br/com/caelum/tubaina/bibliography/BibliographyFactory.java @@ -2,7 +2,6 @@ import java.io.File; - import com.thoughtworks.xstream.XStream; public class BibliographyFactory { diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/HtmlAndKindleCodeTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/HtmlAndKindleCodeTag.java index 3da40e6..ab1e1c8 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/HtmlAndKindleCodeTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/HtmlAndKindleCodeTag.java @@ -2,13 +2,13 @@ import java.util.List; -import com.google.inject.Inject; - import br.com.caelum.tubaina.chunk.CodeChunk; import br.com.caelum.tubaina.parser.SimpleIndentator; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.desktop.SyntaxHighlighter; +import com.google.inject.Inject; + public class HtmlAndKindleCodeTag implements Tag { public static final String BEGIN_START = "
     {
     
     	private final Sanitizer sanitizer;
    +	private final Parser parser;
     
    -	public ParagraphTagTemplate(Sanitizer sanitizer) {
    +	public ParagraphTagTemplate(Sanitizer sanitizer, Parser parser) {
     		this.sanitizer = sanitizer;
    +		this.parser = parser;
     	}
     
     	@Override
     	public String parse(ParagraphChunk chunk) {
    -		String content = sanitizer.sanitize(chunk.getContent());
    +		String content = parser.parse(sanitizer.sanitize(chunk.getContent()));
     		if (chunk.isInsideItem())
     			return content;
     		return "

    " + content + "

    "; diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/BoxTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/BoxTag.java index bec9d1e..424a60b 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/BoxTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/BoxTag.java @@ -1,24 +1,27 @@ package br.com.caelum.tubaina.parser.html.desktop; -import com.google.inject.Inject; - import br.com.caelum.tubaina.chunk.BoxChunk; +import br.com.caelum.tubaina.parser.Parser; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.util.Sanitizer; +import com.google.inject.Inject; + public class BoxTag implements Tag { private final Sanitizer sanitizer; + private final Parser parser; @Inject - public BoxTag(Sanitizer sanitizer) { + public BoxTag(Sanitizer sanitizer, Parser parser) { this.sanitizer = sanitizer; + this.parser = parser; } @Override public String parse(BoxChunk chunk) { String title = sanitizer.sanitize(chunk.getTitle().trim()); - return "

    " + title + return "

    " + parser.parse(title) + "

    \n" + chunk.getContent().trim() + "
    "; } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/HtmlModule.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/HtmlModule.java index 166bce0..e4631c0 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/HtmlModule.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/HtmlModule.java @@ -1,5 +1,6 @@ package br.com.caelum.tubaina.parser.html.desktop; +import br.com.caelum.tubaina.ParseType; import br.com.caelum.tubaina.chunk.AnswerChunk; import br.com.caelum.tubaina.chunk.BoxChunk; import br.com.caelum.tubaina.chunk.CenteredParagraphChunk; @@ -19,6 +20,7 @@ import br.com.caelum.tubaina.parser.IntroductionTag; import br.com.caelum.tubaina.parser.NullAnswerTag; import br.com.caelum.tubaina.parser.NullNoteTag; +import br.com.caelum.tubaina.parser.Parser; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.TubainaModule; import br.com.caelum.tubaina.util.HtmlSanitizer; @@ -59,6 +61,7 @@ protected void configure() { bind(new TypeLiteral>() {}).to(TableTag.class); bind(new TypeLiteral>() {}).to(TodoTag.class); + bind(Parser.class).toInstance(ParseType.HTML.getParser()); bind(Sanitizer.class).to(HtmlSanitizer.class); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/IndexTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/IndexTag.java index de817c9..e097ca4 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/IndexTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/IndexTag.java @@ -1,12 +1,12 @@ package br.com.caelum.tubaina.parser.html.desktop; -import com.google.inject.Inject; - import br.com.caelum.tubaina.chunk.IndexChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.IndexTagTemplate; import br.com.caelum.tubaina.util.Sanitizer; +import com.google.inject.Inject; + public class IndexTag implements Tag { private IndexTagTemplate template; diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ParagraphTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ParagraphTag.java index 08235eb..fad9f23 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ParagraphTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/ParagraphTag.java @@ -1,19 +1,20 @@ package br.com.caelum.tubaina.parser.html.desktop; -import com.google.inject.Inject; - import br.com.caelum.tubaina.chunk.ParagraphChunk; +import br.com.caelum.tubaina.parser.Parser; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.ParagraphTagTemplate; import br.com.caelum.tubaina.util.Sanitizer; +import com.google.inject.Inject; + public class ParagraphTag implements Tag { private final ParagraphTagTemplate template; @Inject - public ParagraphTag(Sanitizer sanitizer) { - this.template = new ParagraphTagTemplate(sanitizer); + public ParagraphTag(Sanitizer sanitizer, Parser parser) { + this.template = new ParagraphTagTemplate(sanitizer, parser); } @Override diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/SyntaxHighlighter.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/SyntaxHighlighter.java index f09ef50..b0ca7f1 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/SyntaxHighlighter.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/SyntaxHighlighter.java @@ -4,12 +4,12 @@ import java.util.Collections; import java.util.List; -import com.google.inject.Inject; - import br.com.caelum.tubaina.parser.pygments.CodeCache; import br.com.caelum.tubaina.parser.pygments.CodeOutputType; import br.com.caelum.tubaina.util.CommandExecutor; +import com.google.inject.Inject; + public class SyntaxHighlighter { private final CommandExecutor commandExecutor; diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableTag.java index eff0eb5..e843150 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/TableTag.java @@ -1,12 +1,12 @@ package br.com.caelum.tubaina.parser.html.desktop; -import com.google.inject.Inject; - import br.com.caelum.tubaina.chunk.TableChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.TableTagTemplate; import br.com.caelum.tubaina.util.Sanitizer; +import com.google.inject.Inject; + public class TableTag implements Tag { private TableTagTemplate template; diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/AnswerTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/AnswerTag.java index eb73bb5..7b293d6 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/AnswerTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/AnswerTag.java @@ -1,6 +1,5 @@ package br.com.caelum.tubaina.parser.html.kindle; -import br.com.caelum.tubaina.Chunk; import br.com.caelum.tubaina.chunk.AnswerChunk; import br.com.caelum.tubaina.parser.Tag; diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/BoxTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/BoxTag.java index 47be6c5..c006ee8 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/BoxTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/BoxTag.java @@ -1,11 +1,12 @@ package br.com.caelum.tubaina.parser.html.kindle; -import com.google.inject.Inject; - import br.com.caelum.tubaina.chunk.BoxChunk; +import br.com.caelum.tubaina.parser.Parser; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.util.Sanitizer; +import com.google.inject.Inject; + public class BoxTag implements Tag { static final String BEGIN = "" + @@ -14,15 +15,17 @@ public class BoxTag implements Tag { static final String TITLE_BEGIN = ""; static final String TITLE_END = "\n"; private final Sanitizer sanitizer; + private final Parser parser; @Inject - public BoxTag(Sanitizer sanitizer) { + public BoxTag(Sanitizer sanitizer, Parser parser) { this.sanitizer = sanitizer; + this.parser = parser; } @Override public String parse(BoxChunk chunk) { - String title = sanitizer.sanitize(chunk.getTitle().trim()); + String title = parser.parse(sanitizer.sanitize(chunk.getTitle().trim())); return BEGIN + TITLE_BEGIN + title + TITLE_END + chunk.getContent().trim() + END; } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/IndexTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/IndexTag.java index 6890a81..bbc5df5 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/IndexTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/IndexTag.java @@ -1,12 +1,12 @@ package br.com.caelum.tubaina.parser.html.kindle; -import com.google.inject.Inject; - import br.com.caelum.tubaina.chunk.IndexChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.IndexTagTemplate; import br.com.caelum.tubaina.util.Sanitizer; +import com.google.inject.Inject; + public class IndexTag implements Tag { private final IndexTagTemplate template; diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleModule.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleModule.java index f9c332a..4155fd6 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleModule.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/KindleModule.java @@ -1,5 +1,6 @@ package br.com.caelum.tubaina.parser.html.kindle; +import br.com.caelum.tubaina.ParseType; import br.com.caelum.tubaina.chunk.AnswerChunk; import br.com.caelum.tubaina.chunk.BoxChunk; import br.com.caelum.tubaina.chunk.CenteredParagraphChunk; @@ -19,6 +20,7 @@ import br.com.caelum.tubaina.parser.IntroductionTag; import br.com.caelum.tubaina.parser.NullAnswerTag; import br.com.caelum.tubaina.parser.NullNoteTag; +import br.com.caelum.tubaina.parser.Parser; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.TubainaModule; import br.com.caelum.tubaina.parser.pygments.CodeCache; @@ -61,6 +63,7 @@ protected void configure() { bind(new TypeLiteral>() {}).to(TableTag.class); bind(new TypeLiteral>() {}).to(TodoTag.class); + bind(Parser.class).toInstance(ParseType.KINDLE.getParser()); bind(Sanitizer.class).to(HtmlSanitizer.class); bind(CommandExecutor.class).to(SimpleCommandExecutor.class); bind(CodeOutputType.class).toInstance(CodeOutputType.KINDLE_HTML); diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ParagraphTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ParagraphTag.java index e17334d..2713da7 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ParagraphTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/ParagraphTag.java @@ -1,19 +1,20 @@ package br.com.caelum.tubaina.parser.html.kindle; -import com.google.inject.Inject; - import br.com.caelum.tubaina.chunk.ParagraphChunk; +import br.com.caelum.tubaina.parser.Parser; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.ParagraphTagTemplate; import br.com.caelum.tubaina.util.Sanitizer; +import com.google.inject.Inject; + public class ParagraphTag implements Tag { private ParagraphTagTemplate template; @Inject - public ParagraphTag(Sanitizer sanitizer) { - this.template = new ParagraphTagTemplate(sanitizer); + public ParagraphTag(Sanitizer sanitizer, Parser parser) { + this.template = new ParagraphTagTemplate(sanitizer, parser); } @Override diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableTag.java index 9adad7c..a8a7335 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/kindle/TableTag.java @@ -1,12 +1,12 @@ package br.com.caelum.tubaina.parser.html.kindle; -import com.google.inject.Inject; - import br.com.caelum.tubaina.chunk.TableChunk; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.TableTagTemplate; import br.com.caelum.tubaina.util.Sanitizer; +import com.google.inject.Inject; + public class TableTag implements Tag { private TableTagTemplate template; diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/BoxTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/BoxTag.java index 8c95df5..5f86a07 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/BoxTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/BoxTag.java @@ -1,14 +1,24 @@ package br.com.caelum.tubaina.parser.latex; import br.com.caelum.tubaina.chunk.BoxChunk; +import br.com.caelum.tubaina.parser.Parser; import br.com.caelum.tubaina.parser.Tag; +import com.google.inject.Inject; + public class BoxTag implements Tag { + private final Parser parser; + + @Inject + public BoxTag(Parser parser) { + this.parser = parser; + } + @Override public String parse(BoxChunk chunk) { String title = chunk.getTitle(); - String sanitizedTitle = (title != null && !title.isEmpty()) ? title.trim() : "\\ "; - return "\\begin{tubainabox}{" + sanitizedTitle + "}\n" + chunk.getContent() + "\n\\end{tubainabox}"; + String sanitizedTitle = title.isEmpty() ? "" : "{" + parser.parse(title) + "}"; + return "\\begin{tubainabox}" + sanitizedTitle + "\n" + chunk.getContent() + "\n\\end{tubainabox}"; } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/CodeTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/CodeTag.java index aa31afa..a5f3b2e 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/CodeTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/CodeTag.java @@ -1,13 +1,13 @@ package br.com.caelum.tubaina.parser.latex; -import com.google.inject.Inject; - import br.com.caelum.tubaina.chunk.CodeChunk; import br.com.caelum.tubaina.parser.Indentator; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.html.CodeTagOptionsParser; import br.com.caelum.tubaina.parser.html.desktop.SyntaxHighlighter; +import com.google.inject.Inject; + public class CodeTag implements Tag { private final Indentator indentator; diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/JavaTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/JavaTag.java index b3560b4..5df0d99 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/JavaTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/JavaTag.java @@ -1,12 +1,12 @@ package br.com.caelum.tubaina.parser.latex; -import com.google.inject.Inject; - import br.com.caelum.tubaina.TubainaException; import br.com.caelum.tubaina.chunk.JavaChunk; import br.com.caelum.tubaina.parser.Indentator; import br.com.caelum.tubaina.parser.Tag; +import com.google.inject.Inject; + @Deprecated public class JavaTag implements Tag { diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/LatexModule.java b/src/main/java/br/com/caelum/tubaina/parser/latex/LatexModule.java index 31aeeb1..5a3f2d4 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/LatexModule.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/LatexModule.java @@ -1,5 +1,6 @@ package br.com.caelum.tubaina.parser.latex; +import br.com.caelum.tubaina.ParseType; import br.com.caelum.tubaina.chunk.AnswerChunk; import br.com.caelum.tubaina.chunk.BoxChunk; import br.com.caelum.tubaina.chunk.CenteredParagraphChunk; @@ -21,6 +22,7 @@ import br.com.caelum.tubaina.parser.IntroductionTag; import br.com.caelum.tubaina.parser.NullAnswerTag; import br.com.caelum.tubaina.parser.NullNoteTag; +import br.com.caelum.tubaina.parser.Parser; import br.com.caelum.tubaina.parser.SimpleIndentator; import br.com.caelum.tubaina.parser.Tag; import br.com.caelum.tubaina.parser.TubainaModule; @@ -64,6 +66,7 @@ protected void configure() { bind(new TypeLiteral>() {}).to(TableTag.class); bind(new TypeLiteral>() {}).to(TodoTag.class); + bind(Parser.class).toInstance(ParseType.LATEX.getParser()); bind(Indentator.class).to(SimpleIndentator.class); bind(CommandExecutor.class).to(SimpleCommandExecutor.class); bind(CodeOutputType.class).toInstance(CodeOutputType.LATEX); diff --git a/src/main/java/br/com/caelum/tubaina/parser/latex/ParagraphTag.java b/src/main/java/br/com/caelum/tubaina/parser/latex/ParagraphTag.java index 2fa0aec..8f61275 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/latex/ParagraphTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/latex/ParagraphTag.java @@ -1,13 +1,23 @@ package br.com.caelum.tubaina.parser.latex; import br.com.caelum.tubaina.chunk.ParagraphChunk; +import br.com.caelum.tubaina.parser.Parser; import br.com.caelum.tubaina.parser.Tag; +import com.google.inject.Inject; + public class ParagraphTag implements Tag { + private final Parser parser; + + @Inject + public ParagraphTag(Parser parser) { + this.parser = parser; + } + @Override public String parse(ParagraphChunk chunk) { - return "\n\n" + chunk.getContent(); + return "\n\n" + parser.parse(chunk.getContent()); } } diff --git a/src/main/java/br/com/caelum/tubaina/parser/pygments/CodeCache.java b/src/main/java/br/com/caelum/tubaina/parser/pygments/CodeCache.java index e0ecf2f..9203730 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/pygments/CodeCache.java +++ b/src/main/java/br/com/caelum/tubaina/parser/pygments/CodeCache.java @@ -12,8 +12,6 @@ import com.google.inject.Inject; -import br.com.caelum.tubaina.parser.pygments.CodeOutputType; - public class CodeCache { private CodeOutputType output; diff --git a/src/test/java/br/com/caelum/tubaina/gists/JsonToGistResultConverterTest.java b/src/test/java/br/com/caelum/tubaina/gists/JsonToGistResultConverterTest.java index 404ade6..e47fdc9 100644 --- a/src/test/java/br/com/caelum/tubaina/gists/JsonToGistResultConverterTest.java +++ b/src/test/java/br/com/caelum/tubaina/gists/JsonToGistResultConverterTest.java @@ -1,6 +1,6 @@ package br.com.caelum.tubaina.gists; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; import java.util.Scanner; diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/referencereplacer/BibliographyReferenceReplacerTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/referencereplacer/BibliographyReferenceReplacerTest.java index a48e0e7..679acf8 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/referencereplacer/BibliographyReferenceReplacerTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/referencereplacer/BibliographyReferenceReplacerTest.java @@ -8,8 +8,6 @@ import org.junit.Test; -import br.com.caelum.tubaina.parser.html.referencereplacer.BibliographyReferenceReplacer; - public class BibliographyReferenceReplacerTest { @Test diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/referencereplacer/CodeReferenceReplacerTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/referencereplacer/CodeReferenceReplacerTest.java index e222ee3..ef9d887 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/referencereplacer/CodeReferenceReplacerTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/referencereplacer/CodeReferenceReplacerTest.java @@ -8,8 +8,6 @@ import org.junit.Test; -import br.com.caelum.tubaina.parser.html.referencereplacer.CodeReferenceReplacer; - public class CodeReferenceReplacerTest { @Test diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/referencereplacer/ImageReferenceReplacerTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/referencereplacer/ImageReferenceReplacerTest.java index f1f844b..154c70a 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/referencereplacer/ImageReferenceReplacerTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/referencereplacer/ImageReferenceReplacerTest.java @@ -8,8 +8,6 @@ import org.junit.Test; -import br.com.caelum.tubaina.parser.html.referencereplacer.ImageReferenceReplacer; - public class ImageReferenceReplacerTest { @Test diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/referencereplacer/ReferenceParserTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/referencereplacer/ReferenceParserTest.java index b4b31b0..22bd11c 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/referencereplacer/ReferenceParserTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/referencereplacer/ReferenceParserTest.java @@ -8,10 +8,6 @@ import org.junit.Test; -import br.com.caelum.tubaina.parser.html.referencereplacer.ChapterAndSectionReferenceReplacer; -import br.com.caelum.tubaina.parser.html.referencereplacer.CodeReferenceReplacer; -import br.com.caelum.tubaina.parser.html.referencereplacer.ImageReferenceReplacer; - public class ReferenceParserTest { @Test diff --git a/src/test/java/br/com/caelum/tubaina/parser/latex/BoxTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/latex/BoxTagTest.java index a0c3fa4..d576ccc 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/latex/BoxTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/latex/BoxTagTest.java @@ -23,7 +23,7 @@ public void testBoxWithMultilineContent() { @Test public void testChangeTitleToEmptyStringIfItsNull(){ String result = getContent(new BoxChunk(null, text("Text"))); - Assert.assertEquals("\\begin{tubainabox}{\\ }\nText\n\\end{tubainabox}", result); + Assert.assertEquals("\\begin{tubainabox}\nText\n\\end{tubainabox}", result); } } From 19aeb58f529960f1bfc7932c0237ad2d3e2ecbe6 Mon Sep 17 00:00:00 2001 From: Cecilia Fernandes Date: Wed, 24 Apr 2013 19:00:29 -0300 Subject: [PATCH 17/17] Differentiating numbered code from unnumbered on code cache --- .../tubaina/parser/html/desktop/CodeTag.java | 2 +- .../html/desktop/SyntaxHighlighter.java | 7 +-- .../parser/html/desktop/CodeTagTest.java | 47 ++++++++++++------- 3 files changed, 35 insertions(+), 21 deletions(-) diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/CodeTag.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/CodeTag.java index 502d965..cf91d85 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/CodeTag.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/CodeTag.java @@ -13,7 +13,7 @@ public class CodeTag implements Tag { public CodeTag() { SyntaxHighlighter syntaxHighlighter = new SyntaxHighlighter(new SimpleCommandExecutor(), - CodeOutputType.KINDLE_HTML, new CodeCache(CodeOutputType.HTML)); + CodeOutputType.HTML, new CodeCache(CodeOutputType.HTML)); htmlCodeTag = new HtmlAndKindleCodeTag(syntaxHighlighter); } diff --git a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/SyntaxHighlighter.java b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/SyntaxHighlighter.java index b0ca7f1..a3a53f5 100644 --- a/src/main/java/br/com/caelum/tubaina/parser/html/desktop/SyntaxHighlighter.java +++ b/src/main/java/br/com/caelum/tubaina/parser/html/desktop/SyntaxHighlighter.java @@ -28,13 +28,14 @@ public SyntaxHighlighter(CommandExecutor commandExecutor, CodeOutputType outputT } public String highlight(String code, String language, boolean numbered, List lines) { - if (codeCache.exists(code)) { - return codeCache.find(code); + String codeAndOptions = code + numbered; + if (codeCache.exists(codeAndOptions)) { + return codeCache.find(codeAndOptions); } ArrayList commandWithArgs = buildCommand(language, numbered, lines); String codeHighlighted = commandExecutor.execute(commandWithArgs, code); - codeCache.write(code, codeHighlighted); + codeCache.write(codeAndOptions, codeHighlighted); return codeHighlighted; } diff --git a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/CodeTagTest.java b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/CodeTagTest.java index 608bd31..bd76c3a 100644 --- a/src/test/java/br/com/caelum/tubaina/parser/html/desktop/CodeTagTest.java +++ b/src/test/java/br/com/caelum/tubaina/parser/html/desktop/CodeTagTest.java @@ -7,24 +7,37 @@ public class CodeTagTest extends AbstractTagTest { - @Test - public void shouldCallHtmlCodeTag() { - String code = "public static void main(String[] args) {\n" + - " String name = \"Gabriel\";\n" + - " System.out.println(\"Hello, \" + name);\n" + - "}"; - CodeChunk chunk = new CodeChunk(code, ""); + @Test + public void notNumberedGenericCode() { + String code = "public static void main(String[] args) {\n" + " String name = \"Gabriel\";\n" + + " System.out.println(\"Hello, \" + name);\n" + "}"; + CodeChunk chunk = new CodeChunk(code, ""); String result = getContent(chunk); - Assert.assertEquals("
    " + - "
    1 " +
    -								"public static void main(String[] args) {" +
    -								"\n2 " +
    -								"    String name = "Gabriel";" +
    -								"\n3 " +
    -								"    System.out.println("Hello, " + name);" +
    -								"\n4" +
    -								" }" +
    -								"\n
    " + + Assert.assertEquals("
    " + + "
    public static void main(String[] args) {" + 
    +							"\n    String name = "Gabriel";" + 
    +							"\n    System.out.println("Hello, " + name);" + 
    +							"\n}" + 
    +							"\n
    " + + "
    ", result); + } + + @Test + public void numberedGenericCode() { + String code = "public static void main(String[] args) {\n" + " String name = \"Gabriel\";\n" + + " System.out.println(\"Hello, \" + name);\n" + "}"; + CodeChunk chunk = new CodeChunk(code, "#"); + String result = getContent(chunk); + Assert.assertEquals("
    " + + "
    1 " + 
    +							"public static void main(String[] args) {" + 
    +							"\n2 " + 
    +							"    String name = "Gabriel";" + 
    +							"\n3 " + 
    +							"    System.out.println("Hello, " + name);" + 
    +							"\n4" + 
    +							" }" + 
    +							"\n
    " + "
    ", result); } }