{"version":3,"file":"ng-roman-number-component.mjs","sources":["../../../../projects/d9c4/ng-roman-number-component/src/lib/ng-roman-number-component.service.ts","../../../../projects/d9c4/ng-roman-number-component/src/lib/ng-roman-number-component.model.ts","../../../../projects/d9c4/ng-roman-number-component/src/lib/ng-roman-number-component.component.ts","../../../../projects/d9c4/ng-roman-number-component/src/lib/ng-roman-number-component.module.ts","../../../../projects/d9c4/ng-roman-number-component/src/public-api.ts","../../../../projects/d9c4/ng-roman-number-component/src/ng-roman-number-component.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NgRomanNumberComponentService {\n\n  constructor() { }\n}\n","export class RomanNumber {\r\n  num: number;\r\n  str: string;\r\n\r\n  baseUnits: number = 0;\r\n  thousands: number = 0;\r\n\r\n  constructor(num: number, str: string) {\r\n    this.num = num;\r\n    this.str = str;\r\n  }\r\n}\r\n\r\nexport const BaseNumbers = [\r\n  new RomanNumber(1000, 'M'),\r\n  new RomanNumber(900, 'CM'),\r\n  new RomanNumber(500, 'D'),\r\n  new RomanNumber(400, 'CD'),\r\n  new RomanNumber(100, 'C'),\r\n  new RomanNumber(90, 'XC'),\r\n  new RomanNumber(50, 'L'),\r\n  new RomanNumber(40, 'XL'),\r\n  new RomanNumber(10, 'X'),\r\n  new RomanNumber(9, 'IX'),\r\n  new RomanNumber(5, 'V'),\r\n  new RomanNumber(4, 'IV'),\r\n  new RomanNumber(1, 'I'),\r\n];\r\n\r\nexport function toRoman(x: number): string {\r\n  let i: number;\r\n  let romanNumber: RomanNumber;\r\n  if (x <= 0 || x > 3999) {\r\n    return '';\r\n  } else {\r\n    i = 0;\r\n    let toReturn: string = '';\r\n    x = Math.floor(x);\r\n    while (x > 0) {\r\n      romanNumber = BaseNumbers[i];\r\n      if (Math.floor(x / romanNumber.num) === 0) {\r\n        ++i;\r\n      } else {\r\n        toReturn = toReturn + romanNumber.str;\r\n        x -= romanNumber.num;\r\n      }\r\n    }\r\n    return toReturn;\r\n  }\r\n}\r\n\r\nexport function toArabic(x: string): number | null {\r\n  let romanNumeral = x.toUpperCase();\r\n  if (!isRoman(romanNumeral)) {\r\n    return null;\r\n  }\r\n  let result = 0;\r\n\r\n  let i = 0;\r\n\r\n  while (romanNumeral.length > 0 && i < BaseNumbers.length) {\r\n    const romanNumber = BaseNumbers[i];\r\n    if (romanNumeral.startsWith(romanNumber.str)) {\r\n      result += romanNumber.num;\r\n      romanNumeral = romanNumeral.substring(romanNumber.str.length);\r\n    } else {\r\n      i++;\r\n    }\r\n  }\r\n\r\n  if (romanNumeral.length > 0) {\r\n    return null;\r\n  }\r\n\r\n  return result;\r\n}\r\n\r\nexport function isRoman(x: string): boolean {\r\n  const regex = new RegExp('^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$');\r\n  return regex.test(x);\r\n}\r\n\r\nexport function toRomanLarge(x: number): RomanNumber {\r\n  const toReturn: RomanNumber = new RomanNumber(0, '');\r\n  toReturn.num = x;\r\n  x = Math.floor(x);\r\n\r\n  let xString: string = x.toString();\r\n\r\n  // tslint:disable-next-line:radix\r\n  toReturn.baseUnits = parseInt(xString.substring(xString.length - 3, xString.length));\r\n  xString = xString.substring(0, xString.length - 3);\r\n\r\n  // tslint:disable-next-line:radix\r\n  toReturn.thousands = parseInt(xString.substring(0, xString.length));\r\n\r\n  // future impl\r\n  // xString = xString.substring(0, xString.length - 3);\r\n  // // tslint:disable-next-line:radix\r\n  // toReturn.million = parseInt(xString.substring(xString.length - 3, xString.length));\r\n\r\n  toReturn.str = '';\r\n  // future impl\r\n  // if(toReturn.million !== 0){\r\n  //   toReturn.str = toReturn.str+'__'+ toRoman(toReturn.million);\r\n  // }\r\n  if (toReturn.thousands !== 0) {\r\n    toReturn.str = '('+toReturn.str + '_' + toRoman(toReturn.thousands)+')';\r\n  }\r\n  toReturn.str = toReturn.str + toRoman(toReturn.baseUnits);\r\n  return toReturn;\r\n}\r\n\r\nexport function toRomanLargeStr(x: number): string {\r\n  return toRomanLarge(x).str;\r\n}\r\n","import {Component, Input, OnInit} from '@angular/core';\nimport {RomanNumber, toRoman, toRomanLarge} from \"./ng-roman-number-component.model\";\n\n\n@Component({\n  selector: 'roman-number-component',\n  template: `\n    <div [ngClass]=\"romanFont ? 'serif' : ''\">\n      <span *ngIf=\"romanNumeralThousand !== ''\" class=\"thousand\">{{romanNumeralThousand}}</span>\n      <span>{{romanNumeralBase}}</span>\n    </div>\n  `,\n  styles: ['.million {\\n' +\n  '  border-top: 2.5px double black !important;\\n' +\n  '  padding: 1px !important;\\n' +\n  '}',\n    '.hundredThousand {\\n' +\n    '  border-top: 1px solid black !important;\\n' +\n    '  border-left: 1px solid black !important;\\n' +\n    '  border-right: 1px solid black !important;\\n' +\n    '}',\n    '.thousand {\\n' +\n    '  border-top: 1px solid black !important;\\n' +\n    '}',\n    '.serif {\\n' +\n    '  font-family: Times New Roman, Georgia, serif !important;\\n' +\n    '}'\n  ]\n})\nexport class NgRomanNumberComponent implements OnInit {\n  @Input(\"numeral\") numeral: number = 0;\n  @Input(\"isRomanFontEnabled\") romanFont: boolean = true;\n  fullRomanNumber: RomanNumber = new RomanNumber(0, '');\n  romanNumeralThousand: string = \"\";\n  romanNumeralBase: string = \"\";\n\n  constructor() {\n  }\n\n  ngOnInit(): void {\n    if (this.numeral > 3999) {\n      this.fullRomanNumber = toRomanLarge(this.numeral);\n      this.romanNumeralBase = toRoman(this.fullRomanNumber.baseUnits);\n      this.romanNumeralThousand = toRoman(this.fullRomanNumber.thousands);\n    } else {\n      this.romanNumeralBase = toRoman(this.numeral);\n    }\n\n  }\n\n}\n","import { NgModule } from '@angular/core';\nimport {NgRomanNumberComponent } from './ng-roman-number-component.component';\nimport {BrowserModule} from \"@angular/platform-browser\";\n\n\n\n@NgModule({\n  declarations: [\n    NgRomanNumberComponent\n  ],\n  imports: [\n    BrowserModule\n  ],\n  exports: [\n    NgRomanNumberComponent\n  ]\n})\nexport class NgRomanNumberComponentModule { }\n","/*\n * Public API Surface of ng-roman-number-component\n */\n\nexport * from './lib/ng-roman-number-component.service';\nexport * from './lib/ng-roman-number-component.component';\nexport * from './lib/ng-roman-number-component.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}