importFrom("utils", "head", "tail")

export("content", "content<-", "meta", "meta<-")

export("String", "as.String", "is.String")
S3method("as.String", "String")
S3method("as.String", "default")
S3method("[", "String")
S3method("*", "String")
S3method("print", "String")

export("Span", "as.Span", "is.Span")
S3method("as.Span", "Span")
S3method("as.Span", "Annotation")
S3method("[", "Span")
## S3method("[<-", "Span")
S3method("[[", "Span")
## S3method("[[<-", "Span")
S3method("$<-", "Span")
S3method("Ops", "Span")
S3method("as.data.frame", "Span")
S3method("as.list", "Span")
S3method("c", "Span")
S3method("duplicated", "Span")
S3method("format", "Span")
S3method("length", "Span")
S3method("names", "Span")
S3method("print", "Span")
S3method("unique", "Span")

export("Annotation", "as.Annotation", "is.Annotation")
S3method("as.Annotation", "Annotation")
S3method("as.Annotation", "Span")
S3method("[", "Annotation")
## S3method("[<-", "Annotation")
S3method("[[", "Annotation")
## S3method("[[<-", "Annotation")
S3method("$<-", "Annotation")
S3method("as.data.frame", "Annotation")
S3method("as.list", "Annotation")
S3method("c", "Annotation")
S3method("duplicated", "Annotation")
S3method("format", "Annotation")
S3method("length", "Annotation")
S3method("merge", "Annotation")
S3method("meta", "Annotation", .get_meta_if_attr)
S3method("meta<-", "Annotation", .set_meta_if_attr)
S3method("names", "Annotation")
S3method("print", "Annotation", .print_via_format)
S3method("subset", "Annotation")
S3method("unique", "Annotation")
export("annotations_in_spans")

export("annotate")

export("Annotator")
S3method("format", "Annotator")
S3method("meta", "Annotator", .get_meta_if_attr)
S3method("meta<-", "Annotator", .set_meta_if_attr)
S3method("print", "Annotator", .print_via_format)
export("Simple_Para_Token_Annotator",
       "Simple_Sent_Token_Annotator",
       "Simple_Word_Token_Annotator",
       "Simple_POS_Tag_Annotator",
       "Simple_Entity_Annotator",
       "Simple_Chunk_Annotator",
       "Simple_Stem_Annotator")
export("Annotator_Pipeline", "as.Annotator_Pipeline")
S3method("as.Annotator_Pipeline", "Annotator_Pipeline")
S3method("as.Annotator_Pipeline", "Annotator")
S3method("as.Annotator_Pipeline", "list")
S3method("[", "Annotator_Pipeline")
S3method("as.list", "Annotator_Pipeline")
S3method("c", "Annotator_Pipeline")
S3method("format", "Annotator_Pipeline")
S3method("meta", "Annotator_Pipeline", .get_meta_if_attr)
S3method("meta<-", "Annotator_Pipeline", .set_meta_if_attr)
S3method("print", "Annotator_Pipeline", .print_via_format)

export("next_id", "single_feature")

export("Regexp_Tokenizer",
       "blankline_tokenizer",
       "whitespace_tokenizer",
       "wordpunct_tokenizer")

export("Tree")
S3method("format", "Tree")
S3method("print", "Tree", .print_via_format)
export("Tree_parse", "Tree_apply")

export("words", "sents", "paras",
       "tagged_words", "tagged_sents", "tagged_paras",
       "chunked_sents",
       "parsed_sents", "parsed_paras")

S3method("format", "TextDocument", .format_TextDocument)
S3method("print", "TextDocument", .print_via_format)

export("AnnotatedPlainTextDocument", "annotations")
S3method("format", "AnnotatedPlainTextDocument")
S3method("print", "AnnotatedPlainTextDocument", .print_via_format)
S3method("content", "AnnotatedPlainTextDocument")
S3method("content<-", "AnnotatedPlainTextDocument")
S3method("meta", "AnnotatedPlainTextDocument", .get_meta_if_slot)
S3method("meta<-", "AnnotatedPlainTextDocument", .set_meta_if_slot)
S3method("as.character", "AnnotatedPlainTextDocument")
S3method("words", "AnnotatedPlainTextDocument")
S3method("sents", "AnnotatedPlainTextDocument")
S3method("paras", "AnnotatedPlainTextDocument")
S3method("tagged_words", "AnnotatedPlainTextDocument")
S3method("tagged_sents", "AnnotatedPlainTextDocument")
S3method("tagged_paras", "AnnotatedPlainTextDocument")
S3method("chunked_sents", "AnnotatedPlainTextDocument")
S3method("parsed_sents", "AnnotatedPlainTextDocument")
S3method("parsed_paras", "AnnotatedPlainTextDocument")

