common/corpus-common-addon/addon/utils/utils.js
author ymh <ymh.work@gmail.com>
Sat, 05 Mar 2016 08:49:17 +0100
changeset 140 f851ec12812f
parent 137 1baa7c6bd370
child 141 c0e8626a271c
permissions -rw-r--r--
upgrade bo client
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
135
66c1d31e2f97 first steps to add subject editing
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
import * as constants from 'corpus-common-addon/utils/constants';
137
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
     2
import _ from "lodash/lodash";
135
66c1d31e2f97 first steps to add subject editing
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
66c1d31e2f97 first steps to add subject editing
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
export function isBnfLink(s) {
137
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
     5
  return s && (s.startsWith(constants.BNF_BASE_URL) || s.startsWith(constants.BNF_ARK_BASE_URL) || s.startsWith(constants.BNF_ARK_BASE_ID));
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
     6
};
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
     7
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
     8
export function isArkBnfLink(s) {
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
     9
  return s && (s.startsWith(constants.BNF_BASE_URL+constants.BNF_ARK_BASE_ID) || s.startsWith(constants.BNF_ARK_BASE_URL+constants.BNF_ARK_BASE_ID));
135
66c1d31e2f97 first steps to add subject editing
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
};
137
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    11
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    12
export function switchArkBnfLink(s) {
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    13
  if(!s) {
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    14
    return s;
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    15
  }
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    16
  if(s.startsWith(constants.BNF_BASE_URL+constants.BNF_ARK_BASE_ID)) {
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    17
    return constants.BNF_ARK_BASE_URL + s.slice(constants.BNF_BASE_URL.length);
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    18
  } else if (s.startsWith(constants.BNF_ARK_BASE_URL+constants.BNF_ARK_BASE_ID)) {
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    19
    return constants.BNF_BASE_URL + s.slice(constants.BNF_ARK_BASE_URL.length);
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    20
  } else {
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    21
    return s;
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    22
  }
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    23
};
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    24
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    25
export function calculateBnfArkControlChar(id) {
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    26
  if(!id) {
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    27
    return null;
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    28
  }
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    29
  var sum = _.reduce(id, function(s, c, i) {
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    30
    return s + (i+1) * (c in constants.NOID_CHARS_POS ? constants.NOID_CHARS_POS[c] : 0);
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    31
  }, 0);
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    32
  return constants.NOID_CHARS[sum % constants.NOID_CHARS.length];
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    33
};