mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 16:14:11 +01:00 
			
		
		
		
	Extracted class EscapedString
This commit is contained in:
		
							
								
								
									
										65
									
								
								JsonGenerator/EscapedString.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								JsonGenerator/EscapedString.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,65 @@ | |||||||
|  | /* | ||||||
|  |  * Arduino JSON library | ||||||
|  |  * Benoit Blanchon 2014 - MIT License | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | #include "EscapedString.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | size_t EscapedString::printTo(Print& p) const | ||||||
|  | { | ||||||
|  |     const char* s = rawString; | ||||||
|  |  | ||||||
|  |     if (!s) | ||||||
|  |     { | ||||||
|  |         return p.print("null"); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     size_t n = 0; | ||||||
|  |  | ||||||
|  |     n += p.write('\"'); | ||||||
|  |  | ||||||
|  |     while (*s) | ||||||
|  |     { | ||||||
|  |         switch (*s) | ||||||
|  |         { | ||||||
|  |         case '"': | ||||||
|  |             n += p.print("\\\""); | ||||||
|  |             break; | ||||||
|  |  | ||||||
|  |         case '\\': | ||||||
|  |             n += p.print("\\\\"); | ||||||
|  |             break; | ||||||
|  |  | ||||||
|  |         case '\b': | ||||||
|  |             n += p.print("\\b"); | ||||||
|  |             break; | ||||||
|  |  | ||||||
|  |         case '\f': | ||||||
|  |             n += p.print("\\f"); | ||||||
|  |             break; | ||||||
|  |  | ||||||
|  |         case '\n': | ||||||
|  |             n += p.print("\\n"); | ||||||
|  |             break; | ||||||
|  |  | ||||||
|  |         case '\r': | ||||||
|  |             n += p.print("\\r"); | ||||||
|  |             break; | ||||||
|  |  | ||||||
|  |         case '\t': | ||||||
|  |             n += p.print("\\t"); | ||||||
|  |             break; | ||||||
|  |  | ||||||
|  |         default: | ||||||
|  |             n += p.write(*s); | ||||||
|  |             break; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         s++; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     n += p.write('\"'); | ||||||
|  |  | ||||||
|  |     return n; | ||||||
|  | } | ||||||
							
								
								
									
										24
									
								
								JsonGenerator/EscapedString.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								JsonGenerator/EscapedString.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | |||||||
|  | /* | ||||||
|  |  * Arduino JSON library | ||||||
|  |  * Benoit Blanchon 2014 - MIT License | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | #pragma once | ||||||
|  |  | ||||||
|  | #include "Print.h" | ||||||
|  |  | ||||||
|  | class EscapedString | ||||||
|  | { | ||||||
|  | public: | ||||||
|  |     EscapedString(const char* s) | ||||||
|  |         : rawString(s) | ||||||
|  |     { | ||||||
|  |  | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     size_t printTo(Print&) const; | ||||||
|  |  | ||||||
|  | private: | ||||||
|  |     const char* rawString; | ||||||
|  | }; | ||||||
|  |  | ||||||
| @@ -3,6 +3,7 @@ | |||||||
|  * Benoit Blanchon 2014 - MIT License |  * Benoit Blanchon 2014 - MIT License | ||||||
|  */ |  */ | ||||||
|  |  | ||||||
|  | #include "EscapedString.h" | ||||||
| #include "JsonValue.h" | #include "JsonValue.h" | ||||||
|  |  | ||||||
| using namespace ArduinoJson::Generator; | using namespace ArduinoJson::Generator; | ||||||
| @@ -27,58 +28,6 @@ size_t JsonValue::printPrintableTo(const Content& c, Print& p) | |||||||
|  |  | ||||||
| size_t JsonValue::printStringTo(const Content& c, Print& p) | size_t JsonValue::printStringTo(const Content& c, Print& p) | ||||||
| { | { | ||||||
|     const char* s = c.asString; |     EscapedString s(c.asString); | ||||||
|  |     return s.printTo(p); | ||||||
|     if (!s) |  | ||||||
|     { |  | ||||||
|         return p.print("null"); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     size_t n = 0; |  | ||||||
|  |  | ||||||
|     n += p.write('\"'); |  | ||||||
|  |  | ||||||
|     while (*s) |  | ||||||
|     { |  | ||||||
|         switch (*s) |  | ||||||
|         { |  | ||||||
|         case '"': |  | ||||||
|             n += p.print("\\\""); |  | ||||||
|             break; |  | ||||||
|  |  | ||||||
|         case '\\': |  | ||||||
|             n += p.print("\\\\"); |  | ||||||
|             break; |  | ||||||
|  |  | ||||||
|         case '\b': |  | ||||||
|             n += p.print("\\b"); |  | ||||||
|             break; |  | ||||||
|  |  | ||||||
|         case '\f': |  | ||||||
|             n += p.print("\\f"); |  | ||||||
|             break; |  | ||||||
|  |  | ||||||
|         case '\n': |  | ||||||
|             n += p.print("\\n"); |  | ||||||
|             break; |  | ||||||
|  |  | ||||||
|         case '\r': |  | ||||||
|             n += p.print("\\r"); |  | ||||||
|             break; |  | ||||||
|  |  | ||||||
|         case '\t': |  | ||||||
|             n += p.print("\\t"); |  | ||||||
|             break; |  | ||||||
|  |  | ||||||
|         default: |  | ||||||
|             n += p.write(*s); |  | ||||||
|             break; |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         s++; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     n += p.write('\"'); |  | ||||||
|  |  | ||||||
|     return n; |  | ||||||
| } | } | ||||||
| @@ -84,6 +84,7 @@ | |||||||
|     </Link> |     </Link> | ||||||
|   </ItemDefinitionGroup> |   </ItemDefinitionGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|  |     <ClCompile Include="..\JsonGenerator\EscapedString.cpp" /> | ||||||
|     <ClCompile Include="..\JsonGenerator\JsonValue.cpp" /> |     <ClCompile Include="..\JsonGenerator\JsonValue.cpp" /> | ||||||
|     <ClCompile Include="..\JsonGenerator\StringBuilder.cpp" /> |     <ClCompile Include="..\JsonGenerator\StringBuilder.cpp" /> | ||||||
|     <ClCompile Include="JsonArrayTests.cpp" /> |     <ClCompile Include="JsonArrayTests.cpp" /> | ||||||
| @@ -93,6 +94,7 @@ | |||||||
|     <ClCompile Include="StringBuilderTests.cpp" /> |     <ClCompile Include="StringBuilderTests.cpp" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|  |     <ClInclude Include="..\JsonGenerator\EscapedString.h" /> | ||||||
|     <ClInclude Include="..\JsonGenerator\JsonArray.h" /> |     <ClInclude Include="..\JsonGenerator\JsonArray.h" /> | ||||||
|     <ClInclude Include="..\JsonGenerator\JsonHashTable.h" /> |     <ClInclude Include="..\JsonGenerator\JsonHashTable.h" /> | ||||||
|     <ClInclude Include="..\JsonGenerator\JsonObjectBase.h" /> |     <ClInclude Include="..\JsonGenerator\JsonObjectBase.h" /> | ||||||
|   | |||||||
| @@ -36,6 +36,9 @@ | |||||||
|     <ClCompile Include="Print.cpp"> |     <ClCompile Include="Print.cpp"> | ||||||
|       <Filter>Source Files</Filter> |       <Filter>Source Files</Filter> | ||||||
|     </ClCompile> |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\JsonGenerator\EscapedString.cpp"> | ||||||
|  |       <Filter>Source Files</Filter> | ||||||
|  |     </ClCompile> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <ClInclude Include="..\JsonGenerator\JsonArray.h"> |     <ClInclude Include="..\JsonGenerator\JsonArray.h"> | ||||||
| @@ -59,5 +62,8 @@ | |||||||
|     <ClInclude Include="..\JsonGenerator\StringBuilder.h"> |     <ClInclude Include="..\JsonGenerator\StringBuilder.h"> | ||||||
|       <Filter>Header Files</Filter> |       <Filter>Header Files</Filter> | ||||||
|     </ClInclude> |     </ClInclude> | ||||||
|  |     <ClInclude Include="..\JsonGenerator\EscapedString.h"> | ||||||
|  |       <Filter>Header Files</Filter> | ||||||
|  |     </ClInclude> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
| </Project> | </Project> | ||||||
		Reference in New Issue
	
	Block a user