export("CoNLLTextDocument")
S3method("format", "CoNLLTextDocument")
S3method("print", "CoNLLTextDocument", .print_via_format)
S3method("content", "CoNLLTextDocument")
S3method("meta", "CoNLLTextDocument", .get_meta_if_slot)
S3method("meta<-", "CoNLLTextDocument", .set_meta_if_slot)
S3method("as.character", "CoNLLTextDocument")
S3method("words", "CoNLLTextDocument")
S3method("sents", "CoNLLTextDocument")
S3method("tagged_words", "CoNLLTextDocument")
S3method("tagged_sents", "CoNLLTextDocument")
S3method("chunked_sents", "CoNLLTextDocument")

export("TaggedTextDocument")
S3method("format", "TaggedTextDocument")
S3method("print", "TaggedTextDocument", .print_via_format)
S3method("content", "TaggedTextDocument")
S3method("meta", "TaggedTextDocument", .get_meta_if_slot)
S3method("meta<-", "TaggedTextDocument", .set_meta_if_slot)
S3method("as.character", "TaggedTextDocument")
S3method("words", "TaggedTextDocument")
S3method("sents", "TaggedTextDocument")
S3method("paras", "TaggedTextDocument")
S3method("tagged_words", "TaggedTextDocument")
S3method("tagged_sents", "TaggedTextDocument")
S3method("tagged_paras", "TaggedTextDocument")

export("WordListDocument")
S3method("format", "WordListDocument")
S3method("print", "WordListDocument", .print_via_format)
S3method("content", "WordListDocument")
S3method("meta", "WordListDocument", .get_meta_if_slot)
S3method("meta<-", "WordListDocument", .set_meta_if_slot)
S3method("as.character", "WordListDocument")
S3method("words", "WordListDocument")

export("Penn_Treebank_POS_tags")
export("Brown_POS_tags")
export("Universal_POS_tags")
export("Universal_POS_tags_map")

export("parse_IETF_language_tag")

export("parse_ISO_8601_datetime")
S3method("[", "ISO_8601_datetime")
S3method("$", "ISO_8601_datetime")
S3method("as.Date", "ISO_8601_datetime")
S3method("as.POSIXct", "ISO_8601_datetime")
S3method("as.POSIXlt", "ISO_8601_datetime")
S3method("as.data.frame", "ISO_8601_datetime")
S3method("as.matrix", "ISO_8601_datetime")
S3method("print", "ISO_8601_datetime")

export("ngrams")

export("Tagged_Token", "as.Tagged_Token", "is.Tagged_Token")
S3method("as.Tagged_Token", "Tagged_Token")
S3method("as.Tagged_Token", "TextDocument")
S3method("[", "Tagged_Token")
## S3method("[<-", "Tagged_Token")
S3method("[[", "Tagged_Token")
## S3method("[[<-", "Tagged_Token")
S3method("$<-", "Tagged_Token")
S3method("as.data.frame", "Tagged_Token")
S3method("as.list", "Tagged_Token")
S3method("c", "Tagged_Token")
S3method("duplicated", "Tagged_Token")
S3method("format", "Tagged_Token")
S3method("length", "Tagged_Token")
S3method("names", "Tagged_Token")
S3method("print", "Tagged_Token", .print_via_format)
S3method("unique", "Tagged_Token")

export("Span_Tokenizer", "as.Span_Tokenizer", "is.Span_Tokenizer")
S3method("as.Span_Tokenizer", "Span_Tokenizer")
S3method("as.Span_Tokenizer", "Token_Tokenizer")
S3method("as.Span_Tokenizer", "Annotator")
S3method("as.Span_Tokenizer", "Annotator_Pipeline")
S3method("format", "Span_Tokenizer")
S3method("print", "Span_Tokenizer", .print_via_format)
S3method("meta", "Span_Tokenizer", .get_meta_if_attr)
S3method("meta<-", "Span_Tokenizer", .set_meta_if_attr)
export("Token_Tokenizer", "as.Token_Tokenizer", "is.Token_Tokenizer")
S3method("as.Token_Tokenizer", "Token_Tokenizer")
S3method("as.Token_Tokenizer", "Span_Tokenizer")
S3method("as.Token_Tokenizer", "Annotator")
S3method("as.Token_Tokenizer", "Annotator_Pipeline")
S3method("format", "Token_Tokenizer")
S3method("print", "Token_Tokenizer", .print_via_format)
S3method("meta", "Token_Tokenizer", .get_meta_if_attr)
S3method("meta<-", "Token_Tokenizer", .set_meta_if_attr)
