Skip to content

Commit

Permalink
Fix contentRule
Browse files Browse the repository at this point in the history
  • Loading branch information
davesnx committed Oct 17, 2023
1 parent 314b841 commit f0e262f
Show file tree
Hide file tree
Showing 7 changed files with 37 additions and 31 deletions.
4 changes: 0 additions & 4 deletions packages/css/js/Css_Js_Core.ml
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,6 @@ type rule =
let rec ruleToDict =
fun [@bs] dict rule ->
(match rule with
| D (name, value) when name = {js|content|js} ->
dict
|. Js.Dict.set name
(Js.Json.string (if value = {js||js} then {js|""|js} else value))
| D (name, value) -> dict |. Js.Dict.set name (Js.Json.string value)
| S (name, ruleset) -> dict |. Js.Dict.set name (toJson ruleset)
| PseudoClass (name, ruleset) ->
Expand Down
3 changes: 0 additions & 3 deletions packages/css/js/Css_Legacy_Core.ml
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,6 @@ type rule =

let rec ruleToDict dict rule =
(match rule with
| D (name, value) when name = "content" ->
Js.Dict.set dict name
(Js.Json.string (if value = {js||js} then {js|""|js} else value))
| D (name, value) -> Js.Dict.set dict name (Js.Json.string value)
| S (name, ruleset) -> Js.Dict.set dict name (toJson ruleset)
| PseudoClass (name, ruleset) ->
Expand Down
6 changes: 5 additions & 1 deletion packages/css/native/shared/Css_AtomicTypes.ml
Original file line number Diff line number Diff line change
Expand Up @@ -2263,7 +2263,11 @@ module Content = struct
| `noOpenQuote -> {js|no-open-quote|js}
| `noCloseQuote -> {js|no-close-quote|js}
| `attr name -> ({js|attr(|js} ^ name) ^ {js|)|js}
| `text value -> value
| `text "" -> {js|""|js}
| `text value ->
(match Js.String2.get value 0 with
| "\"" | "'" -> value
| _ -> "\"" ^ value ^ "\"")
end

module SVG = struct
Expand Down
26 changes: 6 additions & 20 deletions packages/css/native/shared/Css_Js_Core.ml
Original file line number Diff line number Diff line change
Expand Up @@ -11,28 +11,14 @@ type rule =
let rec ruleToDict =
fun [@bs] dict rule ->
(match rule with
| D (name, value) when name = {js|content|js} ->
let (_ : unit) =
Js.Dict.set dict name
(Js.Json.string (if value = {js||js} then {js|""|js} else value))
in
()
| D (name, value) ->
let (_ : unit) = Js.Dict.set dict name (Js.Json.string value) in
()
| S (name, ruleset) ->
let (_ : unit) = Js.Dict.set dict name (toJson ruleset) in
()
| D (name, value) -> Js.Dict.set dict name (Js.Json.string value)
| S (name, ruleset) -> Js.Dict.set dict name (toJson ruleset)
| PseudoClass (name, ruleset) ->
let (_ : unit) = dict |. Js.Dict.set ({js|:|js} ^ name) (toJson ruleset) in
()
dict |. Js.Dict.set ({js|:|js} ^ name) (toJson ruleset)
| PseudoClassParam (name, param, ruleset) ->
let (_ : unit) =
Js.Dict.set dict
({js|:|js} ^ name ^ {js|(|js} ^ param ^ {js|)|js})
(toJson ruleset)
in
());
Js.Dict.set dict
({js|:|js} ^ name ^ {js|(|js} ^ param ^ {js|)|js})
(toJson ruleset));
dict

and toJson rules =
Expand Down
3 changes: 0 additions & 3 deletions packages/css/native/shared/Css_Legacy_Core.ml
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,6 @@ type rule =

let rec ruleToDict dict rule =
(match rule with
| D (name, value) when name = "content" ->
Js.Dict.set dict name
(Js.Json.string (if value = {js||js} then {js|""|js} else value))
| D (name, value) -> Js.Dict.set dict name (Js.Json.string value)
| S (name, ruleset) -> Js.Dict.set dict name (toJson ruleset)
| PseudoClass (name, ruleset) ->
Expand Down
1 change: 1 addition & 0 deletions packages/emotion/test/test.ml
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@ let () =
Test_css_styles.tests;
Test_css_autoprefixer.tests;
Test_css_hash.tests;
Test_css_js_intf.tests;
]
25 changes: 25 additions & 0 deletions packages/emotion/test/test_css_js_intf.ml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
(* TODO: Migrate all those tests
- https://github.com/giraud/bs-css/blob/master/bs-css/__tests__/Css_Js_test.res
- https://github.com/giraud/bs-css/blob/master/bs-css/__tests__/Selectors_test.res
- https://github.com/giraud/bs-css/blob/master/bs-css/__tests__/Svg_test.res
*)

let assert_string left right =
Alcotest.check Alcotest.string "should be equal" right left

let case title fn = Alcotest.test_case title `Quick fn

let tests =
( "CssJs interface",
[
case "content" (fun () ->
let missing = CssJs.contentRule (`text "missing") in
let present = CssJs.contentRule (`text "\"present\"") in
let empty = CssJs.contentRule (`text "") in
let single = CssJs.contentRule (`text "'single'") in
let _ = CssJs.style [| missing; present; empty; single |] in
assert_string
(CssJs.render_style_tag ())
".css-ktvasi { content: \"missing\"; content: \"present\"; content: \
\"\"; content: 'single'; }");
] )

0 comments on commit f0e262f

Please sign in to comment.