MCPcopy Create free account
hub / github.com/ChaiScript/ChaiScript / parse_string

Method parse_string

include/chaiscript/utility/json.hpp:531–564  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

529 }
530
531 static JSON parse_string( const std::string &str, size_t &offset ) {
532 std::string val;
533 for( char c = str.at(++offset); c != '\"' ; c = str.at(++offset) ) {
534 if( c == '\\' ) {
535 switch( str.at(++offset) ) {
536 case '\"': val += '\"'; break;
537 case '\\': val += '\\'; break;
538 case '/' : val += '/' ; break;
539 case 'b' : val += '\b'; break;
540 case 'f' : val += '\f'; break;
541 case 'n' : val += '\n'; break;
542 case 'r' : val += '\r'; break;
543 case 't' : val += '\t'; break;
544 case 'u' : {
545 val += "\\u" ;
546 for( size_t i = 1; i <= 4; ++i ) {
547 c = str.at(offset+i);
548 if( (c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F') ) {
549 val += c;
550 } else {
551 throw std::runtime_error(std::string("JSON ERROR: String: Expected hex character in unicode escape, found '") + c + "'");
552 }
553 }
554 offset += 4;
555 } break;
556 default : val += '\\'; break;
557 }
558 } else {
559 val += c;
560 }
561 }
562 ++offset;
563 return JSON(val);
564 }
565
566 static JSON parse_number( const std::string &str, size_t &offset ) {
567 std::string val, exp_str;

Callers

nothing calls this directly

Calls 2

stringClass · 0.85
JSONClass · 0.85

Tested by

no test coverage detected