simple-learning

Simple learning web program
git clone git://git.laack.co/simple-learning.git
Log | Files | Refs | README | LICENSE

commit 749b84acf23f850186732a860809e6f5c2048fa5
parent 2b9df834b9807aa37d6a5c89ebeb2b87ff73bce1
Author: Andrew Laack <andrew@laack.co>
Date:   Thu, 27 Aug 2026 23:37:37 -0500

Refactoring

Diffstat:
Mlearning/bin/parser.ml | 23+++++++++++++++++++----
1 file changed, 19 insertions(+), 4 deletions(-)

diff --git a/learning/bin/parser.ml b/learning/bin/parser.ml @@ -7,12 +7,27 @@ type page_line = { is_hidden: bool; } +let permute_line line vid image hidden = + if vid || image then (String.sub line 4 (String.length(line) - 4)) else + if hidden then String.sub line 3 (String.length(line) - 3) + else line + +(* TODO: These should be doing prefix matching...*) + +let is_hidden line preformatted = + if not preformatted && String.length(line) > 2 && line.[0] = '?' && line.[1] = '?' && line.[2] = ' ' then true else false +let is_embedded_video line preformatted = + if not preformatted && String.length(line) > 3 && line.[0] = '=' && line.[1] = '>' && line.[2] = 'v' && line.[3] = ' ' then true else false + +let is_embedded_image line preformatted = + if not preformatted && String.length(line) > 3 && line.[0] = '=' && line.[1] = '>' && line.[2] = 'i' && line.[3] = ' ' then true else false + let parse_simple_line line preformatted = - let hidden = if not preformatted && String.length(line) > 2 && line.[0] = '?' && line.[1] = '?' then true else false in + let hidden = is_hidden line preformatted in let hash_count = if not preformatted then Basic_functions.count_prefix '#' line else 0 in - let embedded_video = if not preformatted && String.length(line) > 3 && line.[0] = '=' && line.[1] = '>' && line.[2] = 'v' then true else false in - let embedded_image = if not preformatted && String.length(line) > 3 && line.[0] = '=' && line.[1] = '>' && line.[2] = 'i' then true else false in - {header_level = hash_count; content = (if embedded_video || embedded_image then (String.sub line 4 (String.length(line) - 4)) else line); is_embedded_image = embedded_image; is_embedded_video = embedded_video; is_preformatted = preformatted; is_hidden = hidden} + let embedded_video = is_embedded_video line preformatted in + let embedded_image = is_embedded_image line preformatted in + {header_level = hash_count; content = (permute_line line embedded_video embedded_image hidden); is_embedded_image = embedded_image; is_embedded_video = embedded_video; is_preformatted = preformatted; is_hidden = hidden} let is_format_line cl =