Skip to content

Commit 4535adc

Browse files
committed
Color.RGBString(): now returns modern CSS RGB format
1 parent 9cb8f28 commit 4535adc

File tree

5 files changed

+35
-23
lines changed

5 files changed

+35
-23
lines changed

CHANGELOG.md

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,24 @@
11
# Changelog
22

3-
## [Unreleased](https://github.com/mazznoer/csscolorparser/compare/v0.1.4...HEAD)
3+
## [Unreleased](https://github.com/mazznoer/csscolorparser/compare/v0.1.7...HEAD)
4+
5+
## v0.1.7
6+
7+
### Added
8+
9+
- Support parsing `lab()` and `lch()` color format.
10+
- Make `NamedColors` public.
11+
- `Color.RGBString()` returns modern CSS RGB format.
12+
13+
## v0.1.6
14+
15+
- Doc and code improvements.
16+
17+
## v0.1.5
418

519
### Added
620

7-
- `Clamp()`
21+
- `Color.Clamp()`
822

923
## v0.1.4
1024

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ if err != nil {
3737
fmt.Printf("R:%.3f, G:%.3f, B:%.3f, A:%.3f", c.R, c.G, c.B, c.A) // R:1.000, G:0.843, B:0.000, A:1.000
3838
fmt.Println(c.RGBA255()) // 255 215 0 255
3939
fmt.Println(c.HexString()) // #ffd700
40-
fmt.Println(c.RGBString()) // rgb(255,215,0)
40+
fmt.Println(c.RGBString()) // rgb(255 215 0)
4141
```
4242

4343
## Try It Online

colorparser.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,11 @@ func (c Color) HexString() string {
5555
// RGBString returns CSS RGB string.
5656
func (c Color) RGBString() string {
5757
r, g, b, _ := c.RGBA255()
58-
if c.A < 1 {
59-
return fmt.Sprintf("rgba(%d,%d,%d,%v)", r, g, b, c.A)
58+
a := uint8(clamp0_1(c.A) * 100)
59+
if a < 100 {
60+
return fmt.Sprintf("rgb(%d %d %d / %d%%)", r, g, b, a)
6061
}
61-
return fmt.Sprintf("rgb(%d,%d,%d)", r, g, b)
62+
return fmt.Sprintf("rgb(%d %d %d)", r, g, b)
6263
}
6364

6465
// Name returns name of this color if its available.

colorparser_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,12 @@ func Test_Color(t *testing.T) {
5656

5757
c = Color{0, 0, 1, 1}
5858
test(t, c.HexString(), "#0000ff")
59-
test(t, c.RGBString(), "rgb(0,0,255)")
59+
test(t, c.RGBString(), "rgb(0 0 255)")
6060
testGoColor(t, c, color.NRGBA{0, 0, 255, 255})
6161

6262
c = Color{0, 0, 1, 0.5}
6363
test(t, c.HexString(), "#0000ff80")
64-
test(t, c.RGBString(), "rgba(0,0,255,0.5)")
64+
test(t, c.RGBString(), "rgb(0 0 255 / 50%)")
6565
//testGoColor(t, c, color.NRGBA{0,0,255,127})
6666

6767
testGoColor(t, Color{A: 1}, color.Gray{0})

example_test.go

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import (
66
"github.com/mazznoer/csscolorparser"
77
)
88

9-
func Example_namedColor() {
10-
c, err := csscolorparser.Parse("gold")
9+
func Example() {
10+
c, err := csscolorparser.Parse("rgb(100% 0% 0% / 50%)")
1111

1212
if err != nil {
1313
panic(err)
@@ -18,26 +18,23 @@ func Example_namedColor() {
1818
fmt.Println(c.HexString())
1919
fmt.Println(c.RGBString())
2020
// Output:
21-
// R:1.000, G:0.843, B:0.000, A:1.000
22-
// 255 215 0 255
23-
// #ffd700
24-
// rgb(255,215,0)
21+
// R:1.000, G:0.000, B:0.000, A:0.500
22+
// 255 0 0 128
23+
// #ff000080
24+
// rgb(255 0 0 / 50%)
2525
}
2626

27-
func Example_rgbColor() {
28-
c, err := csscolorparser.Parse("rgba(100%, 0%, 0%, 0.5)")
27+
func ExampleColor_Name() {
28+
c, err := csscolorparser.Parse("#ffd700")
2929

3030
if err != nil {
3131
panic(err)
3232
}
3333

34-
fmt.Printf("R:%.3f, G:%.3f, B:%.3f, A:%.3f\n", c.R, c.G, c.B, c.A)
35-
fmt.Println(c.RGBA255())
36-
fmt.Println(c.HexString())
3734
fmt.Println(c.RGBString())
35+
name, _ := c.Name()
36+
fmt.Println(name)
3837
// Output:
39-
// R:1.000, G:0.000, B:0.000, A:0.500
40-
// 255 0 0 128
41-
// #ff000080
42-
// rgba(255,0,0,0.5)
38+
// rgb(255 215 0)
39+
// gold
4340
}

0 commit comments

Comments
 (0)