def prefix(prefix, *args): to_fnct_str = 'to_' + to_str(prefix).replace('-', '_') args = list(args) for i, arg in enumerate(args): if isinstance(arg, List): _value = [] for iarg in arg: to_fnct = getattr(iarg, to_fnct_str, None) if to_fnct: _value.append(to_fnct()) else: _value.append(iarg) args[i] = List(_value) else: to_fnct = getattr(arg, to_fnct_str, None) if to_fnct: args[i] = to_fnct() return List.maybe_new(args, use_comma=True)
def prefix(prefix, *args): to_fnct_str = 'to_' + to_str(prefix).replace('-', '_') args = list(args) for i, arg in enumerate(args): if isinstance(arg, List): _value = [] for iarg in arg: to_fnct = getattr(iarg, to_fnct_str, None) if to_fnct: _value.append(to_fnct()) else: _value.append(iarg) args[i] = List(_value) else: to_fnct = getattr(arg, to_fnct_str, None) if to_fnct: args[i] = to_fnct() return List.maybe_new(args, use_comma=True)
def radial_gradient(*args): args = List.from_maybe_starargs(args) try: # Do a rough check for standard syntax first -- `shape at position` at_position = list(args[0]).index(String('at')) except (IndexError, ValueError): shape_and_size = _get_gradient_shape_and_size(args) position_and_angle = _get_gradient_position_and_angle(args) else: shape_and_size = List.maybe_new(args[0][:at_position]) position_and_angle = List.maybe_new(args[0][at_position + 1:]) color_stops = _get_gradient_color_stops(args) if color_stops is None: raise Exception('No color stops provided to radial-gradient function') color_stops = __color_stops(False, *color_stops) if position_and_angle: rendered_position = position(position_and_angle) else: rendered_position = None rendered_color_stops = _render_standard_color_stops(color_stops) args = [] if shape_and_size and rendered_position: args.append(List([shape_and_size, String.unquoted('at'), rendered_position], use_comma=False)) elif rendered_position: args.append(rendered_position) elif shape_and_size: args.append(shape_and_size) args.extend(rendered_color_stops) legacy_args = [] if rendered_position: legacy_args.append(rendered_position) if shape_and_size: legacy_args.append(shape_and_size) legacy_args.extend(rendered_color_stops) ret = String.unquoted( 'radial-gradient(' + ', '.join(a.render() for a in args) + ')') legacy_ret = 'radial-gradient(' + ', '.join(a.render() for a in legacy_args) + ')' def to__css2(): return String.unquoted('') ret.to__css2 = to__css2 def to__moz(): return String.unquoted('-moz-' + legacy_ret) ret.to__moz = to__moz def to__pie(): log.warn("PIE does not support radial-gradient.") return String.unquoted('-pie-radial-gradient(unsupported)') ret.to__pie = to__pie def to__webkit(): return String.unquoted('-webkit-' + legacy_ret) ret.to__webkit = to__webkit def to__owg(): args = [ 'radial', grad_point(*position_and_angle) if position_and_angle is not None else 'center', '0', grad_point(*position_and_angle) if position_and_angle is not None else 'center', __grad_end_position(True, color_stops), ] args.extend('color-stop(%s, %s)' % (s.render(), c.render()) for s, c in color_stops) ret = '-webkit-gradient(' + ', '.join(to_str(a) for a in args or [] if a is not None) + ')' return String.unquoted(ret) ret.to__owg = to__owg def to__svg(): return radial_svg_gradient(*(list(color_stops) + list(position_and_angle or [String('center')]))) ret.to__svg = to__svg return ret
def radial_gradient(*args): args = List.from_maybe_starargs(args) try: # Do a rough check for standard syntax first -- `shape at position` at_position = list(args[0]).index(String('at')) except (IndexError, ValueError): shape_and_size = _get_gradient_shape_and_size(args) position_and_angle = _get_gradient_position_and_angle(args) else: shape_and_size = List.maybe_new(args[0][:at_position]) position_and_angle = List.maybe_new(args[0][at_position + 1:]) color_stops = _get_gradient_color_stops(args) if color_stops is None: raise Exception('No color stops provided to radial-gradient function') color_stops = __color_stops(False, *color_stops) if position_and_angle: rendered_position = position(position_and_angle) else: rendered_position = None rendered_color_stops = _render_standard_color_stops(color_stops) args = [] if shape_and_size and rendered_position: args.append(List([shape_and_size, String.unquoted('at'), rendered_position], use_comma=False)) elif rendered_position: args.append(rendered_position) elif shape_and_size: args.append(shape_and_size) args.extend(rendered_color_stops) legacy_args = [] if rendered_position: legacy_args.append(rendered_position) if shape_and_size: legacy_args.append(shape_and_size) legacy_args.extend(rendered_color_stops) ret = String.unquoted( 'radial-gradient(' + ', '.join(a.render() for a in args) + ')') legacy_ret = 'radial-gradient(' + ', '.join(a.render() for a in legacy_args) + ')' def to__css2(): return String.unquoted('') ret.to__css2 = to__css2 def to__moz(): return String.unquoted('-moz-' + legacy_ret) ret.to__moz = to__moz def to__pie(): log.warn("PIE does not support radial-gradient.") return String.unquoted('-pie-radial-gradient(unsupported)') ret.to__pie = to__pie def to__webkit(): return String.unquoted('-webkit-' + legacy_ret) ret.to__webkit = to__webkit def to__owg(): args = [ 'radial', grad_point(*position_and_angle) if position_and_angle is not None else 'center', '0', grad_point(*position_and_angle) if position_and_angle is not None else 'center', __grad_end_position(True, color_stops), ] args.extend('color-stop(%s, %s)' % (s.render(), c.render()) for s, c in color_stops) ret = '-webkit-gradient(' + ', '.join(to_str(a) for a in args or [] if a is not None) + ')' return String.unquoted(ret) ret.to__owg = to__owg def to__svg(): return radial_svg_gradient(*(list(color_stops) + list(position_and_angle or [String('center')]))) ret.to__svg = to__svg return ret