Skip to content
This repository has been archived by the owner on Mar 14, 2020. It is now read-only.

fallenleavesguy/any-qs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status Coverage Status

any-qs

parse anything look like key=value, different key=value pairs can separate with '&', '#', '?', '\', ',', or ';'

install

npm i -S any-qs

use to parse anything look like key=value

let rawStr = 'nick=yeluoqiuzhi,email=test@email.com; url=http://github.com';
    /**
     * @type {string} string encoded with encodedURI
     */
    let encodedStr = 'nick=yeluoqiuzhi,email=test@email.com;%20url=http://github.com';
anyQs(rawStr);
anyQs(encodedStr);
/*
// two results are the same:

{
  nick: 'yeluoqiuzhi',
  email: 'test@email.com',
  url: 'http://github.com'
}
*/

use to parse url

decodeURI

const url = 'https://www.baidu.com/?cid=id_34&product=%E5%A4%9A%E5%A4%9A%E6%96%87%E5%AD%97#?value=32&key=key110&system=多多测试';
const params = anyQs(url);
console.log(params);
/*
{
  cid: 'id_34',
  product: '多多文字',
  value: 32,
  key: 'key110',
  system: '多多测试'
}
*/

replace + with one space

const url = 'https://www.google.co.jp/?gfe_rd=cr&ei=2DVeWYrjGo3XqAH_24qQCA#newwindow=1&q=just+a+test+suit';
const params = anyQs(url);
console.log(params);
/*
{
  gfe_rd: 'cr',
  ei: '2DVeWYrjGo3XqAH_24qQCA',
  newwindow: 1,
  q: 'just a test suit'
})
*/

parse number value or not

const url = 'http://www.baidu.com?name=yeluoqiuzhi&born=1994&age=@24&height=174.5';
let params = anyQs(url);
console.log(typeof params.born); // number
console.log(typeof params.height) // number
console.log(params.height) // 174.5

params = anyQs.stringOnly(url);
console.log(typeof params.born); // string
console.log(typeof params.height) // string
console.log(params.height) // 174.5

return empty object when match nothing

const url = 'https://www.google.com';
const params = anyQs(url);
console.log(params);
/*
{}
*/