aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/bookmaker/bookmaker.cpp
diff options
context:
space:
mode:
authorGravatar Cary Clark <caryclark@google.com>2017-09-01 19:21:29 +0000
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-09-01 19:21:40 +0000
commite04038462747f409417435fee3c2b2c84ed7d651 (patch)
treeda211a09324b8ae95646c7afaa4d658b7e5a8be7 /tools/bookmaker/bookmaker.cpp
parent7b6d64ad8880226fcf0a8ffaab7e0afcfce74948 (diff)
Revert "wip spelling mania"
This reverts commit da65a0489ae429f026bad32c9a0ef2010f40e175. Reason for revert: fails to build on linux Original change's description: > wip spelling mania > > Work on spell-checker > to identify errors and > isolate more concepts > requiring definitions. > > Docs-Preview: https://skia.org/?cl=41180 > TBR: reed@google.com > Bug: skia: 6898 > Change-Id: I0759beb42eaf6095908a9bd7decfcd0026253609 > Reviewed-on: https://skia-review.googlesource.com/41180 > Reviewed-by: Cary Clark <caryclark@skia.org> > Commit-Queue: Cary Clark <caryclark@skia.org> TBR=caryclark@google.com,caryclark@skia.org Change-Id: I173e50ea5b51273cd316ac9964af3a498b5300e4 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: skia: 6898 Reviewed-on: https://skia-review.googlesource.com/42140 Reviewed-by: Cary Clark <caryclark@google.com> Commit-Queue: Cary Clark <caryclark@google.com>
Diffstat (limited to 'tools/bookmaker/bookmaker.cpp')
-rw-r--r--tools/bookmaker/bookmaker.cpp143
1 files changed, 54 insertions, 89 deletions
diff --git a/tools/bookmaker/bookmaker.cpp b/tools/bookmaker/bookmaker.cpp
index ac8f04da9f..b3d3190b78 100644
--- a/tools/bookmaker/bookmaker.cpp
+++ b/tools/bookmaker/bookmaker.cpp
@@ -7,6 +7,7 @@
#include "bookmaker.h"
+#include "SkCommandLineFlags.h"
#include "SkOSFile.h"
#include "SkOSPath.h"
@@ -789,12 +790,12 @@ bool RootDefinition::dumpUnVisited() {
return allStructElementsFound;
}
-const Definition* RootDefinition::find(const string& ref, AllowParens allowParens) const {
+const Definition* RootDefinition::find(const string& ref) const {
const auto leafIter = fLeaves.find(ref);
if (leafIter != fLeaves.end()) {
return &leafIter->second;
}
- if (AllowParens::kYes == allowParens && string::npos == ref.find("()")) {
+ if (string::npos == ref.find("()")) {
string withParens = ref + "()";
const auto parensIter = fLeaves.find(withParens);
if (parensIter != fLeaves.end()) {
@@ -809,7 +810,7 @@ const Definition* RootDefinition::find(const string& ref, AllowParens allowParen
const Definition* result = nullptr;
for (const auto& branch : fBranches) {
const RootDefinition* rootDef = branch.second;
- result = rootDef->find(ref, allowParens);
+ result = rootDef->find(ref);
if (result) {
break;
}
@@ -865,7 +866,7 @@ bool BmhParser::addDefinition(const char* defStart, bool hasEnd, MarkType markTy
}
definition = fParent;
} else {
- if (!hasEnd && fRoot->find(name, RootDefinition::AllowParens::kNo)) {
+ if (!hasEnd && fRoot->find(name)) {
return this->reportError<bool>("duplicate symbol");
}
if (MarkType::kStruct == markType || MarkType::kClass == markType) {
@@ -989,7 +990,7 @@ bool BmhParser::addDefinition(const char* defStart, bool hasEnd, MarkType markTy
case MarkType::kDefinedBy: {
string prefixed(fRoot->fName);
const char* start = fChar;
- string name(start, this->trimmedBracketEnd(fMC) - start);
+ string name(start, this->trimmedBracketEnd(fMC, OneLine::kYes) - start);
prefixed += "::" + name;
this->skipToEndBracket(fMC);
const auto leafIter = fRoot->fLeaves.find(prefixed);
@@ -1038,7 +1039,7 @@ bool BmhParser::addDefinition(const char* defStart, bool hasEnd, MarkType markTy
definition->fName = typeNameBuilder[0];
definition->fFiddle = fParent->fFiddle;
definition->fContentStart = fChar;
- definition->fContentEnd = this->trimmedBracketEnd(fMC);
+ definition->fContentEnd = this->trimmedBracketEnd(fMC, OneLine::kYes);
this->skipToEndBracket(fMC);
SkAssertResult(fMC == this->next());
SkAssertResult(fMC == this->next());
@@ -1078,9 +1079,6 @@ bool BmhParser::addDefinition(const char* defStart, bool hasEnd, MarkType markTy
fMarkup.emplace_front(markType, defStart, fLineCount, fParent);
definition = &fMarkup.front();
definition->fContentStart = fChar;
- if (MarkType::kFormula == markType && MarkType::kRow == definition->fParent->fMarkType) {
- SkDebugf("");
- }
definition->fName = typeNameBuilder[0];
definition->fFiddle = fParent->fFiddle;
char suffix = '\0';
@@ -1129,7 +1127,7 @@ bool BmhParser::addDefinition(const char* defStart, bool hasEnd, MarkType markTy
definition->fName = typeNameBuilder[0];
definition->fFiddle = normalized_name(typeNameBuilder[0]);
definition->fContentStart = fChar;
- definition->fContentEnd = this->trimmedBracketEnd('\n');
+ definition->fContentEnd = this->trimmedBracketEnd('\n', OneLine::kYes);
definition->fTerminator = this->lineEnd() - 1;
fParent->fChildren.push_back(definition);
if (MarkType::kAnchor == markType) {
@@ -1139,7 +1137,7 @@ bool BmhParser::addDefinition(const char* defStart, bool hasEnd, MarkType markTy
this->skipWhiteSpace();
Definition* link = &fMarkup.front();
link->fContentStart = fChar;
- link->fContentEnd = this->trimmedBracketEnd(fMC);
+ link->fContentEnd = this->trimmedBracketEnd(fMC, OneLine::kYes);
this->skipToEndBracket(fMC);
SkAssertResult(fMC == this->next());
SkAssertResult(fMC == this->next());
@@ -1395,29 +1393,14 @@ int BmhParser::endHashCount() const {
return count;
}
-bool BmhParser::endTableColumn(const char* end, const char* terminator) {
- if (!this->popParentStack(fParent)) {
- return false;
- }
- fWorkingColumn->fContentEnd = end;
- fWorkingColumn->fTerminator = terminator;
- fColStart = fChar - 1;
- this->skipSpace();
- fTableState = TableState::kColumnStart;
- return true;
-}
-
// FIXME: some examples may produce different output on different platforms
// if the text output can be different, think of how to author that
bool BmhParser::findDefinitions() {
bool lineStart = true;
- const char* lastChar = nullptr;
- const char* lastMC = nullptr;
fParent = nullptr;
while (!this->eof()) {
if (this->peek() == fMC) {
- lastMC = fChar;
this->next();
if (this->peek() == fMC) {
this->next();
@@ -1425,25 +1408,10 @@ bool BmhParser::findDefinitions() {
return this->reportError<bool>("expected definition");
}
if (this->peek() != fMC) {
- if (MarkType::kColumn == fParent->fMarkType) {
- SkASSERT(TableState::kColumnEnd == fTableState);
- if (!this->endTableColumn(lastChar, lastMC)) {
- return false;
- }
- SkASSERT(fRow);
- if (!this->popParentStack(fParent)) {
- return false;
- }
- fRow->fContentEnd = fWorkingColumn->fContentEnd;
- fWorkingColumn = nullptr;
- fRow = nullptr;
- fTableState = TableState::kNone;
- } else {
- vector<string> parentName;
- parentName.push_back(fParent->fName);
- if (!this->addDefinition(fChar - 1, true, fParent->fMarkType, parentName)) {
- return false;
- }
+ vector<string> parentName;
+ parentName.push_back(fParent->fName);
+ if (!this->addDefinition(fChar - 1, true, fParent->fMarkType, parentName)) {
+ return false;
}
} else {
SkAssertResult(this->next() == fMC);
@@ -1494,22 +1462,15 @@ bool BmhParser::findDefinitions() {
&& MarkType::kLegend != fParent->fMarkType
&& MarkType::kList != fParent->fMarkType)) {
int endHashes = this->endHashCount();
- if (endHashes <= 1) {
+ if (endHashes <= 1) { // one line comment
if (fParent) {
- if (TableState::kColumnEnd == fTableState) {
- if (!this->endTableColumn(lastChar, lastMC)) {
- return false;
- }
- } else { // one line comment
- fMarkup.emplace_front(MarkType::kComment, fChar - 1, fLineCount,
- fParent);
- Definition* comment = &fMarkup.front();
- comment->fContentStart = fChar - 1;
- this->skipToEndBracket('\n');
- comment->fContentEnd = fChar;
- comment->fTerminator = fChar;
- fParent->fChildren.push_back(comment);
- }
+ fMarkup.emplace_front(MarkType::kComment, fChar - 1, fLineCount, fParent);
+ Definition* comment = &fMarkup.front();
+ comment->fContentStart = fChar - 1;
+ this->skipToEndBracket('\n');
+ comment->fContentEnd = fChar;
+ comment->fTerminator = fChar;
+ fParent->fChildren.push_back(comment);
} else {
fChar = fLine + this->lineLength() - 1;
}
@@ -1524,37 +1485,41 @@ bool BmhParser::findDefinitions() {
return this->reportError<bool>("missing table");
}
}
- } else if (TableState::kNone == fTableState) {
+ } else {
bool parentIsList = MarkType::kList == fParent->fMarkType;
- if (parentIsList && fLineCount > 1230) {
- SkDebugf("");
- }
// fixme? no nested tables for now
- fColStart = fChar - 1;
- fMarkup.emplace_front(MarkType::kRow, fColStart, fLineCount, fParent);
- fRow = &fMarkup.front();
- fRow->fName = fParent->fName;
+ const char* colStart = fChar - 1;
+ fMarkup.emplace_front(MarkType::kRow, colStart, fLineCount, fParent);
+ Definition* row = &fMarkup.front();
this->skipWhiteSpace();
- fRow->fContentStart = fChar;
- this->setAsParent(fRow);
- fTableState = TableState::kColumnStart;
- }
- if (TableState::kColumnStart == fTableState) {
- fMarkup.emplace_front(MarkType::kColumn, fColStart, fLineCount, fParent);
- fWorkingColumn = &fMarkup.front();
- fWorkingColumn->fName = fParent->fName;
- fWorkingColumn->fContentStart = fChar;
- this->setAsParent(fWorkingColumn);
- fTableState = TableState::kColumnEnd;
- continue;
+ row->fContentStart = fChar;
+ this->setAsParent(row);
+ const char* lineEnd = this->lineEnd();
+ do {
+ fMarkup.emplace_front(MarkType::kColumn, colStart, fLineCount, fParent);
+ Definition* column = &fMarkup.front();
+ column->fContentStart = fChar;
+ column->fContentEnd = this->trimmedBracketEnd(fMC,
+ parentIsList ? OneLine::kNo : OneLine::kYes);
+ this->skipToEndBracket(fMC);
+ colStart = fChar;
+ SkAssertResult(fMC == this->next());
+ if (fMC == this->peek()) {
+ this->next();
+ }
+ column->fTerminator = fChar;
+ fParent->fChildren.push_back(column);
+ this->skipSpace();
+ } while (fChar < lineEnd && '\n' != this->peek());
+ if (!this->popParentStack(fParent)) {
+ return false;
+ }
+ const Definition* lastCol = row->fChildren.back();
+ row->fContentEnd = lastCol->fContentEnd;
}
}
}
- char nextChar = this->next();
- lineStart = nextChar == '\n';
- if (' ' < nextChar) {
- lastChar = fChar;
- }
+ lineStart = this->next() == '\n';
}
if (fParent) {
return this->reportError<bool>("mismatched end");
@@ -2150,7 +2115,7 @@ DEFINE_string2(include, i, "", "A path to a *.h file or a directory.");
DEFINE_bool2(hack, k, false, "Do a find/replace hack to update all *.bmh files. (Requires -b)");
DEFINE_bool2(populate, p, false, "Populate include from bmh. (Requires -b -i)");
DEFINE_string2(ref, r, "", "Resolve refs and write bmh_*.md files to path. (Requires -b)");
-DEFINE_string2(spellcheck, s, "", "Spell-check [once, all, mispellings]. (Requires -b)");
+DEFINE_bool2(spellcheck, s, false, "Spell-check. (Requires -b)");
DEFINE_bool2(tokens, t, false, "Output include tokens. (Requires -i)");
DEFINE_bool2(crosscheck, x, false, "Check bmh against includes. (Requires -b -i)");
@@ -2233,7 +2198,7 @@ int main(int argc, char** const argv) {
SkCommandLineFlags::PrintUsage();
return 1;
}
- if (FLAGS_bmh.isEmpty() && !FLAGS_spellcheck.isEmpty()) {
+ if (FLAGS_bmh.isEmpty() && FLAGS_spellcheck) {
SkDebugf("-s requires -b\n");
SkCommandLineFlags::PrintUsage();
return 1;
@@ -2292,8 +2257,8 @@ int main(int argc, char** const argv) {
MdOut mdOut(bmhParser);
mdOut.buildReferences(FLAGS_bmh[0], FLAGS_ref[0]);
}
- if (!done && !FLAGS_spellcheck.isEmpty() && FLAGS_examples.isEmpty()) {
- bmhParser.spellCheck(FLAGS_bmh[0], FLAGS_spellcheck);
+ if (!done && FLAGS_spellcheck && FLAGS_examples.isEmpty()) {
+ bmhParser.spellCheck(FLAGS_bmh[0]);
done = true;
}
int examples = 0;