Browse Source

【DesignToken】Alias token Color and Spacing 解析

liuxiaolong 2 years ago
parent
commit
0aabb5ec6a
20 changed files with 683 additions and 69 deletions
  1. 10 1
      app/src/main/java/com/convenient/android/lib/ui/sample/ad/AdMainActivity.kt
  2. 147 0
      app/src/main/res/values/alias_color.xml
  3. 20 0
      app/src/main/res/values/alias_spacing.xml
  4. 207 0
      app/src/main/res/values/global_colors.xml
  5. 20 0
      app/src/main/res/values/global_spacing.xml
  6. 7 13
      lib_material_tokens/src/main/java/com/kdanmobile/android/lib/material/tokens/MdParseGlobalUtil.kt
  7. 4 3
      lib_material_tokens/src/main/java/com/kdanmobile/android/lib/material/tokens/MdToken.kt
  8. 17 6
      lib_material_tokens/src/main/java/com/kdanmobile/android/lib/material/tokens/TokenCategory.kt
  9. 23 0
      lib_material_tokens/src/main/java/com/kdanmobile/android/lib/material/tokens/TokenJsonType.kt
  10. 15 0
      lib_material_tokens/src/main/java/com/kdanmobile/android/lib/material/tokens/base/DataExtension.kt
  11. 12 4
      lib_material_tokens/src/main/java/com/kdanmobile/android/lib/material/tokens/base/XMLUtil.kt
  12. 1 1
      lib_material_tokens/src/main/java/com/kdanmobile/android/lib/material/tokens/base/XmlParserDataCategory.kt
  13. 61 26
      lib_material_tokens/src/main/java/com/kdanmobile/android/lib/material/tokens/category/ParseTokenFactory.kt
  14. 2 2
      lib_material_tokens/src/main/java/com/kdanmobile/android/lib/material/tokens/category/borderradius/BorderRadiusParse.kt
  15. 2 3
      lib_material_tokens/src/main/java/com/kdanmobile/android/lib/material/tokens/category/borderwidth/BorderWidthParse.kt
  16. 68 0
      lib_material_tokens/src/main/java/com/kdanmobile/android/lib/material/tokens/category/color/AliasColorParse.kt
  17. 1 1
      lib_material_tokens/src/main/java/com/kdanmobile/android/lib/material/tokens/category/color/ColorParse.kt
  18. 2 3
      lib_material_tokens/src/main/java/com/kdanmobile/android/lib/material/tokens/category/sizeing/SizeingParse.kt
  19. 59 0
      lib_material_tokens/src/main/java/com/kdanmobile/android/lib/material/tokens/category/spacing/AliasSpacingParse.kt
  20. 5 6
      lib_material_tokens/src/main/java/com/kdanmobile/android/lib/material/tokens/category/spacing/SpacingParse.kt

+ 10 - 1
app/src/main/java/com/convenient/android/lib/ui/sample/ad/AdMainActivity.kt

