// delete line
(tmp->text->delete)(tmp->text);
free(tmp);
- } else if(CHECK_BIT(line->bits, IS_UNORDERED_LIST_1)) {
+ } else if(CHECK_BIT(line->bits, IS_UNORDERED_LIST_3)) {
tmp = line->next;
- line_t *list_last_level_1 = line;
+ line_t *list_last_level_3 = line;
while(tmp &&
- (CHECK_BIT(tmp->bits, IS_UNORDERED_LIST_1) ||
- CHECK_BIT(tmp->bits, IS_UNORDERED_LIST_2) ||
- CHECK_BIT(tmp->bits, IS_UNORDERED_LIST_3))) {
- if(CHECK_BIT(tmp->bits, IS_UNORDERED_LIST_1)) {
- list_last_level_1 = tmp;
+ CHECK_BIT(tmp->bits, IS_UNORDERED_LIST_3)) {
+ if(CHECK_BIT(tmp->bits, IS_UNORDERED_LIST_3)) {
+ list_last_level_3 = tmp;
}
tmp = tmp->next;
}
- for(tmp = line; tmp != list_last_level_1; tmp = tmp->next) {
- SET_BIT(tmp->bits, IS_UNORDERED_LIST_1);
+ for(tmp = line; tmp != list_last_level_3; tmp = tmp->next) {
+ SET_BIT(tmp->bits, IS_UNORDERED_LIST_3);
}
} else if(CHECK_BIT(line->bits, IS_UNORDERED_LIST_2)) {
tmp = line->next;
for(tmp = line; tmp != list_last_level_2; tmp = tmp->next) {
SET_BIT(tmp->bits, IS_UNORDERED_LIST_2);
}
- } else if(CHECK_BIT(line->bits, IS_UNORDERED_LIST_3)) {
+ } else if(CHECK_BIT(line->bits, IS_UNORDERED_LIST_1)) {
tmp = line->next;
- line_t *list_last_level_3 = line;
+ line_t *list_last_level_1 = line;
while(tmp &&
- CHECK_BIT(tmp->bits, IS_UNORDERED_LIST_3)) {
- if(CHECK_BIT(tmp->bits, IS_UNORDERED_LIST_3)) {
- list_last_level_3 = tmp;
+ (CHECK_BIT(tmp->bits, IS_UNORDERED_LIST_1) ||
+ CHECK_BIT(tmp->bits, IS_UNORDERED_LIST_2) ||
+ CHECK_BIT(tmp->bits, IS_UNORDERED_LIST_3))) {
+ if(CHECK_BIT(tmp->bits, IS_UNORDERED_LIST_1)) {
+ list_last_level_1 = tmp;
}
tmp = tmp->next;
}
- for(tmp = line; tmp != list_last_level_3; tmp = tmp->next) {
- SET_BIT(tmp->bits, IS_UNORDERED_LIST_3);
+ for(tmp = line; tmp != list_last_level_1; tmp = tmp->next) {
+ SET_BIT(tmp->bits, IS_UNORDERED_LIST_1);
}
}
// strip trailing spaces
for(eol = text->size; eol > offset && isspace((unsigned char) text->text[eol - 1]); eol--);
+ // IS_UNORDERED_LIST_#
if(text->size >= offset + 2 &&
(text->text[offset] == '*' || text->text[offset] == '-') &&
text->text[offset + 1] == ' ') {
- if(offset > unordered_list_offset + CODE_INDENT) {
- SET_BIT(bits, IS_CODE);
- } else if(offset != unordered_list_offset) {
- for(i = unordered_list_level; i >= 0; i--) {
- if(unordered_list_level_offset[i] == offset) {
- unordered_list_level = i;
- break;
+
+ for(i = offset; i<eol; i++) {
+ if(text->text[i] != '*' &&
+ text->text[i] != '-' &&
+ text->text[i] != ' ') {
+ if(offset > unordered_list_offset + CODE_INDENT) {
+ SET_BIT(bits, IS_CODE);
+ } else if(offset != unordered_list_offset) {
+ for(i = unordered_list_level; i >= 0; i--) {
+ if(unordered_list_level_offset[i] == offset) {
+ unordered_list_level = i;
+ break;
+ }
+ }
+ if(i != unordered_list_level) {
+ unordered_list_level = MIN(unordered_list_level + 1, UNORDERED_LIST_MAX_LEVEL);
+ unordered_list_level_offset[unordered_list_level] = offset;
+ }
}
- }
- if(i != unordered_list_level) {
- unordered_list_level = MIN(unordered_list_level + 1, UNORDERED_LIST_MAX_LEVEL);
- unordered_list_level_offset[unordered_list_level] = offset;
- }
- }
- if(unordered_list_level == 0) {
- unordered_list_level = 1;
- unordered_list_level_offset[1] = offset;
- }
+ if(unordered_list_level == 0) {
+ unordered_list_level = 1;
+ unordered_list_level_offset[1] = offset;
+ }
- switch(unordered_list_level) {
- case 1: SET_BIT(bits, IS_UNORDERED_LIST_1); break;
- case 2: SET_BIT(bits, IS_UNORDERED_LIST_2); break;
- case 3: SET_BIT(bits, IS_UNORDERED_LIST_3); break;
- default: break;
+ switch(unordered_list_level) {
+ case 1: SET_BIT(bits, IS_UNORDERED_LIST_1); break;
+ case 2: SET_BIT(bits, IS_UNORDERED_LIST_2); break;
+ case 3: SET_BIT(bits, IS_UNORDERED_LIST_3); break;
+ default: break;
+ }
+
+ break;
+ }
}
- } else {
+ }
+
+ if(!CHECK_BIT(bits, IS_UNORDERED_LIST_1) &&
+ !CHECK_BIT(bits, IS_UNORDERED_LIST_2) &&
+ !CHECK_BIT(bits, IS_UNORDERED_LIST_3)) {
+
unordered_list_level = 0;
+ // IS_CODE
if(offset >= CODE_INDENT) {
- // IS_CODE
SET_BIT(bits, IS_CODE);
+
} else {
for(i = offset; i < eol; i++) {
return i;
}
+int prev_blank(cstring_t *text, int i) {
+ while ((i > 0) && !isspace((unsigned char) (text->text)[i]))
+ i--;
+
+ return i;
+}
+
int next_blank(cstring_t *text, int i) {
while ((i < text->size) && !isspace((unsigned char) (text->text)[i]))
i++;