def decode_property_value(self, value=''): """ Decode the encoded property ``value`` input e.g. 'bold', '1-5-1-5', '1_32rem', '1p-10p-3p-1p', 'n12px', 'n5_25cm-n6_1cm'. Returns parsed, but non-validated CSS property value. :type value: str :param value: An encoded CSS property value. :return: (*str*) -- Returns the decoded, but non-validated CSS property value. **Examples:** >>> value_parser = CSSPropertyValueParser( >>> property_name='padding', use_em=True >>> ) >>> value_parser.decode_property_value(value='1-5-1-5') '0.0625em 0.3125em 0.0625em 0.3125em' >>> value_parser.unit_parser.use_em = False >>> value_parser.decode_property_value(value='1-5-1-5') '1px 5px 1px 5px' """ # Skip values that are built-in to the CSS standard, and represent the literal property value. if not self.is_built_in(value=value): # Apply to all non-built-in values. value = self.replace_dashes(value=value) # These only apply if value contains a digit. value = self.replace_underscore_with_decimal(value=value) value = self.replace_p_with_percent(value=value) value = self.replace_n_with_minus(value=value) # Parse color and units value = self.color_parser.replace_h_with_hash(value=value) value = self.color_parser.add_color_parenthetical(value=value) value = self.unit_parser.add_units(property_value=value) else: # Generate web safe font-family fallback strings. if self.property_name == 'font-family': font_parser = FontParser(font_value=value) value = font_parser.generate_fallback_fonts() return value
def setup_logger(): logger = logging.getLogger('InteractiveHtmlBom') logger.setLevel(logging.INFO) ch = logging.StreamHandler(sys.stdout) ch.setLevel(logging.INFO) formatter = logging.Formatter("%(asctime)-15s %(levelname)s %(message)s") ch.setFormatter(formatter) logger.addHandler(ch) return logger logger = setup_logger() is_cli = False font_parser = FontParser() def loginfo(*args): if is_cli: logger.info(*args) def logerror(msg): if is_cli: logger.error(msg) else: wx.MessageBox(msg) def logwarn(msg):