class MARKDOWN_ROUTINES

(source code)

description

Markdown routines

note
	description: "Markdown routines"

	author: "Finnian Reilly"
	copyright: "Copyright (c) 2001-2022 Finnian Reilly"
	contact: "finnian at eiffel hyphen loop dot com"

	license: "MIT license (See: en.wikipedia.org/wiki/MIT_License)"
	date: "2024-09-01 11:34:01 GMT (Sunday 1st September 2024)"
	revision: "9"

class
	MARKDOWN_ROUTINES

feature {NONE} -- Implementation

	is_list_item (line: ZSTRING): BOOLEAN
		local
			pos_dot: INTEGER
		do
			if line.starts_with (Bullet_point) then
				Result := True
			else
				pos_dot := line.index_of ('.', 1)
				if pos_dot > 0 and then line.count > pos_dot
					and then line.substring (1, pos_dot - 1).is_natural and then line [pos_dot + 1] = ' '
				then
					Result := True
				end
			end
		end

	list_type (line: ZSTRING): STRING
		require
			is_list_item: is_list_item (line)
		do
			Result := if line.starts_with (Bullet_point) then	Type_unordered_list else Type_ordered_list end
		end

	list_prefix_count (line: ZSTRING): INTEGER
		require
			is_list_item: is_list_item (line)
		do
			if line.starts_with (Bullet_point) then
				Result := 2
			else
				Result := line.index_of ('.', 1) + 1
			end
		end

feature {NONE} -- Constants

	Bullet_point: ZSTRING
		once
			Result := "* "
		end

	Type_ordered_list: STRING = "ol"

	Type_unordered_list: STRING = "ul"

end