From bf60cb79a6253935b13258834b84177f02ea448e Mon Sep 17 00:00:00 2001 From: Maksim Ovcharik Date: Tue, 4 Dec 2018 16:23:50 +0300 Subject: [PATCH 1/2] Support srcset attribute for image tag --- README.md | 26 ++++++++++++++------------ lib/urlParser.js | 6 +++--- package.json | 2 ++ test/public/AngularJS-large.png | Bin 0 -> 13439 bytes test/public/AngularJS-small.png | Bin 0 -> 3139 bytes test/src/template.html | 11 +++++++++++ test/webpack.config.js | 4 ++++ test/webpack2.config.js | 8 ++++++++ 8 files changed, 42 insertions(+), 15 deletions(-) create mode 100644 test/public/AngularJS-large.png create mode 100644 test/public/AngularJS-small.png diff --git a/README.md b/README.md index faa2c79..d1392ed 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Puts HTML partials in the Angular's $templateCache so directives can use templat ## Webpack and loaders -Webpack is the [webpack](http://webpack.github.io/) and it's module bundler. [Loaders](http://webpack.github.io/docs/using-loaders.html) wrap content in the javascript code that executes in the browser. +Webpack is the [webpack](http://webpack.github.io/) and it's module bundler. [Loaders](http://webpack.github.io/docs/using-loaders.html) wrap content in the javascript code that executes in the browser. # Install @@ -21,7 +21,7 @@ require('ng-cache!./demo/template/myPartial.html'); Partial will be available as `ng-include="'myPartial.html'"` or `templateUrl: 'myPartial.html'`. -Note that the inline require syntax is used in examples for simplicity. +Note that the inline require syntax is used in examples for simplicity. It's recommended to use webpack [config](#webpack-config). ## Named templates @@ -81,21 +81,21 @@ or retrieve the real directory name (use `*` or `[dir]`): ``` javascript require('ng-cache?prefix=public/*/templates!./path/to/myPartial.html') -// => ng-include="'public/path/templates/myPartial.html'" +// => ng-include="'public/path/templates/myPartial.html'" ``` Prefix can strip the real directory name (use `//`): ``` javascript require('ng-cache?prefix=public/*//*/templates!./far/far/away/path/to/myPartial.html') -// => ng-include="'public/far/path/templates/myPartial.html'" +// => ng-include="'public/far/path/templates/myPartial.html'" ``` Prefix can be extended through a directory tree (use `**` or `[dirs]`). See the next section. ## Root -You can specify root directory for templates separated by a colon `prefix=root:**`. +You can specify root directory for templates separated by a colon `prefix=root:**`. It is enough to specify a single directory name. Prefix counts real template path from right to left and takes first (rightmost) occurance of the root directory. ``` @@ -121,19 +121,19 @@ It is also possible to combine wildcards in prefix, i.e. `prefix=packman:**/tmpl Use `name` query parameter to strip file extension or add suffix: ``` javascript -// +// require('ng-cache?name=[name].tpl!./field.html') // => ng-include="'field.tpl'" require('ng-cache?name=[name]-foo.[ext]!./field.html') // => ng-include="'field-foo.html'" ``` - + Note. File extension are defined as any char sequence after the last `.`. ## Module -By default, templates will be added to the default AngularJS 'ng' module run() method. +By default, templates will be added to the default AngularJS 'ng' module run() method. Use this parameter to use a different module name: ``` javascript @@ -151,13 +151,13 @@ require('ng-cache?module=moduleName.[root]&prefix=packs:**!./packs/path/to/myPar In such query `[root]` means that first part of `templateId` *(here it is `path/to/myPartial.html`)* will be stripped out and placed as a part of `moduleId`. In current example resulting values: -- `moduleId`: `"moduleName.path"` -- `templateId`: `"to/myPartial.html"` +- `moduleId`: `"moduleName.path"` +- `templateId`: `"to/myPartial.html"` Useful in case you want save few bytes. ## Template id - + To obtain template id use `exportIdOnly` query parameter. Loader exports `id` of a template. ```javascript @@ -191,7 +191,7 @@ module: { } ``` -Note that the inline require syntax is used in examples for simplicity. It's recommended to use webpack config. +Note that the inline require syntax is used in examples for simplicity. It's recommended to use webpack config. Please see this [comment](https://github.com/webpack/webpack/issues/1626#issuecomment-156758230) and the [manual](https://webpack.github.io/docs/using-loaders.html#loaders-in-require). @@ -272,6 +272,8 @@ To switch off url resolving use `-url` query param: require('ng-cache?-url!./myPartial.html') ``` +Supported attributes: `src`, `srcset`, `md-svg-src`. + # License MIT (http://www.opensource.org/licenses/mit-license.php) diff --git a/lib/urlParser.js b/lib/urlParser.js index 9aed416..688e178 100644 --- a/lib/urlParser.js +++ b/lib/urlParser.js @@ -10,15 +10,15 @@ Parser = new Parser({ '<[^\\s/>]+': 'tag', }, tag: { - '[\\s\\n](md-svg-)?src[\\s\\n]*=[\\s\\n]*[\'"]': 'srcAttr', + '[\\s\\n](md-svg-)?src(set)?[\\s\\n]*=[\\s\\n]*[\'"]': 'srcAttr', '>': 'root', }, srcAttr: { - '[^\'"]+': function(match, idx) { + '[^\\s\\n\'"]+': function(match, idx) { if (relativeImageUrl.test(match)) { this.urls.push({idx: idx, path: match}); } - return 'tag'; + return 'srcAttr'; }, '[\'"]': 'tag', }, diff --git a/package.json b/package.json index 9570301..052836a 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,9 @@ "chai": "^3.2.0", "eslint": "^2.13.1", "eslint-config-google": "^0.6.0", + "file-loader": "^2.0.0", "mocha": "^2.3.0", + "url-loader": "^1.1.2", "webpack": "^2.4.1" }, "dependencies": { diff --git a/test/public/AngularJS-large.png b/test/public/AngularJS-large.png new file mode 100644 index 0000000000000000000000000000000000000000..a1037f225724b3ec6829087158db9189a38d23dc GIT binary patch literal 13439 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 literal 0 HcmV?d00001 diff --git a/test/public/AngularJS-small.png b/test/public/AngularJS-small.png new file mode 100644 index 0000000000000000000000000000000000000000..ab5e20f883c169088f1ca352e9687f8a1d72299d GIT binary patch literal 3139 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 literal 0 HcmV?d00001 diff --git a/test/src/template.html b/test/src/template.html index f2ff605..1f29ca8 100644 --- a/test/src/template.html +++ b/test/src/template.html @@ -25,4 +25,15 @@

Second View

+ + \ No newline at end of file diff --git a/test/webpack.config.js b/test/webpack.config.js index c126447..5e6f33e 100644 --- a/test/webpack.config.js +++ b/test/webpack.config.js @@ -24,6 +24,10 @@ module.exports = { loader: '../index.js?prefix=grot/[dir]//[dir]//tmpl&module=appModule&name=[name].tpl&-exportId' + '&minimizeOptions=' + minimizeOptions + '&conservativeCollapse', }, + { + test: /\.(png|bmp|raw|jpg|jpeg|tiff|gif|svg)$/, + loader: 'url-loader?limit=10240', + }, ], }, }; diff --git a/test/webpack2.config.js b/test/webpack2.config.js index 6022b16..736a269 100644 --- a/test/webpack2.config.js +++ b/test/webpack2.config.js @@ -28,6 +28,14 @@ module.exports = { }, }, }], + },{ + test: /\.(png|bmp|raw|jpg|jpeg|tiff|gif|svg)$/, + use: [{ + loader: 'url-loader', + options: { + limit: 10240, + } + }] }], }, }; From 59de7e9e4c5a76ee82299d9b41f0155885144703 Mon Sep 17 00:00:00 2001 From: Maksim Ovcharik Date: Fri, 7 Dec 2018 14:57:21 +0300 Subject: [PATCH 2/2] Add comma delimiter for srcset attribute parser --- lib/urlParser.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/urlParser.js b/lib/urlParser.js index 688e178..2f82fca 100644 --- a/lib/urlParser.js +++ b/lib/urlParser.js @@ -14,7 +14,7 @@ Parser = new Parser({ '>': 'root', }, srcAttr: { - '[^\\s\\n\'"]+': function(match, idx) { + '[^\\s\\n\'",]+': function(match, idx) { if (relativeImageUrl.test(match)) { this.urls.push({idx: idx, path: match}); }