- Added more LOG info for certaing TAG parsing

This commit is contained in:
fdbozzo
2018-03-06 20:27:57 +01:00
parent bf0e602270
commit 45bb5858ce

View File

@@ -6623,46 +6623,67 @@ DEFINE CLASS c_conversor_base AS Custom
EXTERNAL ARRAY taPropsAndValues EXTERNAL ARRAY taPropsAndValues
LOCAL lcMetadatos, I, lcVirtualMeta, lnPos1, lnPos2, lnLastPos, lnCantComillas ; LOCAL lcMetadatos, I, lcVirtualMeta, lnPos1, lnPos2, lnLastPos, lnCantComillas ;
, loLang as CL_LANG OF 'FOXBIN2PRG.PRG' , loLang as CL_LANG OF 'FOXBIN2PRG.PRG' ;
loLang = _SCREEN.o_FoxBin2Prg_Lang , loEx as Exception
STORE '' TO lcVirtualMeta
STORE 0 TO lnPos1, lnPos2, lnLastPos, tnPropsAndValues_Count, I
lcMetadatos = ALLTRIM( STREXTRACT( tcLineWithMetadata, tcLeftTag, tcRightTag, 1, 1) ) TRY
lnCantComillas = OCCURS( '"', lcMetadatos ) loLang = _SCREEN.o_FoxBin2Prg_Lang
STORE '' TO lcVirtualMeta
STORE 0 TO lnPos1, lnPos2, lnLastPos, tnPropsAndValues_Count, I
IF lnCantComillas % 2 <> 0 && Valido que las comillas "" sean pares lcMetadatos = ALLTRIM( STREXTRACT( tcLineWithMetadata, tcLeftTag, tcRightTag, 1, 1) )
*ERROR "Error de datos: No se puede parsear porque las comillas no son pares en la línea [" + lcMetadatos + "]"
ERROR (TEXTMERGE(loLang.C_DATA_ERROR_CANT_PARSE_UNPAIRING_DOUBLE_QUOTES_LOC))
ENDIF
lnLastPos = 1 IF EMPTY(lcMetadatos)
DIMENSION taPropsAndValues( lnCantComillas / 2, 2 ) * Puede que la línea esté separada con un CR erróneo. El usuario debe revisarlo
ERROR (TEXTMERGE("Can't identify Metadata TAG '<<tcRightTag>>'. May be the Source line have an extra CR/LF?"))
ENDIF
*------------------------------------------------------------------------------------- lnCantComillas = OCCURS( '"', lcMetadatos )
* IMPORTANTE!!
* ------------
* SI SE SEPARAN LAS IGUALDADES CON ESPACIOS, ÉSTAS DEJAN DE RECONOCERSE!! (prop = "valor" en vez de prop="valor")
* TENER EN CUENTA AL GENERAR EL TEXTO O AL MODIFICARLO MANUALMENTE AL MERGEAR
*-------------------------------------------------------------------------------------
FOR I = 1 TO lnCantComillas STEP 2
tnPropsAndValues_Count = tnPropsAndValues_Count + 1
* Type="V" Cpid="1252" IF lnCantComillas % 2 <> 0 && Valido que las comillas "" sean pares
* ^ ^ => Posiciones del par de comillas dobles *ERROR "Error de datos: No se puede parsear porque las comillas no son pares en la línea [" + lcMetadatos + "]"
lnPos1 = AT( '"', lcMetadatos, m.I ) ERROR (TEXTMERGE(loLang.C_DATA_ERROR_CANT_PARSE_UNPAIRING_DOUBLE_QUOTES_LOC))
lnPos2 = AT( '"', lcMetadatos, m.I + 1 ) ENDIF
* Type="V" Cpid="1252" lnLastPos = 1
* ^ ^ ^ => LastPos, lnPos1 y lnPos2 DIMENSION taPropsAndValues( lnCantComillas / 2, 2 )
taPropsAndValues(tnPropsAndValues_Count,1) = ALLTRIM( GETWORDNUM( SUBSTR( lcMetadatos, lnLastPos, lnPos1 - lnLastPos ), 1, '=' ) )
taPropsAndValues(tnPropsAndValues_Count,2) = SUBSTR( lcMetadatos, lnPos1 + 1, lnPos2 - lnPos1 - 1 )
lnLastPos = lnPos2 + 1 *-------------------------------------------------------------------------------------
ENDFOR * IMPORTANTE!!
* ------------
* SI SE SEPARAN LAS IGUALDADES CON ESPACIOS, ÉSTAS DEJAN DE RECONOCERSE!! (prop = "valor" en vez de prop="valor")
* TENER EN CUENTA AL GENERAR EL TEXTO O AL MODIFICARLO MANUALMENTE AL MERGEAR
*-------------------------------------------------------------------------------------
FOR I = 1 TO lnCantComillas STEP 2
tnPropsAndValues_Count = tnPropsAndValues_Count + 1
* Type="V" Cpid="1252"
* ^ ^ => Posiciones del par de comillas dobles
lnPos1 = AT( '"', lcMetadatos, m.I )
lnPos2 = AT( '"', lcMetadatos, m.I + 1 )
* Type="V" Cpid="1252"
* ^ ^ ^ => LastPos, lnPos1 y lnPos2
taPropsAndValues(tnPropsAndValues_Count,1) = ALLTRIM( GETWORDNUM( SUBSTR( lcMetadatos, lnLastPos, lnPos1 - lnLastPos ), 1, '=' ) )
taPropsAndValues(tnPropsAndValues_Count,2) = SUBSTR( lcMetadatos, lnPos1 + 1, lnPos2 - lnPos1 - 1 )
lnLastPos = lnPos2 + 1
ENDFOR
CATCH TO loEx
loEx.UserValue = loEx.UserValue + TEXTMERGE('I=<<I>>, lcMetadatos="<<lcMetadatos>>", tcLineWithMetadata="<<tcLineWithMetadata>>"') + CR_LF
IF THIS.n_Debug > 0 AND _VFP.STARTMODE = 0
SET STEP ON
ENDIF
THROW
FINALLY
RELEASE tcLineWithMetadata, taPropsAndValues, tnPropsAndValues_Count, tcLeftTag, tcRightTag ;
, lcMetadatos, I, lcVirtualMeta, lnPos1, lnPos2, lnLastPos, lnCantComillas
ENDTRY
RELEASE tcLineWithMetadata, taPropsAndValues, tnPropsAndValues_Count, tcLeftTag, tcRightTag ;
, lcMetadatos, I, lcVirtualMeta, lnPos1, lnPos2, lnLastPos, lnCantComillas
RETURN RETURN
ENDPROC ENDPROC
@@ -8980,6 +9001,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
ENDIF ENDIF
CATCH TO loEx CATCH TO loEx
loEx.UserValue = loEx.UserValue + TEXTMERGE('Source line=<<I>>') + CR_LF
IF THIS.n_Debug > 0 AND _VFP.STARTMODE = 0 IF THIS.n_Debug > 0 AND _VFP.STARTMODE = 0
SET STEP ON SET STEP ON
ENDIF ENDIF