| 
									
										
										
										
											2021-08-11 21:40:56 +00:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Redmine - project management software | 
					
						
							| 
									
										
										
										
											2024-02-26 22:55:54 +00:00
										 |  |  | # Copyright (C) 2006-  Jean-Philippe Lang | 
					
						
							| 
									
										
										
										
											2021-08-11 21:40:56 +00:00
										 |  |  | # | 
					
						
							|  |  |  | # This program is free software; you can redistribute it and/or | 
					
						
							|  |  |  | # modify it under the terms of the GNU General Public License | 
					
						
							|  |  |  | # as published by the Free Software Foundation; either version 2 | 
					
						
							|  |  |  | # of the License, or (at your option) any later version. | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  | # but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  | # GNU General Public License for more details. | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # You should have received a copy of the GNU General Public License | 
					
						
							|  |  |  | # along with this program; if not, write to the Free Software | 
					
						
							|  |  |  | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | require 'html/pipeline' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module Redmine | 
					
						
							|  |  |  |   module WikiFormatting | 
					
						
							|  |  |  |     module CommonMark | 
					
						
							|  |  |  |       # configuration of the rendering pipeline | 
					
						
							|  |  |  |       PIPELINE_CONFIG = { | 
					
						
							| 
									
										
										
										
											2023-01-31 23:55:55 +00:00
										 |  |  |         # https://github.com/gjtorikian/commonmarker#extension-options | 
					
						
							| 
									
										
										
										
											2024-11-11 18:28:41 +00:00
										 |  |  |         commonmarker_extensions: { | 
					
						
							|  |  |  |           table: true, | 
					
						
							|  |  |  |           strikethrough: true, | 
					
						
							|  |  |  |           tagfilter: true, | 
					
						
							|  |  |  |           autolink: true, | 
					
						
							|  |  |  |           footnotes: true, | 
					
						
							| 
									
										
										
										
											2025-04-21 05:29:13 +00:00
										 |  |  |           header_ids: nil, | 
					
						
							| 
									
										
										
										
											2025-04-27 06:58:32 +00:00
										 |  |  |           tasklist: true, | 
					
						
							| 
									
										
										
										
											2025-04-21 05:29:13 +00:00
										 |  |  |           shortcodes: false, | 
					
						
							| 
									
										
										
										
											2024-11-11 18:28:41 +00:00
										 |  |  |         }.freeze, | 
					
						
							| 
									
										
										
										
											2021-08-11 21:40:56 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         # https://github.com/gjtorikian/commonmarker#parse-options | 
					
						
							| 
									
										
										
										
											2024-11-11 18:28:41 +00:00
										 |  |  |         commonmarker_parse_options: { | 
					
						
							|  |  |  |         }.freeze, | 
					
						
							| 
									
										
										
										
											2021-08-11 21:40:56 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         # https://github.com/gjtorikian/commonmarker#render-options | 
					
						
							| 
									
										
										
										
											2024-11-11 18:28:41 +00:00
										 |  |  |         commonmarker_render_options: { | 
					
						
							| 
									
										
										
										
											2024-11-11 18:29:12 +00:00
										 |  |  |           unsafe: true, | 
					
						
							| 
									
										
										
										
											2025-04-21 05:29:13 +00:00
										 |  |  |           github_pre_lang: false, | 
					
						
							| 
									
										
										
										
											2024-11-11 18:41:12 +00:00
										 |  |  |           hardbreaks: Redmine::Configuration['common_mark_enable_hardbreaks'] == true, | 
					
						
							| 
									
										
										
										
											2025-04-27 06:58:32 +00:00
										 |  |  |           tasklist_classes: true, | 
					
						
							| 
									
										
										
										
											2024-11-11 18:29:12 +00:00
										 |  |  |         }.freeze, | 
					
						
							| 
									
										
										
										
											2024-11-11 18:29:46 +00:00
										 |  |  |         commonmarker_plugins: { | 
					
						
							|  |  |  |           syntax_highlighter: nil | 
					
						
							|  |  |  |         }.freeze, | 
					
						
							| 
									
										
										
										
											2021-08-11 21:40:56 +00:00
										 |  |  |       }.freeze | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       MarkdownPipeline = HTML::Pipeline.new [ | 
					
						
							|  |  |  |         MarkdownFilter, | 
					
						
							|  |  |  |         SanitizationFilter, | 
					
						
							|  |  |  |         SyntaxHighlightFilter, | 
					
						
							|  |  |  |         FixupAutoLinksFilter, | 
					
						
							| 
									
										
										
										
											2025-04-27 06:58:32 +00:00
										 |  |  |         ExternalLinksFilter | 
					
						
							| 
									
										
										
										
											2021-08-11 21:40:56 +00:00
										 |  |  |       ], PIPELINE_CONFIG | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-06-16 21:39:27 +00:00
										 |  |  |       class Formatter | 
					
						
							|  |  |  |         include Redmine::WikiFormatting::SectionHelper | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         def initialize(text) | 
					
						
							|  |  |  |           @text = text | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-11 21:40:56 +00:00
										 |  |  |         def to_html(*args) | 
					
						
							|  |  |  |           result = MarkdownPipeline.call @text | 
					
						
							|  |  |  |           result[:output].to_s | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |