@@ -107,7 +107,8 @@ def self.analyze_used_components(content)
107107 'View' => content . include? ( '<View' ) ,
108108 'Text' => content . include? ( '<Text' ) ,
109109 'TextLink' => content . include? ( '<TextLink' ) ,
110- 'BulletList' => content . include? ( '<BulletList' )
110+ 'BulletList' => content . include? ( '<BulletList' ) ,
111+ 'NumberedList' => content . include? ( '<NumberedList' )
111112 }
112113 components . select { |_ , used | used } . keys
113114 end
@@ -126,6 +127,7 @@ def self.generate_imports(components)
126127 component_imports << "import BulletList from '@components/SidePanel/HelpComponents/HelpBulletList';" if components . include? ( 'BulletList' )
127128 component_imports << "import Text from '@components/Text';" if components . include? ( 'Text' )
128129 component_imports << "import TextLink from '@components/TextLink';" if components . include? ( 'TextLink' )
130+ component_imports << "import NumberedList from '@components/SidePanel/HelpComponents/HelpNumberedList';" if components . include? ( 'NumberedList' )
129131
130132 # Add style imports
131133 base_imports << "import type {ThemeStyles} from '@styles/index';"
@@ -199,6 +201,7 @@ def self.html_node_to_RN(node, indent_level = 0)
199201 'div' => method ( :process_div ) ,
200202 'p' => method ( :process_paragraph ) ,
201203 'ul' => method ( :process_unordered_list ) ,
204+ 'ol' => method ( :process_ordered_list ) ,
202205 'li' => method ( :process_list_item ) ,
203206 'h1' => method ( :process_heading ) ,
204207 'h2' => method ( :process_heading ) ,
@@ -264,6 +267,33 @@ def self.process_unordered_list(node, indent_level)
264267 TS
265268 end
266269
270+ def self . process_ordered_list ( node , indent_level )
271+ items = node . xpath ( './li' ) . map do |li |
272+ contains_ol = li . xpath ( './/ol' ) . any?
273+
274+ li_parts = li . children . map { |child | html_node_to_RN ( child , 0 ) }
275+
276+ if contains_ol
277+ indented_li_parts = li_parts . map do |part |
278+ part . lines . map { |line | "#{ ' ' * ( indent_level + 3 ) } #{ line . rstrip } " } . join ( "\n " )
279+ end . join ( "\n " )
280+
281+ "#{ ' ' * ( indent_level + 2 ) } <>\n #{ indented_li_parts } \n #{ ' ' * ( indent_level + 2 ) } </>"
282+ else
283+ "#{ ' ' * ( indent_level + 2 ) } <Text style={styles.textNormal}>#{ li_parts . join . strip } </Text>"
284+ end
285+ end
286+
287+ <<~TS . chomp
288+ #{ ' ' * indent_level } <NumberedList
289+ #{ ' ' * indent_level } styles={styles}
290+ #{ ' ' * indent_level } items={[
291+ #{ items . join ( ",\n " ) }
292+ #{ ' ' * indent_level } ]}
293+ #{ ' ' * indent_level } />
294+ TS
295+ end
296+
267297 def self . process_list_item ( node , indent_level )
268298 '' # handled in <ul>
269299 end
0 commit comments