| Index: base/ini_parser.h
|
| diff --git a/base/ini_parser.h b/base/ini_parser.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..0aa7754d34d8020fa2ae57ce3b92ca97df9dc6b9
|
| --- /dev/null
|
| +++ b/base/ini_parser.h
|
| @@ -0,0 +1,69 @@
|
| +// Copyright 2013 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef BASE_INI_PARSER_H_
|
| +#define BASE_INI_PARSER_H_
|
| +
|
| +#include <string>
|
| +
|
| +#include "base/base_export.h"
|
| +#include "base/basictypes.h"
|
| +#include "base/values.h"
|
| +
|
| +namespace base {
|
| +
|
| +// Parses INI files in a string. Users should in inherit from this class.
|
| +// This is a very basic INI parser with these characteristics:
|
| +// - Ignores blank lines.
|
| +// - Ignores comment lines beginning with '#' or ';'.
|
| +// - Duplicate key names in the same section will simply cause repeated calls
|
| +// to HandleTriplet with the same |section| and |key| parameters.
|
| +// - No escape characters supported.
|
| +// - Global properties result in calls to HandleTriplet with an empty string in
|
| +// the |section| argument.
|
| +// - Section headers begin with a '[' character. It is recommended, but
|
| +// not required to close the header bracket with a ']' character. All
|
| +// characters after a closing ']' character is ignored.
|
| +// - Key value pairs are indicated with an '=' character. Whitespace is not
|
| +// ignored. Quoting is not supported. Everything before the first '='
|
| +// is considered the |key|, and everything after is the |value|.
|
| +class BASE_EXPORT INIParser {
|
| + public:
|
| + INIParser();
|
| + virtual ~INIParser();
|
| +
|
| + // May only be called once per instance.
|
| + void Parse(const std::string& content);
|
| +
|
| + private:
|
| + virtual void HandleTriplet(const std::string& section,
|
| + const std::string& key,
|
| + const std::string& value) = 0;
|
| +
|
| + bool used_;
|
| +};
|
| +
|
| +// Parsed values are stored as strings at the "section.key" path. Triplets with
|
| +// |section| or |key| parameters containing '.' are ignored.
|
| +class BASE_EXPORT DictionaryValueINIParser : public INIParser {
|
| + public:
|
| + DictionaryValueINIParser();
|
| + virtual ~DictionaryValueINIParser();
|
| +
|
| + const DictionaryValue& root() const { return root_; }
|
| +
|
| + private:
|
| + // INIParser implementation.
|
| + virtual void HandleTriplet(const std::string& section,
|
| + const std::string& key,
|
| + const std::string& value) OVERRIDE;
|
| +
|
| + DictionaryValue root_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(DictionaryValueINIParser);
|
| +};
|
| +
|
| +} // namespace base
|
| +
|
| +#endif // BASE_INI_PARSER_H_
|
|
|