#include <stdio.h>
#include <string.h>
#include "document.h"
int init_document(Document *doc, const char *name);
int reset_document(Document *doc);
int print_document(Document *doc);
int add_paragraph_after(Document *doc, int paragraph_number);
int add_line_after(Document *doc, int paragraph_number, int line_number,
const char *new_line);
int get_number_lines_paragraph(Document *doc, int paragraph_number,
int *number_of_lines);
int append_line(Document *doc, int paragraph_number, const char *new_line);
int remove_line(Document *doc, int paragraph_number, int line_number);
int load_document(Document *doc, char data[][MAX_STR_SIZE + 1], int data_lines);
int replace_text(Document *doc, const char *target, const char *replacement);
int highlight_text(Document *doc, const char *target);
int remove_text(Document *doc, const char *target);
int init_document(Document *doc, const char *name){
if (doc == NULL || name == NULL || strlen(name) > MAX_STR_SIZE){
return FAILURE;
}
strcpy(doc -> name, name);
return SUCCESS;
}
int reset_document(Document *doc){
if (doc == NULL) {
return FAILURE;
}
doc -> number_of_paragraphs = 0;
return SUCCESS;
}
int print_document(Document *doc){
int i, j;
if (doc == NULL) {
return FAILURE;
}
printf("Document name: %s \n", doc -> name);
printf("Number of Paragraphs: %d \n", doc -> number_of_paragraphs);
for (i = 1; i <= doc -> number_of_paragraphs; i++){
if (doc -> paragraphs[i].number_of_lines == 0){
continue;
}
for (j = 1; j <= doc -> paragraphs[i].number_of_lines; j++ ) {
printf("%s \n", doc -> paragraphs[i].lines[j]);
}
printf("\n");
}
return SUCCESS;
}
int add_paragraph_after(Document *doc, int paragraph_number){
int i;
if (doc == NULL || doc -> number_of_paragraphs == MAX_PARAGRAPHS || paragraph_number + 1 > doc -> number_of_paragraphs || paragraph_number < 0){
return FAILURE;
}
doc -> number_of_paragraphs++;
paragraph_number++;
if(doc->paragraphs[paragraph_number].number_of_lines > 0){
for (i = doc->number_of_paragraphs; i > paragraph_number; i--) {
doc->paragraphs[i] = doc->paragraphs[i - 1];
}
}
doc -> paragraphs[paragraph_number].number_of_lines = 0;
return SUCCESS;
}
int add_line_after(Document *doc, int paragraph_number, int line_number, const char *new_line){
Paragraph *paragraph = &doc->paragraphs[paragraph_number];
int i;
if (doc == NULL || paragraph_number < 0 || paragraph_number >= doc->number_of_paragraphs) {
return FAILURE;
}
if (paragraph->number_of_lines >= MAX_PARAGRAPH_LINES) {
return FAILURE;
}
if (new_line == NULL) {
return FAILURE;
}
paragraph->number_of_lines++;
line_number++;
for (i = paragraph->number_of_lines; i > line_number; i--) {
strcpy(paragraph->lines[i], paragraph->lines[i - 1]);
}
strcpy(paragraph->lines[line_number], new_line);
return SUCCESS;
}