add response.charset accessor and ctx.charset alias
This commit is contained in:
parent
c0e0c7c6aa
commit
94413b1bd4
5 changed files with 85 additions and 2 deletions
|
@ -149,10 +149,12 @@ throw err;
|
|||
- `ctx.body=`
|
||||
- `ctx.status`
|
||||
- `ctx.status=`
|
||||
- `ctx.length=`
|
||||
- `ctx.length`
|
||||
- `ctx.type=`
|
||||
- `ctx.length=`
|
||||
- `ctx.type`
|
||||
- `ctx.type=`
|
||||
- `ctx.charset`
|
||||
- `ctx.charset=`
|
||||
- `ctx.headerSent`
|
||||
- `ctx.redirect()`
|
||||
- `ctx.attachment()`
|
||||
|
|
|
@ -186,6 +186,20 @@ this.type = 'png';
|
|||
when explicitly defined in full as `res.type = 'text/html'`
|
||||
no charset is assigned.
|
||||
|
||||
### res.charset
|
||||
|
||||
Get response charset when present, or `undefined`:
|
||||
|
||||
```js
|
||||
this.type = 'text/plain; charset=utf-8';
|
||||
this.charset
|
||||
// => "utf-8"
|
||||
```
|
||||
|
||||
### res.charset=
|
||||
|
||||
Set the response charset, overriding if present.
|
||||
|
||||
### res.redirect(url, [alt])
|
||||
|
||||
Perform a [302] redirect to `url`.
|
||||
|
|
|
@ -151,6 +151,7 @@ delegate(proto, 'response')
|
|||
.access('body')
|
||||
.access('length')
|
||||
.access('type')
|
||||
.access('charset')
|
||||
.getter('headerSent')
|
||||
.setter('lastModified')
|
||||
.setter('etag');
|
||||
|
|
|
@ -17,6 +17,31 @@ var extname = path.extname;
|
|||
|
||||
module.exports = {
|
||||
|
||||
/**
|
||||
* Set the charset.
|
||||
*
|
||||
* @param {String} val
|
||||
* @api public
|
||||
*/
|
||||
|
||||
set charset(val) {
|
||||
this.set('Content-Type', this.type + '; charset=' + val);
|
||||
},
|
||||
|
||||
/**
|
||||
* Get the charset when present or undefined.
|
||||
*
|
||||
* @return {String}
|
||||
* @api public
|
||||
*/
|
||||
|
||||
get charset() {
|
||||
// TODO: lame, we could have a generic param parsing lib
|
||||
var type = this.get('Content-Type');
|
||||
var m = type.match(/charset *= *(\S+)/);
|
||||
if (m) return m[1];
|
||||
},
|
||||
|
||||
/**
|
||||
* Return the request socket.
|
||||
*
|
||||
|
|
41
test/response/charset.js
Normal file
41
test/response/charset.js
Normal file
|
@ -0,0 +1,41 @@
|
|||
|
||||
var context = require('../context');
|
||||
var assert = require('assert');
|
||||
|
||||
describe('ctx.charset=', function(){
|
||||
describe('with no charset present', function(){
|
||||
it('should set it', function(){
|
||||
var ctx = context();
|
||||
ctx.type = 'text/plain';
|
||||
ctx.charset = 'utf8';
|
||||
ctx.response.get('Content-Type').should.equal('text/plain; charset=utf8');
|
||||
})
|
||||
})
|
||||
|
||||
describe('with a charset', function(){
|
||||
it('should set it', function(){
|
||||
var ctx = context();
|
||||
ctx.type = 'text/plain; charset=hey';
|
||||
ctx.charset = 'utf8';
|
||||
ctx.response.get('Content-Type').should.equal('text/plain; charset=utf8');
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
describe('ctx.charset', function(){
|
||||
describe('with no charset present', function(){
|
||||
it('should return null', function(){
|
||||
var ctx = context();
|
||||
ctx.type = 'text/plain';
|
||||
assert(null == ctx.charset);
|
||||
})
|
||||
})
|
||||
|
||||
describe('with a charset', function(){
|
||||
it('should return the charset', function(){
|
||||
var ctx = context();
|
||||
ctx.type = 'text';
|
||||
ctx.charset.should.equal('utf-8');
|
||||
})
|
||||
})
|
||||
})
|
Loading…
Reference in a new issue