64 Commits

Author SHA1 Message Date
Matthias Mullie
f03da3f743 Don't shorten bools if they're object literal keys
Fixes issue #134
2016-09-14 13:27:15 +02:00
Matthias Mullie
9e0dfaf1b1 Only strip whitespace after other operations
Property notation, for example, alters the content. If we've stripped
whitespace first, the transformations in propertynotation may no
longer be correct.

Fixed issue #133
2016-09-14 13:22:15 +02:00
Matthias Mullie
97a8f64bab Improve whitespace stripping around certain operators
1: some were not stripped agressively enough. E.g.:
   return !0 -> return!0
2: some were stripped too aggressive. E.g.:
   func()
   {1+2}
   Should not be joined on 1 line, since func() could be a function
   call and {1+2} an unrelated piece of code

Fixes issue #130
2016-09-14 13:13:59 +02:00
Matthias Mullie
d63980b5cf Regular expressions can also be followed by }
Fixes issue #124
2016-09-14 11:51:12 +02:00
Matthias Mullie
ac88354d6d Simplify regex & add test case for issue 120 2016-09-14 10:41:50 +02:00
Matthias Mullie
dcdedb0389 Improve regex extraction
Fixes issue #115
2016-06-09 21:04:46 +02:00
Matthias Mullie
9c9c286776 Add tests for issue #108 2016-04-27 13:12:17 +02:00
Matthias Mullie
42bcd8c16e Add tests for issue #102 2016-04-27 12:49:27 +02:00
Matthias Mullie
8fa45a1be0 Add test for issue #100 2016-04-27 12:40:09 +02:00
Matthias Mullie
272e461134 Fix '0' being replaces by first string's value
Fixes #99
2016-03-01 09:00:27 +01:00
Matthias Mullie
c17eb048da Restore earlier method of safeguarding newlines after regex
This replacement was a bit unsafe as it could confuse devision /
for end-of-regex
2016-02-17 10:09:38 +01:00
Matthias Mullie
b0c3c1a522 Restore original test 2016-02-17 10:04:30 +01:00
Matthias Mullie
b77673f350 php-cs-fixer fixes 2016-02-17 09:58:12 +01:00
Gino Pane
db9383b8aa Increase code coverage.
- Fix contents of "tests\css\sample\convert_relative_path\source\absolute.css" to test @import without url();
- Change index in array of matches (Minify.php:321) to correctly replace empty strings.
2016-02-09 17:12:30 +03:00
Gino Pane
21851b65bb Code cleanup. 2016-02-09 00:43:12 +03:00
Gino Pane
35a7553660 - Add shell script to convert symlinks;
- Fix JSTest data for cross-system compatibility;
- Update test-case for https://github.com/matthiasmullie/minify/issues/56 and perform fixes;
- Some code simplifications, remove some code duplicates;
- Ignore test samples for convenience of running tests;
- Update readme.
2016-02-09 00:23:23 +03:00
Matthias Mullie
13641aee3c php-cs-fixer fixes 2016-01-06 16:44:12 -08:00
Matthias Mullie
31371a6a67 Strip empty else-statements
Fixes #91
2016-01-04 14:59:19 -08:00
Matthias Mullie
da03f6d13c Don't strip double simicolons inside for
Fixes issue #89
2015-12-17 22:35:42 +01:00
Matthias Mullie
44cbb9c0f5 Add test for issue #66 2015-09-07 21:35:28 +02:00
Matthias Mullie
fe80dc7657 Alternative double-semicolon removal fix
Previous one didn't sufficiently remove double semicolons.
This one should be too eager, but then restore them if they
were valid in a for loop.

