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:string)
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():Date{
44
    var myDate = new Date();
45
    return myDate;
46

    
47
  }
48
  public static getDateToString(myDate:Date):string{
49
    var date:string = myDate.getFullYear()+ "-" ;
50
     date+=((myDate.getMonth() + 1)<10)?"0"+(myDate.getMonth() + 1):(myDate.getMonth() + 1) ;
51
     date+="-";
52
     date+=  (myDate.getDate() <10 )? "0"+myDate.getDate():myDate.getDate() ;
53
     return date;
54

    
55
  }
56
  public static getDateXMonthsAgo(x:number):Date{
57
    var myDate = new Date();
58
    myDate.setMonth(myDate.getMonth() - x);
59
    return myDate;
60

    
61
  }
62
  public static getDateXYearsAgo(x:number):Date{
63
    var myDate = new Date();
64
    myDate.setFullYear(myDate.getFullYear() - x);
65
    return myDate;
66

    
67
  }
68
  public static getDateFromString(date:string):Date{
69

    
70
    var myDate = new Date();
71
    myDate.setFullYear(+date.substring(0,4));
72
    myDate.setMonth(+date.substring(5,7)-1);
73
    myDate.setDate(+date.substring(8,11))
74
    return myDate;
75

    
76
  }
77

    
78
}
79

    
80
export class DOI{
81

    
82
  public static getDOIsFromString(str:string):string[]{
83
    var DOIs:string[] = [];
84
    var words:string[] = str.split(" ");
85

    
86
    for(var i=0; i< words.length; i++){
87
        if(DOI.isValidDOI(words[i]) && DOIs.indexOf(words[i]) == -1){
88
          DOIs.push(words[i]);
89
        }
90
    }
91
    return DOIs;
92
  }
93
  public static isValidDOI(str:string):boolean{
94

    
95
      var exp1 = /\b(10[.][0-9]{4,}(?:[.][0-9]+)*\/(?:(?!["&\'<>])\S)+)\b/g
96
      var exp2 = /\b(10[.][0-9]{4,}(?:[.][0-9]+)*\/(?:(?!["&\'<>])[[:graph:]])+)\b/g
97
      if(str.match(exp1)!=null || str.match(exp2)!=null){
98
        // console.log("It's a DOI");
99
        return true;
100
      }
101
      return false;
102

    
103
  }
104
}
105
export class StringUtils{
106
  public static quote(params: string):string {
107
      return '"'+params+'"';
108
  }
109

    
110
  public static unquote(params: string):string {
111
     if(params.length > 2 && (params[0]=='"' && params[params.length-1]=='"') || (params[0]=="'" && params[params.length-1]=="'")){
112
      params= params.substring(1, params.length-1);
113
    }
114
      return params;
115
  }
116
  public static URIEncode(params: string):string {
117
      return encodeURIComponent(params);
118
  }
119
  public static URIDecode(params: string):string {
120
      return decodeURIComponent(params);
121
  }
122
  public static  b64DecodeUnicode(str) {
123
      return decodeURIComponent(Array.prototype.map.call(atob(str), function(c) {
124
          return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
125
      }).join(''));
126
  }
127

    
128

    
129
}
(16-16/16)