mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 06:12:43 +00:00 
			
		
		
		
	CodeGenerators: Convert GeneratorUtil to String
I may have got a little carried away propagating some of the errors. :^)
This commit is contained in:
		
							parent
							
								
									f902d4d5e7
								
							
						
					
					
						commit
						540cc42618
					
				
					 5 changed files with 157 additions and 127 deletions
				
			
		|  | @ -54,13 +54,13 @@ enum class ValueID; | |||
| 
 | ||||
| )~~~"); | ||||
| 
 | ||||
|     enums_data.for_each_member([&](auto& name, auto& value) { | ||||
|     TRY(enums_data.try_for_each_member([&](auto& name, auto& value) -> ErrorOr<void> { | ||||
|         VERIFY(value.is_array()); | ||||
|         auto& members = value.as_array(); | ||||
| 
 | ||||
|         auto enum_generator = generator.fork(); | ||||
|         enum_generator.set("name:titlecase", title_casify(name)); | ||||
|         enum_generator.set("name:snakecase", snake_casify(name)); | ||||
|         TRY(enum_generator.set("name:titlecase", TRY(title_casify(name)))); | ||||
|         TRY(enum_generator.set("name:snakecase", TRY(snake_casify(name)))); | ||||
| 
 | ||||
|         // Find the smallest possible type to use.
 | ||||
|         auto member_max_value = members.size() - 1; | ||||
|  | @ -82,7 +82,7 @@ enum class ValueID; | |||
|             if (member_name.contains('=')) | ||||
|                 continue; | ||||
|             auto member_generator = enum_generator.fork(); | ||||
|             member_generator.set("member:titlecase", title_casify(member_name)); | ||||
|             TRY(member_generator.set("member:titlecase", TRY(title_casify(member_name)))); | ||||
|             member_generator.appendln("    @member:titlecase@,"); | ||||
|         } | ||||
| 
 | ||||
|  | @ -91,7 +91,9 @@ enum class ValueID; | |||
|         enum_generator.appendln("ValueID to_value_id(@name:titlecase@);"); | ||||
|         enum_generator.appendln("StringView to_string(@name:titlecase@);"); | ||||
|         enum_generator.append("\n"); | ||||
|     }); | ||||
| 
 | ||||
|         return {}; | ||||
|     })); | ||||
| 
 | ||||
|     generator.appendln("}"); | ||||
| 
 | ||||
|  | @ -111,13 +113,13 @@ ErrorOr<void> generate_implementation_file(JsonObject& enums_data, Core::File& f | |||
| namespace Web::CSS { | ||||
| )~~~"); | ||||
| 
 | ||||
|     enums_data.for_each_member([&](auto& name, auto& value) { | ||||
|     TRY(enums_data.try_for_each_member([&](auto& name, auto& value) -> ErrorOr<void> { | ||||
|         VERIFY(value.is_array()); | ||||
|         auto& members = value.as_array(); | ||||
| 
 | ||||
|         auto enum_generator = generator.fork(); | ||||
|         enum_generator.set("name:titlecase", title_casify(name)); | ||||
|         enum_generator.set("name:snakecase", snake_casify(name)); | ||||
|         TRY(enum_generator.set("name:titlecase", TRY(title_casify(name)))); | ||||
|         TRY(enum_generator.set("name:snakecase", TRY(snake_casify(name)))); | ||||
| 
 | ||||
|         enum_generator.append(R"~~~( | ||||
| Optional<@name:titlecase@> value_id_to_@name:snakecase@(ValueID value_id) | ||||
|  | @ -129,11 +131,11 @@ Optional<@name:titlecase@> value_id_to_@name:snakecase@(ValueID value_id) | |||
|             auto member_name = member.to_deprecated_string(); | ||||
|             if (member_name.contains('=')) { | ||||
|                 auto parts = member_name.split_view('='); | ||||
|                 member_generator.set("valueid:titlecase", title_casify(parts[0])); | ||||
|                 member_generator.set("member:titlecase", title_casify(parts[1])); | ||||
|                 TRY(member_generator.set("valueid:titlecase", TRY(title_casify(parts[0])))); | ||||
|                 TRY(member_generator.set("member:titlecase", TRY(title_casify(parts[1])))); | ||||
|             } else { | ||||
|                 member_generator.set("valueid:titlecase", title_casify(member_name)); | ||||
|                 member_generator.set("member:titlecase", title_casify(member_name)); | ||||
|                 TRY(member_generator.set("valueid:titlecase", TRY(title_casify(member_name)))); | ||||
|                 TRY(member_generator.set("member:titlecase", TRY(title_casify(member_name)))); | ||||
|             } | ||||
|             member_generator.append(R"~~~( | ||||
|     case ValueID::@valueid:titlecase@: | ||||
|  | @ -157,7 +159,7 @@ ValueID to_value_id(@name:titlecase@ @name:snakecase@_value) | |||
|             auto member_name = member.to_deprecated_string(); | ||||
|             if (member_name.contains('=')) | ||||
|                 continue; | ||||
|             member_generator.set("member:titlecase", title_casify(member_name)); | ||||
|             TRY(member_generator.set("member:titlecase", TRY(title_casify(member_name)))); | ||||
| 
 | ||||
|             member_generator.append(R"~~~( | ||||
|     case @name:titlecase@::@member:titlecase@: | ||||
|  | @ -182,7 +184,7 @@ StringView to_string(@name:titlecase@ value) | |||
|             if (member_name.contains('=')) | ||||
|                 continue; | ||||
|             member_generator.set("member:css", member_name); | ||||
|             member_generator.set("member:titlecase", title_casify(member_name)); | ||||
|             TRY(member_generator.set("member:titlecase", TRY(title_casify(member_name)))); | ||||
| 
 | ||||
|             member_generator.append(R"~~~( | ||||
|     case @name:titlecase@::@member:titlecase@: | ||||
|  | @ -195,7 +197,8 @@ StringView to_string(@name:titlecase@ value) | |||
|     } | ||||
| } | ||||
| )~~~"); | ||||
|     }); | ||||
|         return {}; | ||||
|     })); | ||||
| 
 | ||||
|     generator.appendln("}"); | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Sam Atkins
						Sam Atkins