Daniel Rudolf
50e135cd4e
Update expect-to-pass CommonMark spec examples for f4e0234
2019-04-07 16:38:08 +01:00
Daniel Rudolf
0514997103
Add initial test/commonmark/ folder
2019-04-07 16:38:08 +01:00
Daniel Rudolf
4c0734d935
Sync phpunit data set and CommonMark spec example numbers
2019-04-07 16:38:07 +01:00
Daniel Rudolf
734b4fc3d7
Test Parsedown against cached expect-to-pass CommonMark spec examples
...
This test suite runs tests the same way as `test/CommonMarkTestWeak.php`, but uses a cached set of CommonMark spec examples in `test/commonmark/`. It is executed along with Parsedown's default test suite and runs various CommonMark spec examples, which are expected to pass. If they don't pass, the Parsedown build fails. The intention of this test suite is to make sure, that previously passed CommonMark spec examples don't fail due to unwanted side-effects of code changes.
You can re-create the `test/commonmark/` directory by executing the PHPUnit group `update`. The test suite will then run `test/CommonMarkTestWeak.php` and create files with the Markdown source and the resulting HTML markup of all passed tests. The command to execute looks like the following:
$ phpunit --group update
2019-04-07 16:38:07 +01:00
Aidan Woods
4563ee592d
Don't assume marker type is correct
2019-04-07 16:38:07 +01:00
Aidan Woods
cbe7b25b21
No markup can be achieved by removing the respective parsing Components
2019-04-07 16:38:07 +01:00
Aidan Woods
f0da746c7b
Remove reminder comment
...
urlsLinked(false) is replaced by customising to remove
the inline from InlineTypes configurable when initialising
Parsedown
2019-04-07 16:38:07 +01:00
Aidan Woods
aab56cf8cc
Fix strange formatting
2019-04-07 16:38:07 +01:00
Aidan Woods
48c0c34470
Caching for initial configurable values removes need to seed state
2019-04-07 16:38:07 +01:00
Aidan Woods
bc3c1544c5
Don't special case invisible
...
If something has no html, it doesn't need to have a newline
2019-04-07 16:38:06 +01:00
Aidan Woods
d6f526d80f
Return state after block parse instead of mutating the instance copy
2019-04-07 16:38:06 +01:00
Aidan Woods
b728f254b7
Ensure Url parsing is removed all the way down (not just edge)
2019-04-07 16:38:06 +01:00
Aidan Woods
ebde35cf0d
Add some style cleanup rules already followed
2019-04-07 16:38:06 +01:00
Aidan Woods
d733c262c2
Cleanup logical operators
2019-04-07 16:38:06 +01:00
Aidan Woods
19e21f2d1b
Remove test extensions
2019-04-07 16:38:06 +01:00
Aidan Woods
11da347aa1
We don't need to pass a Parsedown instance down
...
Since Parsedown is instancible from State, we only
need to carry that down.
2019-04-07 16:38:05 +01:00
Aidan Woods
b89bd0e3c2
Add breaks configurable
2019-04-07 16:38:05 +01:00
Aidan Woods
fce09a702a
Put reused code in a trait so boolean configurables are easy to make
2019-04-07 16:38:05 +01:00
Aidan Woods
8fe93f30ac
Add easy way to remove Components from InlineTyes and BlockTypes
2019-04-07 16:38:05 +01:00
Aidan Woods
9f9ef78662
This should be slightly faster
...
Merge would honour changes, and removals
are equivalent to changing to default value.
2019-04-07 16:38:05 +01:00
Aidan Woods
57632f38fb
More meaningful method name
2019-04-07 16:38:05 +01:00
Aidan Woods
5e7fb61879
More keyword fixes for pre-PHP7
2019-04-07 16:38:05 +01:00
Aidan Woods
2618509cc6
Now the class is a bit shorter we can remove these makeshift dividers
2019-04-07 16:38:04 +01:00
Aidan Woods
fce4633ff9
Inlines and Blocks as Configurables
2019-04-07 16:38:04 +01:00
Aidan Woods
eb90905d27
Default value is intrinsic to a configurable, we can just always
...
retrieve that.
2019-04-07 16:38:04 +01:00
Aidan Woods
5a50930cb0
Allow inlines to backtrack into characters that were suspected as
...
inlines but ruled out
This is required for backslash escaped Hard breaks to work:
Parsedown first checks to see if these are escape sequences,
however when they are ruled out they should not be assumed to be
plaintext since a later inline (Hardbreak) may backtrack into these
unconsumed characters.
2019-04-07 16:38:04 +01:00
Aidan Woods
1fd2e14b72
Add hard and soft breaks
2019-04-07 16:38:04 +01:00
Aidan Woods
714ae50211
Text variable isn't very useful inside the loop
2019-04-07 16:38:04 +01:00
Aidan Woods
14b3761687
Produce Blocks before converting to StateRenderables
...
(As we do with Inlines)
2019-04-07 16:38:04 +01:00
Aidan Woods
00821bd072
Don't remove right #'s too early (before dealing with whitesapce)
2019-04-07 16:38:03 +01:00
Aidan Woods
b8cdc6e9a5
Remove closing # sequence from header
2019-04-07 16:38:03 +01:00
Aidan Woods
9d97b8eb6a
We should be using strict mode in commonmark benchmark
2019-04-07 16:38:03 +01:00
Aidan Woods
67231cbae1
Tabs are allowed after header delimiter
2019-04-07 16:38:03 +01:00
Aidan Woods
81a2050608
Headers can't start with more than three spaces
2019-04-07 16:38:03 +01:00
Aidan Woods
3d41f270c2
Better name for testing safe mode and strict mode state
...
Add a nice named constructor
2019-04-07 16:38:03 +01:00
Aidan Woods
bb424e606f
Improve indent handling by lists
2019-04-07 16:38:03 +01:00
Aidan Woods
51c3d9d445
Make it clearer this is one backslash character
2019-04-07 16:38:02 +01:00
Aidan Woods
74bba0b2fa
rtrim non hard breaking lines
2019-04-07 16:38:02 +01:00
Aidan Woods
fc37ad11ed
Tabs shouldn't break thematic breaks
2019-04-07 16:38:02 +01:00
Aidan Woods
4e9a0113c3
Thematic breaks can't have an indent of more than 3
2019-04-07 16:38:02 +01:00
Aidan Woods
96d8a1f18c
Add dead code test to composer test script
2019-04-07 16:38:02 +01:00
Aidan Woods
82c981657d
Require Inlines to provide a best plaintext rendering
...
This allows markdown to be parsed "inside" the alt
attribute of an image, and then the best plaintext
can be used as the rest.
This improves CommonMark compliance.
2019-04-07 16:38:02 +01:00
Aidan Woods
576a2c4519
Generalise line parsing to return Inlines before applying state
2019-04-07 16:38:01 +01:00
Aidan Woods
083ad582c7
State management
...
Decouple state from final rendering
Restore initial state after parsing
2019-04-07 16:38:01 +01:00
Aidan Woods
c9388cb5c2
Make use of line name instead of lineElements
2019-04-07 16:38:01 +01:00
Aidan Woods
bb8a16ad81
Remove useless line method
...
This will be achievable by directly restricting enabled Components
2019-04-07 16:38:01 +01:00
Aidan Woods
2cfd05a00e
Test for dead code in travis
2019-04-07 16:38:01 +01:00
Aidan Woods
7f526c07a0
Indent offset is encompassed in Lines object
2019-04-07 16:38:01 +01:00
Aidan Woods
366600034c
This isn't used and is derivable from the indent
2019-04-07 16:38:01 +01:00
Aidan Woods
6add0ea877
Remove useless variables
2019-04-07 16:38:00 +01:00