Fixed some bugs in pango renderer
This commit is contained in:
		
							parent
							
								
									07baf34a71
								
							
						
					
					
						commit
						684b1a4687
					
				| @ -6,50 +6,68 @@ gchar *md_pango_render(gchar *markup, gint length) | |||||||
| 	gchar *str2; | 	gchar *str2; | ||||||
| 	GRegex *regex; | 	GRegex *regex; | ||||||
| 
 | 
 | ||||||
| 	regex = g_regex_new("\\>", 0, 0, NULL); | 	str = markup; | ||||||
| 	str = g_regex_replace(regex, markup, -1, 0, ">", 0, NULL); | 
 | ||||||
|  | 	regex = g_regex_new("\\&", 0, 0, NULL); | ||||||
|  | 	str2 = g_regex_replace(regex, str, -1, 0, "&", 0, NULL); | ||||||
| 	g_regex_unref(regex); | 	g_regex_unref(regex); | ||||||
|  | 	// Must not g_free(str)
 | ||||||
|  | 	str = str2; | ||||||
|  | 
 | ||||||
|  | 	regex = g_regex_new("\\>", 0, 0, NULL); | ||||||
|  | 	str2 = g_regex_replace(regex, str, -1, 0, ">", 0, NULL); | ||||||
|  | 	g_regex_unref(regex); | ||||||
|  | 	g_free(str); | ||||||
|  | 	str = str2; | ||||||
| 
 | 
 | ||||||
| 	regex = g_regex_new("\\<", 0, 0, NULL); | 	regex = g_regex_new("\\<", 0, 0, NULL); | ||||||
| 	str2 = g_regex_replace(regex, str, -1, 0, "<", 0, NULL); | 	str2 = g_regex_replace(regex, str, -1, 0, "<", 0, NULL); | ||||||
| 	g_regex_unref(regex); | 	g_regex_unref(regex); | ||||||
| 	g_free(str); | 	g_free(str); | ||||||
|  | 	str = str2; | ||||||
| 
 | 
 | ||||||
| 	regex = g_regex_new("\\*{2}([^\\*]*)\\*{2}", 0, 0, NULL); | 	regex = g_regex_new("\\*{2}([^\\*]*)\\*{2}", 0, 0, NULL); | ||||||
| 	str = g_regex_replace(regex, str2, -1, 0, "<b>\\1</b>", 0, NULL); | 	str2 = g_regex_replace(regex, str, -1, 0, "<b>\\1</b>", 0, NULL); | ||||||
| 	g_regex_unref(regex); | 	g_regex_unref(regex); | ||||||
| 	g_free(str2); | 	g_free(str); | ||||||
|  | 	str = str2; | ||||||
| 
 | 
 | ||||||
| 	regex = g_regex_new("\\*([^\\*]*)\\*", 0, 0, NULL); | 	regex = g_regex_new("\\*([^\\*]*)\\*", 0, 0, NULL); | ||||||
| 	str2 = g_regex_replace(regex, str, -1, 0, "<i>\\1</i>", 0, NULL); | 	str2 = g_regex_replace(regex, str, -1, 0, "<i>\\1</i>", 0, NULL); | ||||||
|  | 	g_free(str); | ||||||
|  | 	str = str2; | ||||||
|  | 
 | ||||||
|  | 	/* TODO: This also matches inline # */ | ||||||
|  | 	regex = g_regex_new("\\#{4}(.*)", 0, 0, NULL); | ||||||
|  | 	str2 = g_regex_replace(regex, str, -1, 0, "<span font-size=\"large\">\\1</span>", 0, NULL); | ||||||
| 	g_regex_unref(regex); | 	g_regex_unref(regex); | ||||||
| 	g_free(str); | 	g_free(str); | ||||||
| 
 | 	str = str2; | ||||||
| 	regex = g_regex_new("\\#{4}(.*)", 0, 0, NULL); |  | ||||||
| 	str = g_regex_replace(regex, str2, -1, 0, "<span font-size=\"large\">\\1</span>", 0, NULL); |  | ||||||
| 	g_regex_unref(regex); |  | ||||||
| 	g_free(str2); |  | ||||||
| 
 | 
 | ||||||
| 	regex = g_regex_new("\\#{3}(.*)", 0, 0, NULL); | 	regex = g_regex_new("\\#{3}(.*)", 0, 0, NULL); | ||||||
| 	str2 = g_regex_replace(regex, str, -1, 0, "<span font-size=\"x-large\">\\1</span>", 0, NULL); | 	str2 = g_regex_replace(regex, str, -1, 0, "<span font-size=\"x-large\">\\1</span>", 0, NULL); | ||||||
| 	g_regex_unref(regex); | 	g_regex_unref(regex); | ||||||
| 	g_free(str); | 	g_free(str); | ||||||
|  | 	str = str2; | ||||||
| 
 | 
 | ||||||
| 	regex = g_regex_new("\\#{2}(.*)", 0, 0, NULL); | 	regex = g_regex_new("\\#{2}(.*)", 0, 0, NULL); | ||||||
| 	str = g_regex_replace(regex, str2, -1, 0, "<span font-size=\"xx-large\">\\1</span>", 0, NULL); | 	str2 = g_regex_replace(regex, str, -1, 0, "<span font-size=\"xx-large\">\\1</span>", 0, NULL); | ||||||
| 	g_regex_unref(regex); | 	g_regex_unref(regex); | ||||||
| 	g_free(str2); | 	g_free(str); | ||||||
|  | 	str = str2; | ||||||
| 
 | 
 | ||||||
| 	regex = g_regex_new("\\#{1}(.*)", 0, 0, NULL); | 	regex = g_regex_new("\\#{1}(.*)", 0, 0, NULL); | ||||||
| 	str2 = g_regex_replace(regex, str, -1, 0, "<span font_weight=\"bold\" font-size=\"xx-large\">\\1</span>", | 	str2 = g_regex_replace(regex, str, -1, 0, "<span font_weight=\"bold\" font-size=\"xx-large\">\\1</span>", | ||||||
| 			       0, NULL); | 			       0, NULL); | ||||||
| 	g_regex_unref(regex); | 	g_regex_unref(regex); | ||||||
| 	g_free(str); | 	g_free(str); | ||||||
|  | 	str = str2; | ||||||
| 
 | 
 | ||||||
| 	regex = g_regex_new("\\!\\[([^\\]]*)\\]\\(([^\\)]*)\\)", 0, 0, NULL); | 	regex = g_regex_new("\\!\\[([^\\]]*)\\]\\(([^\\)]*)\\)", 0, 0, NULL); | ||||||
| 	str = g_regex_replace(regex, str2, -1, 0, "-- Image \\1 (\\2) --", 0, NULL); | 	str2 = g_regex_replace(regex, str2, -1, 0, "-- Image \\1 (\\2) --", 0, NULL); | ||||||
| 	g_regex_unref(regex); | 	g_regex_unref(regex); | ||||||
| 	g_free(str2); | 	g_free(str); | ||||||
|  | 	str = str2; | ||||||
| 
 | 
 | ||||||
| 	return str; | 	return str; | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user