LoginSignup
18
0

More than 1 year has passed since last update.

簡単Elixirシリーズ ~ カラーコードからRGB変換する簡単なお仕事

Last updated at Posted at 2022-12-07

この記事は「Elixir Advent Calendar 2022」8日目の記事です

東京にいるけどfukuoka.exのYOSUKEです。

簡単 Elixirシリーズでは小ネタをサクッと書いていこう。というコンセプトで作っていきます。

仕事柄、Elixir以外の言語を使ってサンプルコードを作成する。または教材を作ることをやっています。最近、RGBをカラーコードに変換してくれる関数を作りなさい。というお題のJavaScriptのコードを書いたので、Elixirで書くとどうなるか?を試してみようという記事です。
ちなみに、カラーコードをRGBに変換するも書いたのですが長くなるので、それは次回にしたいと思います。(そう、この記事はサクッとがコンセプトW)

まずはJavaScriptでtoRGB("#DB7093")を入力して[ 219, 112, 147 ]や、toRGB("$DB7093")toRGB("#DB709")の入力の場合にはCode Errorを返すようにしたいと思います。


function toRGB(string){

    if(string.split('')[0] == '#' && string.length == 7){
        const head = string.split('');
        const RGB = head.filter(item => item.match(/[a-fA-F_0-9]/));
        const r = RGB.slice(0,2).parseInt(R.join(''), 16)
        const g = RGB.slice(2,4).parseInt(G.join(''), 16)
        const b = RGB.slice(4,6).parseInt(B.join(''), 16)
        const rgb = [r, g, b]
        console.log(rgb)
    }else{
        console.log("Code Error")
    }
}
defmodule Change do
  def toRGB( "#" <> color_code \\ "#000000") when is_binary("#" <> color_code) do
   [r, g, b] = color_code
   |> String.codepoints()
   |> Enum.chunk_every(2)
   |> Enum.map(fn [a,b] -> a<>b end)

   r = String.to_integer(r, 16)
   g = String.to_integer(g, 16)
   b = String.to_integer(b, 16)
  [r, g, b]
  end
end
18
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
0