PoshCode Archive  Artifact Content

Artifact 294d537327e8c7aa8ce9da99dc7fc2b2ca2f64cee603740867aee94381ac2e74:

  • File Roman-Numeral-Clock.ps1 — part of check-in [a59bcb9475] at 2018-06-10 13:16:13 on branch trunk — It’s silly, it’s stupid, it’s fun (user: Sean Kearney size: 1720)

# encoding: ascii
# api: powershell
# title: Roman Numeral Clock
# description: It’s silly, it’s stupid, it’s fun
# version: 0.1
# type: function
# author: Sean Kearney
# license: CC0
# x-poshcode-id: 2828
# x-archived: 2015-02-03T05:19:46
# x-published: 2012-07-25T13:23:00
#
# It’s your very own Roman Numeral clock in Windows Powershell
#


function RomanNumeral($Num,$Pos) {

[array]$RomanFormat="9","0","00","000","01","1","10","100","1000","02"
[array]$RomanColumns="I","V","X","X","L","C"


$Format=$RomanFormat[$num]
$NumberOfCharacters=$Format.Length
If ( $Format -ne "9" )
    {
    For ($Counter=0;$Counter -lt ($numberOfCharacters);$counter++) {
        [int]$ColumnPosition=[convert]::toint16($Format[$Counter],10)
        Write-Host $RomanColumns[$Columnposition+(3*$Pos)] -nonewline
        }
    }
}


function convertToRoman ($Number) {

$NumberString=$number.tostring()
$NumberOfDigits=$NumberString.Length

For ($NumberPosition=0;$numberPosition -lt $NumberString.length;$NumberPosition++) {
    
	$NumbertoSend=[convert]::toint16(($NumberString[$NumberPosition]),10)
	$position=($NumberOfDigits-1)-$NumberPosition
    RomanNumeral $NumberToSend  $position
    }
}

do 
{
$current=get-date
$thehour=$current.hour
$theminute=$current.minute
$theseconds=$current.second

IF ($thehour -eq 0 ) { $thehour=12 }
IF ($thehour -gt 12) { $thehour=$thehour-12 }

$Location=$HOST.UI.RAWUI.CursorPosition

converttoroman $thehour
write-host ":" -nonewline
converttoroman $theminute
write-host ":" -nonewline
converttoroman $theseconds
write-host "        "
start-sleep -seconds 1
$HOST.UI.RAWUI.CursorPosition=$Location
} until ($FALSE)