Skip to content

Commit

Permalink
Merge pull request #185 from steemit/utils
Browse files Browse the repository at this point in the history
Added validateAccountName and expose utils
  • Loading branch information
bonustrack authored Jun 26, 2017
2 parents 09213cb + 95e1258 commit a21d3b4
Show file tree
Hide file tree
Showing 7 changed files with 66 additions and 10 deletions.
15 changes: 14 additions & 1 deletion doc/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -920,4 +920,17 @@ console.log(reputation);
```
var steemPower = steem.formatter.vestToSteem(vestingShares, totalVestingShares, totalVestingFundSteem);
console.log(steemPower);
```
```

# Utils

### Validate Username
```
var isValidUsername = steem.utils.validateAccountName('test1234');
console.log(isValidUsername);
// => 'null'
var isValidUsername = steem.utils.validateAccountName('a1');
console.log(isValidUsername);
// => 'Account name should be longer.'
```
2 changes: 1 addition & 1 deletion src/api/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import isNode from 'detect-node';
import newDebug from 'debug';
import config from '../config';
import methods from './methods';
import { camelCase } from '../util';
import { camelCase } from '../utils';

const debugEmitters = newDebug('steem:emitters');
const debugProtocol = newDebug('steem:protocol');
Expand Down
2 changes: 1 addition & 1 deletion src/broadcast/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import formatterFactory from '../formatter';
import operations from './operations.json';
import steemApi from '../api';
import steemAuth from '../auth';
import { camelCase } from '../util';
import { camelCase } from '../utils';

const debug = newDebug('steem:broadcast');
const formatter = formatterFactory(steemApi);
Expand Down
4 changes: 3 additions & 1 deletion src/browser.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,15 @@ const auth = require("./auth");
const broadcast = require("./broadcast");
const config = require("./config");
const formatter = require("./formatter")(api);
const utils = require("./utils");

const steem = {
api,
auth,
broadcast,
config,
formatter
formatter,
utils
};

if (typeof window !== "undefined") {
Expand Down
2 changes: 2 additions & 0 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ const broadcast = require('./broadcast');
const formatter = require('./formatter')(api);
const memo = require('./auth/memo');
const config = require('./config');
const utils = require('./utils');

module.exports = {
api,
Expand All @@ -12,4 +13,5 @@ module.exports = {
formatter,
memo,
config,
utils,
};
6 changes: 0 additions & 6 deletions src/util.js

This file was deleted.

45 changes: 45 additions & 0 deletions src/utils.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
const snakeCaseRe = /_([a-z])/g;
export function camelCase(str) {
return str.replace(snakeCaseRe, function(_m, l) {
return l.toUpperCase();
});
}

export function validateAccountName(value) {
let i, label, len, suffix;

suffix = "Account name should ";
if (!value) {
return suffix + "not be empty.";
}
const length = value.length;
if (length < 3) {
return suffix + "be longer.";
}
if (length > 16) {
return suffix + "be shorter.";
}
if (/\./.test(value)) {
suffix = "Each account segment should ";
}
const ref = value.split(".");
for (i = 0, len = ref.length; i < len; i++) {
label = ref[i];
if (!/^[a-z]/.test(label)) {
return suffix + "start with a letter.";
}
if (!/^[a-z0-9-]*$/.test(label)) {
return suffix + "have only letters, digits, or dashes.";
}
if (/--/.test(label)) {
return suffix + "have only one dash in a row.";
}
if (!/[a-z0-9]$/.test(label)) {
return suffix + "end with a letter or digit.";
}
if (!(label.length >= 3)) {
return suffix + "be longer";
}
}
return null;
}

0 comments on commit a21d3b4

Please sign in to comment.