common/corpus-common-addon/addon/utils/utils.js
author Chloe Laisne <chloe.laisne@gmail.com>
Wed, 29 Jun 2016 00:35:03 +0200
changeset 212 f2c6080a73aa
parent 141 c0e8626a271c
child 304 20071981ba2a
permissions -rw-r--r--
Player backward/forward design logic
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
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) {
141
c0e8626a271c literal are now objects if one of lang or datatype is not null
ymh <ymh.work@gmail.com>
parents: 137
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
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    16
export function switchArkBnfLink(s) {
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    17
  if(!s) {
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    18
    return s;
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    19
  }
141
c0e8626a271c literal are now objects if one of lang or datatype is not null
ymh <ymh.work@gmail.com>
parents: 137
diff changeset
    20
  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
    21
    return constants.BNF_ARK_BASE_URL + s.slice(constants.BNF_BASE_URL.length);
141
c0e8626a271c literal are now objects if one of lang or datatype is not null
ymh <ymh.work@gmail.com>
parents: 137
diff changeset
    22
  } 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
    23
    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
    24
  } else {
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    25
    return s;
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    26
  }
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    27
};
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
export function calculateBnfArkControlChar(id) {
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    30
  if(!id) {
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    31
    return null;
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
  var sum = _.reduce(id, function(s, c, i) {
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    34
    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
    35
  }, 0);
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    36
  return constants.NOID_CHARS[sum % constants.NOID_CHARS.length];
1baa7c6bd370 add subject edition
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    37
};