| /* |
| * Copyright 2018 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef fiddleParser_DEFINED |
| #define fiddleParser_DEFINED |
| |
| #include "parserCommon.h" |
| |
| class BmhParser; |
| |
| class FiddleBase : public JsonCommon { |
| protected: |
| FiddleBase(BmhParser* bmh) |
| : fBmhParser(bmh) |
| , fContinuation(false) |
| , fTextOut(false) |
| , fPngOut(false) |
| { |
| this->reset(); |
| } |
| |
| void reset() override { |
| INHERITED::reset(); |
| } |
| |
| Definition* findExample(string name) const; |
| bool parseFiddles(); |
| virtual bool pngOut(Definition* example) = 0; |
| virtual bool textOut(Definition* example, const char* stdOutStart, |
| const char* stdOutEnd) = 0; |
| |
| BmhParser* fBmhParser; // must be writable; writes example hash |
| string fFullName; |
| bool fContinuation; |
| bool fTextOut; |
| bool fPngOut; |
| private: |
| typedef JsonCommon INHERITED; |
| }; |
| |
| class FiddleParser : public FiddleBase { |
| public: |
| FiddleParser(BmhParser* bmh) : FiddleBase(bmh) { |
| fTextOut = true; |
| } |
| |
| bool parseFromFile(const char* path) override; |
| |
| private: |
| bool pngOut(Definition* example) override { |
| return true; |
| } |
| |
| bool textOut(Definition* example, const char* stdOutStart, |
| const char* stdOutEnd) override; |
| |
| typedef FiddleBase INHERITED; |
| }; |
| |
| class Catalog : public FiddleBase { |
| public: |
| Catalog(BmhParser* bmh) : FiddleBase(bmh) {} |
| |
| bool appendFile(string path); |
| bool closeCatalog(const char* outDir); |
| bool openCatalog(const char* inDir); |
| bool openStatus(const char* inDir); |
| |
| bool parseFromFile(const char* path) override ; |
| private: |
| bool pngOut(Definition* example) override; |
| bool textOut(Definition* example, const char* stdOutStart, |
| const char* stdOutEnd) override; |
| |
| string fDocsDir; |
| |
| typedef FiddleBase INHERITED; |
| }; |
| |
| #endif |