blob: bae7774bc2e205da33d8270fc4466e21fdeeb74a [file] [log] [blame]
<?php
/**
* File containing the ezcDocumentRomanListItemGenerator class.
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
* @package Document
* @version //autogen//
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
* @access private
*/
/**
* Roman number list item generator.
*
* Generator for roman numbered list items. Basically converts the list item
* number into a roman number and returns that. Roman numbering is only
* properly support up to numbers of about 1000. Lists with more items will
* generate strange to read numbers, because they can only be represented using
* lots of repetitions of the "M" representing 1000.
*
* @package Document
* @access private
* @version //autogen//
*/
class ezcDocumentRomanListItemGenerator extends ezcDocumentAlnumListItemGenerator
{
/**
* Number map.
*
* @var array(int=>string)
*/
protected $numbers = array(
1000 => 'M',
900 => 'CM',
500 => 'D',
400 => 'CD',
100 => 'C',
90 => 'XC',
50 => 'L',
40 => 'XL',
10 => 'X',
9 => 'IX',
5 => 'V',
4 => 'IV',
1 => 'I',
);
/**
* Get list item.
*
* Get the n-th list item. The index of the list item is specified by the
* number parameter.
*
* @param int $number
* @return string
*/
public function getListItem( $number )
{
$item = '';
foreach ( $this->numbers as $value => $char )
{
while ( $number >= $value )
{
$item .= $char;
$number -= $value;
}
}
return $this->applyStyle( $item );
}
}
?>