lila/bin/gen/piece-sprite

71 lines
1.8 KiB
Plaintext
Raw Normal View History

2015-03-15 12:44:52 -06:00
#!/usr/bin/env ruby
require 'fileutils'
require 'base64'
include FileUtils
lila_dir = pwd()
source_dir = lila_dir + '/public/piece/'
2019-05-04 23:39:28 -06:00
dest_dir = lila_dir + '/public/piece-css/'
2015-03-15 12:44:52 -06:00
themes = [
['alpha', 'svg'],
['cburnett', 'svg'],
['merida', 'svg'],
['pirouetti', 'svg'],
2015-04-13 16:15:17 -06:00
['spatial', 'svg'],
['chess7', 'svg'],
['reillycraig', 'svg'],
['fantasy', 'svg'],
['shapes', 'svg'],
['chessnut', 'svg'],
2016-08-29 07:39:58 -06:00
['companion', 'svg'],
2017-10-18 10:45:14 -06:00
['letter', 'svg'],
2018-08-28 01:13:35 -06:00
['riohacha', 'svg'],
2018-09-23 04:42:18 -06:00
['leipzig', 'svg'],
2019-06-06 02:47:22 -06:00
['kosal', 'svg'],
2019-06-09 14:57:14 -06:00
['pixel', 'svg'],
2019-09-05 03:03:29 -06:00
['california', 'svg'],
['maestro', 'svg'],
['fresca', 'svg']
]
types = {
'svg' => 'svg+xml;base64,',
'png' => 'png;base64,'
}
roles = ['pawn', 'knight', 'bishop', 'rook', 'queen', 'king']
colors = ['white', 'black']
2015-03-15 12:44:52 -06:00
# inline SVG
2015-03-15 12:44:52 -06:00
themes.map { |theme|
name = theme[0]
ext = theme[1]
classes = colors.map { |color|
roles.map { |role|
piece = color[0] + (role == 'knight' ? 'N' : role.upcase[0])
file = source_dir + name + '/' + piece + '.' + ext
File.open(file, 'r') do|image_file|
image = image_file.read
base64 = Base64.strict_encode64(image)
2019-04-15 02:24:48 -06:00
'.is2d .' + role + '.' + color + ' {' +
"background-image:url('data:image/" + types[ext] + base64 + "')}"
end
}
}.flatten
File.open(dest_dir + name + '.css', 'w') { |f| f.puts classes.join("\n") }
2015-03-15 12:44:52 -06:00
}
# external SVG
themes.map { |theme|
name = theme[0]
ext = theme[1]
classes = colors.map { |color|
roles.map { |role|
piece = color[0] + (role == 'knight' ? 'N' : role.upcase[0])
'.is2d .' + role + '.' + color + ' {' +
"background-image:url('/assets/piece/" + name + "/" + piece + "." + ext + "')}"
}
}.flatten
File.open(dest_dir + name + '.external.css', 'w') { |f| f.puts classes.join("\n") }
}