@@ -283,17 +283,15 @@ module Interscript
283283 @out << "\n #{ indent } notes {"
284284 convert_notes_list_until_dedent ( indent )
285285 @out << "\n #{ indent } }"
286- elsif @scanner . scan ( /(?:\A |\n )([ \t ]+)([A-Za-z_][\w ]*)[ \t ]*:[ \t ]*\n ([ \t ]+)-[ \t ]*/ )
287- # Multi-line list value: `field:\n - item1\n - item2`
286+ elsif @scanner . scan ( /(?:\A |\n )([ \t ]+)([A-Za-z_][\w ]*)[ \t ]*:[ \t ]*\n (?:[ \t ]*#[^ \n ]* \n )*( [ \t ]+)-[ \t ]*/ )
287+ # Multi-line list value: `field:\n # optional comment\n - item1\n - item2`
288288 indent = @scanner [ 1 ]
289289 field = @scanner [ 2 ]
290- first_item_indent = @scanner [ 3 ]
290+ item_indent = @scanner [ 3 ]
291291 @out << "\n #{ indent } #{ field } "
292- # Read the first item value
293292 text = @scanner . scan ( /[^\n ]+/ ) . to_s
294293 @out << text
295- # Read subsequent `- item` lines at the same or deeper indent
296- while @scanner . check ( /\n [ \t ]{#{ first_item_indent . length } ,}-[ \t ]/ )
294+ while @scanner . check ( /\n [ \t ]{#{ item_indent . length } ,}-[ \t ]/ )
297295 @scanner . scan ( /\n [ \t ]+-[ \t ]+/ )
298296 text = @scanner . scan ( /[^\n ]+/ ) . to_s
299297 @out << " " + text
@@ -551,7 +549,10 @@ module Interscript
551549
552550 def convert_stage_header
553551 # Legacy `stage {` becomes `stage main {` if no name is given.
554- if @scanner . scan ( /\s *\{ / )
552+ # `stage(translit) {` becomes `stage translit {`.
553+ if @scanner . scan ( /\s *\( ([A-Za-z_]\w *)\) \s *\{ / )
554+ @out << " #{ @scanner [ 1 ] } {"
555+ elsif @scanner . scan ( /\s *\{ / )
555556 @out << " main {"
556557 elsif @scanner . scan ( /\s +([A-Za-z_]\w *)\s *\{ / )
557558 @out << " #{ @scanner [ 1 ] } {"
0 commit comments