16 #include "../base/vector.h" 17 #include "../tools/map_utils.h" 18 #include "../tools/string_utils.h" 31 std::set<std::string> keywords;
33 std::map<std::string, std::string> setting_map;
35 static const std::map<std::string, CITE_TYPE> & GetNameMap() {
36 static std::map<std::string, CITE_TYPE> name_map;
37 if (name_map.size() == 0) {
40 name_map[
"book"] =
BOOK;
45 name_map[
"manual"] =
MANUAL;
47 name_map[
"misc"] =
MISC;
57 static const std::multimap<CITE_TYPE, std::string> & GetRNameMap() {
71 const std::set<std::string> &
GetKeywords()
const {
return keywords; }
73 return keywords.find(kw) != keywords.end();
76 const std::string &
GetVal(
const std::string & setting)
const {
90 template <
typename... ARGS>
98 template <
class T>
Citation &
SetVal(
const std::string & setting, T && val) {
117 const auto & name_map = GetNameMap();
118 auto map_it = name_map.find(in_type);
119 if (map_it == name_map.end()) type =
ERROR;
120 else type = map_it->second;
125 if (author_list.
size() == 0)
return;
126 out << author_list[0].GetReverseName();
129 for (
size_t i = 1; i < author_list.
size() - 1; i++) {
130 out <<
", " << author_list[i].GetFullName();
134 if (author_list.
size() > 1) out <<
", and " << author_list.
back().GetFullName();
138 void PrintERROR(std::ostream & out=std::cout) { out <<
"ERROR with printing citation."; }
141 void PrintBOOK(std::ostream & out=std::cout) { (void) out; }
148 void PrintMISC(std::ostream & out=std::cout) { (void) out; }
154 void Print(std::ostream & out=std::cout) {
static const std::string & empty_string()
Definition: string_utils.h:29
void PrintIN_BOOK(std::ostream &out=std::cout)
Definition: Citation.h:144
Citation & SetEndPage(T &&val)
Definition: Citation.h:111
void PrintMANUAL(std::ostream &out=std::cout)
Definition: Citation.h:146
Citation & SetMonth(T &&val)
Definition: Citation.h:109
Citation & AddKeyword(const std::string &kw)
Definition: Citation.h:96
std::multimap< B, A > flip_map(const std::map< A, B > &src)
Take an std::map<A,B> and return the flipped map (now multimap to be safe): std::multimap<B,A>
Definition: map_utils.h:56
void SetType(std::string in_type)
Definition: Citation.h:115
void PrintBOOKLET(std::ostream &out=std::cout)
Definition: Citation.h:142
std::string to_string(ALL_TYPES &&...all_values)
Definition: string_utils.h:511
const std::string & GetVolume() const
Definition: Citation.h:83
void PrintIN_COLLECTION(std::ostream &out=std::cout)
Definition: Citation.h:145
void PrintMASTERS_THESIS(std::ostream &out=std::cout)
Definition: Citation.h:147
const std::string & GetTitle() const
Definition: Citation.h:80
Citation & AddNote(const std::string ¬e)
Definition: Citation.h:95
Definition: Citation.h:25
Definition: Citation.h:25
Definition: Citation.h:25
const std::string & GetMonth() const
Definition: Citation.h:86
void PrintTECH_REPORT(std::ostream &out=std::cout)
Definition: Citation.h:151
void SetType(CITE_TYPE in_type)
Definition: Citation.h:114
void PrintBOOK(std::ostream &out=std::cout)
Definition: Citation.h:141
void Print(std::ostream &out=std::cout)
Definition: Citation.h:154
Definition: Citation.h:23
Definition: Citation.h:25
const emp::vector< Author > & GetAuthors() const
Definition: Citation.h:69
void push_back(PB_Ts &&...args)
Definition: vector.h:189
Definition: Citation.h:25
Citation(CITE_TYPE in_type=UNKNOWN)
Definition: Citation.h:63
Citation & SetYear(T &&val)
Definition: Citation.h:107
void PrintUNKNOWN(std::ostream &out=std::cout)
Definition: Citation.h:139
size_t size() const
Definition: vector.h:151
void emplace_back(ARGS &&...args)
Definition: vector.h:219
const bool HasKeyword(const std::string &kw) const
Definition: Citation.h:72
~Citation()
Definition: Citation.h:65
Citation & AddAuthor(ARGS &&...args)
Definition: Citation.h:91
CITE_TYPE
Definition: Citation.h:25
Definition: Citation.h:25
static const PrintStr endl("<br>")
Pre-define emp::endl to insert a "<br>" and thus acting like a newline.
Citation & SetBookTitle(T &&val)
Definition: Citation.h:105
Definition: Citation.h:25
Definition: Citation.h:26
Definition: Citation.h:26
Definition: Citation.h:26
const std::string & GetVal(const std::string &setting) const
Definition: Citation.h:76
static std::string to_lower(std::string value)
Convert a string to all lowercase.
Definition: string_utils.h:132
Definition: Citation.h:25
void PrintAuthors(std::ostream &out=std::cout)
Definition: Citation.h:124
void PrintPROCEEDINGS(std::ostream &out=std::cout)
Definition: Citation.h:150
CITE_TYPE GetType() const
Definition: Citation.h:68
const std::set< std::string > & GetKeywords() const
Definition: Citation.h:71
const std::string & GetBookTitle() const
Definition: Citation.h:82
Citation & SetTitle(T &&val)
Definition: Citation.h:103
void PrintARTICLE(std::ostream &out=std::cout)
Definition: Citation.h:140
Definition: Citation.h:25
If we are in emscripten, make sure to include the header.
Definition: array.h:37
const std::string & GetEndPage() const
Definition: Citation.h:88
Build a debug wrapper emp::vector around std::vector.
Definition: vector.h:42
Definition: Citation.h:26
Citation & SetPages(T &&p1, T &&p2)
Definition: Citation.h:112
T & back()
Definition: vector.h:183
void PrintPHD_THESIS(std::ostream &out=std::cout)
Definition: Citation.h:149
void PrintUNPUBLISHED(std::ostream &out=std::cout)
Definition: Citation.h:152
Citation & SetVal(const std::string &setting, T &&val)
Definition: Citation.h:98
void PrintERROR(std::ostream &out=std::cout)
Definition: Citation.h:138
const auto & FindRef(const MAP_T &in_map, const KEY_T &key, const typename MAP_T::mapped_type &dval)
Definition: map_utils.h:39
void PrintCONFERENCE(std::ostream &out=std::cout)
Definition: Citation.h:143
void PrintMISC(std::ostream &out=std::cout)
Definition: Citation.h:148
const std::string & GetJournal() const
Definition: Citation.h:81
Definition: Citation.h:26
const std::string & GetNumber() const
Definition: Citation.h:85
Citation & operator=(const Citation &)=default
const std::string & GetStartPage() const
Definition: Citation.h:87
Citation & SetNumber(T &&val)
Definition: Citation.h:108
Citation & SetVolume(T &&val)
Definition: Citation.h:106
Definition: Citation.h:26
Citation & SetJournal(T &&val)
Definition: Citation.h:104
const std::string & GetYear() const
Definition: Citation.h:84
const emp::vector< std::string > & GetNotes() const
Definition: Citation.h:70
Citation & SetStartPage(T &&val)
Definition: Citation.h:110