Merge pull request #226 from raix/bug/221-show-fix-star-icons-on-win32

fix show: add icon fallback on win32
This commit is contained in:
João Moreno 2017-12-07 09:35:25 +01:00 committed by GitHub
commit d15553462b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 3 deletions

View file

@ -1,6 +1,6 @@
import { getPublicGalleryAPI } from './util';
import { ExtensionQueryFlags, PublishedExtension } from 'vso-node-api/interfaces/GalleryInterfaces';
import { ViewTable, formatDate, formatDateTime, ratingStars, tableView, indentRow, wordWrap } from './viewutils';
import { ViewTable, formatDate, formatDateTime, ratingStars, tableView, indentRow, wordWrap, icons } from './viewutils';
const limitVersions = 6;
const isExtensionTag = /^__ext_(.*)$/;
@ -66,7 +66,7 @@ function showOverview({
// Render
console.log([
`${displayName}`,
`${publisherDisplayName} | ${'\u2913'}` +
`${publisherDisplayName} | ${icons.download} ` +
`${Number(installs).toLocaleString()} installs |` +
` ${ratingStars(averagerating)} (${ratingcount})`,
'',

View file

@ -1,3 +1,5 @@
const os = require('os');
export type ViewTableRow = string[];
export type ViewTable = ViewTableRow[];
@ -9,6 +11,21 @@ const format = {
const columns = process.stdout.columns ? process.stdout.columns : 80;
// xxx: Windows cmd + powershell standard fonts currently don't support the full
// unicode charset. For now we use fallback icons when on windows.
const useFallbackIcons = os.platform() === 'win32';
export const icons = useFallbackIcons?
{
download: '\u{2193}',
star: '\u{2665}',
emptyStar: '\u{2022}',
} : {
download: '\u{2913}',
star: '\u{2605}',
emptyStar: '\u{2606}',
};
export function formatDate(date) { return date.toLocaleString(fixedLocale, format.date); }
export function formatTime(date) { return date.toLocaleString(fixedLocale, format.time); }
export function formatDateTime(date) { return date.toLocaleString(fixedLocale, { ...format.date, ...format.time }); }
@ -23,7 +40,7 @@ export function repeatString(text: string, count: number): string {
export function ratingStars(rating: number, total = 5): string {
const c = Math.min(Math.round(rating), total);
return `${repeatString('\u{2605} ', c)}${repeatString('\u{2606} ', total - c)}`;
return `${repeatString(icons.star + ' ', c)}${repeatString(icons.emptyStar + ' ', total - c)}`;
}
export function tableView(table: ViewTable, spacing: number = 2): string[] {