Skip to content

Commit bcc981a

Browse files
committed
Merge branch 'master' of github.com:parcel-bundler/parcel-css into cssom3
# Conflicts: # src/rules/keyframes.rs # src/rules/style.rs
2 parents a73cdbb + 9b4de9e commit bcc981a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

82 files changed

+1451
-140
lines changed

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,4 @@ jobs:
1818
- uses: dtolnay/rust-toolchain@stable
1919
- uses: Swatinem/rust-cache@v1
2020
- run: cargo fmt
21-
- run: cargo test
21+
- run: cargo test --all-features

Cargo.lock

Lines changed: 32 additions & 62 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ members = [
77
[package]
88
authors = ["Devon Govett <devongovett@gmail.com>"]
99
name = "parcel_css"
10-
version = "1.0.0-alpha.24"
10+
version = "1.0.0-alpha.25"
1111
description = "A CSS parser, transformer, and minifier"
1212
license = "MPL-2.0"
1313
edition = "2021"
@@ -52,11 +52,13 @@ indoc = "1.0.3"
5252
assert_cmd = "2.0"
5353
assert_fs = "1.0"
5454
predicates = "2.1"
55+
serde_json = "1.0.78"
5556

5657
[features]
5758
default = ["grid"]
5859
cli = ["clap", "serde_json", "pathdiff", "browserslist-rs", "jemallocator"]
5960
grid = []
61+
serde = ["smallvec/serde", "cssparser/serde"]
6062

6163
[[test]]
6264
name = "cli_integration_tests"

examples/serialize.rs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
fn main() {
2+
parse();
3+
}
4+
5+
#[cfg(feature = "serde")]
6+
fn parse() {
7+
use parcel_css::stylesheet::{ParserOptions, StyleSheet};
8+
use std::{env, fs};
9+
10+
let args: Vec<String> = env::args().collect();
11+
let contents = fs::read_to_string(&args[1]).unwrap();
12+
let stylesheet = StyleSheet::parse(&args[1], &contents, ParserOptions::default()).unwrap();
13+
let json = serde_json::to_string(&stylesheet).unwrap();
14+
println!("{}", json);
15+
}
16+
17+
#[cfg(not(feature = "serde"))]
18+
fn parse() {
19+
panic!("serde feature is not enabled")
20+
}

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@parcel/css",
3-
"version": "1.8.2",
3+
"version": "1.8.3",
44
"license": "MPL-2.0",
55
"description": "A CSS parser, transformer, and minifier written in Rust",
66
"main": "node/index.js",

scripts/build-prefixes.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,9 +212,12 @@ let mdnFeatures = {
212212
mediaRangeSyntax: mdn.css['at-rules'].media.range_syntax.__compat.support,
213213
mediaIntervalSyntax: {}, // currently no browsers
214214
logicalBorders: mdn.css.properties['border-inline-start'].__compat.support,
215+
logicalBorderShorthand: mdn.css.properties['border-inline'].__compat.support,
215216
logicalBorderRadius: mdn.css.properties['border-start-start-radius'].__compat.support,
216217
logicalMargin: mdn.css.properties['margin-inline-start'].__compat.support,
218+
logicalMarginShorthand: mdn.css.properties['margin-inline'].__compat.support,
217219
logicalPadding: mdn.css.properties['padding-inline-start'].__compat.support,
220+
logicalPaddingShorthand: mdn.css.properties['padding-inline'].__compat.support,
218221
logicalInset: mdn.css.properties['inset-inline-start'].__compat.support,
219222
logicalSize: mdn.css.properties['inline-size'].__compat.support,
220223
logicalTextAlign: mdn.css.properties['text-align']['flow_relative_values_start_and_end'].__compat.support,

src/compat.rs

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,13 @@ pub enum Feature {
4141
LabColors,
4242
LangList,
4343
LogicalBorderRadius,
44+
LogicalBorderShorthand,
4445
LogicalBorders,
4546
LogicalInset,
4647
LogicalMargin,
48+
LogicalMarginShorthand,
4749
LogicalPadding,
50+
LogicalPaddingShorthand,
4851
LogicalSize,
4952
LogicalTextAlign,
5053
MediaIntervalSyntax,
@@ -1547,6 +1550,51 @@ impl Feature {
15471550
return false;
15481551
}
15491552
}
1553+
Feature::LogicalBorderShorthand | Feature::LogicalMarginShorthand | Feature::LogicalPaddingShorthand => {
1554+
if let Some(version) = browsers.chrome {
1555+
if version < 5701632 {
1556+
return false;
1557+
}
1558+
}
1559+
if let Some(version) = browsers.edge {
1560+
if version < 5701632 {
1561+
return false;
1562+
}
1563+
}
1564+
if let Some(version) = browsers.firefox {
1565+
if version < 4325376 {
1566+
return false;
1567+
}
1568+
}
1569+
if let Some(version) = browsers.opera {
1570+
if version < 3145728 {
1571+
return false;
1572+
}
1573+
}
1574+
if let Some(version) = browsers.safari {
1575+
if version < 917760 {
1576+
return false;
1577+
}
1578+
}
1579+
if let Some(version) = browsers.ios_saf {
1580+
if version < 918784 {
1581+
return false;
1582+
}
1583+
}
1584+
if let Some(version) = browsers.samsung {
1585+
if version < 917504 {
1586+
return false;
1587+
}
1588+
}
1589+
if let Some(version) = browsers.android {
1590+
if version < 5701632 {
1591+
return false;
1592+
}
1593+
}
1594+
if browsers.ie.is_some() {
1595+
return false;
1596+
}
1597+
}
15501598
Feature::LogicalBorderRadius => {
15511599
if let Some(version) = browsers.chrome {
15521600
if version < 5832704 {

0 commit comments

Comments
 (0)