@@ -33,10 +33,19 @@ class AdMainActivity : AppCompatActivity() {
         AdManager.instance.initAdvertisersSDK(applicationContext, AdmobInitialize(), CSJInitialize("5320990"), GroMoreInitialize("5320990"), AppLovinMaxInitialize(logging = true))
         val list = mutableListOf<AdUnitBean>()
         list.addAll(Datas.AdmobAdUnitList)
+        for (adUnitBean in list) {
+            Log.e("AdUnit", adUnitBean.adSlotName)
+        }
+        AdUnitConfigManager.instance.setAdUnits(list)
+        AdUnitConfigManager.instance.removeAdUnit(Datas.BANNER)
+        Log.e("AdUnit", "删除后-----")
+
+        for (adUnitBean in AdUnitConfigManager.instance.getAllAdUnits()) {
+            Log.e("AdUnit", adUnitBean.adSlotName)
+        }
 //        list.addAll(Datas.CSJAdUnitList)
 //        list.addAll(Datas.GroMoreAdUnitList)
 //        list.addAll(Datas.AppLovinMaxAdUnitList)
-        AdUnitConfigManager.instance.setAdUnits(list)
         AdManager.instance.addGlobalAdShowListener {
             Log.e("广告全局展示监听", "广告位名称:${it.adSlotName}\n广告商:${it.advertisersName}\n广告id:${it.adUnitId}\n广告类型:${it.adType}")
         }

+ 147 - 0
app/src/main/res/values/alias_color.xml

@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <color name="color_sys_text_neutral_lv3">@color/color_light_gray_7</color>
+    <color name="color_sys_text_neutral_lv2">@color/color_light_gray_9</color>
+    <color name="color_sys_text_neutral_lv1">@color/color_light_gray_11</color>
+    <color name="color_sys_text_neutral_dis">@color/color_light_gray_6</color>
+    <color name="color_sys_text_error_norm">@color/color_light_red_6</color>
+    <color name="color_sys_text_brand_norm">@color/color_light_navy_blue_6</color>
+    <color name="color_sys_text_brand_hov">@color/color_light_navy_blue_5</color>
+    <color name="color_sys_text_brand_dis">@color/color_light_navy_blue_3</color>
+    <color name="color_sys_text_brand_act">@color/color_light_navy_blue_7</color>
+    <color name="color_sys_text_anti_norm">@color/color_light_gray_1</color>
+    <color name="color_sys_text_anti_dis">@color/color_light_gray_2</color>
+    <color name="color_sys_text_accent_norm">@color/color_light_blue_6</color>
+    <color name="color_sys_text_accent_hov">@color/color_light_blue_5</color>
+    <color name="color_sys_text_accent_dis">@color/color_light_blue_3</color>
+    <color name="color_sys_text_accent_act">@color/color_light_blue_7</color>
+    <color name="color_sys_layout_state_warning">@color/color_light_gold_2</color>
+    <color name="color_sys_layout_state_note">@color/color_light_blue_1</color>
+    <color name="color_sys_layout_state_info">@color/color_light_blue_2</color>
+    <color name="color_sys_layout_state_error">@color/color_light_red_2</color>
+    <color name="color_sys_layout_mg">@color/color_light_gray_2</color>
+    <color name="color_sys_layout_fg_light_dis">@color/color_light_gray_3</color>
+    <color name="color_sys_layout_fg_light">@color/color_light_gray_1</color>
+    <color name="color_sys_layout_fg_dark">@color/color_light_gray_4</color>
+    <color name="color_sys_layout_divider">#1A000000</color>
+    <color name="color_sys_layout_dark_bg">@color/color_light_gray_10</color>
+    <color name="color_sys_layout_brand">@color/color_light_navy_blue_6</color>
+    <color name="color_sys_layout_bg_view">@color/color_light_gray_5</color>
+    <color name="color_sys_layout_bg_tabbar">@color/color_light_gray_4</color>
+    <color name="color_sys_layout_bg_home">@color/color_light_gray_1</color>
+    <color name="color_sys_layout_anti">@color/color_light_gray_1</color>
+    <color name="color_sys_layout_accent">@color/color_light_blue_6</color>
+    <color name="color_sys_border_neutral_lv3">@color/color_light_gray_3</color>
+    <color name="color_sys_border_neutral_lv2">@color/color_light_gray_4</color>
+    <color name="color_sys_border_neutral_lv1">@color/color_light_gray_5</color>
+    <color name="color_sys_border_error">@color/color_light_red_6</color>
+    <color name="color_sys_border_accent_lv2">@color/color_light_blue_4</color>
+    <color name="color_sys_border_accent_lv1">@color/color_light_blue_6</color>
+    <color name="color_slider_track_norm">@color/color_light_gray_5</color>
+    <color name="color_slider_track_dis">@color/color_light_gray_4</color>
+    <color name="color_slider_track_filled_norm">@color/color_light_blue_6</color>
+    <color name="color_slider_track_filled_dis">@color/color_light_gray_6</color>
+    <color name="color_slider_knob_norm">@color/color_light_blue_6</color>
+    <color name="color_slider_knob_dis">@color/color_light_gray_6</color>
+    <color name="color_slider_knob_border">@color/color_light_gray_1</color>
+    <color name="color_item_state_sel_border_lv3">@color/color_sys_border_neutral_lv1</color>
+    <color name="color_item_state_sel_bg_lv3">@color/rgba(color_light_gray_5, 0_6)</color>
+    <color name="color_item_state_sel_bg_lv2">@color/color_light_gray_4</color>
+    <color name="color_item_state_sel_bg_lv1">@color/rgba(color_light_blue_6,0_1)</color>
+    <color name="color_item_state_hov_bg">@color/color_light_gray_3</color>
+    <color name="color_icon_pdf_tools_purple">@color/color_light_purple_5</color>
+    <color name="color_icon_pdf_tools_pink">@color/color_light_pink_5</color>
+    <color name="color_icon_pdf_tools_orange">@color/color_light_orange_5</color>
+    <color name="color_icon_pdf_tools_cyan">@color/color_light_cyan_5</color>
+    <color name="color_icon_pdf_tools_blue">@color/color_light_blue_5</color>
+    <color name="color_icon_file_pdf">@color/color_light_red_6</color>
+    <color name="color_icon_file_image">@color/color_light_navy_blue_4</color>
+    <color name="color_icon_checkbox_radio_sel_fill">@color/color_icon_base_anti_norm</color>
+    <color name="color_icon_checkbox_radio_sel_border_radio">@color/color_sys_border_accent_lv1</color>
+    <color name="color_icon_checkbox_radio_sel_bg">@color/color_sys_layout_accent</color>
+    <color name="color_icon_checkbox_radio_norm_border">@color/color_sys_border_neutral_lv2</color>
+    <color name="color_icon_checkbox_radio_norm_bg">@color/color_sys_layout_fg_light</color>
+    <color name="color_icon_checkbox_radio_hov_border">@color/color_sys_border_accent_lv2</color>
+    <color name="color_icon_checkbox_radio_hov_bg">@color/color_sys_layout_fg_light</color>
+    <color name="color_icon_checkbox_radio_dis_fill">@color/color_icon_base_neutral_dis</color>
+    <color name="color_icon_checkbox_radio_dis_border">@color/color_sys_border_neutral_lv2</color>
+    <color name="color_icon_checkbox_radio_dis_bg">@color/color_sys_layout_fg_light_dis</color>
+    <color name="color_icon_base_state_warning">@color/color_light_gold_6</color>
+    <color name="color_icon_base_state_success">@color/color_light_green_6</color>
+    <color name="color_icon_base_state_info">@color/color_light_blue_6</color>
+    <color name="color_icon_base_state_error">@color/color_light_red_6</color>
+    <color name="color_icon_base_neutral_sel">@color/color_light_gray_11</color>
+    <color name="color_icon_base_neutral_norm_lv3">@color/color_light_gray_5</color>
+    <color name="color_icon_base_neutral_norm_lv2">@color/color_light_gray_7</color>
+    <color name="color_icon_base_neutral_norm_lv1">@color/color_light_gray_9</color>
+    <color name="color_icon_base_neutral_dis">@color/color_light_gray_6</color>
+    <color name="color_icon_base_brand">@color/color_light_navy_blue_6</color>
+    <color name="color_icon_base_anti_norm">@color/color_light_gray_1</color>
+    <color name="color_icon_base_anti_dis">@color/color_light_gray_2</color>
+    <color name="color_icon_base_accent">@color/color_light_blue_6</color>
+    <color name="color_icon_arrow_gray_dis">@color/color_icon_base_neutral_dis</color>
+    <color name="color_icon_arrow_gray_def">@color/color_light_gray_7</color>
+    <color name="color_icon_arrow_gray_act">@color/color_light_gray_8</color>
+    <color name="color_icon_arrow_anti_dis">@color/color_icon_base_anti_dis</color>
+    <color name="color_icon_arrow_anti_def">@color/color_icon_base_anti_norm</color>
+    <color name="color_icon_arrow_accent_norm">@color/color_icon_base_accent</color>
+    <color name="color_icon_arrow_accent_hov">@color/color_light_blue_5</color>
+    <color name="color_icon_arrow_accent_dis">@color/color_light_blue_3</color>
+    <color name="color_icon_arrow_accent_act">@color/color_light_blue_7</color>
+    <color name="color_field_text_tips_error">@color/color_sys_text_error_norm</color>
+    <color name="color_field_text_tips">@color/color_sys_text_neutral_lv3</color>
+    <color name="color_field_text_placeholder">@color/color_sys_text_neutral_lv3</color>
+    <color name="color_field_text_dis">@color/color_sys_text_neutral_dis</color>
+    <color name="color_field_text_act">@color/color_sys_text_neutral_lv1</color>
+    <color name="color_field_border_sel">@color/color_light_blue_3</color>
+    <color name="color_field_border_norm">@color/color_sys_border_neutral_lv2</color>
+    <color name="color_field_border_hov">@color/color_sys_border_accent_lv2</color>
+    <color name="color_field_border_focus">@color/color_sys_border_accent_lv1</color>
+    <color name="color_field_border_error">@color/color_sys_border_error</color>
+    <color name="color_field_border_dis">@color/color_sys_border_neutral_lv2</color>
+    <color name="color_field_bg_dis">@color/color_sys_layout_fg_light_dis</color>
+    <color name="color_field_bg_def">@color/color_sys_layout_fg_light</color>
+    <color name="color_field_bg_text_sel">@color/color_light_blue_3</color>
+    <color name="color_btn_upgrade_text_dis">@color/color_sys_text_anti_dis</color>
+    <color name="color_btn_upgrade_text_def">@color/color_sys_text_anti_norm</color>
+    <color name="color_btn_upgrade_bg_norm">@color/color_light_orange_6</color>
+    <color name="color_btn_upgrade_bg_hov">@color/color_light_orange_5</color>
+    <color name="color_btn_upgrade_bg_dis">@color/color_light_orange_3</color>
+    <color name="color_btn_upgrade_bg_act">@color/color_light_orange_7</color>
+    <color name="color_btn_sec_text_dis">@color/color_sys_text_neutral_dis</color>
+    <color name="color_btn_sec_text_def">@color/color_sys_text_neutral_lv1</color>
+    <color name="color_btn_sec_border_color">@color/color_light_gray_4</color>
+    <color name="color_btn_sec_bg_norm">@color/color_light_gray_1</color>
+    <color name="color_btn_sec_bg_hov">@color/color_light_gray_3</color>
+    <color name="color_btn_sec_bg_dis">@color/color_light_gray_3</color>
+    <color name="color_btn_sec_bg_act">@color/color_light_gray_4</color>
+    <color name="color_btn_link_text_norm">@color/color_sys_text_accent_norm</color>
+    <color name="color_btn_link_text_hov">@color/color_sys_text_accent_hov</color>
+    <color name="color_btn_link_text_dis">@color/color_sys_text_accent_dis</color>
+    <color name="color_btn_link_text_act">@color/color_sys_text_accent_act</color>
+    <color name="color_btn_icon_fill_bg_norm">@color/color_light_gray_3</color>
+    <color name="color_btn_icon_fill_bg_hov">@color/color_light_gray_4</color>
+    <color name="color_btn_icon_fill_bg_dis">@color/color_light_gray_3</color>
+    <color name="color_btn_icon_fill_bg_act">@color/color_light_gray_5</color>
+    <color name="color_btn_ghost_text_norm">@color/color_sys_text_brand_norm</color>
+    <color name="color_btn_ghost_text_hov">@color/color_sys_text_brand_hov</color>
+    <color name="color_btn_ghost_text_dis">@color/color_sys_text_brand_dis</color>
+    <color name="color_btn_ghost_text_act">@color/color_sys_text_brand_act</color>
+    <color name="color_btn_ghost_border_norm">@color/color_light_navy_blue_6</color>
+    <color name="color_btn_ghost_border_hov">@color/color_light_navy_blue_5</color>
+    <color name="color_btn_ghost_border_dis">@color/color_light_navy_blue_3</color>
+    <color name="color_btn_ghost_border_act">@color/color_light_navy_blue_7</color>
+    <color name="color_btn_cta_text_dis">@color/color_sys_text_anti_dis</color>
+    <color name="color_btn_cta_text_def">@color/color_sys_text_anti_norm</color>
+    <color name="color_btn_cta_bg_norm">@color/color_light_blue_6</color>
+    <color name="color_btn_cta_bg_hov">@color/color_light_blue_5</color>
+    <color name="color_btn_cta_bg_dis">@color/color_light_blue_2</color>
+    <color name="color_btn_cta_bg_act">@color/color_light_blue_7</color>
+    <color name="color_btn_brand_text_dis">@color/color_sys_text_anti_dis</color>
+    <color name="color_btn_brand_text_def">@color/color_sys_text_anti_norm</color>
+    <color name="color_btn_brand_bg_norm">@color/color_light_navy_blue_6</color>
+    <color name="color_btn_brand_bg_hov">@color/color_light_navy_blue_5</color>
+    <color name="color_btn_brand_bg_dis">@color/color_light_navy_blue_3</color>
+    <color name="color_btn_brand_bg_act">@color/color_light_navy_blue_7</color>
+    <color name="color_badge_red_bg">@color/color_light_red_6</color>
+</resources>

+ 20 - 0
app/src/main/res/values/alias_spacing.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <dimen name="spacing_base_element_0">@dimen/spacing_0</dimen>
+    <dimen name="spacing_base_element_1">@dimen/spacing_1</dimen>
+    <dimen name="spacing_base_element_12">@dimen/spacing_12</dimen>
+    <dimen name="spacing_base_element_16">@dimen/spacing_16</dimen>
+    <dimen name="spacing_base_element_2">@dimen/spacing_2</dimen>
+    <dimen name="spacing_base_element_24">@dimen/spacing_24</dimen>
+    <dimen name="spacing_base_element_4">@dimen/spacing_4</dimen>
+    <dimen name="spacing_base_element_6">@dimen/spacing_6</dimen>
+    <dimen name="spacing_base_element_8">@dimen/spacing_8</dimen>
+    <dimen name="spacing_base_module_24">@dimen/spacing_24</dimen>
+    <dimen name="spacing_base_module_32">@dimen/spacing_32</dimen>
+    <dimen name="spacing_tree_32">@dimen/spacing_32</dimen>
+    <dimen name="spacing_tree_40">@dimen/spacing_40</dimen>
+    <dimen name="spacing_tree_56">@dimen/spacing_56</dimen>
+    <dimen name="spacing_tree_64">@dimen/spacing_64</dimen>
+    <dimen name="spacing_tree_80">@dimen/spacing_80</dimen>
+    <dimen name="spacing_tree_88">@dimen/spacing_88</dimen>
+</resources>

+ 207 - 0
app/src/main/res/values/global_colors.xml

@@ -0,0 +1,207 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <color name="color_light_red_9">#760920</color>
+    <color name="color_light_red_8">#A01730</color>
+    <color name="color_light_red_7">#C92C43</color>
+    <color name="color_light_red_6">#F3465B</color>
+    <color name="color_light_red_5">#F56571</color>
+    <color name="color_light_red_4">#F8858B</color>
+    <color name="color_light_red_3">#FAA5A7</color>
+    <color name="color_light_red_2">#FDC7C6</color>
+    <color name="color_light_red_10">#4D0013</color>
+    <color name="color_light_red_1">#FFE9E8</color>
+    <color name="color_light_purple_9">#1B0677</color>
+    <color name="color_light_purple_8">#3011A2</color>
+    <color name="color_light_purple_7">#4B20CD</color>
+    <color name="color_light_purple_6">#6C33F8</color>
+    <color name="color_light_purple_5">#8A56F9</color>
+    <color name="color_light_purple_4">#A77AFB</color>
+    <color name="color_light_purple_3">#C29EFC</color>
+    <color name="color_light_purple_2">#DBC3FE</color>
+    <color name="color_light_purple_10">#0B004D</color>
+    <color name="color_light_purple_1">#F2E8FF</color>
+    <color name="color_light_pink_9">#770764</color>
+    <color name="color_light_pink_8">#A11285</color>
+    <color name="color_light_pink_7">#CC22A4</color>
+    <color name="color_light_pink_6">#F637C4</color>
+    <color name="color_light_pink_5">#F859C8</color>
+    <color name="color_light_pink_4">#FA7CD0</color>
+    <color name="color_light_pink_3">#FBA0DA</color>
+    <color name="color_light_pink_2">#FDC4E6</color>
+    <color name="color_light_pink_10">#4D0042</color>
+    <color name="color_light_pink_1">#FFE8F5</color>
+    <color name="color_light_orange_9">#792A05</color>
+    <color name="color_light_orange_8">#A6440F</color>
+    <color name="color_light_orange_7">#D2621C</color>
+    <color name="color_light_orange_6">#FF852E</color>
+    <color name="color_light_orange_5">#FFA153</color>
+    <color name="color_light_orange_4">#FFB978</color>
+    <color name="color_light_orange_3">#FFD09E</color>
+    <color name="color_light_orange_2">#FFE4C3</color>
+    <color name="color_light_orange_10">#4D1600</color>
+    <color name="color_light_orange_1">#FFF5E8</color>
+    <color name="color_light_navy_blue_9">#081B52</color>
+    <color name="color_light_navy_blue_8">#112557</color>
+    <color name="color_light_navy_blue_7">#1C305D</color>
+    <color name="color_light_navy_blue_6">#273C62</color>
+    <color name="color_light_navy_blue_5">#415A81</color>
+    <color name="color_light_navy_blue_4">#617CA1</color>
+    <color name="color_light_navy_blue_3">#88A1C0</color>
+    <color name="color_light_navy_blue_2">#B5C9E0</color>
+    <color name="color_light_navy_blue_10">#00114D</color>
+    <color name="color_light_navy_blue_1">#E8F4FF</color>
+    <color name="color_light_green_9">#036F56</color>
+    <color name="color_light_green_8">#09916D</color>
+    <color name="color_light_green_7">#10B382</color>
+    <color name="color_light_green_6">#1AD598</color>
+    <color name="color_light_green_5">#3EDDA3</color>
+    <color name="color_light_green_4">#64E6B2</color>
+    <color name="color_light_green_3">#8EEEC4</color>
+    <color name="color_light_green_2">#BAF7DA</color>
+    <color name="color_light_green_10">#004D3D</color>
+    <color name="color_light_green_1">#E8FFF4</color>
+    <color name="color_light_gray_9">#616469</color>
+    <color name="color_light_gray_8">#7C8085</color>
+    <color name="color_light_gray_7">#94989C</color>
+    <color name="color_light_gray_6">#B1B3B8</color>
+    <color name="color_light_gray_5">#CED0D4</color>
+    <color name="color_light_gray_4">#DFE1E5</color>
+    <color name="color_light_gray_3">#EDEEF0</color>
+    <color name="color_light_gray_2">#F7F8FA</color>
+    <color name="color_light_gray_12">#000000</color>
+    <color name="color_light_gray_11">#252629</color>
+    <color name="color_light_gray_10">#36383B</color>
+    <color name="color_light_gray_1">#ffffff</color>
+    <color name="color_light_gold_9">#794304</color>
+    <color name="color_light_gold_8">#A6630C</color>
+    <color name="color_light_gold_7">#D28717</color>
+    <color name="color_light_gold_6">#FFAF25</color>
+    <color name="color_light_gold_5">#FFC34C</color>
+    <color name="color_light_gold_4">#FFD573</color>
+    <color name="color_light_gold_3">#FFE49A</color>
+    <color name="color_light_gold_2">#FFF1C1</color>
+    <color name="color_light_gold_10">#4D2600</color>
+    <color name="color_light_gold_1">#FFFAE8</color>
+    <color name="color_light_cyan_9">#03616C</color>
+    <color name="color_light_cyan_8">#07828B</color>
+    <color name="color_light_cyan_7">#0DA5AA</color>
+    <color name="color_light_cyan_6">#14C9C9</color>
+    <color name="color_light_cyan_5">#37D4CF</color>
+    <color name="color_light_cyan_4">#5EDFD6</color>
+    <color name="color_light_cyan_3">#89E9E0</color>
+    <color name="color_light_cyan_2">#B7F4EC</color>
+    <color name="color_light_cyan_10">#03616C</color>
+    <color name="color_light_cyan_1">#E8FFFB</color>
+    <color name="color_light_blue_9">#032576</color>
+    <color name="color_light_blue_8">#083aa0</color>
+    <color name="color_light_blue_7">#0e53ca</color>
+    <color name="color_light_blue_6">#1770F4</color>
+    <color name="color_light_blue_5">#3f8ff6</color>
+    <color name="color_light_blue_4">#68acf8</color>
+    <color name="color_light_blue_3">#92C6FB</color>
+    <color name="color_light_blue_2">#BDDFFD</color>
+    <color name="color_light_blue_10">#00144d</color>
+    <color name="color_light_blue_1">#E8F5FF</color>
+    <color name="color_dark_red_9">#f8bfc0</color>
+    <color name="color_dark_red_8">#f3959a</color>
+    <color name="color_dark_red_7">#e76973</color>
+    <color name="color_dark_red_6">#d13e50</color>
+    <color name="color_dark_red_5">#a53442</color>
+    <color name="color_dark_red_4">#782a34</color>
+    <color name="color_dark_red_3">#562229</color>
+    <color name="color_dark_red_2">#411b21</color>
+    <color name="color_dark_red_10">#fae9e9</color>
+    <color name="color_dark_red_1">#291519</color>
+    <color name="color_dark_purple_9">#c8abf8</color>
+    <color name="color_dark_purple_8">#a981f3</color>
+    <color name="color_dark_purple_7">#8457e8</color>
+    <color name="color_dark_purple_6">#5f2ed6</color>
+    <color name="color_dark_purple_5">#4d28a8</color>
+    <color name="color_dark_purple_4">#3b217b</color>
+    <color name="color_dark_purple_3">#2e1d58</color>
+    <color name="color_dark_purple_2">#221743</color>
+    <color name="color_dark_purple_10">#e5d5fa</color>
+    <color name="color_dark_purple_1">#18132b</color>
+    <color name="color_dark_pink_9">#f8aedd</color>
+    <color name="color_dark_pink_8">#f384ce</color>
+    <color name="color_dark_pink_7">#e759bd</color>
+    <color name="color_dark_pink_6">#d432aa</color>
+    <color name="color_dark_pink_5">#a72a86</color>
+    <color name="color_dark_pink_4">#792363</color>
+    <color name="color_dark_pink_3">#571e49</color>
+    <color name="color_dark_pink_2">#421739</color>
+    <color name="color_dark_pink_10">#fad7ed</color>
+    <color name="color_dark_pink_1">#291326</color>
+    <color name="color_dark_orange_9">#f8cfa4</color>
+    <color name="color_dark_orange_8">#f3b57b</color>
+    <color name="color_dark_orange_7">#e79450</color>
+    <color name="color_dark_orange_6">#dc742a</color>
+    <color name="color_dark_orange_5">#ac5d25</color>
+    <color name="color_dark_orange_4">#7d4620</color>
+    <color name="color_dark_orange_3">#5a351c</color>
+    <color name="color_dark_orange_2">#452716</color>
+    <color name="color_dark_orange_10">#fae6cd</color>
+    <color name="color_dark_orange_1">#2b1b13</color>
+    <color name="color_dark_navy_blue_9">#6d93d5</color>
+    <color name="color_dark_navy_blue_8">#4570c6</color>
+    <color name="color_dark_navy_blue_7">#234eb1</color>
+    <color name="color_dark_navy_blue_6">#082f9d</color>
+    <color name="color_dark_navy_blue_5">#0b287d</color>
+    <color name="color_dark_navy_blue_4">#0d225c</color>
+    <color name="color_dark_navy_blue_3">#0f1d44</color>
+    <color name="color_dark_navy_blue_2">#0e1733</color>
+    <color name="color_dark_navy_blue_10">#98b7e4</color>
+    <color name="color_dark_navy_blue_1">#101321</color>
+    <color name="color_dark_green_9">#93f5cb</color>
+    <color name="color_dark_green_8">#65e5b2</color>
+    <color name="color_dark_green_7">#3cce98</color>
+    <color name="color_dark_green_6">#19b884</color>
+    <color name="color_dark_green_5">#18916a</color>
+    <color name="color_dark_green_4">#166a4f</color>
+    <color name="color_dark_green_3">#154d3c</color>
+    <color name="color_dark_green_2">#113a2f</color>
+    <color name="color_dark_green_10">#bffade</color>
+    <color name="color_dark_green_1">#112520</color>
+    <color name="color_dark_gray_9">#C5C5C5</color>
+    <color name="color_dark_gray_8">#ABABAC</color>
+    <color name="color_dark_gray_7">#929293</color>
+    <color name="color_dark_gray_6">#78787A</color>
+    <color name="color_dark_gray_5">#5F5F60</color>
+    <color name="color_dark_gray_4">#464647</color>
+    <color name="color_dark_gray_3">#2C2C2E</color>
+    <color name="color_dark_gray_2">#1D1D1F</color>
+    <color name="color_dark_gray_12">#ffffff</color>
+    <color name="color_dark_gray_11">#F6F6F6</color>
+    <color name="color_dark_gray_10">#DFDFDF</color>
+    <color name="color_dark_gray_1">#131314</color>
+    <color name="color_dark_gold_9">#f8e09d</color>
+    <color name="color_dark_gold_8">#f3cc73</color>
+    <color name="color_dark_gold_7">#e7b249</color>
+    <color name="color_dark_gold_6">#dc9822</color>
+    <color name="color_dark_gold_5">#ac781f</color>
+    <color name="color_dark_gold_4">#7d591c</color>
+    <color name="color_dark_gold_3">#5a4219</color>
+    <color name="color_dark_gold_2">#453115</color>
+    <color name="color_dark_gold_10">#faefc5</color>
+    <color name="color_dark_gold_1">#2b2012</color>
+    <color name="color_dark_cyan_9">#87e9e0</color>
+    <color name="color_dark_cyan_8">#5bd9d0</color>
+    <color name="color_dark_cyan_7">#34c3be</color>
+    <color name="color_dark_cyan_6">#14aeae</color>
+    <color name="color_dark_cyan_5">#14898a</color>
+    <color name="color_dark_cyan_4">#136565</color>
+    <color name="color_dark_cyan_3">#134a4a</color>
+    <color name="color_dark_cyan_2">#103638</color>
+    <color name="color_dark_cyan_10">#b8f7f0</color>
+    <color name="color_dark_cyan_1">#102224</color>
+    <color name="color_dark_blue_9">#8dc3f8</color>
+    <color name="color_dark_blue_8">#65a7f3</color>
+    <color name="color_dark_blue_7">#3c86e8</color>
+    <color name="color_dark_blue_6">#1662d2</color>
+    <color name="color_dark_blue_5">#164fa6</color>
+    <color name="color_dark_blue_4">#153d79</color>
+    <color name="color_dark_blue_3">#142f57</color>
+    <color name="color_dark_blue_2">#102343</color>
+    <color name="color_dark_blue_10">#b7dbfa</color>
+    <color name="color_dark_blue_1">#10192a</color>
+</resources>

+ 20 - 0
app/src/main/res/values/global_spacing.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <dimen name="spacing_0">0px</dimen>
+    <dimen name="spacing_1">1px</dimen>
+    <dimen name="spacing_2">2px</dimen>
+    <dimen name="spacing_4">4px</dimen>
+    <dimen name="spacing_5">5px</dimen>
+    <dimen name="spacing_6">6px</dimen>
+    <dimen name="spacing_8">8px</dimen>
+    <dimen name="spacing_10">10px</dimen>
+    <dimen name="spacing_12">12px</dimen>
+    <dimen name="spacing_16">16px</dimen>
+    <dimen name="spacing_24">24px</dimen>
+    <dimen name="spacing_32">32px</dimen>
+    <dimen name="spacing_40">40px</dimen>
+    <dimen name="spacing_56">56px</dimen>
+    <dimen name="spacing_64">64px</dimen>
+    <dimen name="spacing_80">80px</dimen>
+    <dimen name="spacing_88">88px</dimen>
+</resources>

+ 7 - 13
lib_material_tokens/src/main/java/com/kdanmobile/android/lib/material/tokens/MdParseGlobalUtil.kt

@@ -1,11 +1,7 @@
 package com.kdanmobile.android.lib.material.tokens.category
 
-import com.kdanmobile.android.lib.material.tokens.TokenCategory
+import com.kdanmobile.android.lib.material.tokens.TokenJsonType
 import com.kdanmobile.android.lib.material.tokens.base.logE
-import com.kdanmobile.android.lib.material.tokens.base.logT
-import com.kdanmobile.android.lib.material.tokens.category.color.ColorParse
-import com.kdanmobile.android.lib.material.tokens.category.sizeing.SizeingParse
-import com.kdanmobile.android.lib.material.tokens.category.spacing.SpacingParse
 import org.json.JSONObject
 import java.io.File
 
@@ -15,7 +11,7 @@ import java.io.File
  * @date: 2022/11/9
  * description:
  */
-class MdParseGlobalUtil(var filePath: String, var destFolderPath : String) {
+class MdParseUtil(var tokenJsonType: TokenJsonType, private var filePath: String, var destFolderPath: String) {
 
 
     fun start() {
@@ -34,12 +30,12 @@ class MdParseGlobalUtil(var filePath: String, var destFolderPath : String) {
         val jsonObj = JSONObject(json)
         val map = getTokensCategoryData(jsonObj)
         for (entry in map) {
-            val key = entry.key.replace("-","_")
-            val parse = ParseTokenFactory.factory(key)
+            val key = entry.key.replace("-", "_")
+            val parse = ParseTokenFactory.factory(tokenJsonType = tokenJsonType, key)
             parse?.parse(key, entry.value)
-            parse?.generateTokenFile(ParseTokenFactory.getSavePathByCategory(destFolderPath, key))
-            if (parse == null){
-                logE("解析器","未解析tokens类型:${entry.key}")
+            parse?.generateTokenFile(ParseTokenFactory.getSavePathByCategory(tokenJsonType, destFolderPath, key))
+            if (parse == null) {
+                logE("解析器", "未解析tokens类型:${entry.key}")
             }
         }
 
@@ -63,8 +59,6 @@ class MdParseGlobalUtil(var filePath: String, var destFolderPath : String) {
     }
 
 
-
-
     /**
      * 解析尺寸
      */

+ 4 - 3
lib_material_tokens/src/main/java/com/kdanmobile/android/lib/material/tokens/MdToken.kt

@@ -1,14 +1,15 @@
 package com.kdanmobile.android.lib.material.tokens
 
-import com.kdanmobile.android.lib.material.tokens.category.MdParseGlobalUtil
+import com.kdanmobile.android.lib.material.tokens.category.MdParseUtil
 
 
 
 fun main() {
 
-    val globalTokenUtil = MdParseGlobalUtil("./lib_material_tokens/src/tokens/global.json","./lib_material_tokens/src/")
+    val globalTokenUtil = MdParseUtil(TokenJsonType.Global, "./lib_material_tokens/src/tokens/global.json","./lib_material_tokens/src/")
     globalTokenUtil.start()
 
-
+    val aliasTokenParse = MdParseUtil(TokenJsonType.Alias, "./lib_material_tokens/src/tokens/alias-light.json","./lib_material_tokens/src/")
+    aliasTokenParse.start()
 
 }

+ 17 - 6
lib_material_tokens/src/main/java/com/kdanmobile/android/lib/material/tokens/TokenCategory.kt

@@ -6,16 +6,27 @@ package com.kdanmobile.android.lib.material.tokens
  * @date: 2023/2/13
  * description:
  */
-enum class TokenCategory {
+enum class TokenCategory(var typeName : String) {
 
-    sizing,
+    Global_Sizing("sizing"),
 
-    spacing,
+    Global_Spacing("spacing"),
 
-    color,
+    Global_Color("color"),
 
-    border_width,
+    Global_BorderWidth("border_width"),
+
+    Global_BorderRadius("border_radius"),
+
+
+
+    Alias_Spacing("spacing"),
+
+    Alias_Color("color"),
+
+    Alias_BorderRadius("border_radius"),
+
+    Alias_BoxShadow("boxShadow")
 
-    border_radius
 
 }

+ 23 - 0
lib_material_tokens/src/main/java/com/kdanmobile/android/lib/material/tokens/TokenJsonType.kt

@@ -0,0 +1,23 @@
+package com.kdanmobile.android.lib.material.tokens
+
+/**
+ * @classname:
+ * @author: LiuXiaoLong
+ * @date: 2023/2/20
+ * description: Token json的类型
+ * 分为:
+ * Global.json 全局基础token
+ * Alias-light.json 对基础token的别名
+ * Comp-light.json 组合token
+ */
+enum class TokenJsonType {
+
+
+    Global,
+
+    Alias,
+
+    Compose
+
+
+}

+ 15 - 0
lib_material_tokens/src/main/java/com/kdanmobile/android/lib/material/tokens/base/DataExtension.kt

@@ -0,0 +1,15 @@
+package com.kdanmobile.android.lib.material.tokens.base
+
+/**
+ * @classname:
+ * @author: LiuXiaoLong
+ * @date: 2023/2/20
+ * description:
+ */
+
+
+
+fun String.replaceInvalidStr() : String{
+    return this.replace("-","_").replace(".", "_").replace("{", "").replace("}","")
+
+}

+ 12 - 4
lib_material_tokens/src/main/java/com/kdanmobile/android/lib/material/tokens/base/XMLUtil.kt

@@ -16,11 +16,19 @@ object XMLUtil {
      * 解析已存在的xml数据
      */
     fun getFileXmlData(file: File, defaultHandler: BaseXmlHandler): MutableMap<String, String> {
-        val factory = SAXParserFactory.newInstance()
-        val parser = factory.newSAXParser()
-        parser.parse(file, defaultHandler)
-        return defaultHandler.getExistsMapValues()
+        try {
+            val factory = SAXParserFactory.newInstance()
+            val parser = factory.newSAXParser()
+            parser.parse(file, defaultHandler)
+            return defaultHandler.getExistsMapValues()
+        }catch (e : Exception){
+            logE("XmlUtil", msg = "XmlUtil.getFileXmlData 出现异常:${e.printStackTrace()}")
+            return mutableMapOf()
+        }
     }
 
 
+
+
+
 }

+ 1 - 1
lib_material_tokens/src/main/java/com/kdanmobile/android/lib/material/tokens/base/XmlParserDataCategory.kt

@@ -11,7 +11,7 @@ enum class XmlParserDataCategory {
     /**
      * 数值类型 px dp等
      */
-    integer,
+    dimen,
 
     /**
      * 颜色类型

+ 61 - 26
lib_material_tokens/src/main/java/com/kdanmobile/android/lib/material/tokens/category/ParseTokenFactory.kt

@@ -1,10 +1,13 @@
 package com.kdanmobile.android.lib.material.tokens.category
 
 import com.kdanmobile.android.lib.material.tokens.TokenCategory
+import com.kdanmobile.android.lib.material.tokens.TokenJsonType
 import com.kdanmobile.android.lib.material.tokens.category.borderradius.BorderRadiusParse
 import com.kdanmobile.android.lib.material.tokens.category.borderwidth.BorderWidthParse
+import com.kdanmobile.android.lib.material.tokens.category.color.AliasColorParse
 import com.kdanmobile.android.lib.material.tokens.category.color.ColorParse
 import com.kdanmobile.android.lib.material.tokens.category.sizeing.SizeingParse
+import com.kdanmobile.android.lib.material.tokens.category.spacing.AliasSpacingParse
 import com.kdanmobile.android.lib.material.tokens.category.spacing.SpacingParse
 import java.io.File
 
@@ -17,37 +20,69 @@ import java.io.File
 object ParseTokenFactory {
 
 
-    fun factory(category: String) : IParseToken?{
-        return when(category){
-            TokenCategory.sizing.name ->{
-                //todo 此处待验证,保存的值还没有加单位,应该是px, 但需要具体项目再测一下
-                SizeingParse()
+    fun factory(tokenJsonType: TokenJsonType, category: String) : IParseToken?{
+        if (tokenJsonType == TokenJsonType.Global){
+            return when(category){
+                TokenCategory.Global_Sizing.typeName ->{
+                    //todo 此处待验证,保存的值还没有加单位,应该是px, 但需要具体项目再测一下
+                    SizeingParse()
+                }
+                TokenCategory.Global_Spacing.typeName ->{
+                    //todo 此处待验证,保存的值还没有加单位,应该是px, 但需要具体项目再测一下
+                    SpacingParse()
+                }
+                TokenCategory.Global_BorderWidth.typeName-> {
+                    BorderWidthParse()
+                }
+                TokenCategory.Global_Color.typeName ->{
+                    ColorParse()
+                }
+                TokenCategory.Global_BorderRadius.typeName ->{
+                    BorderRadiusParse()
+                }
+                else -> null
             }
-            TokenCategory.spacing.name ->{
-                //todo 此处待验证,保存的值还没有加单位,应该是px, 但需要具体项目再测一下
-                SpacingParse()
+        }else{
+            return when(category){
+                TokenCategory.Alias_Spacing.typeName ->{
+//                    todo 此处待验证,保存的值还没有加单位,应该是px, 但需要具体项目再测一下
+                    AliasSpacingParse()
+                }
+                TokenCategory.Alias_Color.typeName ->{
+                    AliasColorParse()
+                }
+                TokenCategory.Alias_BorderRadius.typeName ->{
+//                    BorderRadiusParse()
+                    null
+                }
+                TokenCategory.Alias_BoxShadow.typeName ->{
+                    null
+                }
+                else -> null
             }
-            TokenCategory.border_width.name-> {
-                BorderWidthParse()
-            }
-            TokenCategory.color.name ->{
-                ColorParse()
-            }
-            TokenCategory.border_radius.name ->{
-                BorderRadiusParse()
-            }
-            else -> null
         }
+
     }
 
-    fun getSavePathByCategory(destRootPath : String, category: String) : String?{
-        return when(category){
-            TokenCategory.sizing.name -> "values/token_sizing.xml"
-            TokenCategory.spacing.name -> "values/token_spacing.xml"
-            TokenCategory.color.name -> "values/token_colors.xml"
-            TokenCategory.border_width.name -> "values/token_border_width.xml"
-            TokenCategory.border_radius.name -> "values/token_border_radius.xml"
-            else -> ""
+    fun getSavePathByCategory(tokenJsonType: TokenJsonType, destRootPath : String, category: String) : String?{
+        return if (tokenJsonType == TokenJsonType.Global){
+            when(category){
+                TokenCategory.Global_Sizing.typeName-> "result/global_sizing.xml"
+                TokenCategory.Global_Spacing.typeName -> "result/global_spacing.xml"
+                TokenCategory.Global_Color.typeName -> "result/global_colors.xml"
+                TokenCategory.Global_BorderWidth.typeName -> "result/global_border_width.xml"
+                TokenCategory.Global_BorderRadius.typeName -> "result/global_border_radius.xml"
+                else -> ""
+            }
+        }else{
+            when(category){
+
+                TokenCategory.Alias_Spacing.typeName -> "result/alias_spacing.xml"
+                TokenCategory.Alias_Color.typeName -> "result/alias_color.xml"
+                TokenCategory.Alias_BorderRadius.typeName -> "result/alias_border_radius.xml"
+                TokenCategory.Alias_BoxShadow.typeName -> "result/alias_box_shadow.xml"
+                else -> ""
+            }
         }.run {
             if (isNullOrEmpty().not()){
                 File(destRootPath, this).absolutePath

+ 2 - 2
lib_material_tokens/src/main/java/com/kdanmobile/android/lib/material/tokens/category/borderradius/BorderRadiusParse.kt

@@ -48,14 +48,14 @@ class BorderRadiusParse : IParseToken {
         Log.t(tag, "token文件输出路径:${destFilePath}")
 
         val file = File(destFilePath)
-        val outputList = FileUtil.parseAndMergeOldData(tag, file, CommonXmlParserHandler(XmlParserDataCategory.integer), result)
+        val outputList = FileUtil.parseAndMergeOldData(tag, file, CommonXmlParserHandler(XmlParserDataCategory.dimen), result)
             .sortedBy {
                 it.second.toInt()
             }
             .map {
                 it.first to it.second +"dp"
             }
-        FileUtil.writeTokens(file, XmlParserDataCategory.integer, outputList)
+        FileUtil.writeTokens(file, XmlParserDataCategory.dimen, outputList)
 
         logT(tag, "解析生成文件完成-----")
 

+ 2 - 3
lib_material_tokens/src/main/java/com/kdanmobile/android/lib/material/tokens/category/borderwidth/BorderWidthParse.kt

@@ -5,7 +5,6 @@ import com.kdanmobile.android.lib.material.tokens.category.IParseToken
 import com.kdanmobile.android.lib.material.tokens.category.common.CommonXmlParserHandler
 import org.json.JSONObject
 import java.io.File
-import javax.xml.parsers.SAXParserFactory
 
 /**
  * @classname:
@@ -52,13 +51,13 @@ class BorderWidthParse : IParseToken {
         Log.t(tag, "token文件输出路径:${destFilePath}")
 
         val file = File(destFilePath)
-        val outputData = FileUtil.parseAndMergeOldData(tag, file, CommonXmlParserHandler(XmlParserDataCategory.integer), result)
+        val outputData = FileUtil.parseAndMergeOldData(tag, file, CommonXmlParserHandler(XmlParserDataCategory.dimen), result)
             .sortedBy {
                 it.second.toInt()
             }.map {
                 it.first to it.second +"dp"
             }
-        FileUtil.writeTokens(file, XmlParserDataCategory.integer, outputData)
+        FileUtil.writeTokens(file, XmlParserDataCategory.dimen, outputData)
         logT(tag, "解析生成文件完成-----")
 
     }

+ 68 - 0
lib_material_tokens/src/main/java/com/kdanmobile/android/lib/material/tokens/category/color/AliasColorParse.kt

@@ -0,0 +1,68 @@
+package com.kdanmobile.android.lib.material.tokens.category.color
+
+import com.kdanmobile.android.lib.material.tokens.base.*
+import com.kdanmobile.android.lib.material.tokens.category.IParseToken
+import com.kdanmobile.android.lib.material.tokens.category.common.CommonXmlParserHandler
+import org.json.JSONObject
+import java.io.File
+import javax.xml.parsers.SAXParserFactory
+
+/**
+ * @classname:
+ * @author: LiuXiaoLong
+ * @date: 2023/2/13
+ * description: 解析Sizing相关token
+ */
+class AliasColorParse : IParseToken {
+
+    private var result = hashMapOf<String, String>()
+
+    private var tag = "解析Color"
+
+
+    override fun parse(rootKey: String, jsonObject: JSONObject) {
+        println("开始解析${rootKey}类型Tokens")
+        for (itemKey in jsonObject.keys()) {
+            val key = itemKey as String
+            val value = jsonObject.get(key)
+            val names = (value as JSONObject).names()
+            if (names.length() == 2 && names.getString(0).equals("type") || names.getString(0).equals("value")) {
+                val colorValue = value.getString("value").replaceInvalidStr()
+                val key = "${rootKey}_${key}"
+                result[key] = colorValue
+            } else {
+                parse("${rootKey}_$key", value)
+            }
+        }
+    }
+
+
+    /**
+     * 生成token文件
+     */
+    override fun generateTokenFile(destFilePath: String?) {
+
+        if (destFilePath.isNullOrEmpty()) {
+            logT(tag, "保存路径为空---return")
+            return
+        }
+        logT(tag, "开始生成Color Token文件")
+        Log.t(tag, "token文件输出路径:${destFilePath}")
+
+        val file = File(destFilePath)
+        val outputList = FileUtil.parseAndMergeOldData(tag, file, CommonXmlParserHandler(XmlParserDataCategory.color), result)
+            .sortedByDescending {
+                it.first
+            }
+            .map {
+                it.first to "@color/${it.second}"
+            }
+        FileUtil.writeTokens(file, XmlParserDataCategory.color, outputList)
+
+        logT(tag, "解析生成文件完成-----")
+
+    }
+
+
+}
+

+ 1 - 1
lib_material_tokens/src/main/java/com/kdanmobile/android/lib/material/tokens/category/color/ColorParse.kt

@@ -28,7 +28,7 @@ class ColorParse : IParseToken {
             val names = (value as JSONObject).names()
             if (names.length() == 2 && names.getString(0).equals("type") || names.getString(0).equals("value")) {
                 val colorValue = value.getString("value")
-                val key = "${rootKey}_${key}".replace("-","_").replace(".","_")
+                val key = "${rootKey}_${key}".replaceInvalidStr()
                 result[key] = colorValue
             } else {
                 parse("${rootKey}_$key", value)

+ 2 - 3
lib_material_tokens/src/main/java/com/kdanmobile/android/lib/material/tokens/category/sizeing/SizeingParse.kt

@@ -5,7 +5,6 @@ import com.kdanmobile.android.lib.material.tokens.category.IParseToken
 import com.kdanmobile.android.lib.material.tokens.category.common.CommonXmlParserHandler
 import org.json.JSONObject
 import java.io.File
-import javax.xml.parsers.SAXParserFactory
 
 /**
  * @classname:
@@ -52,13 +51,13 @@ class SizeingParse : IParseToken {
         Log.t(tag, "token文件输出路径:${destFilePath}")
 
         val file = File(destFilePath)
-        val outputData = FileUtil.parseAndMergeOldData(tag, file, CommonXmlParserHandler(XmlParserDataCategory.integer), result)
+        val outputData = FileUtil.parseAndMergeOldData(tag, file, CommonXmlParserHandler(XmlParserDataCategory.dimen), result)
             .sortedBy {
                 it.second.toInt()
             }.map {
                 it.first to it.second +"px"
             }
-        FileUtil.writeTokens(file, XmlParserDataCategory.integer, outputData)
+        FileUtil.writeTokens(file, XmlParserDataCategory.dimen, outputData)
         logT(tag, "解析生成文件完成-----")
 
     }

+ 59 - 0
lib_material_tokens/src/main/java/com/kdanmobile/android/lib/material/tokens/category/spacing/AliasSpacingParse.kt

@@ -0,0 +1,59 @@
+package com.kdanmobile.android.lib.material.tokens.category.spacing
+
+import com.kdanmobile.android.lib.material.tokens.base.*
+import com.kdanmobile.android.lib.material.tokens.category.IParseToken
+import com.kdanmobile.android.lib.material.tokens.category.common.CommonXmlParserHandler
+import org.json.JSONObject
+import java.io.File
+
+/**
+ * @classname:
+ * @author: LiuXiaoLong
+ * @date: 2023/2/20
+ * description:
+ */
+class AliasSpacingParse : IParseToken {
+    var result = hashMapOf<String, String>()
+
+    open var tag = "解析AliasSpacing"
+
+    override fun parse(rootKey: String, jsonObject: JSONObject) {
+
+        println("开始解析${rootKey}类型Tokens")
+        for (itemKey in jsonObject.keys()) {
+            val key = itemKey as String
+            val value = jsonObject.get(key)
+            val names = (value as JSONObject).names()
+            if (names.length() == 2 && names.getString(0).equals("type") || names.getString(0).equals("value")) {
+                val sizingValue = value.getString("value").replaceInvalidStr()
+                result["${rootKey}_${key}"] = sizingValue
+            } else {
+                parse("${rootKey}_$key", value)
+            }
+        }
+    }
+
+
+    override fun generateTokenFile(destFilePath: String?) {
+        if (destFilePath.isNullOrEmpty()) {
+            logT(tag, "保存路径为空---return")
+            return
+        }
+        logT(tag, "开始生成AliasSpacing Token文件")
+        Log.t(tag, "token文件输出路径:${destFilePath}")
+
+        val file = File(destFilePath)
+        val resultData = FileUtil.parseAndMergeOldData(tag, file, CommonXmlParserHandler(XmlParserDataCategory.dimen), result)
+            .sortedBy {
+                it.first
+            }
+            .map {
+                it.first to "@dimen/${it.second}"
+            }
+        FileUtil.writeTokens(file, XmlParserDataCategory.dimen, resultData)
+
+        logT(tag, "解析生成文件完成-----")
+    }
+
+
+}

+ 5 - 6
lib_material_tokens/src/main/java/com/kdanmobile/android/lib/material/tokens/category/spacing/SpacingParse.kt

@@ -5,7 +5,6 @@ import com.kdanmobile.android.lib.material.tokens.category.IParseToken
 import com.kdanmobile.android.lib.material.tokens.category.common.CommonXmlParserHandler
 import org.json.JSONObject
 import java.io.File
-import javax.xml.parsers.SAXParserFactory
 
 /**
  * @classname:
@@ -13,11 +12,11 @@ import javax.xml.parsers.SAXParserFactory
  * @date: 2023/2/13
  * description: 解析Spacing相关token
  */
-class SpacingParse : IParseToken {
+open class SpacingParse : IParseToken {
 
-    private var result = hashMapOf<String, String>()
+    var result = hashMapOf<String, String>()
 
-    private var tag = "解析Spacing"
+    open var tag = "解析Spacing"
 
 
     override fun parse(rootKey: String, jsonObject: JSONObject) {
@@ -51,14 +50,14 @@ class SpacingParse : IParseToken {
         Log.t(tag, "token文件输出路径:${destFilePath}")
 
         val file = File(destFilePath)
-        val resultData = FileUtil.parseAndMergeOldData(tag, file, CommonXmlParserHandler(XmlParserDataCategory.integer), result)
+        val resultData = FileUtil.parseAndMergeOldData(tag, file, CommonXmlParserHandler(XmlParserDataCategory.dimen), result)
             .sortedBy {
                 it.second.toInt()
             }
             .map {
                 it.first to it.second +"px"
             }
-        FileUtil.writeTokens(file, XmlParserDataCategory.integer, resultData)
+        FileUtil.writeTokens(file, XmlParserDataCategory.dimen, resultData)
 
         logT(tag, "解析生成文件完成-----")