Skip to content

Commit b6ada4f

Browse files
committed
Renamed methods.
Split out logic into single use utility methods.
1 parent 0757ab2 commit b6ada4f

File tree

2 files changed

+94
-51
lines changed

2 files changed

+94
-51
lines changed

includes/RhythmGameUtilities/Parsers.hpp

Lines changed: 82 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -99,96 +99,139 @@ std::vector<ChartSection> ParseSectionsFromChart(const char *contents)
9999
return sections;
100100
}
101101

102-
std::map<int, int>
103-
ParseTimeSignaturesFromChartSection(std::vector<ChartSection> sections)
102+
std::map<int, int> ParseTimeSignaturesFromChartSection(ChartSection section)
104103
{
105104
auto timeSignatures = std::map<int, int>();
106105

107-
for (auto &section : sections)
106+
if (section.name == ToString(NamedSection::SyncTrack))
108107
{
109-
if (section.name == ToString(NamedSection::SyncTrack))
108+
for (auto &line : section.lines)
110109
{
111-
for (auto &line : section.lines)
110+
if (line.second.front() == ToString(TypeCode::TimeSignatureMarker))
112111
{
113-
if (line.second.front() ==
114-
ToString(TypeCode::TimeSignatureMarker))
115-
{
116-
timeSignatures.insert(
117-
{std::stoi(line.first), std::stoi(line.second.at(1))});
118-
}
112+
timeSignatures.insert(
113+
{std::stoi(line.first), std::stoi(line.second.at(1))});
119114
}
120115
}
121116
}
122117

123118
return timeSignatures;
124119
}
125120

126-
std::map<int, int> ParseBpmFromChartSection(std::vector<ChartSection> sections)
121+
std::map<int, int>
122+
ParseTimeSignaturesFromChartSections(std::vector<ChartSection> sections)
127123
{
128-
auto bpm = std::map<int, int>();
129-
130124
for (auto &section : sections)
131125
{
132126
if (section.name == ToString(NamedSection::SyncTrack))
133127
{
134-
for (auto &line : section.lines)
128+
return ParseTimeSignaturesFromChartSection(section);
129+
}
130+
}
131+
132+
return std::map<int, int>();
133+
}
134+
135+
std::map<int, int> ParseBpmFromChartSection(ChartSection section)
136+
{
137+
auto bpm = std::map<int, int>();
138+
139+
if (section.name == ToString(NamedSection::SyncTrack))
140+
{
141+
for (auto &line : section.lines)
142+
{
143+
if (line.second.front() == ToString(TypeCode::BPM_Marker))
135144
{
136-
if (line.second.front() == ToString(TypeCode::BPM_Marker))
137-
{
138-
bpm.insert(
139-
{std::stoi(line.first), std::stoi(line.second.at(1))});
140-
}
145+
bpm.insert(
146+
{std::stoi(line.first), std::stoi(line.second.at(1))});
141147
}
142148
}
143149
}
144150

145151
return bpm;
146152
}
147153

