@@ -56,7 +56,8 @@ class Color(Base):
5656UPDATE_COLORS = RE_COLOR_MATCH
5757COLOR_FMT_1_0 = (0 , 1 , 0 , 'alpha' , 19 )
5858COLOR_FMT_2_0 = (0 , 3 , 0 , 'final' )
59- PALETTE_FMT = (2 , 0 )
59+ COLOR_FMT_2_9 = (2 , 9 , 0 , 'final' )
60+ PALETTE_FMT = (3 , 0 )
6061
6162RE_COLOR_START = r"""(?xi)
6263(?:
@@ -298,6 +299,23 @@ def get_scope(view, rules, skip_sel_check=False):
298299 return scopes
299300
300301
302+ def update_colors_3_0 (colors ):
303+ """Update colors for version 3.0."""
304+
305+ base = get_base_color ()
306+ new_colors = []
307+ for c in colors :
308+ try :
309+ m = UPDATE_COLORS .match (c )
310+ if m :
311+ new_colors .append (base (m .group (0 )).to_string (** COLOR_SERIALIZE ))
312+ else :
313+ new_colors .append (c )
314+ except Exception :
315+ pass
316+ return new_colors
317+
318+
301319def update_colors_2_0 (colors ):
302320 """Update colors for version 2.0."""
303321
@@ -356,6 +374,19 @@ def update_colors_1_0(colors):
356374 return new_colors
357375
358376
377+ def update_format (palettes , version , callback ):
378+ """Update the format."""
379+
380+ favs = callback (palettes .get ('favorites' , []))
381+ palettes .set ('favorites' , favs )
382+ all_pallets = palettes .get ('palettes' , [])
383+ for p in all_pallets :
384+ p ['colors' ] = callback (p ['colors' ])
385+ palettes .set ('palettes' , all_pallets )
386+ palettes .set ('__format__' , version )
387+ sublime .save_settings (PALETTE_CONFIG )
388+
389+
359390def _get_palettes (window = None ):
360391 """Get palettes."""
361392
@@ -364,25 +395,17 @@ def _get_palettes(window=None):
364395 fmt = tuple ([int (x ) for x in palettes .get ('__format__' , '0.0' ).split ('.' )])
365396 if fmt != PALETTE_FMT and coloraide_version >= COLOR_FMT_1_0 :
366397 if fmt == (0 , 0 ):
367- favs = update_colors_1_0 (palettes .get ('favorites' , []))
368- palettes .set ('favorites' , favs )
369- all_pallets = palettes .get ('palettes' , [])
370- for p in all_pallets :
371- p ['colors' ] = update_colors_1_0 (p ['colors' ])
372- palettes .set ('palettes' , all_pallets )
373- palettes .set ('__format__' , '1.0' )
374- sublime .save_settings (PALETTE_CONFIG )
398+ update_format (palettes , '1.0' , update_colors_1_0 )
375399 fmt = (1 , 0 )
376400 if fmt != PALETTE_FMT and coloraide_version >= COLOR_FMT_2_0 :
377401 if fmt == (1 , 0 ):
378- favs = update_colors_2_0 (palettes .get ('favorites' , []))
379- palettes .set ('favorites' , favs )
380- all_pallets = palettes .get ('palettes' , [])
381- for p in all_pallets :
382- p ['colors' ] = update_colors_1_0 (p ['colors' ])
383- palettes .set ('palettes' , all_pallets )
384- palettes .set ('__format__' , '2.0' )
385- sublime .save_settings (PALETTE_CONFIG )
402+ update_format (palettes , '2.0' , update_colors_2_0 )
403+ fmt = (2 , 0 )
404+ if fmt != PALETTE_FMT and coloraide_version >= COLOR_FMT_2_9 :
405+ if fmt == (2 , 0 ):
406+ update_format (palettes , '3.0' , update_colors_3_0 )
407+ fmt = (3 , 0 )
408+
386409 else :
387410 data = window .project_data ()
388411 if data is None :
0 commit comments