33from lib .macro_storage_format_builder import MacroStorageFormatBuilder
44from lib .util import Util
55
6+
67class MacroStorageFormatParser :
7- def __init__ (self , inputfile : str , outputfile : str , extensionkey : str , forceUUIDsZeroed : bool ):
8+ def __init__ (
9+ self , inputfile : str , outputfile : str , extensionkey : str , forceUUIDsZeroed : bool
10+ ):
811 self .inputfile = inputfile
912 self .outputfile = outputfile
1013 self .extensionkey = extensionkey
@@ -16,19 +19,21 @@ def transform(self):
1619 print ("START > reading storage format file from: " + self .inputfile )
1720 print (" " )
1821 with open (self .inputfile ) as file :
19- xml_string = file .read ()
22+ xml_string = file .read ()
2023 soup = self .util .get_xml_parser (xml_string )
2124 all_macros = soup .find_all ("ac:structured-macro" , recursive = True )
2225 page_has_ac_macro = False
2326 for macro_node in all_macros :
2427 #
2528 # STEP 1: Parse DC Advanced Codeblock Macros
2629 #
27- if (macro_node .attrs ['ac:name' ] == 'advanced-single-codeblock-macro' or
28- macro_node .attrs ['ac:name' ] == 'advanced-codeblock-macro' or
29- macro_node .attrs ['ac:name' ] == 'advanced-remote-codeblock-macro' ):
30+ if (
31+ macro_node .attrs ["ac:name" ] == "advanced-single-codeblock-macro"
32+ or macro_node .attrs ["ac:name" ] == "advanced-codeblock-macro"
33+ or macro_node .attrs ["ac:name" ] == "advanced-remote-codeblock-macro"
34+ ):
3035 page_has_ac_macro = True
31- macro_name = macro_node .attrs [' ac:name' ]
36+ macro_name = macro_node .attrs [" ac:name" ]
3237 print (">> " + macro_name )
3338 # ----
3439 # all macros:
@@ -47,7 +52,7 @@ def transform(self):
4752 macro_param_enableddl = "false"
4853 #
4954 # multi and remote only:
50- # <ac:parameter ac:name="expandFirst">true</ac:parameter>
55+ # <ac:parameter ac:name="expandFirst">true</ac:parameter>
5156 macro_param_expand_first = "false"
5257 #
5358 # remote only:
@@ -60,55 +65,103 @@ def transform(self):
6065 # ----
6166 macro_children = macro_node .findChildren ()
6267 for child in macro_children :
63- if ( child .name == "ac:plain-text-body" ) :
64- if ( macro_name == ' advanced-single-codeblock-macro' ) :
68+ if child .name == "ac:plain-text-body" :
69+ if macro_name == " advanced-single-codeblock-macro" :
6570 macro_code = child .text
6671 macro_config = ""
67- elif (macro_name == 'advanced-codeblock-macro' ):
68- config_and_code = child .text .split ("[content]\n " , 1 )
69- macro_code = config_and_code [1 ]
70- macro_config = config_and_code [0 ]
71- elif (macro_name == 'advanced-remote-codeblock-macro' ):
72+ elif macro_name == "advanced-codeblock-macro" :
73+ if "[content]\n " not in child .text :
74+ print (
75+ ">> ERROR: no [content] element in macro body found!"
76+ )
77+ macro_code = "ERROR - COULD NOT PARSE"
78+ macro_config = "ERROR - COULD NOT PARSE"
79+ else :
80+ config_and_code = child .text .split ("[content]\n " , 1 )
81+ macro_code = config_and_code [1 ]
82+ macro_config = config_and_code [0 ]
83+ elif macro_name == "advanced-remote-codeblock-macro" :
7284 macro_code = ""
7385 macro_config = child .text
74- print (" macro config (shortened): " + self .util .shorten_string_for_print (macro_config ))
75- print (" macro code (shortened) : " + self .util .shorten_string_for_print (macro_code ))
76- if (child .name == "ac:parameter" ):
77- ac_name = child .get ('ac:name' )
78- if (ac_name == "lang" ):
79- macro_param_lang = self .util .replace_server_macro_lang_with_cloud_pendant (child .text )
80- print (" macro param lang : " + macro_param_lang )
81- if (ac_name == "enableddl" ):
86+ print (
87+ " macro config (shortened): "
88+ + self .util .shorten_string_for_print (macro_config )
89+ )
90+ print (
91+ " macro code (shortened) : "
92+ + self .util .shorten_string_for_print (macro_code )
93+ )
94+ if child .name == "ac:parameter" :
95+ ac_name = child .get ("ac:name" )
96+ if ac_name == "lang" :
97+ macro_param_lang = (
98+ self .util .replace_server_macro_lang_with_cloud_pendant (
99+ child .text
100+ )
101+ )
102+ print (" macro param lang : " + macro_param_lang )
103+ if ac_name == "enableddl" :
82104 macro_param_enableddl = child .text
83- print (" macro param enableddl : " + macro_param_enableddl )
84- if (ac_name == "globaltitle" ):
105+ print (
106+ " macro param enableddl : " + macro_param_enableddl
107+ )
108+ if ac_name == "globaltitle" :
85109 macro_param_globaltitle = child .text
86- print (" macro param globaltitle : " + macro_param_globaltitle )
87- if (ac_name == "theme" ):
110+ print (
111+ " macro param globaltitle : "
112+ + macro_param_globaltitle
113+ )
114+ if ac_name == "theme" :
88115 macro_param_theme = child .text
89- print (" macro param theme : " + macro_param_theme )
90- if ( ac_name == "expandFirst" ) :
116+ print (" macro param theme : " + macro_param_theme )
117+ if ac_name == "expandFirst" :
91118 macro_param_expand_first = child .text
92- print (" macro param expand first: " + macro_param_expand_first )
93- if (ac_name == "remotefileurl" ):
119+ print (
120+ " macro param expand first: "
121+ + macro_param_expand_first
122+ )
123+ if ac_name == "remotefileurl" :
94124 macro_param_remotefileurl = child .text
95- print (" macro param remote url : " + macro_param_remotefileurl )
96- if (ac_name == "remotefilehttpuser" ):
125+ print (
126+ " macro param remote url : "
127+ + macro_param_remotefileurl
128+ )
129+ if ac_name == "remotefilehttpuser" :
97130 macro_param_remotefilehttpuser = child .text
98- print (" macro param remote user : " + macro_param_remotefilehttpuser )
99- if (ac_name == "remotefilehttppassword" ):
131+ print (
132+ " macro param remote user : "
133+ + macro_param_remotefilehttpuser
134+ )
135+ if ac_name == "remotefilehttppassword" :
100136 macro_param_remotefilehttppassword = child .text
101- print (" macro param remote pass : " + macro_param_remotefilehttppassword )
137+ print (
138+ " macro param remote pass : "
139+ + macro_param_remotefilehttppassword
140+ )
102141 #
103142 # STEP 2: Generate Cloud Advanced Codeblock Macro storage formats
104143 #
105144 cloud_adf_attribute_local_id = self .util .generate_uuid ()
106145 cloud_adf_parameter_local_id = self .util .generate_uuid ()
107- print (" macro attr local id : " + cloud_adf_attribute_local_id )
108- print (" macro param local id : " + cloud_adf_parameter_local_id )
109- cloud_macro_storage_format = builder .generate_ac_cloud_macro (macro_name , cloud_adf_attribute_local_id , cloud_adf_parameter_local_id , macro_config , macro_code , macro_param_lang , macro_param_enableddl , macro_param_globaltitle , macro_param_theme , macro_param_expand_first , macro_param_remotefileurl , macro_param_remotefilehttppassword , macro_param_remotefilehttpuser )
146+ print (" macro attr local id : " + cloud_adf_attribute_local_id )
147+ print (" macro param local id : " + cloud_adf_parameter_local_id )
148+ cloud_macro_storage_format = builder .generate_ac_cloud_macro (
149+ macro_name ,
150+ cloud_adf_attribute_local_id ,
151+ cloud_adf_parameter_local_id ,
152+ macro_config ,
153+ macro_code ,
154+ macro_param_lang ,
155+ macro_param_enableddl ,
156+ macro_param_globaltitle ,
157+ macro_param_theme ,
158+ macro_param_expand_first ,
159+ macro_param_remotefileurl ,
160+ macro_param_remotefilehttppassword ,
161+ macro_param_remotefilehttpuser ,
162+ )
110163 macro_node .replaceWith (cloud_macro_storage_format )
111- if ( not page_has_ac_macro ) :
164+ if not page_has_ac_macro :
112165 print (">> no Advanced Codeblocks macros found in page" )
113166 #
114167 # STEP 3: Write outputfile
0 commit comments