NoTeX
1.0.0
A modern noteworthy LaTeX template
Toggle main menu visibility
Loading...
Searching...
No Matches
notex
include
notex
document.hpp
Go to the documentation of this file.
1
6
7
#pragma once
8
9
#include <filesystem>
10
#include <functional>
11
#include <optional>
12
#include <string>
13
#include <string_view>
14
#include <vector>
15
16
namespace
notex
{
17
31
class
Document {
32
public
:
35
using
LinePredicate
= std::function<bool(
const
std::string&)>;
36
41
static
Document
load
(
const
std::filesystem::path& path);
42
45
const
std::vector<std::string>&
lines
() const noexcept {
return
lines_; }
46
48
std::vector<std::size_t>
find_all
(
const
LinePredicate
& predicate)
const
;
49
60
std::size_t
find_unique
(
const
LinePredicate
& predicate,
61
std::string_view description)
const
;
62
66
std::optional<std::size_t>
find_last
(
const
LinePredicate
& predicate)
const
;
67
69
void
insert_line
(std::size_t index, std::string text);
70
72
void
insert_lines
(std::size_t index, std::vector<std::string> new_lines);
73
75
void
remove_line
(std::size_t index);
76
91
void
set_documentclass_option
(
92
std::string_view option,
93
const
std::vector<std::string>& mutually_exclusive_group);
94
100
void
save
()
const
;
101
102
private
:
103
Document
(std::filesystem::path path, std::vector<std::string>
lines
);
104
105
std::filesystem::path path_;
106
std::vector<std::string> lines_;
107
};
108
109
}
// namespace notex
notex::Document
Loads a .tex file as a sequence of lines and offers editing primitives anchored on recognisable landm...
Definition
document.hpp:31
notex::Document::set_documentclass_option
void set_documentclass_option(std::string_view option, const std::vector< std::string > &mutually_exclusive_group)
Rewrites the document's unique \documentclass line so that its bracketed options contain option inste...
Definition
document.cpp:103
notex::Document::load
static Document load(const std::filesystem::path &path)
Loads path as a sequence of lines.
Definition
document.cpp:35
notex::Document::find_last
std::optional< std::size_t > find_last(const LinePredicate &predicate) const
Definition
document.cpp:80
notex::Document::LinePredicate
std::function< bool(const std::string &)> LinePredicate
Definition
document.hpp:35
notex::Document::find_unique
std::size_t find_unique(const LinePredicate &predicate, std::string_view description) const
Locates the single line matching predicate.
Definition
document.cpp:57
notex::Document::find_all
std::vector< std::size_t > find_all(const LinePredicate &predicate) const
Definition
document.cpp:48
notex::Document::insert_lines
void insert_lines(std::size_t index, std::vector< std::string > new_lines)
Inserts new_lines, in order, before the current line index.
Definition
document.cpp:92
notex::Document::insert_line
void insert_line(std::size_t index, std::string text)
Inserts text as a new line before the current line index.
Definition
document.cpp:87
notex::Document::remove_line
void remove_line(std::size_t index)
Removes the line at index.
Definition
document.cpp:99
notex::Document::lines
const std::vector< std::string > & lines() const noexcept
Definition
document.hpp:45
notex::Document::save
void save() const
Writes the current lines back to disk atomically.
Definition
document.cpp:169
notex
Definition
assets.hpp:20
Generated by
1.17.0