34 enum class parse_status {
39 parse_status status = parse_status::selector;
40 size_t start_index = 0;
44 for (
size_t index = 0; index <
text.size(); index++) {
45 if (
text[index] ==
'/' &&
text[index + 1] ==
'*') {
47 index =
text.index_of(
"*/", index + 2);
50 start_index = index + 1;
52 }
else if (status == parse_status::selector &&
text[index] ==
'{') {
53 current_selector_name =
text.substring(start_index, index - start_index).trim();
54 current_selector.name(
text.substring(start_index, index - start_index).trim());
55 start_index = index + 1;
56 status = parse_status::key;
57 }
else if (status == parse_status::key &&
text[index] ==
'}') {
58 selectors_[current_selector_name] = current_selector;
60 start_index = index + 1;
61 status = parse_status::selector;
62 }
else if (status == parse_status::key &&
text[index] ==
':') {
63 current_key =
text.substring(start_index, index - start_index).trim().to_lower();
65 start_index = index + 1;
66 status = parse_status::value;
67 }
else if (status == parse_status::value &&
text[index] ==
';') {
68 auto value =
text.substring(start_index, index - start_index).trim();
70 start_index = index + 1;
71 current_selector.properties()[current_key] =
property(value);
72 status = parse_status::key;
Contains xtd::argument_exception exception.
static void throws(xtd::helpers::exception_case exception_case, const source_location &location=source_location::current())
Throws an exption with specified exception case.
Implements a xtd::io::text_reader that reads characters from a byte stream.
Definition stream_reader.hpp:28
Represents a reader that can read a sequential series of characters.
Definition text_reader.hpp:38
virtual xtd::string read_to_end()
Reads all characters from the current position to the end of the text_reader and returns them as one ...
object()=default
Create a new instance of the ultimate base class object.
Definition property.hpp:13
Definition selector.hpp:12
@ format
The format is not valid.
Definition exception_case.hpp:49
xtd::basic_string< char > string
Represents text as a sequence of UTF-8 code units.
Definition __string_definitions.hpp:43
Contains classes that represent ASCII and Unicode character encodings; abstract base classes for conv...
Definition basic_string_builder.hpp:17
Contains classes and interfaces that enable browser-server communication. This namespace includes the...
Definition css_reader.hpp:14
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition abstract_object.hpp:8
Contains xtd::object class.
Contains xtd::web::css::selector_map alias.
std::map< xtd::string, xtd::web::css::selector > selector_map
Represents the map of a selector name - selector pair.
Definition selector_map.hpp:13
Contains xtd::io::stream_reader class.