diff --git a/src/Microdown-Macrodown/MacConstants.class.st b/src/Microdown-Macrodown/MacConstants.class.st
deleted file mode 100644
index 601ee713..00000000
--- a/src/Microdown-Macrodown/MacConstants.class.st
+++ /dev/null
@@ -1,18 +0,0 @@
-"
-Constants to be used on the extended parser.
-"
-Class {
- #name : 'MacConstants',
- #superclass : 'SharedPool',
- #classVars : [
- 'InlineParagraphDelimiter'
- ],
- #category : 'Microdown-Macrodown',
- #package : 'Microdown-Macrodown'
-}
-
-{ #category : 'initialization' }
-MacConstants class >> initialize [
-
- InlineParagraphDelimiter := ' '
-]
diff --git a/src/Microdown-Macrodown/MacInlineParser.class.st b/src/Microdown-Macrodown/MacInlineParser.class.st
deleted file mode 100644
index 2ea214ff..00000000
--- a/src/Microdown-Macrodown/MacInlineParser.class.st
+++ /dev/null
@@ -1,55 +0,0 @@
-"
-Inline parser to detect and parse extended parse functionality.
-
-- line break with two (or more) spaces.
-"
-Class {
- #name : 'MacInlineParser',
- #superclass : 'MicInlineParser',
- #pools : [
- 'MacConstants'
- ],
- #category : 'Microdown-Macrodown',
- #package : 'Microdown-Macrodown'
-}
-
-{ #category : 'adding' }
-MacInlineParser >> addLineBreakInlineBlock: indexOfAssociateOpener [
- | startIndex endIndex |
-
- startIndex := opener index + opener size.
- endIndex := string indexOf: Character cr startingAt: startIndex.
- (endIndex = 0
- or: [ (endIndex - startIndex) = 0 ])
- ifTrue: [ ^ self ].
-
- self
- addInlineBlock: indexOfAssociateOpener
- from: startIndex
- to: endIndex
-]
-
-{ #category : 'private' }
-MacInlineParser >> extentedDelimiters [
-
- ^ { MacLineBreakDelimiter }
-]
-
-{ #category : 'actions' }
-MacInlineParser >> identifyMarkupFor: aString [
-
- ^ self extentedDelimiters
- detect: [ :each | each matches: aString ]
- ifFound: [ :aDelimiterClass |
- delimiterClass := aDelimiterClass.
- aDelimiterClass applyOn: self ]
- ifNone: [ super identifyMarkupFor: aString ]
-]
-
-{ #category : 'applying' }
-MacInlineParser >> processLineBreak [
-
- self delimiterFoundProcess.
- self addInlineBlock: (self findType: delimiterClass type).
- ^ result last text size
-]
diff --git a/src/Microdown-Macrodown/MacLineBreakDelimiter.class.st b/src/Microdown-Macrodown/MacLineBreakDelimiter.class.st
deleted file mode 100644
index 130e82b4..00000000
--- a/src/Microdown-Macrodown/MacLineBreakDelimiter.class.st
+++ /dev/null
@@ -1,76 +0,0 @@
-"
-Delimiter definition for line break.
-"
-Class {
- #name : 'MacLineBreakDelimiter',
- #superclass : 'MicAbstractDelimiter',
- #category : 'Microdown-Macrodown',
- #package : 'Microdown-Macrodown'
-}
-
-{ #category : 'applying' }
-MacLineBreakDelimiter class >> applyOn: inlineParser [
-
- ^ inlineParser processLineBreak
-]
-
-{ #category : 'accessing' }
-MacLineBreakDelimiter class >> associatedInlineBlock [
-
- ^ MacLineBreakBlock
-]
-
-{ #category : 'accessing' }
-MacLineBreakDelimiter class >> isCloser [
-
- ^ true
-]
-
-{ #category : 'accessing' }
-MacLineBreakDelimiter class >> isOpener [
-
- ^ true
-]
-
-{ #category : 'accessing' }
-MacLineBreakDelimiter class >> markup [
-
- ^ #lineBreak
-]
-
-{ #category : 'testing' }
-MacLineBreakDelimiter class >> matches: aString [
- | indexOfCr |
-
- (aString size >= 3) ifFalse: [ ^ false ].
-
- indexOfCr := (aString indexOf: Character cr) - 1.
- indexOfCr < 2 ifTrue: [ ^ false ].
-
- ^ (aString first: indexOfCr) allSatisfy: [ :each | each = Character space ]
-]
-
-{ #category : 'accessing' }
-MacLineBreakDelimiter class >> size [
-
- ^ 1
-]
-
-{ #category : 'accessing' }
-MacLineBreakDelimiter class >> type [
-
- ^ #lineBreak
-]
-
-{ #category : 'adding' }
-MacLineBreakDelimiter >> addInlineBlock: anIndex to: inlineParser [
-
- inlineParser addLineBreakInlineBlock: anIndex
-
-]
-
-{ #category : 'accessing' }
-MacLineBreakDelimiter >> endIndex [
-
- ^ self index + self size
-]
diff --git a/src/Microdown-Macrodown/MacRawParagraphBlock.class.st b/src/Microdown-Macrodown/MacRawParagraphBlock.class.st
deleted file mode 100644
index 7db25fa9..00000000
--- a/src/Microdown-Macrodown/MacRawParagraphBlock.class.st
+++ /dev/null
@@ -1,53 +0,0 @@
-"
-A raw paragraph block is a block that containes raw content (e.g. plain HTML)
-"
-Class {
- #name : 'MacRawParagraphBlock',
- #superclass : 'MicParagraphBlock',
- #category : 'Microdown-Macrodown',
- #package : 'Microdown-Macrodown'
-}
-
-{ #category : 'private' }
-MacRawParagraphBlock class >> htmlTags [
-
- ^ #('!--' 'a' 'abbr' 'address' 'area' 'article' 'aside' 'audio' 'b' 'base' 'bdi' 'bdo' 'blockquote' 'body' 'br' 'button' 'canvas' 'caption' 'cite' 'code' 'col' 'colgroup' 'data' 'datalist' 'dd' 'del' 'details' 'dfn' 'dialog' 'div' 'dl' 'dt' 'em' 'embed' 'fieldset' 'figcaption' 'figure' 'footer' 'form' 'h1' 'h2' 'h3' 'h4' 'h5' 'h6' 'head' 'header' 'hgroup' 'hr' 'html' 'i' 'iframe' 'img' 'input' 'ins' 'kbd' 'label' 'legend' 'li' 'link' 'main' 'map' 'mark' 'menu' 'meta' 'meter' 'nav' 'noscript' 'object' 'ol' 'optgroup' 'option' 'output' 'p' 'param' 'picture' 'pre' 'progress' 'q' 'rb' 'rp' 'rt' 'rtc' 'ruby' 's' 'samp' 'script' 'section' 'select' 'slot' 'small' 'source' 'span' 'strong' 'style' 'sub' 'summary' 'sup' 'table' 'tbody' 'td' 'template' 'textarea' 'tfoot' 'th' 'thead' 'time' 'title' 'tr' 'track' 'u' 'ul' 'var' 'video' 'wbr')
-]
-
-{ #category : 'testing' }
-MacRawParagraphBlock class >> matches: aString [
-
- ^ self matches: aString trimLeft withAnyOf: self htmlTags
-]
-
-{ #category : 'private' }
-MacRawParagraphBlock class >> matches: aString withAnyOf: htmlTags [
-
- aString ifEmpty: [ ^ false ].
- ^ (aString first = $<)
- and: [ htmlTags includes: (aString readStream upToAnyOf: '> ') allButFirst ]
-]
-
-{ #category : 'testing' }
-MacRawParagraphBlock class >> matchesComment: aString [
-
- ^ self
- matches: aString trimLeft
- withAnyOf: { self htmlTags first }
-]
-
-{ #category : 'visiting' }
-MacRawParagraphBlock >> accept: aVisitor [
-
- ^ aVisitor visitRawParagraph: self
-]
-
-{ #category : 'parse support' }
-MacRawParagraphBlock >> closeMe [
-
- self children: {
- MicRawBlock
- from: 1
- to: text size
- withSubstring: text }
-]
diff --git a/src/Microdown-Macrodown/MicAbstractDelimiter.extension.st b/src/Microdown-Macrodown/MicAbstractDelimiter.extension.st
deleted file mode 100644
index 7ab0d971..00000000
--- a/src/Microdown-Macrodown/MicAbstractDelimiter.extension.st
+++ /dev/null
@@ -1,13 +0,0 @@
-Extension { #name : 'MicAbstractDelimiter' }
-
-{ #category : '*Microdown-Macrodown' }
-MicAbstractDelimiter classSide >> applyOn: inlineParser [
-
- self subclassResponsibility
-]
-
-{ #category : '*Microdown-Macrodown' }
-MicAbstractDelimiter classSide >> matches: aString [
-
- ^ false
-]
diff --git a/src/Microdown-Macrodown/MicMicrodownObjectToPillarObjectConverter.extension.st b/src/Microdown-Macrodown/MicMicrodownObjectToPillarObjectConverter.extension.st
deleted file mode 100644
index ed19d8c0..00000000
--- a/src/Microdown-Macrodown/MicMicrodownObjectToPillarObjectConverter.extension.st
+++ /dev/null
@@ -1,13 +0,0 @@
-Extension { #name : 'MicMicrodownObjectToPillarObjectConverter' }
-
-{ #category : '*Microdown-Macrodown' }
-MicMicrodownObjectToPillarObjectConverter >> visitLineBreak: aBreak [
-
- ^ PRLineBreak new
-]
-
-{ #category : '*Microdown-Macrodown' }
-MicMicrodownObjectToPillarObjectConverter >> visitRawParagraph: aRawParagraph [
-
- ^ PRRaw content: aRawParagraph text
-]
diff --git a/src/Microdown-Macrodown/MicrodownVisitor.extension.st b/src/Microdown-Macrodown/MicrodownVisitor.extension.st
deleted file mode 100644
index e5dc523a..00000000
--- a/src/Microdown-Macrodown/MicrodownVisitor.extension.st
+++ /dev/null
@@ -1,12 +0,0 @@
-Extension { #name : 'MicrodownVisitor' }
-
-{ #category : '*Microdown-Macrodown' }
-MicrodownVisitor >> visitLineBreak: aBreak [
-
-]
-
-{ #category : '*Microdown-Macrodown' }
-MicrodownVisitor >> visitRawParagraph: aRawParagraph [
-
- ^ self visitChildrenOf: aRawParagraph
-]
diff --git a/src/Microdown-NewMacrodown/MacMicrodownSharedPool.class.st b/src/Microdown-NewMacrodown/MacMicrodownSharedPool.class.st
new file mode 100644
index 00000000..bb49d2f5
--- /dev/null
+++ b/src/Microdown-NewMacrodown/MacMicrodownSharedPool.class.st
@@ -0,0 +1,33 @@
+"
+I do not know how to integrate the new delimiter in a modular way because
+
+```
+MicInlineDelimiter class >> initializeDelimiters
+
+ self = MicInlineDelimiter ifFalse: [ ^ self ].
+ DelimiterDictionary := Dictionary new.
+ self allSubclasses do: [ :class | class initializeDelimiters ]
+```
+
+is basically doing is currently taking all the different subclasses.
+
+The solution would be to have an explicit registration so that we can say
+`MicInlineDelimiter useStandard` or `useExtendedSets`.
+
+This has to be done if there is an interest.
+"
+Class {
+ #name : 'MacMicrodownSharedPool',
+ #superclass : 'SharedPool',
+ #classVars : [
+ 'InlineParagraphDelimiter'
+ ],
+ #category : 'Microdown-NewMacrodown',
+ #package : 'Microdown-NewMacrodown'
+}
+
+{ #category : 'class initialization' }
+MacMicrodownSharedPool class >> initialize [
+
+ InlineParagraphDelimiter := ' '.
+]
diff --git a/src/Microdown-Macrodown/MacParagraphBlock.class.st b/src/Microdown-NewMacrodown/MacParagraphBlock.class.st
similarity index 80%
rename from src/Microdown-Macrodown/MacParagraphBlock.class.st
rename to src/Microdown-NewMacrodown/MacParagraphBlock.class.st
index 8431f9c7..daa11ac5 100644
--- a/src/Microdown-Macrodown/MacParagraphBlock.class.st
+++ b/src/Microdown-NewMacrodown/MacParagraphBlock.class.st
@@ -1,5 +1,8 @@
"
+This class is copied as it was from Macrodown package.
+
Paragraph extension to process the extended inlines.
+
"
Class {
#name : 'MacParagraphBlock',
@@ -8,10 +11,10 @@ Class {
'textWithoutBreak'
],
#pools : [
- 'MacConstants'
+ 'MacMicrodownSharedPool'
],
- #category : 'Microdown-Macrodown',
- #package : 'Microdown-Macrodown'
+ #category : 'Microdown-NewMacrodown',
+ #package : 'Microdown-NewMacrodown'
}
{ #category : 'parising' }
@@ -23,7 +26,7 @@ MacParagraphBlock >> addLineAndReturnNextNode: line [
(line endsWith: InlineParagraphDelimiter) ifFalse: [ ^ self ].
"add nodes up to now, then insert break and continue"
children addAll: (self inlineParse: textWithoutBreak).
- children add: (MacLineBreakBlock new).
+ children add: MicLineBreakBlock new.
textWithoutBreak := nil
]
diff --git a/src/Microdown-NewMacrodown/MacRawParagraphBlock.class.st b/src/Microdown-NewMacrodown/MacRawParagraphBlock.class.st
new file mode 100644
index 00000000..f1d44a7b
--- /dev/null
+++ b/src/Microdown-NewMacrodown/MacRawParagraphBlock.class.st
@@ -0,0 +1,44 @@
+"
+This class is copied as it was from Macrodown package.
+In particular I do not really get how the plain HTML is detected. It is a new top level block or an inline block?
+
+It looks like the MacrodownParser is doing the following:
+
+```
+blockStarterClassFrom: line
+
+ self flag: #HACK. ""This is a special case because it collides with environment""
+ (MacRawParagraphBlock matchesComment: line)
+ ifTrue: [ ^ self nonMatchedBlockClassFor: line ].
+
+ ^ super blockStarterClassFrom: line
+```
+
+It would have been nice to know it. I would have changed the syntax for environment.
+
+
+
+A raw paragraph block is a block that containes raw content (e.g. plain HTML)
+"
+Class {
+ #name : 'MacRawParagraphBlock',
+ #superclass : 'MicParagraphBlock',
+ #category : 'Microdown-NewMacrodown',
+ #package : 'Microdown-NewMacrodown'
+}
+
+{ #category : 'visiting' }
+MacRawParagraphBlock >> accept: aVisitor [
+
+ ^ aVisitor visitRawParagraph: self
+]
+
+{ #category : 'parse support' }
+MacRawParagraphBlock >> closeMe [
+
+ self children: {
+ MicRawBlock
+ from: 1
+ to: text size
+ withSubstring: text }
+]
diff --git a/src/Microdown-Macrodown/MacrodownParser.class.st b/src/Microdown-NewMacrodown/MacrodownParser.class.st
similarity index 92%
rename from src/Microdown-Macrodown/MacrodownParser.class.st
rename to src/Microdown-NewMacrodown/MacrodownParser.class.st
index a91b598f..0aced97e 100644
--- a/src/Microdown-Macrodown/MacrodownParser.class.st
+++ b/src/Microdown-NewMacrodown/MacrodownParser.class.st
@@ -4,8 +4,8 @@ This is a variation of the MicrodownParser that tries to be as close as possible
Class {
#name : 'MacrodownParser',
#superclass : 'MicrodownParser',
- #category : 'Microdown-Macrodown',
- #package : 'Microdown-Macrodown'
+ #category : 'Microdown-NewMacrodown',
+ #package : 'Microdown-NewMacrodown'
}
{ #category : 'public' }
diff --git a/src/Microdown-NewMacrodown/MicInlineTokenStreamTest.extension.st b/src/Microdown-NewMacrodown/MicInlineTokenStreamTest.extension.st
new file mode 100644
index 00000000..b3ac68e9
--- /dev/null
+++ b/src/Microdown-NewMacrodown/MicInlineTokenStreamTest.extension.st
@@ -0,0 +1,24 @@
+Extension { #name : 'MicInlineTokenStreamTest' }
+
+{ #category : '*Microdown-NewMacrodown' }
+MicInlineTokenStreamTest >> testLineBreak [
+
+ | src tokens |
+ self skip.
+ src := 'aa bb'.
+ tokens := (MicInlineTokenStream on: src) contents.
+ self assert: tokens size equals: 3.
+ self assert: tokens second string equals: ' '
+]
+
+{ #category : '*Microdown-NewMacrodown' }
+MicInlineTokenStreamTest >> testLineBreakBackSlashed [
+
+ | src tokens |
+ self skip.
+ src := 'aa\ bb'.
+ tokens := (MicInlineTokenStream on: src) contents.
+ self assert: tokens size equals: 1.
+ "to me it should not lose the / but we will see this later."
+ self assert: tokens first string equals: 'aa bb'
+]
diff --git a/src/Microdown-Macrodown/MacLineBreakBlock.class.st b/src/Microdown-NewMacrodown/MicLineBreakBlock.class.st
similarity index 50%
rename from src/Microdown-Macrodown/MacLineBreakBlock.class.st
rename to src/Microdown-NewMacrodown/MicLineBreakBlock.class.st
index 3b70293a..3b77f4e7 100644
--- a/src/Microdown-Macrodown/MacLineBreakBlock.class.st
+++ b/src/Microdown-NewMacrodown/MicLineBreakBlock.class.st
@@ -2,32 +2,32 @@
Block to process line breaks.
"
Class {
- #name : 'MacLineBreakBlock',
+ #name : 'MicLineBreakBlock',
#superclass : 'MicInlineElement',
- #category : 'Microdown-Macrodown',
- #package : 'Microdown-Macrodown'
+ #category : 'Microdown-NewMacrodown',
+ #package : 'Microdown-NewMacrodown'
}
{ #category : 'visiting' }
-MacLineBreakBlock >> accept: aVisitor [
+MicLineBreakBlock >> accept: aVisitor [
^ aVisitor visitLineBreak: self
]
{ #category : 'accessing' }
-MacLineBreakBlock >> kind [
+MicLineBreakBlock >> kind [
^ #lineBreak
]
{ #category : 'accessing' }
-MacLineBreakBlock >> openingDelimiter [
+MicLineBreakBlock >> openingDelimiter [
^ nil
]
{ #category : 'accessing' }
-MacLineBreakBlock >> openingDelimiterSize [
+MicLineBreakBlock >> openingDelimiterSize [
^ 0
]
diff --git a/src/Microdown-NewMacrodown/MicParagraphWithDoubleSpaceTest.class.st b/src/Microdown-NewMacrodown/MicParagraphWithDoubleSpaceTest.class.st
new file mode 100644
index 00000000..3addd2ab
--- /dev/null
+++ b/src/Microdown-NewMacrodown/MicParagraphWithDoubleSpaceTest.class.st
@@ -0,0 +1,25 @@
+Class {
+ #name : 'MicParagraphWithDoubleSpaceTest',
+ #superclass : 'TestCase',
+ #pools : [
+ 'MicMicrodownSharedPool'
+ ],
+ #category : 'Microdown-NewMacrodown',
+ #package : 'Microdown-NewMacrodown'
+}
+
+{ #category : 'running' }
+MicParagraphWithDoubleSpaceTest >> testTwoSingleLinesWithSpaces [
+ | root paragraph |
+ self skip.
+ root := MacrodownParser parse: 'This is
+a paragraph on two lines, separated by two spaces'.
+ self assert: root children size equals: 1.
+ paragraph := root children first.
+
+ self assert: paragraph children first text equals: 'This is'.
+ self assert: paragraph children second class equals: MicLineBreakBlock.
+ self assert: paragraph children third text equals: 'a paragraph on two lines, separated by two spaces'.
+ self assert: paragraph text equals: 'This is
+a paragraph on two lines, separated by two spaces'
+]
diff --git a/src/Microdown-NewMacrodown/NoteForStef.class.st b/src/Microdown-NewMacrodown/NoteForStef.class.st
new file mode 100644
index 00000000..b52570f0
--- /dev/null
+++ b/src/Microdown-NewMacrodown/NoteForStef.class.st
@@ -0,0 +1,59 @@
+"
+from https://markdownguide.offshoot.io/basic-syntax/
+
+## About line breaks
+
+Line Breaks
+To create a line break or new line (
), end a line with two or more spaces, and then type return.
+
+Markdown HTML Rendered Output
+This is the first line.
+And this is the second line.
This is the first line.
+And this is the second line.