先日、motion-fontawesome を FontAwesome 4.0.3 に対応させたときの話。
利用できるアイコンを Hash で定義する箇所があり、 手入力でやるには数が多すぎる上に、さしみたんぽぽ作業。
なので、FontAwesome の CSS をもとに Hash を組み立てる Ruby スクリプト書いて一気にやった。 CSS のパースには css_parser っていう gem を使用している。
# coding: utf-8 require "css_parser" include CssParser parser = CssParser::Parser.new parser.load_file!("font-awesome.css") puts "{" # すべてのセレクタを列挙 parser.each_selector do |selector, declarations, specificity| if selector.start_with?(".fa-") and selector.end_with?(":before") # アイコンの名前を取り出す selector[/¥.fa-([a-z0-9¥-]+):before/] icon_name = $‾[1] # content 属性の値を取り出す declarations[/content: "¥¥([a-z0-9]+)"/] icon_value = "0x#{$‾[1]}" # ハッシュ形式で出力 puts " ¥"#{icon_name}¥" => #{icon_value}," end end puts "}"
css_parser はセレクタの中身を文字列で渡してくるため、使い勝手があまりよろしくない。 Hash に変換してくれたら使いやすいんだけどな。