Fixes #70
2015-09-07 21:26:29 +02:00
Kait Todesk
f2f072ad54 Preserve for-loop semicolons when 2nd statement is empty 2015-09-07 12:05:27 +03:00
Matthias Mullie
bdbb91277b php-cs-fixer 2015-09-05 21:49:18 +02:00
Matthias Mullie
c7dcdc4934 Add test for issue #64 2015-08-20 16:32:14 +02:00
Matthias Mullie
ea809e7d06 Improve string-extraction regex
Fixes bug #58
2015-08-20 16:09:10 +02:00
Matthias Mullie
c37967744d Recognize regular expressions after reserved words
Fixes issue #59
2015-08-19 16:48:35 +02:00
Matthias Mullie
76cf88faaa Add test for issue #58 2015-08-19 16:20:20 +02:00
Matthias Mullie
4cf2880e51 Preserve newline immediately after regex
Fixes issue #56
2015-08-19 16:05:08 +02:00
Matthias Mullie
5497bea3d1 Don't collapse line feeds after "return"
return is not guaranteed to be followed by a return value.
It could just be "return", followed by nothing (void return),
not even a semicolon, just line feed (ASI)
Whatever is next could, for example, be another operator.
We may just need ASI to kick in there, so keep the line feed
after return.

Fixes issue #54
2015-06-29 17:51:16 +02:00
Matthias Mullie
894928f067 Add test case for issue #53 2015-06-29 17:51:00 +02:00
Matthias Mullie
7d68b7da3b Add tests for multibyte char paths
Meanwhile also made it possible to stub a path in the tests, and
stop writing out the minifier result.
2015-05-13 17:43:25 +02:00
Matthias Mullie
90837a6886 Don't replace while if it's part of a do-while
Fixes issue #50
2015-05-05 16:27:10 +02:00
Matthias Mullie
2a70744313 Shorten while(true) to for(;;) 2015-04-07 15:35:03 +02:00
Matthias Mullie
ecd1a04d88 Allow for-loops with empty bodies
Fixed #42
2015-04-07 15:26:37 +02:00
Matthias Mullie
e15f77b7f6 Don't convert standalone arrays
"return" looks like it could be a variable of which ['x']
is a key. I've improved the code to also check for keywords.
If whatever preceeds it is one of the keywords, don't convert.

Fixes issue #44
2015-03-12 16:11:36 +01:00
Matthias Mullie
0916262056 Don't override already restored data
Fixes issue #43
2015-03-10 10:01:13 +01:00
Matthias Mullie
d34af3d323 php-cs-fixer fixes 2015-03-06 13:17:33 +01:00
Matthias Mullie
22dbb726a0 Don't strip double semicolons before )
Fixes #40
2015-02-26 09:07:21 +01:00
Matthias Mullie
778c63c8eb Don't replace reserved words by property notation
Fixes #41
2015-02-26 08:41:17 +01:00
Matthias Mullie
3528c67597 Get rid of any ; before }
Fixes issue #37
2015-02-16 21:12:33 +01:00
Matthias Mullie
5d1886a2ef Add a newline between scripts being joined
Fixes issue #35
2015-02-06 11:14:06 +01:00
Matthias Mullie
471f982e63 Improve string extraction
Test to check if ending string delimiter is escaped was flawed.
2015-02-03 18:27:30 +01:00
Matthias Mullie
f54f58d8b1 Don't strip whitespace after ++ or -- 2015-02-02 19:28:35 -08:00
Matthias Mullie
3acd3c3a9b Don't eat \n following a single-line comment
It may be needed for ASI to kick in
2015-02-02 16:11:52 -08:00
Matthias Mullie
b0cd6f5e0a Add test for issue #33 2015-02-02 15:29:57 -08:00
Matthias Mullie
09c6c5ef72 Shorten booleans: !0 and !1 2015-02-01 12:21:27 -08:00
Matthias Mullie
26271a6c4a Also preserve backtick-encapsulated strings
Backticks can also be used for a string: it's a special
kind of string that allows string interpolation.
2015-01-24 18:24:47 -08:00
Matthias Mullie
8f12edd022 Fix propertyNotation forced on simple 1-key arrays
Fixes bug #31
2015-01-23 08:58:52 -08:00
Matthias Mullie
e2ee427f26 Fix propertyNotation regex 2015-01-11 17:39:46 +01:00
Matthias Mullie
8f38d48a38 Fix propertyNotation
I originally executed this on content where string had not yet been replaced.
Because this could cause false positives and match content inside strings, I
switched it to be executed after strings had been extracted.

However, this means those array key texts were also replaced, by something that
always looks like a valid variable. I've now moved that check to match the
extracted value, which we'll be replacing.
2015-01-09 11:19:24 +01:00