Skip to content

Commit

Permalink
Merge branch 'release/6.5.1'
Browse files Browse the repository at this point in the history
  • Loading branch information
fletcher committed Dec 28, 2019
2 parents 0cd6fb4 + 6a67a62 commit 97d865d
Show file tree
Hide file tree
Showing 21 changed files with 400 additions and 244 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -366,7 +366,7 @@ set(test_files
# Process source files to look for tests to run
add_custom_command (
OUTPUT ${PROJECT_BINARY_DIR}/AllTests.c
COMMAND sh ${PROJECT_SOURCE_DIR}/test/make-tests.sh ${PROJECT_SOURCE_DIR}/Sources/libMultiMarkdown/*.c > ${PROJECT_BINARY_DIR}/AllTests.c
COMMAND bash ${PROJECT_SOURCE_DIR}/test/make-tests.sh ${PROJECT_SOURCE_DIR}/Sources/libMultiMarkdown/*.c > ${PROJECT_BINARY_DIR}/AllTests.c
)

if(hasParent)
Expand Down
85 changes: 84 additions & 1 deletion DevelopmentNotes/DevelopmentNotes.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Title: MultiMarkdown v6 Development Notes
Author: Fletcher T. Penney
Date: 2018-09-01
Date: 2019-12-11
LaTeX Config: tufte-handout
Base Header Level: 3
uuid: dd2d8e76-dc2d-416d-9acd-5395d20871c2
Expand Down Expand Up @@ -472,6 +472,89 @@ TextBundle/TextPack, OpenDocument, etc.

# Changelog #

* 2019-12-11 - v 6.5.0:

* ADDED: Add ASCII case detection
* ADDED: Add conversion from ITMZ routines
* ADDED: Add support for random header labels when not manually specified (Addresses #157)
* ADDED: Add title as short caption for figures and tables to be used in list of figures and list of tables. Addresses #177 -- thanks, MArpogaus
* ADDED: Add {{TOC:1}} and {{TOC:1-2}} options
* FIXED: Add byte for null terminator when extracting from zip archive
* FIXED: Allow building libMMD has a child project for testing
* FIXED: Clean up Quick Start guide
* FIXED: Ensure newline at end of header contents when importing from OPML/ITMZ
* FIXED: Fix CMake config for MacPorts (fixes #146)
* FIXED: Fix PATH in convenience scripts
* FIXED: Fix bugs in new zip extraction code
* FIXED: Fix edge case with single item loose lists (fixes #174)
* FIXED: Fix filename
* FIXED: Fix handling of hebrew language option
* FIXED: Fix length of metadata if no trailing line ending
* FIXED: Fix letterhead reference to memoir-footer. (Fixes #143)
* FIXED: Fix memory leak (#172) -- thanks Alfons
* FIXED: Fix pointer dereference (fixes #152)
* FIXED: Fix potential bug when reading OPML/ITMZ
* FIXED: Fix potential errors related to checking for metadata
* FIXED: Fix potential issue in d_string
* FIXED: Fix potential memory address error
* FIXED: Fix prior bad edits to quick start guide
* FIXED: Fix regression
* FIXED: Fix test suite for new captions
* FIXED: Fix trim trailing whitespace
* FIXED: Fix two small potential errors
* FIXED: Fix warning
* FIXED: Fix whitespace issues with headers with manual labels
* FIXED: Improve BOM stripping
* FIXED: Improve efficiency when checking for existence of metadata
* FIXED: Include .html for EPUB and .fodt for ODT when transcluding with wildcard extension
* FIXED: Prevent line breaks in HTML/ODF attributes
* FIXED: Update Quick Start PDF
* FIXED: Update README template
* FIXED: Update re2c scanners and prevent crash on certain documents with unexpected encoding
* FIXED: Use C11 (had old C99 as well, but I suspect that wasn't actually used
* Fixes to README
* Merge branch 'develop' of github.com:fletcher/MultiMarkdown-6 into develop
* Merge branch 'release/6.4.0' into develop
* Merge pull request #144 from cdhutch/patch-3
* Merge pull request #162 from DivineDominion/patch-1
* Merge pull request #167 from nickasd/develop
* Revert "remove build folder"
* UPDATED: Add MARKUP token type
* UPDATED: Add OPML routines to libMultiMarkdown.h
* UPDATED: Add UTF-8 validity check function
* UPDATED: Additional README comments about Xcode
* UPDATED: Apply astyle
* UPDATED: Automatically disable libCurl on iOS
* UPDATED: Change convenience scripts for better POSIX compliance (implements #150) (Thanks, Ryan)
* UPDATED: Don't require opening <?xml> in OPML
* UPDATED: Fix doxygen template
* UPDATED: Fix main() when token pools disabled
* UPDATED: Make astyle
* UPDATED: Refactor XML parsing; improve OPML reading; add ITMZ (iThoughts) reading/writing (experimental feature); a few other small tweaks
* UPDATED: Refactor header file inclusion
* UPDATED: Remove debug statement
* UPDATED: Remove i386 build architecture from default configuration
* UPDATED: Remove some old debugging statements that aren't necessary anymore
* UPDATED: Silence some Xcode warnings
* UPDATED: Silence warnings
* UPDATED: Tidy code
* UPDATED: Tweak smart quote rules to avoid false positive matches when using double quote as inches mark
* UPDATED: Update advanced headers test suite
* UPDATED: Update astyle
* UPDATED: Update astyle settings
* UPDATED: Update char.c
* UPDATED: Update cmake for xcode 11
* UPDATED: Update d_string
* UPDATED: Update macOS deployment version to 10.6 for Mojave
* UPDATED: reduce false-positive rate of metadata where first line contains colon but metadata is not intended
* UPDATED: remove reliance on version.h when testing
* UPDATED: table id attribute should be on table not caption
* Update mmd6-letterhead-leader.tex
* add how to build Xcode framework to README
* remove build folder
* update README with instructions for Xcode


* 2018-09-01 - v 6.4.0:

* ADDED: Add ODF Header metadata and fix issue with LaTeX Header metadata
Expand Down
5 changes: 4 additions & 1 deletion Sources/libMultiMarkdown/beamer.c
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,10 @@ void mmd_export_token_beamer(DString * out, const char * source, token * t, scra
d_string_append_c_array(out, &source[t->child->next->start], temp_token->start - t->child->next->start);
scratch->padded = 1;
} else {
d_string_append_c_array(out, &source[t->child->start + t->child->len], t->start + t->len - t->child->next->start);
if (t->child->next) {
d_string_append_c_array(out, &source[t->child->start + t->child->len], t->start + t->len - t->child->next->start);
}

scratch->padded = 0;
}
}
Expand Down
36 changes: 22 additions & 14 deletions Sources/libMultiMarkdown/html.c
Original file line number Diff line number Diff line change
Expand Up @@ -652,7 +652,10 @@ void mmd_export_token_html(DString * out, const char * source, token * t, scratc
d_string_append_c_array(out, &source[t->child->next->start], temp_token->start - t->child->next->start);
scratch->padded = 1;
} else {
d_string_append_c_array(out, &source[t->child->start + t->child->len], t->start + t->len - t->child->next->start);
if (t->child->next) {
d_string_append_c_array(out, &source[t->child->start + t->child->len], t->start + t->len - t->child->next->start);
}

scratch->padded = 0;
}
}
Expand Down Expand Up @@ -1961,21 +1964,25 @@ void mmd_export_token_html(DString * out, const char * source, token * t, scratc
print_const("\t<td");
}

switch (scratch->table_alignment[scratch->table_cell_count]) {
case 'l':
case 'L':
print_const(" style=\"text-align:left;\"");
break;
if (scratch->table_cell_count < kMaxTableColumns) {
switch (scratch->table_alignment[scratch->table_cell_count]) {
case 'l':
case 'L':
print_const(" style=\"text-align:left;\"");
break;

case 'r':
case 'R':
print_const(" style=\"text-align:right;\"");
break;
case 'r':
case 'R':
print_const(" style=\"text-align:right;\"");
break;

case 'c':
case 'C':
print_const(" style=\"text-align:center;\"");
break;
case 'c':
case 'C':
print_const(" style=\"text-align:center;\"");
break;
}
} else {
print_const(" style=\"text-align:left;\"");
}

if (t->next && t->next->type == TABLE_DIVIDER) {
Expand Down Expand Up @@ -2053,6 +2060,7 @@ void mmd_export_token_html(DString * out, const char * source, token * t, scratc
default:
fprintf(stderr, "Unknown token type: %d (%lu:%lu)\n", t->type, t->start, t->len);
token_describe(t, source);
exit(0);
break;
}

Expand Down
2 changes: 1 addition & 1 deletion Sources/libMultiMarkdown/i18n.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@
#define H64(s,i,x) H16(s,i,H16(s,i+16,H16(s,i+32,H16(s,i+48,x))))
#define H256(s,i,x) H64(s,i,H64(s,i+64,H64(s,i+128,H64(s,i+192,x))))

#define HASH(s) ((uint32_t)(H256(s,0,0)^(H256(s,0,0)>>16)))
#define HASH(s) ((uint32_t)(H64(s,0,0)^(H64(s,0,0)>>16)))

#define LC(x) Translate(HASH(x), scratch->language)

Expand Down
33 changes: 20 additions & 13 deletions Sources/libMultiMarkdown/latex.c
Original file line number Diff line number Diff line change
Expand Up @@ -573,7 +573,10 @@ void mmd_export_token_latex(DString * out, const char * source, token * t, scrat
d_string_append_c_array(out, &source[t->child->next->start], temp_token->start - t->child->next->start);
scratch->padded = 1;
} else {
d_string_append_c_array(out, &source[t->child->start + t->child->len], t->start + t->len - t->child->next->start);
if (t->child->next) {
d_string_append_c_array(out, &source[t->child->start + t->child->len], t->start + t->len - t->child->next->start);
}

scratch->padded = 0;
}
}
Expand Down Expand Up @@ -1891,20 +1894,24 @@ void mmd_export_token_latex(DString * out, const char * source, token * t, scrat
if (t->next->len > 1) {
printf("\\multicolumn{%lu}{", t->next->len);

switch (scratch->table_alignment[scratch->table_cell_count]) {
case 'l':
case 'L':
print_const("l}{");
break;
if (scratch->table_cell_count < kMaxTableColumns) {
switch (scratch->table_alignment[scratch->table_cell_count]) {
case 'l':
case 'L':
print_const("l}{");
break;

case 'r':
case 'R':
print_const("r}{");
break;
case 'r':
case 'R':
print_const("r}{");
break;

default:
print_const("c}{");
break;
default:
print_const("c}{");
break;
}
} else {
print_const("l}{");
}
}
}
Expand Down
5 changes: 4 additions & 1 deletion Sources/libMultiMarkdown/memoir.c
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,10 @@ void mmd_export_token_memoir(DString * out, const char * source, token * t, scra
d_string_append_c_array(out, &source[t->child->next->start], temp_token->start - t->child->next->start);
scratch->padded = 1;
} else {
d_string_append_c_array(out, &source[t->child->start + t->child->len], t->start + t->len - t->child->next->start);
if (t->child->next) {
d_string_append_c_array(out, &source[t->child->start + t->child->len], t->start + t->len - t->child->next->start);
}

scratch->padded = 0;
}
}
Expand Down
36 changes: 24 additions & 12 deletions Sources/libMultiMarkdown/mmd.c
Original file line number Diff line number Diff line change
Expand Up @@ -1163,7 +1163,7 @@ void mmd_parse_token_chain(mmd_engine * e, token * chain) {
token * remainder; // Hold unparsed tail of chain

// Enable to monitor parsing steps
// ParseTrace(stderr, "parser >>");
// ParseTrace(stderr, "parser >> ");

// Remove existing token tree
e->root = NULL;
Expand Down Expand Up @@ -1282,6 +1282,7 @@ void mmd_assign_ambidextrous_tokens_in_block(mmd_engine * e, token * block, size
size_t lead_count, lag_count, pre_count, post_count;

token * t = block->child;
token * new;

char * str = e->dstr->str;

Expand Down Expand Up @@ -1331,10 +1332,17 @@ void mmd_assign_ambidextrous_tokens_in_block(mmd_engine * e, token * block, size

case CRITIC_SUB_DIV:
// Divide this into two tokens
t->child = token_new(CRITIC_SUB_DIV_B, t->start + 1, 1);
t->child->next = t->next;
t->next = t->child;
t->child = NULL;
new = token_new(CRITIC_SUB_DIV_B, t->start + 1, 1);

new->next = t->next;

if (new->next) {
new->next->prev = new;
}

t->next = new;
new->prev = t;

t->len = 1;
t->type = CRITIC_SUB_DIV_A;
break;
Expand Down Expand Up @@ -1937,16 +1945,13 @@ void strip_line_tokens_from_metadata(mmd_engine * e, token * metadata) {
case LINE_YAML:
break;

case LINE_TABLE:
default:
if (scan_meta_line(&source[l->start])) {
goto meta;
} else {
goto plain;
}

default:
fprintf(stderr, "ERROR!\n");
token_describe(l, NULL);
break;
}

Expand All @@ -1971,15 +1976,16 @@ void strip_line_tokens_from_deflist(mmd_engine * e, token * deflist) {
walker->type = TEXT_EMPTY;
break;

case LINE_PLAIN:
walker->type = BLOCK_TERM;

case BLOCK_TERM:
break;

case BLOCK_DEFINITION:
strip_line_tokens_from_block(e, walker);
break;

default:
walker->type = BLOCK_TERM;

}

walker = walker->next;
Expand Down Expand Up @@ -2270,9 +2276,15 @@ token * mmd_engine_parse_substring(mmd_engine * e, size_t byte_start, size_t byt
// Tokenize the string
token * doc = mmd_tokenize_string(e, byte_start, byte_len, false);

// Describe token chain for debugging purposes
// token_describe(doc, NULL);

// Parse tokens into blocks
mmd_parse_token_chain(e, doc);

// Describe token blocks for debugging purposes
// token_describe(doc, NULL);

if (doc) {
// Parse blocks for pairs
mmd_assign_ambidextrous_tokens_in_block(e, doc, 0);
Expand Down
41 changes: 24 additions & 17 deletions Sources/libMultiMarkdown/opendocument-content.c
Original file line number Diff line number Diff line change
Expand Up @@ -799,7 +799,10 @@ void mmd_export_token_opendocument(DString * out, const char * source, token * t
d_string_append_c_array(out, &source[t->child->next->start], temp_token->start - t->child->next->start);
scratch->padded = 1;
} else {
d_string_append_c_array(out, &source[t->child->start + t->child->len], t->start + t->len - t->child->next->start);
if (t->child->next) {
d_string_append_c_array(out, &source[t->child->start + t->child->len], t->start + t->len - t->child->next->start);
}

scratch->padded = 0;
}
}
Expand Down Expand Up @@ -2089,22 +2092,26 @@ void mmd_export_token_opendocument(DString * out, const char * source, token * t
} else {
print_const(">\n<text:p");

switch (scratch->table_alignment[scratch->table_cell_count]) {
case 'l':
case 'L':
default:
print_const(" text:style-name=\"MMD-Table\"");
break;

case 'r':
case 'R':
print_const(" text:style-name=\"MMD-Table-Right\"");
break;

case 'c':
case 'C':
print_const(" text:style-name=\"MMD-Table-Center\"");
break;
if (scratch->table_cell_count < kMaxTableColumns) {
switch (scratch->table_alignment[scratch->table_cell_count]) {
case 'l':
case 'L':
default:
print_const(" text:style-name=\"MMD-Table\"");
break;

case 'r':
case 'R':
print_const(" text:style-name=\"MMD-Table-Right\"");
break;

case 'c':
case 'C':
print_const(" text:style-name=\"MMD-Table-Center\"");
break;
}
} else {
print_const(" text:style-name=\"MMD-Table\"");
}
}

Expand Down
Loading

0 comments on commit 97d865d

Please sign in to comment.