mirror of
https://github.com/rwinkhart/convertroman.git
synced 2026-09-05 08:27:21 -04:00
added better comments
This commit is contained in:
+20
-5
@@ -1,3 +1,9 @@
|
|||||||
|
// Converts between integers and Roman Numeral strings.
|
||||||
|
//
|
||||||
|
// Currently only supports Roman Numerals without viniculum (1-3999) and will throw an error for
|
||||||
|
// numbers outside of that range.
|
||||||
|
//
|
||||||
|
// https://en.wikipedia.org/wiki/Roman_numerals#Large_numbers
|
||||||
package romannumeral
|
package romannumeral
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@@ -5,16 +11,23 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
type numeral struct {
|
const (
|
||||||
val int
|
_maxRoman = 3999
|
||||||
sym string
|
_minRoman = 1
|
||||||
}
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
InvalidRomanNumeral = errors.New("invalid roman numeral")
|
InvalidRomanNumeral = errors.New("invalid roman numeral")
|
||||||
IntegerOutOfBounds = errors.New("integer must be between 1 and 3999")
|
IntegerOutOfBounds = errors.New("integer must be between 1 and 3999")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// numeral describes the value and symbol of a single roman numeral
|
||||||
|
type numeral struct {
|
||||||
|
val int
|
||||||
|
sym string
|
||||||
|
}
|
||||||
|
|
||||||
|
// _numerals are all unique numerals ordered from largest to smallest
|
||||||
var _numerals = []numeral{
|
var _numerals = []numeral{
|
||||||
{1000, "M"}, {900, "CM"}, {500, "D"},
|
{1000, "M"}, {900, "CM"}, {500, "D"},
|
||||||
{400, "CD"}, {100, "C"}, {90, "XC"},
|
{400, "CD"}, {100, "C"}, {90, "XC"},
|
||||||
@@ -32,8 +45,10 @@ func FromInt(input int) (string, error) {
|
|||||||
return intToRoman(input), nil
|
return intToRoman(input), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// outOfBounds checks to ensure an input value is valid for roman numerals,
|
||||||
|
// vinculum is used for values of 4,000 and greater
|
||||||
func outOfBounds(input int) bool {
|
func outOfBounds(input int) bool {
|
||||||
return input < 1 || input > 3999
|
return input < _minRoman || input > _maxRoman
|
||||||
}
|
}
|
||||||
|
|
||||||
func intToRoman(input int) string {
|
func intToRoman(input int) string {
|
||||||
|
|||||||
Reference in New Issue
Block a user