common/corpus-common-addon/addon/utils/utils.js
author ymh <ymh.work@gmail.com>
Tue, 27 Sep 2016 23:43:29 +0200
changeset 304 20071981ba2a
parent 141 c0e8626a271c
child 392 4fbe94af93e8
permissions -rw-r--r--
add location and geonames resolvers and api
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';
304
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents: 141
diff changeset
     2
import _ from 'lodash/lodash';
135
66c1d31e2f97 first steps to add subject editing
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
141
c0e8626a271c literal are now objects if one of lang or datatype is not null
ymh <ymh.work@gmail.com>
parents: 137
diff changeset
     4
export function isLexvoLink(s) {
c0e8626a271c literal are now objects if one of lang or datatype is not null
ymh <ymh.work@gmail.com>
parents: 137
diff changeset
     5
  return s && typeof s === 'string' && s.startsWith(constants.LEXVO_BASE_URL);
c0e8626a271c literal are now objects if one of lang or datatype is not null
ymh <ymh.work@gmail.com>
parents: 137
diff changeset
     6
};
c0e8626a271c literal are now objects if one of lang or datatype is not null
ymh <ymh.work@gmail.com>
parents: 137
diff changeset
     7
135
66c1d31e2f97 first steps to add subject editing
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
export function isBnfLink(s) {
141
c0e8626a271c literal are now objects if one of lang or datatype is not null
ymh <ymh.work@gmail.com>
parents: 137
diff changeset
     9
  return s && typeof s === 'string' && (s.startsWith(constants.BNF_BASE_URL) || s.startsWith(constants.BNF_ARK_BASE_URL) || s.startsWith(constants.BNF_ARK_BASE_ID));
137
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    10
};
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 isArkBnfLink(s) {
304
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents: 141
diff changeset
    13
  return s && typeof s === 'string' && (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
    14
};
137
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    15
304
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents: 141
diff changeset
    16
export function isGeonamesLink(s) {
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents: 141
diff changeset
    17
  return (typeof s === 'string') && (s.match(constants.GEONAMES_BASE_URLS) !== null);
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents: 141
diff changeset
    18
}
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents: 141
diff changeset
    19
137
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    20
export function switchArkBnfLink(s) {
304
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents: 141
diff changeset
    21
  if (!s) {
137
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    22
    return s;
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    23
  }
304
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents: 141
diff changeset
    24
  if (typeof s === 'string' && s.startsWith(constants.BNF_BASE_URL + constants.BNF_ARK_BASE_ID)) {
137
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    25
    return constants.BNF_ARK_BASE_URL + s.slice(constants.BNF_BASE_URL.length);
304
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents: 141
diff changeset
    26
  } else if (typeof s === 'string' && s.startsWith(constants.BNF_ARK_BASE_URL + constants.BNF_ARK_BASE_ID)) {
137
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    27
    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
    28
  } else {
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    29
    return s;
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    30
  }
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    31
};
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    32
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    33
export function calculateBnfArkControlChar(id) {
304
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents: 141
diff changeset
    34
  if (!id) {
137
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    35
    return null;
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    36
  }
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    37
  var sum = _.reduce(id, function(s, c, i) {
304
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents: 141
diff changeset
    38
    return s + (i + 1) * (c in constants.NOID_CHARS_POS ? constants.NOID_CHARS_POS[c] : 0);
137
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    39
  }, 0);
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    40
  return constants.NOID_CHARS[sum % constants.NOID_CHARS.length];
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    41
};