148-
std::vector<Note> ParseNotesFromChartSection(std::vector<ChartSection> sections,
154+
std::map<int, int> ParseBpmFromChartSections(std::vector<ChartSection> sections)
155+
{
156+
for (auto &section : sections)
157+
{
158+
if (section.name == ToString(NamedSection::SyncTrack))
159+
{
160+
return ParseBpmFromChartSection(section);
161+
}
162+
}
163+
164+
return std::map<int, int>();
165+
}
166+
167+
std::vector<Note> ParseNotesFromChartSection(ChartSection section,
149168
Difficulty difficulty)
150169
{
151170
auto notes = std::vector<Note>();
152171

153-
for (auto &section : sections)
172+
if (section.name == ToString(difficulty) + "Single")
154173
{
155-
if (section.name == ToString(difficulty) + "Single")
174+
for (auto &line : section.lines)
156175
{
157-
for (auto &line : section.lines)
176+
if (line.second.front() == ToString(TypeCode::NoteMarker))
158177
{
159-
if (line.second.front() == ToString(TypeCode::NoteMarker))
160-
{
161-
notes.push_back({std::stoi(line.first),
162-
std::stoi(line.second.at(1)),
163-
std::stoi(line.second.at(2))});
164-
}
178+
notes.push_back({std::stoi(line.first),
179+
std::stoi(line.second.at(1)),
180+
std::stoi(line.second.at(2))});
165181
}
166182
}
167183
}
168184

169185
return notes;
170186
}
171187

172-
std::map<int, std::string>
173-
ParseLyricsFromChartSection(std::vector<ChartSection> sections)
188+
std::vector<Note>
189+
ParseNotesFromChartSections(std::vector<ChartSection> sections,
190+
Difficulty difficulty)
174191
{
175-
auto lyrics = std::map<int, std::string>();
192+
auto notes = std::vector<Note>();
176193

177194
for (auto &section : sections)
178195
{
179-
if (section.name == ToString(NamedSection::Events))
196+
if (section.name == ToString(difficulty) + "Single")
180197
{
181-
for (auto &line : section.lines)
198+
return ParseNotesFromChartSection(section, difficulty);
199+
}
200+
}
201+
202+
return std::vector<Note>();
203+
}
204+
205+
std::map<int, std::string> ParseLyricsFromChartSection(ChartSection section)
206+
{
207+
auto lyrics = std::map<int, std::string>();
208+
209+
if (section.name == ToString(NamedSection::Events))
210+
{
211+
for (auto &line : section.lines)
212+
{
213+
if (line.second.back().rfind("lyric", 0) == 0)
182214
{
183-
if (line.second.back().rfind("lyric", 0) == 0)
184-
{
185-
lyrics.insert({std::stoi(line.first), line.second.at(1)});
186-
}
215+
lyrics.insert({std::stoi(line.first), line.second.at(1)});
187216
}
188217
}
189218
}
190219

191220
return lyrics;
192221
}
193222

223+
std::map<int, std::string>
224+
ParseLyricsFromChartSections(std::vector<ChartSection> sections)
225+
{
226+
for (auto &section : sections)
227+
{
228+
if (section.name == ToString(NamedSection::Events))
229+
{
230+
return ParseLyricsFromChartSection(section);
231+
}
232+
}
233+
234+
return std::map<int, std::string>();
235+
}
236+
194237
} // namespace RhythmGameUtilities

tests/RhythmGameUtilities/Parsers.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -104,44 +104,44 @@ void testParseValuesFromChartSections()
104104
std::cout << ".";
105105
}
106106

107-
void testParseTimeSignaturesFromChartSection()
107+
void testParseTimeSignaturesFromChartSections()
108108
{
109109
auto sections = ParseSectionsFromChart(contents);
110110

111-
auto lines = ParseTimeSignaturesFromChartSection(sections);
111+
auto lines = ParseTimeSignaturesFromChartSections(sections);
112112

113113
assert(lines.size() == 4);
114114

115115
std::cout << ".";
116116
}
117117

118-
void testParseBpmFromChartSection()
118+
void testParseBpmFromChartSections()
119119
{
120120
auto sections = ParseSectionsFromChart(contents);
121121

122-
auto lines = ParseBpmFromChartSection(sections);
122+
auto lines = ParseBpmFromChartSections(sections);
123123

124124
assert(lines.size() == 7);
125125

126126
std::cout << ".";
127127
}
128128

129-
void testParseNotesFromChartSection()
129+
void testParseNotesFromChartSections()
130130
{
131131
auto sections = ParseSectionsFromChart(contents);
132132

133-
auto lines = ParseNotesFromChartSection(sections, Difficulty::Expert);
133+
auto lines = ParseNotesFromChartSections(sections, Difficulty::Expert);
134134

135135
assert(lines.size() == 8);
136136

137137
std::cout << ".";
138138
}
139139

140-
void testParseLyricsFromChartSection()
140+
void testParseLyricsFromChartSections()
141141
{
142142
auto sections = ParseSectionsFromChart(contents);
143143

144-
auto lines = ParseLyricsFromChartSection(sections);
144+
auto lines = ParseLyricsFromChartSections(sections);
145145

146146
assert(lines.size() == 12);
147147

@@ -153,10 +153,10 @@ int main()
153153
testParseSectionsFromChart();
154154
testParseValuesFromChartSections();
155155

156-
testParseTimeSignaturesFromChartSection();
157-
testParseBpmFromChartSection();
158-
testParseNotesFromChartSection();
159-
testParseLyricsFromChartSection();
156+
testParseTimeSignaturesFromChartSections();
157+
testParseBpmFromChartSections();
158+
testParseNotesFromChartSections();
159+
testParseLyricsFromChartSections();
160160

161161
return 0;
162162
}

0 commit comments

Comments
 (0)