phlex-icons-flag 0.9.0
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.
- checksums.yaml +7 -0
- data/.devcontainer/devcontainer.json +53 -0
- data/.devcontainer/setup.sh +5 -0
- data/.rspec +3 -0
- data/.rubocop.yml +28 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +5 -0
- data/CODE_OF_CONDUCT.md +132 -0
- data/LICENSE.txt +21 -0
- data/README.md +138 -0
- data/Rakefile +12 -0
- data/generators/bootstrap.rb +69 -0
- data/generators/flag.rb +68 -0
- data/generators/helper.rb +102 -0
- data/generators/hero.rb +63 -0
- data/generators/lucide.rb +54 -0
- data/generators/radix.rb +54 -0
- data/generators/remix.rb +57 -0
- data/lib/phlex/icons/base.rb +19 -0
- data/lib/phlex/icons/configuration.rb +13 -0
- data/lib/phlex/icons/flag/ad.rb +319 -0
- data/lib/phlex/icons/flag/ae.rb +31 -0
- data/lib/phlex/icons/flag/af.rb +183 -0
- data/lib/phlex/icons/flag/ag.rb +68 -0
- data/lib/phlex/icons/flag/ai.rb +79 -0
- data/lib/phlex/icons/flag/al.rb +31 -0
- data/lib/phlex/icons/flag/am.rb +29 -0
- data/lib/phlex/icons/flag/ao.rb +115 -0
- data/lib/phlex/icons/flag/aq.rb +55 -0
- data/lib/phlex/icons/flag/ar.rb +85 -0
- data/lib/phlex/icons/flag/arab.rb +1151 -0
- data/lib/phlex/icons/flag/as.rb +657 -0
- data/lib/phlex/icons/flag/at.rb +27 -0
- data/lib/phlex/icons/flag/au.rb +61 -0
- data/lib/phlex/icons/flag/aw.rb +407 -0
- data/lib/phlex/icons/flag/ax.rb +60 -0
- data/lib/phlex/icons/flag/az.rb +45 -0
- data/lib/phlex/icons/flag/ba.rb +55 -0
- data/lib/phlex/icons/flag/base.rb +25 -0
- data/lib/phlex/icons/flag/bb.rb +33 -0
- data/lib/phlex/icons/flag/bd.rb +27 -0
- data/lib/phlex/icons/flag/be.rb +33 -0
- data/lib/phlex/icons/flag/bf.rb +42 -0
- data/lib/phlex/icons/flag/bg.rb +29 -0
- data/lib/phlex/icons/flag/bh.rb +37 -0
- data/lib/phlex/icons/flag/bi.rb +89 -0
- data/lib/phlex/icons/flag/bj.rb +49 -0
- data/lib/phlex/icons/flag/bl.rb +31 -0
- data/lib/phlex/icons/flag/bm.rb +1180 -0
- data/lib/phlex/icons/flag/bn.rb +93 -0
- data/lib/phlex/icons/flag/bo.rb +7373 -0
- data/lib/phlex/icons/flag/bq.rb +29 -0
- data/lib/phlex/icons/flag/br.rb +311 -0
- data/lib/phlex/icons/flag/bs.rb +58 -0
- data/lib/phlex/icons/flag/bt.rb +588 -0
- data/lib/phlex/icons/flag/bv.rb +51 -0
- data/lib/phlex/icons/flag/bw.rb +33 -0
- data/lib/phlex/icons/flag/by.rb +57 -0
- data/lib/phlex/icons/flag/bz.rb +311 -0
- data/lib/phlex/icons/flag/ca.rb +37 -0
- data/lib/phlex/icons/flag/cc.rb +59 -0
- data/lib/phlex/icons/flag/cd.rb +44 -0
- data/lib/phlex/icons/flag/cefta.rb +91 -0
- data/lib/phlex/icons/flag/cf.rb +61 -0
- data/lib/phlex/icons/flag/cg.rb +55 -0
- data/lib/phlex/icons/flag/ch.rb +37 -0
- data/lib/phlex/icons/flag/ci.rb +33 -0
- data/lib/phlex/icons/flag/ck.rb +65 -0
- data/lib/phlex/icons/flag/cl.rb +63 -0
- data/lib/phlex/icons/flag/cm.rb +51 -0
- data/lib/phlex/icons/flag/cn.rb +43 -0
- data/lib/phlex/icons/flag/co.rb +33 -0
- data/lib/phlex/icons/flag/configuration.rb +15 -0
- data/lib/phlex/icons/flag/cp.rb +33 -0
- data/lib/phlex/icons/flag/cr.rb +33 -0
- data/lib/phlex/icons/flag/cu.rb +57 -0
- data/lib/phlex/icons/flag/cv.rb +63 -0
- data/lib/phlex/icons/flag/cw.rb +49 -0
- data/lib/phlex/icons/flag/cx.rb +51 -0
- data/lib/phlex/icons/flag/cy.rb +33 -0
- data/lib/phlex/icons/flag/cz.rb +29 -0
- data/lib/phlex/icons/flag/de.rb +29 -0
- data/lib/phlex/icons/flag/dg.rb +1563 -0
- data/lib/phlex/icons/flag/dj.rb +63 -0
- data/lib/phlex/icons/flag/dk.rb +29 -0
- data/lib/phlex/icons/flag/dm.rb +1437 -0
- data/lib/phlex/icons/flag/do.rb +265 -0
- data/lib/phlex/icons/flag/dz.rb +37 -0
- data/lib/phlex/icons/flag/eac.rb +117 -0
- data/lib/phlex/icons/flag/ec.rb +1617 -0
- data/lib/phlex/icons/flag/ee.rb +29 -0
- data/lib/phlex/icons/flag/eg.rb +97 -0
- data/lib/phlex/icons/flag/eh.rb +60 -0
- data/lib/phlex/icons/flag/er.rb +48 -0
- data/lib/phlex/icons/flag/es.rb +5736 -0
- data/lib/phlex/icons/flag/es_ct.rb +37 -0
- data/lib/phlex/icons/flag/es_ga.rb +1822 -0
- data/lib/phlex/icons/flag/es_pv.rb +45 -0
- data/lib/phlex/icons/flag/et.rb +79 -0
- data/lib/phlex/icons/flag/eu.rb +77 -0
- data/lib/phlex/icons/flag/fi.rb +29 -0
- data/lib/phlex/icons/flag/fj.rb +857 -0
- data/lib/phlex/icons/flag/fk.rb +200 -0
- data/lib/phlex/icons/flag/fm.rb +61 -0
- data/lib/phlex/icons/flag/fo.rb +61 -0
- data/lib/phlex/icons/flag/fr.rb +29 -0
- data/lib/phlex/icons/flag/ga.rb +33 -0
- data/lib/phlex/icons/flag/gb.rb +49 -0
- data/lib/phlex/icons/flag/gb_eng.rb +29 -0
- data/lib/phlex/icons/flag/gb_nir.rb +284 -0
- data/lib/phlex/icons/flag/gb_sct.rb +37 -0
- data/lib/phlex/icons/flag/gb_wls.rb +60 -0
- data/lib/phlex/icons/flag/gd.rb +75 -0
- data/lib/phlex/icons/flag/ge.rb +43 -0
- data/lib/phlex/icons/flag/gf.rb +29 -0
- data/lib/phlex/icons/flag/gg.rb +37 -0
- data/lib/phlex/icons/flag/gh.rb +34 -0
- data/lib/phlex/icons/flag/gi.rb +85 -0
- data/lib/phlex/icons/flag/gl.rb +34 -0
- data/lib/phlex/icons/flag/gm.rb +47 -0
- data/lib/phlex/icons/flag/gn.rb +33 -0
- data/lib/phlex/icons/flag/gp.rb +29 -0
- data/lib/phlex/icons/flag/gq.rb +169 -0
- data/lib/phlex/icons/flag/gr.rb +53 -0
- data/lib/phlex/icons/flag/gs.rb +286 -0
- data/lib/phlex/icons/flag/gt.rb +429 -0
- data/lib/phlex/icons/flag/gu.rb +296 -0
- data/lib/phlex/icons/flag/gw.rb +49 -0
- data/lib/phlex/icons/flag/gy.rb +49 -0
- data/lib/phlex/icons/flag/hk.rb +37 -0
- data/lib/phlex/icons/flag/hm.rb +61 -0
- data/lib/phlex/icons/flag/hn.rb +57 -0
- data/lib/phlex/icons/flag/hr.rb +135 -0
- data/lib/phlex/icons/flag/ht.rb +253 -0
- data/lib/phlex/icons/flag/hu.rb +33 -0
- data/lib/phlex/icons/flag/ic.rb +33 -0
- data/lib/phlex/icons/flag/id.rb +27 -0
- data/lib/phlex/icons/flag/ie.rb +33 -0
- data/lib/phlex/icons/flag/il.rb +67 -0
- data/lib/phlex/icons/flag/im.rb +407 -0
- data/lib/phlex/icons/flag/in.rb +71 -0
- data/lib/phlex/icons/flag/io.rb +1563 -0
- data/lib/phlex/icons/flag/iq.rb +53 -0
- data/lib/phlex/icons/flag/ir.rb +903 -0
- data/lib/phlex/icons/flag/is.rb +54 -0
- data/lib/phlex/icons/flag/it.rb +33 -0
- data/lib/phlex/icons/flag/je.rb +783 -0
- data/lib/phlex/icons/flag/jm.rb +35 -0
- data/lib/phlex/icons/flag/jo.rb +61 -0
- data/lib/phlex/icons/flag/jp.rb +65 -0
- data/lib/phlex/icons/flag/ke.rb +67 -0
- data/lib/phlex/icons/flag/kg.rb +93 -0
- data/lib/phlex/icons/flag/kh.rb +143 -0
- data/lib/phlex/icons/flag/ki.rb +418 -0
- data/lib/phlex/icons/flag/km.rb +77 -0
- data/lib/phlex/icons/flag/kn.rb +71 -0
- data/lib/phlex/icons/flag/kp.rb +80 -0
- data/lib/phlex/icons/flag/kr.rb +62 -0
- data/lib/phlex/icons/flag/kw.rb +55 -0
- data/lib/phlex/icons/flag/ky.rb +227 -0
- data/lib/phlex/icons/flag/kz.rb +93 -0
- data/lib/phlex/icons/flag/la.rb +53 -0
- data/lib/phlex/icons/flag/lb.rb +77 -0
- data/lib/phlex/icons/flag/lc.rb +35 -0
- data/lib/phlex/icons/flag/li.rb +107 -0
- data/lib/phlex/icons/flag/lk.rb +65 -0
- data/lib/phlex/icons/flag/lr.rb +67 -0
- data/lib/phlex/icons/flag/ls.rb +67 -0
- data/lib/phlex/icons/flag/lt.rb +71 -0
- data/lib/phlex/icons/flag/lu.rb +29 -0
- data/lib/phlex/icons/flag/lv.rb +31 -0
- data/lib/phlex/icons/flag/ly.rb +50 -0
- data/lib/phlex/icons/flag/ma.rb +37 -0
- data/lib/phlex/icons/flag/mc.rb +31 -0
- data/lib/phlex/icons/flag/md.rb +749 -0
- data/lib/phlex/icons/flag/me.rb +956 -0
- data/lib/phlex/icons/flag/mf.rb +29 -0
- data/lib/phlex/icons/flag/mg.rb +33 -0
- data/lib/phlex/icons/flag/mh.rb +44 -0
- data/lib/phlex/icons/flag/mk.rb +53 -0
- data/lib/phlex/icons/flag/ml.rb +33 -0
- data/lib/phlex/icons/flag/mm.rb +43 -0
- data/lib/phlex/icons/flag/mn.rb +67 -0
- data/lib/phlex/icons/flag/mo.rb +39 -0
- data/lib/phlex/icons/flag/mp.rb +972 -0
- data/lib/phlex/icons/flag/mq.rb +29 -0
- data/lib/phlex/icons/flag/mr.rb +49 -0
- data/lib/phlex/icons/flag/ms.rb +257 -0
- data/lib/phlex/icons/flag/mt.rb +135 -0
- data/lib/phlex/icons/flag/mu.rb +35 -0
- data/lib/phlex/icons/flag/mv.rb +31 -0
- data/lib/phlex/icons/flag/mw.rb +67 -0
- data/lib/phlex/icons/flag/mx.rb +780 -0
- data/lib/phlex/icons/flag/my.rb +71 -0
- data/lib/phlex/icons/flag/mz.rb +145 -0
- data/lib/phlex/icons/flag/na.rb +74 -0
- data/lib/phlex/icons/flag/nc.rb +87 -0
- data/lib/phlex/icons/flag/ne.rb +31 -0
- data/lib/phlex/icons/flag/nf.rb +79 -0
- data/lib/phlex/icons/flag/ng.rb +31 -0
- data/lib/phlex/icons/flag/ni.rb +279 -0
- data/lib/phlex/icons/flag/nl.rb +29 -0
- data/lib/phlex/icons/flag/no.rb +33 -0
- data/lib/phlex/icons/flag/np.rb +64 -0
- data/lib/phlex/icons/flag/nr.rb +63 -0
- data/lib/phlex/icons/flag/nu.rb +65 -0
- data/lib/phlex/icons/flag/nz.rb +93 -0
- data/lib/phlex/icons/flag/om.rb +1357 -0
- data/lib/phlex/icons/flag/pa.rb +62 -0
- data/lib/phlex/icons/flag/pc.rb +87 -0
- data/lib/phlex/icons/flag/pe.rb +27 -0
- data/lib/phlex/icons/flag/pf.rb +160 -0
- data/lib/phlex/icons/flag/pg.rb +82 -0
- data/lib/phlex/icons/flag/ph.rb +41 -0
- data/lib/phlex/icons/flag/pk.rb +66 -0
- data/lib/phlex/icons/flag/pl.rb +31 -0
- data/lib/phlex/icons/flag/pm.rb +29 -0
- data/lib/phlex/icons/flag/pn.rb +657 -0
- data/lib/phlex/icons/flag/pr.rb +66 -0
- data/lib/phlex/icons/flag/ps.rb +51 -0
- data/lib/phlex/icons/flag/pt.rb +135 -0
- data/lib/phlex/icons/flag/pw.rb +60 -0
- data/lib/phlex/icons/flag/py.rb +748 -0
- data/lib/phlex/icons/flag/qa.rb +37 -0
- data/lib/phlex/icons/flag/re.rb +31 -0
- data/lib/phlex/icons/flag/ro.rb +33 -0
- data/lib/phlex/icons/flag/rs.rb +609 -0
- data/lib/phlex/icons/flag/ru.rb +29 -0
- data/lib/phlex/icons/flag/rw.rb +47 -0
- data/lib/phlex/icons/flag/sa.rb +197 -0
- data/lib/phlex/icons/flag/sb.rb +63 -0
- data/lib/phlex/icons/flag/sc.rb +33 -0
- data/lib/phlex/icons/flag/sd.rb +55 -0
- data/lib/phlex/icons/flag/se.rb +30 -0
- data/lib/phlex/icons/flag/sg.rb +64 -0
- data/lib/phlex/icons/flag/sh.rb +49 -0
- data/lib/phlex/icons/flag/sh_ac.rb +5473 -0
- data/lib/phlex/icons/flag/sh_hl.rb +1206 -0
- data/lib/phlex/icons/flag/sh_ta.rb +746 -0
- data/lib/phlex/icons/flag/si.rb +115 -0
- data/lib/phlex/icons/flag/sj.rb +33 -0
- data/lib/phlex/icons/flag/sk.rb +71 -0
- data/lib/phlex/icons/flag/sl.rb +44 -0
- data/lib/phlex/icons/flag/sm.rb +766 -0
- data/lib/phlex/icons/flag/sn.rb +43 -0
- data/lib/phlex/icons/flag/so.rb +59 -0
- data/lib/phlex/icons/flag/sr.rb +37 -0
- data/lib/phlex/icons/flag/ss.rb +35 -0
- data/lib/phlex/icons/flag/st.rb +53 -0
- data/lib/phlex/icons/flag/sv.rb +1209 -0
- data/lib/phlex/icons/flag/sx.rb +534 -0
- data/lib/phlex/icons/flag/sy.rb +38 -0
- data/lib/phlex/icons/flag/sz.rb +89 -0
- data/lib/phlex/icons/flag/tc.rb +121 -0
- data/lib/phlex/icons/flag/td.rb +33 -0
- data/lib/phlex/icons/flag/tf.rb +51 -0
- data/lib/phlex/icons/flag/tg.rb +65 -0
- data/lib/phlex/icons/flag/th.rb +33 -0
- data/lib/phlex/icons/flag/tj.rb +69 -0
- data/lib/phlex/icons/flag/tk.rb +47 -0
- data/lib/phlex/icons/flag/tl.rb +61 -0
- data/lib/phlex/icons/flag/tm.rb +1487 -0
- data/lib/phlex/icons/flag/tn.rb +37 -0
- data/lib/phlex/icons/flag/to.rb +39 -0
- data/lib/phlex/icons/flag/tr.rb +61 -0
- data/lib/phlex/icons/flag/tt.rb +39 -0
- data/lib/phlex/icons/flag/tv.rb +65 -0
- data/lib/phlex/icons/flag/tw.rb +171 -0
- data/lib/phlex/icons/flag/tz.rb +63 -0
- data/lib/phlex/icons/flag/ua.rb +31 -0
- data/lib/phlex/icons/flag/ug.rb +302 -0
- data/lib/phlex/icons/flag/um.rb +57 -0
- data/lib/phlex/icons/flag/un.rb +53 -0
- data/lib/phlex/icons/flag/us.rb +57 -0
- data/lib/phlex/icons/flag/uy.rb +77 -0
- data/lib/phlex/icons/flag/uz.rb +81 -0
- data/lib/phlex/icons/flag/va.rb +401 -0
- data/lib/phlex/icons/flag/vc.rb +46 -0
- data/lib/phlex/icons/flag/ve.rb +73 -0
- data/lib/phlex/icons/flag/vg.rb +139 -0
- data/lib/phlex/icons/flag/vi.rb +77 -0
- data/lib/phlex/icons/flag/vn.rb +59 -0
- data/lib/phlex/icons/flag/vu.rb +63 -0
- data/lib/phlex/icons/flag/wf.rb +29 -0
- data/lib/phlex/icons/flag/ws.rb +43 -0
- data/lib/phlex/icons/flag/xk.rb +47 -0
- data/lib/phlex/icons/flag/xx.rb +43 -0
- data/lib/phlex/icons/flag/ye.rb +33 -0
- data/lib/phlex/icons/flag/yt.rb +29 -0
- data/lib/phlex/icons/flag/za.rb +77 -0
- data/lib/phlex/icons/flag/zm.rb +188 -0
- data/lib/phlex/icons/flag/zw.rb +63 -0
- data/lib/phlex/icons/flag.rb +26 -0
- data/lib/phlex/icons/version.rb +7 -0
- data/lib/phlex_icons_flag.rb +22 -0
- data/phlex-icons.png +0 -0
- data/sig/phlex/icons.rbs +6 -0
- metadata +358 -0
data/generators/hero.rb
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'helper'
|
4
|
+
|
5
|
+
REPO_URL = 'https://github.com/tailwindlabs/heroicons.git'
|
6
|
+
REPO_NAME = 'tailwindlabs-heroicons'
|
7
|
+
ICONS_PACK_PATH = 'lib/phlex/icons/hero'
|
8
|
+
|
9
|
+
TEMPLATE = ERB.new <<~TEMPLATE
|
10
|
+
# frozen_string_literal: true
|
11
|
+
|
12
|
+
# rubocop:disable #{ROBOCOP_DISABLE_WARNINGS}
|
13
|
+
module Phlex
|
14
|
+
module Icons
|
15
|
+
module Hero
|
16
|
+
class <%= icon_name %> < Base
|
17
|
+
def solid
|
18
|
+
<%= solid_icon %>
|
19
|
+
end
|
20
|
+
|
21
|
+
def outline
|
22
|
+
<%= outline_icon %>
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
# rubocop:enable #{ROBOCOP_DISABLE_WARNINGS}
|
29
|
+
TEMPLATE
|
30
|
+
|
31
|
+
def main
|
32
|
+
run_generator { icon_file_names.tqdm.each { create_icon_component(_1) } }
|
33
|
+
end
|
34
|
+
|
35
|
+
def icon_file_names
|
36
|
+
Dir.glob("generators/#{REPO_NAME}/optimized/24/solid/*").map { |file| File.basename(file) }
|
37
|
+
end
|
38
|
+
|
39
|
+
def create_icon_component(icon_file_name)
|
40
|
+
File.write(
|
41
|
+
File.join(ICONS_PACK_PATH, component_file_name(icon_file_name)),
|
42
|
+
TEMPLATE.result_with_hash(
|
43
|
+
icon_name: component_class_name(icon_file_name),
|
44
|
+
solid_icon: read_and_convert_icon(solid_icon_file_path(icon_file_name)),
|
45
|
+
outline_icon: read_and_convert_icon(outline_icon_file_path(icon_file_name))
|
46
|
+
)
|
47
|
+
)
|
48
|
+
end
|
49
|
+
|
50
|
+
def read_and_convert_icon(icon_file_path)
|
51
|
+
icon_file_content = File.read(icon_file_path)
|
52
|
+
Phlexing::Converter.convert(icon_file_content).sub('svg(', "svg(\nclass: classes,")
|
53
|
+
end
|
54
|
+
|
55
|
+
def solid_icon_file_path(icon_file_name)
|
56
|
+
"generators/#{REPO_NAME}/optimized/24/solid/#{icon_file_name}"
|
57
|
+
end
|
58
|
+
|
59
|
+
def outline_icon_file_path(icon_file_name)
|
60
|
+
"generators/#{REPO_NAME}/optimized/24/outline/#{icon_file_name}"
|
61
|
+
end
|
62
|
+
|
63
|
+
main if __FILE__ == $PROGRAM_NAME
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'helper'
|
4
|
+
|
5
|
+
REPO_URL = 'https://github.com/lucide-icons/lucide.git'
|
6
|
+
REPO_NAME = 'lucide-icons-lucide'
|
7
|
+
ICONS_PACK_PATH = 'lib/phlex/icons/lucide'
|
8
|
+
|
9
|
+
TEMPLATE = ERB.new <<~TEMPLATE
|
10
|
+
# frozen_string_literal: true
|
11
|
+
|
12
|
+
# rubocop:disable #{ROBOCOP_DISABLE_WARNINGS}
|
13
|
+
module Phlex
|
14
|
+
module Icons
|
15
|
+
module Lucide
|
16
|
+
class <%= icon_name %> < Base
|
17
|
+
def view_template
|
18
|
+
<%= icon %>
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
# rubocop:enable #{ROBOCOP_DISABLE_WARNINGS}
|
25
|
+
TEMPLATE
|
26
|
+
|
27
|
+
def main
|
28
|
+
run_generator { icon_file_paths.tqdm.each { create_icon_component(_1) } }
|
29
|
+
end
|
30
|
+
|
31
|
+
def icon_file_paths
|
32
|
+
Dir.glob("generators/#{REPO_NAME}/icons/*.svg")
|
33
|
+
end
|
34
|
+
|
35
|
+
def create_icon_component(icon_file_path)
|
36
|
+
File.write(
|
37
|
+
File.join(ICONS_PACK_PATH, component_file_name(icon_file_path)),
|
38
|
+
TEMPLATE.result_with_hash(
|
39
|
+
icon_name: component_class_name(icon_file_path),
|
40
|
+
icon: read_and_convert_icon(icon_file_path)
|
41
|
+
)
|
42
|
+
)
|
43
|
+
end
|
44
|
+
|
45
|
+
def read_and_convert_icon(icon_file_path)
|
46
|
+
icon_file_content = File.read(icon_file_path)
|
47
|
+
.sub('width="24"', '')
|
48
|
+
.sub('height="24"', '')
|
49
|
+
|
50
|
+
Phlexing::Converter.convert(icon_file_content)
|
51
|
+
.sub('svg(', "svg(\nclass: classes,")
|
52
|
+
end
|
53
|
+
|
54
|
+
main if __FILE__ == $PROGRAM_NAME
|
data/generators/radix.rb
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'helper'
|
4
|
+
|
5
|
+
REPO_URL = 'https://github.com/radix-ui/icons'
|
6
|
+
REPO_NAME = 'radix-ui-icons'
|
7
|
+
ICONS_PACK_PATH = 'lib/phlex/icons/radix'
|
8
|
+
|
9
|
+
TEMPLATE = ERB.new <<~TEMPLATE
|
10
|
+
# frozen_string_literal: true
|
11
|
+
|
12
|
+
# rubocop:disable #{ROBOCOP_DISABLE_WARNINGS}
|
13
|
+
module Phlex
|
14
|
+
module Icons
|
15
|
+
module Radix
|
16
|
+
class <%= icon_name %> < Base
|
17
|
+
def view_template
|
18
|
+
<%= icon %>
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
# rubocop:enable #{ROBOCOP_DISABLE_WARNINGS}
|
25
|
+
TEMPLATE
|
26
|
+
|
27
|
+
def main
|
28
|
+
run_generator { icon_file_paths.tqdm.each { create_icon_component(_1) } }
|
29
|
+
end
|
30
|
+
|
31
|
+
def icon_file_paths
|
32
|
+
Dir.glob("generators/#{REPO_NAME}/packages/radix-icons/icons/*.svg")
|
33
|
+
end
|
34
|
+
|
35
|
+
def create_icon_component(icon_file_path)
|
36
|
+
File.write(
|
37
|
+
File.join(ICONS_PACK_PATH, component_file_name(icon_file_path)),
|
38
|
+
TEMPLATE.result_with_hash(
|
39
|
+
icon_name: component_class_name(icon_file_path),
|
40
|
+
icon: read_and_convert_icon(icon_file_path)
|
41
|
+
)
|
42
|
+
)
|
43
|
+
end
|
44
|
+
|
45
|
+
def read_and_convert_icon(icon_file_path)
|
46
|
+
icon_file_content = File.read(icon_file_path)
|
47
|
+
.sub('width="15"', '')
|
48
|
+
.sub('height="15"', '')
|
49
|
+
|
50
|
+
Phlexing::Converter.convert(icon_file_content)
|
51
|
+
.sub('svg(', "svg(\nclass: classes,")
|
52
|
+
end
|
53
|
+
|
54
|
+
main if __FILE__ == $PROGRAM_NAME
|
data/generators/remix.rb
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'helper'
|
4
|
+
|
5
|
+
REPO_URL = 'https://github.com/Remix-Design/RemixIcon.git'
|
6
|
+
REPO_NAME = 'remix-design-remixicon'
|
7
|
+
ICONS_PACK_PATH = 'lib/phlex/icons/remix'
|
8
|
+
|
9
|
+
TEMPLATE = ERB.new <<~TEMPLATE
|
10
|
+
# frozen_string_literal: true
|
11
|
+
|
12
|
+
# rubocop:disable #{ROBOCOP_DISABLE_WARNINGS}
|
13
|
+
module Phlex
|
14
|
+
module Icons
|
15
|
+
module Remix
|
16
|
+
class <%= icon_name %> < Base
|
17
|
+
def view_template
|
18
|
+
<%= icon %>
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
# rubocop:enable #{ROBOCOP_DISABLE_WARNINGS}
|
25
|
+
TEMPLATE
|
26
|
+
|
27
|
+
REPLACEMENTS = {
|
28
|
+
'4k-' => 'four-k-',
|
29
|
+
'24-' => 'twenty-four-'
|
30
|
+
}.freeze
|
31
|
+
|
32
|
+
def main
|
33
|
+
run_generator { icon_file_paths.tqdm.each { create_icon_component(_1) } }
|
34
|
+
end
|
35
|
+
|
36
|
+
def icon_file_paths
|
37
|
+
Dir.glob("generators/#{REPO_NAME}/icons/**/*.svg")
|
38
|
+
end
|
39
|
+
|
40
|
+
def create_icon_component(icon_file_path)
|
41
|
+
File.write(
|
42
|
+
File.join(ICONS_PACK_PATH, component_file_name(icon_file_path, REPLACEMENTS)),
|
43
|
+
TEMPLATE.result_with_hash(
|
44
|
+
icon_name: component_class_name(icon_file_path, REPLACEMENTS),
|
45
|
+
icon: read_and_convert_icon(icon_file_path)
|
46
|
+
)
|
47
|
+
)
|
48
|
+
end
|
49
|
+
|
50
|
+
def read_and_convert_icon(icon_file_path)
|
51
|
+
icon_file_content = File.read(icon_file_path)
|
52
|
+
|
53
|
+
Phlexing::Converter.convert(icon_file_content)
|
54
|
+
.sub('svg(', "svg(\nclass: classes,")
|
55
|
+
end
|
56
|
+
|
57
|
+
main if __FILE__ == $PROGRAM_NAME
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Phlex
|
4
|
+
module Icons
|
5
|
+
class Base < Phlex::SVG
|
6
|
+
attr_reader :classes
|
7
|
+
|
8
|
+
def initialize(classes: Phlex::Icons.configuration.default_classes)
|
9
|
+
@classes = classes
|
10
|
+
|
11
|
+
super()
|
12
|
+
end
|
13
|
+
|
14
|
+
def view_template
|
15
|
+
send(variant) if respond_to?(variant)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|