Project

General

Profile

1
export class Dates {
2
  public static isValidYear(yearString){
3
    // First check for the pattern
4
    if(!/^\d{4}$/.test(yearString))
5
        return false;
6
        var year = parseInt(yearString, 10);
7

    
8
        // Check the ranges of month and year
9
        if(year < 1000 || year > 3000 )
10
            return false;
11
        return true;
12
  }
13
  //format YYYY-MM-DD
14
  public static isValidDate(dateString)
15
  {
16
      // First check for the pattern
17
      if(!/^\d{4}\-\d{1,2}\-\d{1,2}$/.test(dateString))
18
          return false;
19

    
20
      // Parse the date parts to integers
21
      var parts = dateString.split("-");
22
      var day = parseInt(parts[2], 10);
23
      var month = parseInt(parts[1], 10);
24
       var year = parseInt(parts[0], 10);
25
      if(!this.isValidYear(parts[0])){
26
        return false;
27
      }
28

    
29
      // Check the ranges of month and year
30
      if( month == 0 || month > 12)
31
          return false;
32

    
33
      var monthLength = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];
34

    
35
      // Adjust for leap years
36
      if(year % 400 == 0 || (year % 100 != 0 && year % 4 == 0))
37
          monthLength[1] = 29;
38

    
39
      // Check the range of the day
40
      return day > 0 && day <= monthLength[month - 1];
41

    
42
  }
43
  public static getDateToday(){
44
    var myDate = new Date();
45
    return myDate.getFullYear()+ "-" +(myDate.getMonth() + 1) + "-" + myDate.getDate() ;
46

    
47
  }
48
}
49

    
50
export class DOI{
51

    
52
  public static getDOIsFromString(str:string):string[]{
53
    var DOIs:string[] = [];
54
    var words:string[] = str.split(" ");
55

    
56
    for(var i=0; i< words.length; i++){
57
        if(DOI.isValidDOI(words[i]) && DOIs.indexOf(words[i]) == -1){
58
          DOIs.push(words[i]);
59
        }
60
    }
61
    return DOIs;
62
  }
63
  public static isValidDOI(str:string):boolean{
64

    
65
      var exp1 = /\b(10[.][0-9]{4,}(?:[.][0-9]+)*\/(?:(?!["&\'<>])\S)+)\b/g
66
      var exp2 = /\b(10[.][0-9]{4,}(?:[.][0-9]+)*\/(?:(?!["&\'<>])[[:graph:]])+)\b/g
67
      if(str.match(exp1)!=null || str.match(exp2)!=null){
68
        // console.log("It's a DOI");
69
        return true;
70
      }
71
      return false;
72

    
73
  }
74
}
(14-14/14)