12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- <header></header>
- <body>
- <script>
- class RGB {
- #r = 0
- #g = 0
- #b = 0
- checkChannelValue(val) {
- val = +val
- if (typeof val !== "number" || val < 0 || val > 255) {
- throw new Error(`invalid channel value: ${val}`)
- }
- }
- get r() {
- return this.#r;
- }
- set r(val) {
- this.checkChannelValue(val);
- this.#r = +val;
- }
- get g() {
- return this.#g;
- }
- set g(val) {
- this.checkChannelValue(val);
- this.#g = +val;
- }
- get b() {
- return this.#b;
- }
- set b(val) {
- this.checkChannelValue(val);
- this.#b = +val;
- }
- set hex(val) {
- let matchColors = /^#([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/;
- let match = matchColors.exec(val);
- if (match !== null && match.length == 4) {
- this.r = parseInt(`${match[1]}`, 16);
- this.g = parseInt(`${match[2]}`, 16);
- this.b = parseInt(`${match[3]}`, 16);
- return;
- }
- throw new Error(`incorrect hex color parameter: ${val}`);
- }
- get hex() {
- return `#${this.r.toString(16).toUpperCase()}${this.g.toString(16).toUpperCase()}${this.b.toString(16).toUpperCase()}`;
- }
- set rgb(val) {
- let matchColors = /^rgb\((\d{1,3}), (\d{1,3}), (\d{1,3})\)$/;
- let match = matchColors.exec(val);
- if (match !== null && match.length == 3) {
- this.r = match[1];
- this.g = match[2];
- this.b = match[3];
- return;
- }
- throw new Error(`incorrect rgb color parameter: ${val}`);
- }
- get rgb() {
- return `rgb(${this.r}, ${this.g}, ${this.b})`;
- }
- /* constructor(r, g, b) {
- this.r = r;
- this.g = g;
- this.b = b;
- }*/
- constructor(colorString) {
- if (colorString.startsWith("#"))
- this.hex = colorString;
- else
- this.rgb = colorString;
- }
- }
- function assertAreEqual(actual, expected) {
- if (actual != expected)
- throw new Error(`not expected value. actual: ${actual}, expected: ${expected}`);
- }
- //let color = new RGB('#AABBFF');
- //assertAreEqual(color.hex, '#AABBFF');
- let color = new RGB ('rgb(55, 49, 121)');
- assertAreEqual(color.rgb, ('55, 49, 121'));
- assertAreEqual(color.hex, `#373179`);
- //*color.rgb = `rgb(55, 49, 121)`;
- //assertAreEqual(color.r, 55);
- //assertAreEqual(color.g, 49);
- // assertAreEqual(color.b, 121);
- //assertAreEqual(color.rgb, `rgb(55, 49, 121)`);
- //assertAreEqual(color.hex, `#373179`);
- </script>
- </body>
|