SnapmaticJson: fix indent of empty array and objects
This commit is contained in:
		
							parent
							
								
									7e13f01d6d
								
							
						
					
					
						commit
						a10d259db1
					
				
					 1 changed files with 28 additions and 24 deletions
				
			
		| 
						 | 
				
			
			@ -27,14 +27,14 @@ void serializer(std::ostream &os, const boost::json::value &jv, std::string *ind
 | 
			
		|||
        indent = &indent_;
 | 
			
		||||
    switch (jv.kind()) {
 | 
			
		||||
    case boost::json::kind::object: {
 | 
			
		||||
        if (do_indent) {
 | 
			
		||||
            os << "{\n";
 | 
			
		||||
            indent->append(4, ' ');
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
            os << "{";
 | 
			
		||||
        auto const &obj = jv.get_object();
 | 
			
		||||
        if (!obj.empty()) {
 | 
			
		||||
            if (do_indent) {
 | 
			
		||||
                os << "{\n";
 | 
			
		||||
                indent->append(4, ' ');
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
                os << "{";
 | 
			
		||||
            auto it = obj.begin();
 | 
			
		||||
            for (;;) {
 | 
			
		||||
                if (do_indent)
 | 
			
		||||
| 
						 | 
				
			
			@ -49,25 +49,27 @@ void serializer(std::ostream &os, const boost::json::value &jv, std::string *ind
 | 
			
		|||
                else
 | 
			
		||||
                    os << ",";
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        if (do_indent) {
 | 
			
		||||
            os << "\n";
 | 
			
		||||
            indent->resize(indent->size() - 4);
 | 
			
		||||
            os << *indent << "}";
 | 
			
		||||
            if (do_indent) {
 | 
			
		||||
                os << "\n";
 | 
			
		||||
                indent->resize(indent->size() - 4);
 | 
			
		||||
                os << *indent << "}";
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
                os << "}";
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
            os << "}";
 | 
			
		||||
            os << "{}";
 | 
			
		||||
        break;
 | 
			
		||||
    }
 | 
			
		||||
    case boost::json::kind::array: {
 | 
			
		||||
        if (do_indent) {
 | 
			
		||||
            os << "[\n";
 | 
			
		||||
            indent->append(4, ' ');
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
            os << "[";
 | 
			
		||||
        auto const &arr = jv.get_array();
 | 
			
		||||
        if (!arr.empty()) {
 | 
			
		||||
            if (do_indent) {
 | 
			
		||||
                os << "[\n";
 | 
			
		||||
                indent->append(4, ' ');
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
                os << "[";
 | 
			
		||||
            auto it = arr.begin();
 | 
			
		||||
            for (;;) {
 | 
			
		||||
                if (do_indent)
 | 
			
		||||
| 
						 | 
				
			
			@ -80,14 +82,16 @@ void serializer(std::ostream &os, const boost::json::value &jv, std::string *ind
 | 
			
		|||
                else
 | 
			
		||||
                    os << ",";
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        if (do_indent) {
 | 
			
		||||
            os << "\n";
 | 
			
		||||
            indent->resize(indent->size() - 4);
 | 
			
		||||
            os << *indent << "]";
 | 
			
		||||
            if (do_indent) {
 | 
			
		||||
                os << "\n";
 | 
			
		||||
                indent->resize(indent->size() - 4);
 | 
			
		||||
                os << *indent << "]";
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
                os << "]";
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
            os << "]";
 | 
			
		||||
            os << "[]";
 | 
			
		||||
        break;
 | 
			
		||||
    }
 | 
			
		||||
    case boost::json::kind::string: {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue