[devdocsgjs/main: 393/1867] Handle docs without custom icons properly
- From: Andy Holmes <andyholmes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [devdocsgjs/main: 393/1867] Handle docs without custom icons properly
- Date: Fri, 19 Nov 2021 23:47:14 +0000 (UTC)
commit 6861e2f30667384cc563ac5b338a35cfddba9a11
Author: Jasper van Merle <jaspervmerle gmail com>
Date: Sun Sep 16 23:50:44 2018 +0200
Handle docs without custom icons properly
lib/tasks/sprites.thor | 41 +++++++++++++++++++++++++++--------------
1 file changed, 27 insertions(+), 14 deletions(-)
---
diff --git a/lib/tasks/sprites.thor b/lib/tasks/sprites.thor
index ea0a8b16..01cbcf22 100644
--- a/lib/tasks/sprites.thor
+++ b/lib/tasks/sprites.thor
@@ -13,32 +13,42 @@ class SpritesCLI < Thor
desc 'generate [--verbose]', 'Generate the documentation icon spritesheets'
option :verbose, type: :boolean
def generate
- icons = get_icons
- icons_per_row = Math.sqrt(icons.length).ceil
+ items = get_items
+ items_with_icons = items.select {|item| item[:has_icons]}
+ items_without_icons = items.select {|item| !item[:has_icons]}
+ icons_per_row = Math.sqrt(items_with_icons.length).ceil
bg_color = get_sidebar_background
- icons.each_with_index do |icon, index|
- icon[:row] = (index / icons_per_row).floor
- icon[:col] = index - icon[:row] * icons_per_row
+ items_with_icons.each_with_index do |item, index|
+ if item[:has_icons]
+ item[:row] = (index / icons_per_row).floor
+ item[:col] = index - item[:row] * icons_per_row
- icon[:icon_16] = get_icon(icon[:path_16], 16)
- icon[:icon_32] = get_icon(icon[:path_32], 32)
+ item[:icon_16] = get_icon(item[:path_16], 16)
+ item[:icon_32] = get_icon(item[:path_32], 32)
- icon[:dark_icon_fix] = needs_dark_icon_fix(icon[:icon_32], bg_color)
+ item[:dark_icon_fix] = needs_dark_icon_fix(item[:icon_32], bg_color)
+ end
end
- log_details(icons, icons_per_row)
+ generate_spritesheet(16, items_with_icons, 'assets/images/sprites/docs.png') {|item| item[:icon_16]}
+ generate_spritesheet(32, items_with_icons, 'assets/images/sprites/docs 2x png') {|item| item[:icon_32]}
- generate_spritesheet(16, icons, 'assets/images/sprites/docs.png') {|icon| icon[:icon_16]}
- generate_spritesheet(32, icons, 'assets/images/sprites/docs 2x png') {|icon| icon[:icon_32]}
+ # Add Mongoose's icon details to docs without custom icons
+ template_item = items_with_icons.find {|item| item[:type] == 'mongoose'}
+ items_without_icons.each do |item|
+ item[:row] = template_item[:row]
+ item[:col] = template_item[:col]
+ item[:dark_icon_fix] = template_item[:dark_icon_fix]
+ end
- save_manifest(icons, icons_per_row, 'assets/images/sprites/docs.json')
+ save_manifest(items, icons_per_row, 'assets/images/sprites/docs.json')
end
private
- def get_icons
+ def get_items
items = Docs.all.map do |doc|
base_path = "public/icons/docs/#{doc.slug}"
{
@@ -50,7 +60,10 @@ class SpritesCLI < Thor
# Checking paths against an array of possible paths is faster than 200+ File.exist? calls
files = Dir.glob('public/icons/docs/**/*.png')
- items.select {|item| files.include?(item[:path_16]) && files.include?(item[:path_32])}
+ items.map do |item|
+ item[:has_icons] = files.include?(item[:path_16]) && files.include?(item[:path_32])
+ item
+ end
end
def get_icon(path, max_size)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]