admiral-tools-figma 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +1 -0
  3. data/admiral-tools-figma.gemspec +9 -0
  4. data/admiraltools/actions/figma_download_images.rb +116 -0
  5. data/admiraltools/actions/figma_generate_styles.rb +77 -0
  6. data/admiraltools/actions/figma_get_image_links.rb +139 -0
  7. data/admiraltools/actions/figma_get_styles.rb +90 -0
  8. data/admiraltools/helper/admiraltools_helper.rb +18 -0
  9. data/admiraltools/helper/figma/figma_client/figma_client.rb +193 -0
  10. data/admiraltools/helper/figma/figma_client/models/api/primitives/figma_color.rb +35 -0
  11. data/admiraltools/helper/figma/figma_client/models/api/primitives/figma_component.rb +58 -0
  12. data/admiraltools/helper/figma/figma_client/models/api/primitives/figma_components_styles_meta.rb +30 -0
  13. data/admiraltools/helper/figma/figma_client/models/api/primitives/figma_frame_info.rb +46 -0
  14. data/admiraltools/helper/figma/figma_client/models/api/primitives/figma_node.rb +43 -0
  15. data/admiraltools/helper/figma/figma_client/models/api/primitives/figma_paint.rb +32 -0
  16. data/admiraltools/helper/figma/figma_client/models/api/primitives/figma_style.rb +48 -0
  17. data/admiraltools/helper/figma/figma_client/models/api/primitives/figma_type_style.rb +56 -0
  18. data/admiraltools/helper/figma/figma_client/models/api/results/figma_components_styles_result.rb +36 -0
  19. data/admiraltools/helper/figma/figma_client/models/api/results/figma_images_result.rb +25 -0
  20. data/admiraltools/helper/figma/figma_client/models/api/results/figma_nodes_result.rb +52 -0
  21. data/admiraltools/helper/figma/figma_client/models/domain/converters/figma_to_domain_converter.rb +98 -0
  22. data/admiraltools/helper/figma/figma_client/models/domain/primitives/color.rb +44 -0
  23. data/admiraltools/helper/figma/figma_client/models/domain/primitives/component.rb +86 -0
  24. data/admiraltools/helper/figma/figma_client/models/domain/primitives/components_list.rb +29 -0
  25. data/admiraltools/helper/figma/figma_client/models/domain/primitives/font.rb +56 -0
  26. data/admiraltools/helper/figma/figma_client/models/domain/primitives/frame_info.rb +46 -0
  27. data/admiraltools/helper/figma/figma_client/models/domain/primitives/image_link.rb +33 -0
  28. data/admiraltools/helper/figma/figma_client/models/domain/primitives/style.rb +113 -0
  29. data/admiraltools/helper/figma/figma_client/models/domain/primitives/styles_group.rb +22 -0
  30. data/admiraltools/helper/figma/figma_client/models/domain/primitives/styles_list.rb +29 -0
  31. data/admiraltools/helper/figma/figma_client/models/models.rb +25 -0
  32. data/admiraltools/helper/figma/figma_image_downloader/bin/svg2vectordrawable.jar +0 -0
  33. data/admiraltools/helper/figma/figma_image_downloader/figma_image_downloader.rb +65 -0
  34. data/admiraltools/helper/figma/figma_image_downloader/generators/folder_generator.rb +47 -0
  35. data/admiraltools/helper/figma/figma_image_downloader/generators/folder_generator_raw.rb +32 -0
  36. data/admiraltools/helper/figma/figma_image_downloader/generators/folder_generator_res.rb +38 -0
  37. data/admiraltools/helper/figma/figma_image_downloader/generators/folder_generator_xcassets.rb +180 -0
  38. data/admiraltools/helper/figma/figma_image_downloader/generators/generators.rb +6 -0
  39. data/admiraltools/helper/figma/figma_image_downloader/helpers/image_name_formatter.rb +72 -0
  40. data/admiraltools/helper/figma/figma_image_downloader/helpers/progress_tasks_logger.rb +22 -0
  41. data/admiraltools/helper/figma/figma_image_downloader/helpers/scale_formatter.rb +96 -0
  42. data/admiraltools/helper/figma/figma_image_downloader/helpers/svg_to_vector_converter.rb +12 -0
  43. data/admiraltools/helper/figma/figma_image_downloader/models/download_image_params.rb +31 -0
  44. data/admiraltools/helper/figma/figma_image_downloader/models/image_name_components.rb +10 -0
  45. data/admiraltools/helper/figma/figma_image_downloader/models/image_ref.rb +12 -0
  46. data/admiraltools/helper/figma/figma_image_downloader/models/image_set_ref.rb +14 -0
  47. data/admiraltools/helper/figma/figma_image_downloader/models/models.rb +5 -0
  48. data/admiraltools/helper/figma/figma_template_generator/figma_template_generator.rb +22 -0
  49. data/admiraltools/helper/figma/figma_template_generator/models/styles_template.rb +34 -0
  50. data/admiraltools/helper/figma/helpers/file_folder.rb +30 -0
  51. data/admiraltools/helper/figma/helpers/hash_access.rb +18 -0
  52. data/admiraltools/helper/figma/helpers/string_filters.rb +63 -0
  53. data/admiraltools/helper/figma/helpers/string_format.rb +60 -0
  54. data/admiraltools/helper/system/system.rb +17 -0
  55. data/admiraltools/version.rb +7 -0
  56. data/admiraltools.rb +18 -0
  57. metadata +96 -0
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'folder_generator'
4
+ require_relative 'folder_generator_raw'
5
+ require_relative 'folder_generator_res'
6
+ require_relative 'folder_generator_xcassets'
@@ -0,0 +1,72 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../models/image_name_components'
4
+ require_relative '../../helpers/string_format'
5
+
6
+ class ImageNameFormatter
7
+ def separate(name:, naming_style:, folder_depth:, page_name: nil, frame_name: nil)
8
+ name = File.join([page_name, frame_name, name].compact)
9
+ full_name = format_path(name)
10
+ path_components = slice_name(name: full_name, folder_depth: folder_depth)
11
+ name = format_name(name: path_components.name, naming_style: naming_style)
12
+ folder = format_folder(folder: path_components.folder, naming_style: naming_style)
13
+ ImageNameComponents.new(name: name, folder: folder)
14
+ end
15
+
16
+ def image_path(group_name:, image_link:, single_scale:, convert_to_dpi: false)
17
+ if single_scale
18
+ "#{group_name}.#{image_link.image_format}"
19
+ else
20
+ scale = ScaleFormatter.new.formatted_scale(scale: image_link.scale, convert_to_dpi: convert_to_dpi)
21
+ "#{group_name}@#{scale}.#{image_link.image_format}"
22
+ end
23
+ end
24
+
25
+ private
26
+
27
+ def format_name(name:, naming_style:)
28
+ format_string(string: name, naming_style: naming_style).lowercase_first_letter
29
+ end
30
+
31
+ def format_folder(folder:, naming_style:)
32
+ folder.split('/').map { |f| format_string(string: f, naming_style: naming_style) }.join('/')
33
+ end
34
+
35
+ def format_string(string:, naming_style:)
36
+ string ||= ''
37
+ case naming_style
38
+ when String::FORMAT_STYLE_CAMELCASE
39
+ string.camelcase('-', '_', ' ', '/')
40
+ when String::FORMAT_STYLE_SNAKECASE
41
+ string.snakecase
42
+ when String::FORMAT_STYLE_KEBABCASE
43
+ string.kebabcase
44
+ else
45
+ string
46
+ end
47
+ end
48
+
49
+ def slice_name(name:, folder_depth:)
50
+ path_components = (name || '').split('/') || []
51
+ max_index = max(path_components.length - 1, 0)
52
+ folder_depth = folder_depth.negative? ? max_index : folder_depth
53
+ max_depth = max(folder_depth, 0)
54
+
55
+ folder = path_components[0, max_depth].join('/') || ''
56
+ name = path_components[max_depth..max_index].join('/') || ''
57
+
58
+ ImageNameComponents.new(name: name, folder: folder)
59
+ end
60
+
61
+ def format_path(path)
62
+ path.split('/').map(&:strip).join('/')
63
+ end
64
+
65
+ def min(a, b)
66
+ [a, b].min
67
+ end
68
+
69
+ def max(a, b)
70
+ [a, b].max
71
+ end
72
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ class ProgressTasksLogger
4
+ attr_accessor :total_count, :current_count
5
+
6
+ def initialize(total_count:)
7
+ @total_count = total_count
8
+ @current_count = 0
9
+ end
10
+
11
+ def reset
12
+ self.current_count = 0
13
+ end
14
+
15
+ def increment(value: 1)
16
+ self.current_count += value
17
+ end
18
+
19
+ def progress_string
20
+ "(#{current_count}/#{total_count})"
21
+ end
22
+ end
@@ -0,0 +1,96 @@
1
+ # frozen_string_literal: true
2
+
3
+ class ScaleFormatter
4
+ def scales_from_dpis(dpis)
5
+ return [] if dpis.nil?
6
+
7
+ dpis.map { |d| scale_from_dpi(d) }.compact
8
+ end
9
+
10
+ def dpis_from_scales(scales)
11
+ return [] if scales.nil?
12
+
13
+ scales.map { |s| dpi_from_scale(s) }.compact
14
+ end
15
+
16
+ def any_scales_to_scales(scales)
17
+ return [] if scales.nil?
18
+
19
+ result_scales = []
20
+ scales.each do |scale|
21
+ case scale
22
+ when String
23
+ converted_scale = scale_from_dpi(scale)
24
+ if !converted_scale.nil?
25
+ result_scales.push(converted_scale)
26
+ else
27
+ float_scale = scale.to_f
28
+ result_scales.push(float_scale) unless float_scale.nil?
29
+ end
30
+ when Numeric
31
+ result_scales.push(scale)
32
+ else
33
+ next
34
+ end
35
+ end
36
+ result_scales.uniq
37
+ end
38
+
39
+ def scale_from_dpi(dpi)
40
+ dpi = dpi.downcase
41
+ case dpi
42
+ when 'ldpi'
43
+ 0.75
44
+ when 'mdpi'
45
+ 1.0
46
+ when 'hdpi'
47
+ 1.5
48
+ when 'xhdpi'
49
+ 2.0
50
+ when 'xxhdpi'
51
+ 3.0
52
+ when 'xxxhdpi'
53
+ 4.0
54
+ else
55
+ nil
56
+ end
57
+ end
58
+
59
+ def dpi_from_scale(scale)
60
+ scale = scale.round(2)
61
+ case scale
62
+ when 0.75
63
+ 'ldpi'
64
+ when 1.0
65
+ 'mdpi'
66
+ when 1.5
67
+ 'hdpi'
68
+ when 2.0
69
+ 'xhdpi'
70
+ when 3.0
71
+ 'xxhdpi'
72
+ when 4.0
73
+ 'xxxhdpi'
74
+ else
75
+ nil
76
+ end
77
+ end
78
+
79
+ def formatted_scale(scale:, convert_to_dpi: false)
80
+ return nil if scale.nil?
81
+
82
+ dpi_scale = dpi_from_scale(scale)
83
+
84
+ if convert_to_dpi && !dpi_scale.nil?
85
+ dpi_scale
86
+ else
87
+ "#{scale.to_s_formatted.gsub(/[.,]/, '_')}x"
88
+ end
89
+ end
90
+ end
91
+
92
+ class Numeric
93
+ def to_s_formatted
94
+ to_s.chomp('.0')
95
+ end
96
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ class SvtToVectorConverter
4
+ def convert(input_file:, output_file: nil)
5
+ return unless ['.svg'].include?(File.extname(input_file))
6
+
7
+ name = File.join(File.dirname(input_file), File.basename(input_file, File.extname(input_file)))
8
+ output_file = output_file.nil? ? "#{name}.xml" : output_file
9
+ jar_file = File.join(File.dirname(__FILE__), '../bin/svg2vectordrawable.jar')
10
+ system("java -jar #{jar_file} #{input_file} #{output_file} true")
11
+ end
12
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ class DownloadImageParams
4
+ attr_accessor :image_components, :output_folder, :folder_depth, :output_format, :naming_style,
5
+ :xcassets_params, :convert_svg_to_vector, :convert_scales_to_dpi,
6
+ :include_page_name, :include_frame_name
7
+
8
+ def initialize(
9
+ image_components:,
10
+ output_folder:,
11
+ folder_depth:,
12
+ output_format:,
13
+ naming_style:,
14
+ xcassets_params:,
15
+ convert_svg_to_vector:,
16
+ convert_scales_to_dpi:,
17
+ include_page_name:,
18
+ include_frame_name:
19
+ )
20
+ @image_components = image_components
21
+ @output_folder = output_folder
22
+ @folder_depth = folder_depth
23
+ @output_format = output_format
24
+ @naming_style = naming_style
25
+ @xcassets_params = xcassets_params
26
+ @convert_svg_to_vector = convert_svg_to_vector
27
+ @convert_scales_to_dpi = convert_scales_to_dpi
28
+ @include_page_name = include_page_name
29
+ @include_frame_name = include_frame_name
30
+ end
31
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ class ImageNameComponents
4
+ attr_accessor :name, :folder
5
+
6
+ def initialize(name:, folder:)
7
+ @name = name
8
+ @folder = folder
9
+ end
10
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../helpers/scale_formatter'
4
+
5
+ class ImageRef
6
+ attr_accessor :path, :image_link
7
+
8
+ def initialize(path:, image_link:)
9
+ @path = path
10
+ @image_link = image_link
11
+ end
12
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'image_ref'
4
+
5
+ class ImageSetRef
6
+ attr_accessor :name, :folder, :image_refs, :single_scale
7
+
8
+ def initialize(name:, folder:, image_refs:, single_scale:)
9
+ @name = name || ''
10
+ @folder = folder || ''
11
+ @image_refs = image_refs || []
12
+ @single_scale = single_scale
13
+ end
14
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'image_ref'
4
+ require_relative 'image_set_ref'
5
+ require_relative 'download_image_params'
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'models/styles_template'
4
+
5
+ class FigmaTemplateGenerator
6
+ def generate(styles:, style_types:, template_path:, output_path:)
7
+ require 'liquid'
8
+ Liquid::Template.register_filter(StringFilters)
9
+
10
+ styles = styles.select { |s| (style_types.nil? || style_types.include?(s.style_type)) }
11
+ template_data = StylesTemplate.new(styles: styles).to_hash
12
+
13
+ dir_name = File.dirname(output_path)
14
+ FileUtils.mkdir_p(dir_name) unless File.directory?(dir_name)
15
+
16
+ template = File.read(template_path)
17
+ output = Liquid::Template.parse(template).render(template_data)
18
+ output_file = File.open(output_path, 'w')
19
+ output_file.write(output)
20
+ output_file.close unless output.nil?
21
+ end
22
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../figma_client/figma_client'
4
+
5
+ class StylesTemplate
6
+ attr_accessor :groups, :styles, :common_style_names
7
+
8
+ def initialize(styles:)
9
+ styles = styles.sort_by(&:name)
10
+ @styles = styles
11
+
12
+ groups_hash = {}
13
+
14
+ styles.each do |s|
15
+ group = groups_hash[s.name_info.group_name] || StylesGroup.new(name: s.name_info.group_name, styles: [])
16
+ group.styles.push(s)
17
+ groups_hash[s.name_info.group_name] = group
18
+ end
19
+
20
+ @groups = groups_hash.map { |_key, value| value }
21
+
22
+ @common_style_names = styles
23
+ .uniq { |s| s.name_info.style_name }
24
+ .map { |s| s.name_info.style_name }
25
+ end
26
+
27
+ def to_hash
28
+ hash = {}
29
+ hash['styles'] = styles.map(&:to_hash)
30
+ hash['groups'] = groups.map(&:to_hash)
31
+ hash['common_style_names'] = common_style_names
32
+ hash
33
+ end
34
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'fileutils'
4
+
5
+ class File
6
+ def self.open_file(file_name:, mode:, create_directories:)
7
+ create_directories = !create_directories.nil? || false
8
+ if create_directories
9
+ dirname = File.dirname(file_name)
10
+ FileUtils.mkdir_p(dirname) unless File.directory?(dirname)
11
+ end
12
+ File.open(file_name, mode)
13
+ end
14
+
15
+ def self.read_file_json(path:)
16
+ if File.exist?(path)
17
+ text = File.read(path)
18
+ JSON.parse(text)
19
+ else
20
+ nil
21
+ end
22
+ end
23
+
24
+ def self.write_file_json(hash:, path:, create_directories: true)
25
+ file = File.open_file(file_name: path, mode: 'w', create_directories: create_directories)
26
+ json = JSON.pretty_generate(hash)
27
+ file.write(json)
28
+ file.close
29
+ end
30
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Hash
4
+ def dig_set(keys, value, force = false, delete_if_nil = true)
5
+ final_key = keys.pop
6
+ position = self
7
+ keys.each do |key|
8
+ position[key] = {} if !position[key].is_a?(Hash) && force
9
+ position = position[key]
10
+ break if position.nil?
11
+ end
12
+ if delete_if_nil && value.nil?
13
+ position&.delete(final_key)
14
+ else
15
+ position[final_key] = value
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'string_format'
4
+
5
+ module StringFilters
6
+ # Letter case
7
+
8
+ def uppercase_first_letter(input)
9
+ input.uppercase_first_letter
10
+ end
11
+
12
+ def lowercase_first_letter(input)
13
+ input.lowercase_first_letter
14
+ end
15
+
16
+ # Snake case
17
+
18
+ def snakecase(input)
19
+ input.snakecase
20
+ end
21
+
22
+ def upper_snakecase(input)
23
+ input.snakecase.uppercase_first_letter
24
+ end
25
+
26
+ def lower_snakecase(input)
27
+ input.snakecase.lowercase_first_letter
28
+ end
29
+
30
+ # Kebab case
31
+
32
+ def kebabcase(input)
33
+ input.kebabcase
34
+ end
35
+
36
+ def upper_kebabcase(input)
37
+ input.kebabcase.uppercase_first_letter
38
+ end
39
+
40
+ def lower_kebabcase(input)
41
+ input.kebabcase.lowercase_first_letter
42
+ end
43
+
44
+ # Camel case
45
+
46
+ def camelcase_s(input, *separators)
47
+ input.camelcase(separators)
48
+ end
49
+
50
+ def upper_camelcase(input, *separators)
51
+ input.camelcase(separators)
52
+ end
53
+
54
+ def lower_camelcase(input, *separators)
55
+ input.camelcase(separators)
56
+ end
57
+
58
+ # Formatting
59
+
60
+ def default_format(input)
61
+ input.default_format
62
+ end
63
+ end
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ class String
4
+ FORMAT_STYLE_CAMELCASE = 'camelcase'
5
+ FORMAT_STYLE_SNAKECASE = 'snakecase'
6
+ FORMAT_STYLE_KEBABCASE = 'kebabcase'
7
+
8
+ def uppercase_first_letter
9
+ capitalize
10
+ end
11
+
12
+ def lowercase_first_letter
13
+ return self unless length.positive?
14
+
15
+ self[0, 1].downcase + self[1..-1]
16
+ end
17
+
18
+ def snakecase
19
+ gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
20
+ .gsub(/([a-z\d])([A-Z])/, '\1_\2')
21
+ .tr('-', '_')
22
+ .gsub(/\s/, '_')
23
+ .gsub(/__+/, '_')
24
+ .downcase
25
+ end
26
+
27
+ def kebabcase
28
+ snakecase.gsub(/_/, '-')
29
+ end
30
+
31
+ def camelcase(*separators)
32
+ case separators.first
33
+ when Symbol, TrueClass, FalseClass, NilClass
34
+ first_letter = separators.shift
35
+ end
36
+
37
+ separators = ['_', '\s'] if separators.empty?
38
+
39
+ str = dup
40
+
41
+ separators.each do |s|
42
+ str = str.gsub(/(?:#{s}+)([a-zA-Z0-9])/) { Regexp.last_match(1).upcase }
43
+ end
44
+
45
+ case first_letter
46
+ when :upper, true
47
+ str = str.gsub(/(\A|\s)([a-z])/) { Regexp.last_match(1) + Regexp.last_match(2).upcase }
48
+ when :lower, false
49
+ str = str.gsub(/(\A|\s)([A-Z])/) { Regexp.last_match(1) + Regexp.last_match(2).downcase }
50
+ end
51
+
52
+ str
53
+ end
54
+
55
+ def default_format
56
+ available_symbols_regex = /[^a-zA-Z0-9_]/
57
+ separator_symbols = [' ', '_', '-', '/']
58
+ camelcase(separator_symbols).gsub(available_symbols_regex, '').lowercase_first_letter
59
+ end
60
+ end
@@ -0,0 +1,17 @@
1
+ def syscall(*cmd)
2
+ require 'open3'
3
+ stdout, = Open3.capture3(*cmd)
4
+ stdout
5
+ end
6
+
7
+ def syscall_safe(*cmd)
8
+ syscall(*cmd)
9
+ rescue StandardError
10
+ ''
11
+ end
12
+
13
+ class String
14
+ def extract_by_regex(regex)
15
+ (regex.match(self) || [])[0]
16
+ end
17
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Fastlane
4
+ module Admiraltools
5
+ VERSION = '0.0.36'
6
+ end
7
+ end
data/admiraltools.rb ADDED
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ #require 'fastlane/plugin/admiraltools/version'
4
+ #
5
+ module Fastlane
6
+ module Admiraltools
7
+ # Return all .rb files inside the "actions" and "helpers" directory
8
+ def self.all_classes
9
+ Dir[File.expand_path('**/{actions,helpers}/*.rb', File.dirname(__FILE__))]
10
+ end
11
+ end
12
+ end
13
+
14
+ # By default we want to import all available actions and helpers
15
+ # A plugin can contain any number of actions and plugins
16
+ Fastlane::Admiraltools.all_classes.each do |current|
17
+ require current
18
+ end
metadata ADDED
@@ -0,0 +1,96 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: admiral-tools-figma
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Admiral team
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-09-04 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: The tool to download figma icons
14
+ email:
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - README.md
20
+ - admiral-tools-figma.gemspec
21
+ - admiraltools.rb
22
+ - admiraltools/actions/figma_download_images.rb
23
+ - admiraltools/actions/figma_generate_styles.rb
24
+ - admiraltools/actions/figma_get_image_links.rb
25
+ - admiraltools/actions/figma_get_styles.rb
26
+ - admiraltools/helper/admiraltools_helper.rb
27
+ - admiraltools/helper/figma/figma_client/figma_client.rb
28
+ - admiraltools/helper/figma/figma_client/models/api/primitives/figma_color.rb
29
+ - admiraltools/helper/figma/figma_client/models/api/primitives/figma_component.rb
30
+ - admiraltools/helper/figma/figma_client/models/api/primitives/figma_components_styles_meta.rb
31
+ - admiraltools/helper/figma/figma_client/models/api/primitives/figma_frame_info.rb
32
+ - admiraltools/helper/figma/figma_client/models/api/primitives/figma_node.rb
33
+ - admiraltools/helper/figma/figma_client/models/api/primitives/figma_paint.rb
34
+ - admiraltools/helper/figma/figma_client/models/api/primitives/figma_style.rb
35
+ - admiraltools/helper/figma/figma_client/models/api/primitives/figma_type_style.rb
36
+ - admiraltools/helper/figma/figma_client/models/api/results/figma_components_styles_result.rb
37
+ - admiraltools/helper/figma/figma_client/models/api/results/figma_images_result.rb
38
+ - admiraltools/helper/figma/figma_client/models/api/results/figma_nodes_result.rb
39
+ - admiraltools/helper/figma/figma_client/models/domain/converters/figma_to_domain_converter.rb
40
+ - admiraltools/helper/figma/figma_client/models/domain/primitives/color.rb
41
+ - admiraltools/helper/figma/figma_client/models/domain/primitives/component.rb
42
+ - admiraltools/helper/figma/figma_client/models/domain/primitives/components_list.rb
43
+ - admiraltools/helper/figma/figma_client/models/domain/primitives/font.rb
44
+ - admiraltools/helper/figma/figma_client/models/domain/primitives/frame_info.rb
45
+ - admiraltools/helper/figma/figma_client/models/domain/primitives/image_link.rb
46
+ - admiraltools/helper/figma/figma_client/models/domain/primitives/style.rb
47
+ - admiraltools/helper/figma/figma_client/models/domain/primitives/styles_group.rb
48
+ - admiraltools/helper/figma/figma_client/models/domain/primitives/styles_list.rb
49
+ - admiraltools/helper/figma/figma_client/models/models.rb
50
+ - admiraltools/helper/figma/figma_image_downloader/bin/svg2vectordrawable.jar
51
+ - admiraltools/helper/figma/figma_image_downloader/figma_image_downloader.rb
52
+ - admiraltools/helper/figma/figma_image_downloader/generators/folder_generator.rb
53
+ - admiraltools/helper/figma/figma_image_downloader/generators/folder_generator_raw.rb
54
+ - admiraltools/helper/figma/figma_image_downloader/generators/folder_generator_res.rb
55
+ - admiraltools/helper/figma/figma_image_downloader/generators/folder_generator_xcassets.rb
56
+ - admiraltools/helper/figma/figma_image_downloader/generators/generators.rb
57
+ - admiraltools/helper/figma/figma_image_downloader/helpers/image_name_formatter.rb
58
+ - admiraltools/helper/figma/figma_image_downloader/helpers/progress_tasks_logger.rb
59
+ - admiraltools/helper/figma/figma_image_downloader/helpers/scale_formatter.rb
60
+ - admiraltools/helper/figma/figma_image_downloader/helpers/svg_to_vector_converter.rb
61
+ - admiraltools/helper/figma/figma_image_downloader/models/download_image_params.rb
62
+ - admiraltools/helper/figma/figma_image_downloader/models/image_name_components.rb
63
+ - admiraltools/helper/figma/figma_image_downloader/models/image_ref.rb
64
+ - admiraltools/helper/figma/figma_image_downloader/models/image_set_ref.rb
65
+ - admiraltools/helper/figma/figma_image_downloader/models/models.rb
66
+ - admiraltools/helper/figma/figma_template_generator/figma_template_generator.rb
67
+ - admiraltools/helper/figma/figma_template_generator/models/styles_template.rb
68
+ - admiraltools/helper/figma/helpers/file_folder.rb
69
+ - admiraltools/helper/figma/helpers/hash_access.rb
70
+ - admiraltools/helper/figma/helpers/string_filters.rb
71
+ - admiraltools/helper/figma/helpers/string_format.rb
72
+ - admiraltools/helper/system/system.rb
73
+ - admiraltools/version.rb
74
+ homepage: https://github.com/admiral-team
75
+ licenses: []
76
+ metadata: {}
77
+ post_install_message:
78
+ rdoc_options: []
79
+ require_paths:
80
+ - lib
81
+ required_ruby_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ required_rubygems_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ requirements: []
92
+ rubygems_version: 3.4.10
93
+ signing_key:
94
+ specification_version: 4
95
+ summary: The tool to download figma icons
96
+ test_files: []