{ "preserve comments": { "cases": [ [ "/* left /* right */left: 10px", "/* left /* right */right: 10px" ], [ "/*left*//*left*/left: 10px", "/*left*//*left*/right: 10px" ], [ "/* Going right is cool */\n#test {left: 10px}", "/* Going right is cool */\n#test {right: 10px}" ], [ "/* padding-right 1 2 3 4 */\n#test {left: 10px}\n/*right*/", "/* padding-right 1 2 3 4 */\n#test {right: 10px}\n/*right*/" ], [ "/** Two line comment\n * left\n \\*/\n#test {left: 10px}", "/** Two line comment\n * left\n \\*/\n#test {right: 10px}" ] ] }, "flip position": { "cases": [ [ ".foo { left: 10px; }", ".foo { right: 10px; }" ], [ ".foo { left: 10px !important; }", ".foo { right: 10px !important; }" ] ] }, "flip negative values": { "cases": [ [ ".foo { left:-1.5em; }", ".foo { right:-1.5em; }" ], [ ".foo { left:-.75em; }", ".foo { right:-.75em; }" ], [ ".foo { padding: 1px 2px 3px -4px; }", ".foo { padding: 1px -4px 3px 2px; }" ] ] }, "flip four value notation": { "cases": [ [ ".foo { padding: .25em 0ex 0pt 15px; }", ".foo { padding: .25em 15px 0pt 0ex; }" ], [ ".foo { padding: 1px 2% 3px 4.1grad; }", ".foo { padding: 1px 4.1grad 3px 2%; }" ], [ ".foo { padding: 1px auto 3px 2px; }", ".foo { padding: 1px 2px 3px auto; }" ], [ ".foo { padding: 1.1px 2.2px 3.3px 4.4px; }", ".foo { padding: 1.1px 4.4px 3.3px 2.2px; }" ], [ ".foo { padding: 1px auto 3px inherit; }", ".foo { padding: 1px inherit 3px auto; }" ], [ ".foo { padding: 1px 2px 3px 4px !important; }", ".foo { padding: 1px 4px 3px 2px !important; }" ], [ ".foo {padding:1px 2px 3px 4px !important}", ".foo {padding:1px 4px 3px 2px !important}" ], [ ".foo { padding: 1px 2px 3px 4px !important; color: red; }", ".foo { padding: 1px 4px 3px 2px !important; color: red; }" ], [ ".foo{padding:1px 2px 3px 4px}", ".foo{padding:1px 4px 3px 2px}" ], [ " .foo { padding: 1px 2px 3px 4px ; } ", " .foo { padding: 1px 4px 3px 2px ; } " ], [ "#settings td p strong {}" ], [ ".foo barpx 0 2% { opacity: 0; }" ], [ ".foo { -x-unknown: a b c d; }" ], [ ".foo { -x-unknown: 1px 2px 3px 4px; }" ], [ ".foo { -x-unknown: 1px 2px 3px 4px 5px; }" ] ] }, "flip direction": { "cases": [ [ ".foo { direction: ltr; }", ".foo { direction: rtl; }" ], [ "input { direction: rtl; }", "input { direction: ltr; }" ], [ "body { direction: rtl; }", "body { direction: ltr; }" ], [ "body { padding: 10px; direction: rtl; }", "body { padding: 10px; direction: ltr; }" ], [ ".foo, body, input { direction: rtl; }", ".foo, body, input { direction: ltr; }" ], [ "body { direction: rtl; } .myClass { direction: ltr; }", "body { direction: ltr; } .myClass { direction: rtl; }" ], [ "body{\n direction: rtl\n}", "body{\n direction: ltr\n}" ] ] }, "flip float": { "cases": [ [ ".foo { float: left; }", ".foo { float: right; }" ], [ ".foo { float: left !important; }", ".foo { float: right !important; }" ], [ ".foo { clear: left; }", ".foo { clear: right; }" ] ] }, "flip padding": { "cases": [ [ ".foo { padding: 1px; }" ], [ ".foo { padding: 1px 2px; }" ], [ ".foo { padding: 1px 2px 3px; }" ], [ ".foo { padding: 1px 2px 3px 4px; }", ".foo { padding: 1px 4px 3px 2px; }" ], [ ".foo { padding: 1px 2px 3px 4px 5px; }" ], [ ".foo { padding: 1px 2px 3px 4px 5px 6px; }" ] ] }, "flip padding-{edge}": { "cases": [ [ ".foo { padding-left: 0; }", ".foo { padding-right: 0; }" ] ] }, "flip margin-{edge}": { "cases": [ [ ".foo { margin-left: 0; }", ".foo { margin-right: 0; }" ] ] }, "flip cursor": { "cases": [ [ ".foo { cursor: w-resize; }", ".foo { cursor: e-resize; }" ], [ ".foo { cursor: sw-resize; }", ".foo { cursor: se-resize; }" ], [ ".foo { cursor: nw-resize; }", ".foo { cursor: ne-resize; }" ] ] }, "flip text-align": { "cases": [ [ ".foo { text-align: left; }", ".foo { text-align: right; }" ] ] }, "flip text-shadow": { "cases": [ [ ".foo { text-shadow: red 2px 0; }", ".foo { text-shadow: red -2px 0; }" ], [ ".foo { text-shadow: 2px 0 red; }", ".foo { text-shadow: -2px 0 red; }" ], [ ".foo { text-shadow: red 0 2px; }" ] ] }, "flip box-shadow": { "cases": [ [ ".foo { box-shadow: -6px 3px 8px 5px rgba(0, 0, 0, 0.25); }", ".foo { box-shadow: 6px 3px 8px 5px rgba(0, 0, 0, 0.25); }" ], [ ".foo { box-shadow: inset -6px 3px 8px 5px rgba(0, 0, 0, 0.25); }", ".foo { box-shadow: inset 6px 3px 8px 5px rgba(0, 0, 0, 0.25); }" ], [ ".foo { box-shadow: inset .5em 0 0 white; }", ".foo { box-shadow: inset -.5em 0 0 white; }" ], [ ".foo { box-shadow: inset 0.5em 0 0 white; }", ".foo { box-shadow: inset -0.5em 0 0 white; }" ], [ ".foo { box-shadow: none; }" ], [ ".foo { -webkit-box-shadow: -1px 2px 3px 3px red; }", ".foo { -webkit-box-shadow: 1px 2px 3px 3px red; }" ], [ ".foo { -moz-box-shadow: -1px 2px 3px 3px red; }", ".foo { -moz-box-shadow: 1px 2px 3px 3px red; }" ], [ ".foo{box-shadow:-1px 2px 3px 3px red}", ".foo{box-shadow:1px 2px 3px 3px red}" ], [ ".foo { box-shadow: -1px 2px 3px 3px red ; }", ".foo { box-shadow: 1px 2px 3px 3px red ; }" ] ] }, "flip border-{edge}": { "cases": [ [ ".foo { border-left: 0; }", ".foo { border-right: 0; }" ], [ ".foo { border-left: 1px solid red; }", ".foo { border-right: 1px solid red; }" ] ] }, "flip border-{edge}-color": { "cases": [ [ ".foo { border-left-color: red; }", ".foo { border-right-color: red; }" ] ] }, "flip border-{edge}-style": { "cases": [ [ ".foo { border-left-style: red; }", ".foo { border-right-style: red; }" ] ] }, "flip border-color": { "cases": [ [ ".foo { border-color: red green blue white; }", ".foo { border-color: red white blue green; }" ], [ ".foo { border-color: red #f00 rgb(255, 0, 0) rgba(255, 0, 0, 0.5); }", ".foo { border-color: red rgba(255, 0, 0, 0.5) rgb(255, 0, 0) #f00; }" ], [ ".foo { border-color: red #f00 hsl(0, 100%, 50%) hsla(0, 100%, 50%, 0.5); }", ".foo { border-color: red hsla(0, 100%, 50%, 0.5) hsl(0, 100%, 50%) #f00; }" ] ] }, "flip border-width": { "cases": [ [ ".foo { border-width: 1px 2px 3px 4px; }", ".foo { border-width: 1px 4px 3px 2px; }" ] ] }, "flip border-style": { "cases": [ [ ".foo { border-style: none dotted dashed solid; }", ".foo { border-style: none solid dashed dotted; }" ] ] }, "flip border-radius": { "cases": [ [ ".foo { border-radius: 1px; }" ], [ ".foo { border-radius: 1px 2px; }", ".foo { border-radius: 2px 1px; }" ], [ ".foo { border-radius: 1px 2px 3px 4px; }", ".foo { border-radius: 2px 1px 4px 3px; }" ], [ ".foo{border-radius:1px 2px 3px 4px}", ".foo{border-radius:2px 1px 4px 3px}" ], [ ".foo{ border-radius: 10px / 20px }" ], [ ".foo{ border-radius: 15px / 0 20px }", ".foo{ border-radius: 15px / 20px 0 }" ], [ ".foo{ border-radius: 1px 2px 3px 4px / 5px 6px 7px 8px }", ".foo{ border-radius: 2px 1px 4px 3px / 6px 5px 8px 7px }" ], [ ".foo{ border-radius: 0 !important }" ], [ ".foo{ border-radius: 1px 2px 3px 4px !important; }", ".foo{ border-radius: 2px 1px 4px 3px !important; }" ], [ ".foo { border-radius: 1px 2px 3px 4px ; }", ".foo { border-radius: 2px 1px 4px 3px ; }" ], [ ".foo { border-radius: 1px 2px 3px 4px 5px; }" ] ] }, "flip border-top-{edge}-radius": { "cases": [ [ ".foo { border-top-left-radius: 0; }", ".foo { border-top-right-radius: 0; }" ] ] }, "flip border-bottom-{edge}-radius": { "cases": [ [ ".foo { border-bottom-left-radius: 0; }", ".foo { border-bottom-right-radius: 0; }" ] ] }, "flip transform translate x-axis": { "cases": [ [ ".foo { transform: translate( 30px ); }", ".foo { transform: translate( -30px ); }" ], [ ".foo { transform: translate( 30% ); }", ".foo { transform: translate( -30% ); }" ], [ ".foo { transform: translate( 30%, 20% ); }", ".foo { transform: translate( -30%, 20% ); }" ], [ ".foo { transform: translate( 30%, 20%, 10% ); }", ".foo { transform: translate( -30%, 20%, 10% ); }" ], [ ".foo { transform: translate( 30%, 20%, 10%, 0% ); }" ], [ ".foo { transform: translateY( 30px ) rotate( 20deg ) translateX( 10px ); }", ".foo { transform: translateY( 30px ) rotate( 20deg ) translateX( -10px ); }" ], [ ".foo { transform: translateX( 30px ) rotate( 20deg ) translateY( 10px ); }", ".foo { transform: translateX( -30px ) rotate( 20deg ) translateY( 10px ); }" ], [ ".foo { transform: translateX( 30px ); }", ".foo { transform: translateX( -30px ); }" ], [ ".foo { other-property: translateX( 30px ); }" ], [ ".foo { -webkit-transform: translateX( 30px ); }", ".foo { -webkit-transform: translateX( -30px ); }" ], [ ".foo { transform: translateY( 30px ); }" ] ] }, "flip background-position keywords": { "cases": [ [ ".foo { background-position: left top; }", ".foo { background-position: right top; }" ], [ ".foo { background: url(/foo/bar.png) left top; }", ".foo { background: url(/foo/bar.png) right top; }" ], [ ".foo { background: url(/foo/bar.png) no-repeat left top; }", ".foo { background: url(/foo/bar.png) no-repeat right top; }" ], [ ".foo { background: #000 url(/foo/bar.png) no-repeat left top; }", ".foo { background: #000 url(/foo/bar.png) no-repeat right top; }" ], [ ".foo { background-position: left -5px; }", ".foo { background-position: right -5px; }" ] ] }, "flip background-position percentages": { "cases": [ [ ".foo { background-position: 77% 40%; }", ".foo { background-position: 23% 40%; }" ], [ ".foo { background-position: 2.3% 40%; }", ".foo { background-position: 97.7% 40%; }" ], [ ".foo { background-position: 2.3210% 40%; }", ".foo { background-position: 97.6790% 40%; }" ], [ ".foo { background-position: 0% 100%; }", ".foo { background-position: 100% 100%; }" ], [ ".foo { background-position: 77% -5px; }", ".foo { background-position: 23% -5px; }" ], [ ".foo { background-position: 0% 100% !important; }", ".foo { background-position: 100% 100% !important; }" ], [ ".foo{background-position: 0% 100%}", ".foo{background-position: 100% 100%}" ], [ ".foo { background-position: 0% 100% ; }", ".foo { background-position: 100% 100% ; }" ] ] }, "do not flip background-position non-percentages": { "cases": [ [ ".foo { background-position: 0 5px; }" ], [ ".foo { background-position: 10px 20px; }" ], [ ".foo { background-position: 10px 40%; }" ], [ ".foo { background-position: 10px 2.3%; }" ] ] }, "flip background percentages": { "cases": [ [ ".foo { background: url(/foo/bar.png) 77% 40%; }", ".foo { background: url(/foo/bar.png) 23% 40%; }" ], [ ".foo { background: url(/foo/bar.png) 77%; }", ".foo { background: url(/foo/bar.png) 23%; }" ], [ ".foo { background: url(/foo/bar.png) no-repeat 77% 40%; }", ".foo { background: url(/foo/bar.png) no-repeat 23% 40%; }" ], [ ".foo { background: #000 url(/foo/bar.png) no-repeat 77% 40%; }", ".foo { background: #000 url(/foo/bar.png) no-repeat 23% 40%; }" ], [ ".foo { background: #000 url(/foo/bar.png) no-repeat 77% 40%; }", ".foo { background: #000 url(/foo/bar.png) no-repeat 23% 40%; }" ], [ ".foo { background: 77% 40%; } .bar { background: 0% 100%; }", ".foo { background: 23% 40%; } .bar { background: 100% 100%; }" ], [ ".foo { background: url(/foo/bar.png) 77% 40% !important; }", ".foo { background: url(/foo/bar.png) 23% 40% !important; }" ], [ ".foo{background:url(/foo/bar.png) 77% 40%}", ".foo{background:url(/foo/bar.png) 23% 40%}" ], [ ".foo { background: url(/foo/bar.png) 77% 40% ; }", ".foo { background: url(/foo/bar.png) 23% 40% ; }" ] ] }, "flip background-position-x percentages": { "cases": [ [ ".foo { background-position-x: 77%; }", ".foo { background-position-x: 23%; }" ], [ ".foo { background-position-x: 77% !important; }", ".foo { background-position-x: 23% !important; }" ], [ ".foo{background-position-x:77%}", ".foo{background-position-x:23%}" ], [ ".foo { background-position-x: 77% ; }", ".foo { background-position-x: 23% ; }" ] ] }, "do not flip background-position-y": { "cases": [ [ ".foo { background-position-y: 40%; }" ] ] }, "do not flip URLs when url transforms are off": { "options": { "transformDirInUrl": false, "transformEdgeInUrl": false }, "cases": [ [ "background: url(/foo/bar-left.png)" ], [ "background: url(/foo/left-bar.png)" ], [ "url(\"http://www.blogger.com/img/triangle_ltr.gif\")" ], [ "url('http://www.blogger.com/img/triangle_ltr.gif')" ], [ "url('http://www.blogger.com/img/triangle_ltr.gif' )" ], [ "background: url(/foo/bar.left.png)" ], [ "background: url(/foo/bar-rtl.png)" ], [ "background: url(/foo/bar-rtl.png); right: 10px", "background: url(/foo/bar-rtl.png); left: 10px" ], [ "background: url(/foo/bar-right.png); direction: ltr", "background: url(/foo/bar-right.png); direction: rtl" ], [ "background: url(/foo/bar-rtl_right.png);right:10px; direction: ltr", "background: url(/foo/bar-rtl_right.png);left:10px; direction: rtl" ] ] }, "flip URLs when url transforms are on": { "options": { "transformDirInUrl": true, "transformEdgeInUrl": true }, "cases": [ [ "background: url(/foo/bar-right.png)", "background: url(/foo/bar-left.png)" ], [ "background: url(/foo/right-bar.png)", "background: url(/foo/left-bar.png)" ], [ "url(\"http://www.blogger.com/img/triangle_rtl.gif\")", "url(\"http://www.blogger.com/img/triangle_ltr.gif\")" ], [ "url('http://www.blogger.com/img/triangle_rtl.gif')", "url('http://www.blogger.com/img/triangle_ltr.gif')" ], [ "url('http://www.blogger.com/img/triangle_rtl.gif'\t)", "url('http://www.blogger.com/img/triangle_ltr.gif'\t)" ], [ "background: url(/foo/bar.right.png)", "background: url(/foo/bar.left.png)" ], [ "background: url(/foo/bright.png)" ], [ "background: url(/foo/bar-ltr.png)", "background: url(/foo/bar-rtl.png)" ], [ "background: url(/foo/bar-ltr.png); right: 10px", "background: url(/foo/bar-rtl.png); left: 10px" ], [ "background: url(/foo/bar-left.png); direction: ltr", "background: url(/foo/bar-right.png); direction: rtl" ], [ "background: url(/foo/bar-ltr_left.png);right:10px; direction: ltr", "background: url(/foo/bar-rtl_right.png);left:10px; direction: rtl" ] ] }, "do not flip URLs (back-compat boolean argument)": { "args": [ false, false ], "cases": [ [ "background: url(/foo/bar-ltr_left.png);right:10px; direction: ltr", "background: url(/foo/bar-ltr_left.png);left:10px; direction: rtl" ] ] }, "flip URLs (back-compat boolean argument)": { "args": [ true, true ], "cases": [ [ "background: url(/foo/bar-ltr_left.png);right:10px; direction: ltr", "background: url(/foo/bar-rtl_right.png);left:10px; direction: rtl" ] ] }, "leave class names alone": { "cases": [ [ ".x-left { width: 0; }" ], [ "#bright-left { width: 0; }" ], [ "div.left:hover { width: 0; }" ], [ "#bright-left,\n.foo { width: 0; }" ], [ "#bright-left, .foo { width: 0; }" ], [ "div.leftxx, div.leftxx { width: 0; }" ], [ "div.left > span.right+span.left { width: 0; }" ], [ ".foo .left .bar { width: 0; }" ], [ ".foo .left .bar #myid { width: 0; }" ], [ "foo-ltr[attr=x] { width: 0; }" ], [ ".a-foo.png { width: 0; }" ] ] }, "leave unknown properties alone": { "cases": [ [ ".foo { xxleft: 10px; }" ], [ ".foo { xxright: 10px; }" ], [ ".foo { leftxx: 10px; }" ], [ ".foo { rightxx: 10px; }" ] ] }, "flip multiple rules": { "cases": [ [ "body { direction: ltr; float: left; } .foo { direction: ltr; float: left; }", "body { direction: rtl; float: right; } .foo { direction: rtl; float: right; }" ] ] }, "flip duplicate properties": { "cases": [ [ ".foo { float: left; float: right; float: left; }", ".foo { float: right; float: left; float: right; }" ] ] }, "do not flip rules or properties with @noflip comments": { "cases": [ [ "/* @noflip */ div { float: left; }" ], [ "/*! @noflip */ div { float: left; }" ], [ "/* @noflip */ div, .notme { float: left; }" ], [ "/* @noflip */ div { float: left; } div { float: right; }", "/* @noflip */ div { float: left; } div { float: left; }" ], [ "/* @noflip */\ndiv { float: left; }\ndiv { float: right; }", "/* @noflip */\ndiv { float: left; }\ndiv { float: left; }" ], [ "div { float: right; /* @noflip */ float: left; }", "div { float: left; /* @noflip */ float: left; }" ], [ "div\n{ float: right;\n/* @noflip */\n float: left;\n; }", "div\n{ float: left;\n/* @noflip */\n float: left;\n; }" ], [ "div\n{ float: right;\n/* @noflip */\n text-align: left\n }", "div\n{ float: left;\n/* @noflip */\n text-align: left\n }" ], [ "div\n{ /* @noflip */\ntext-align: left;\nfloat: right\n\t}", "div\n{ /* @noflip */\ntext-align: left;\nfloat: left\n\t}" ], [ "/* @noflip */div{float:left;text-align:left;}div{float:right}", "/* @noflip */div{float:left;text-align:left;}div{float:left}" ], [ "/* @noflip */\ndiv{float:left;text-align:left;}a{foo:right}", "/* @noflip */\ndiv{float:left;text-align:left;}a{foo:left}" ], [ "/* @noflip */ div.foo[bar*=baz] { left: 10px; float: left; }" ], [ "/* @noflip */ div.foo[bar^=baz] { left: 10px; float: left; }" ], [ "/* @noflip */ div.foo[bar~=baz] { left: 10px; float: left; }" ], [ "/* @noflip */ div.foo[bar=baz] { left: 10px; float: left; }" ], [ "/* @noflip */ div.foo[bar*='baz{quux'] { left: 10px; float: left; }" ] ] }, "do not flip gradient notation": { "cases": [ [ ".foo { background-image: -moz-linear-gradient(#326cc1, #234e8c); }" ], [ ".foo { background-image: -webkit-gradient(linear, 100% 0%, 0% 0%, from(#666666), to(#ffffff)); }" ] ] } }