Project

General

Profile

1
import {UrlSegment} from '@angular/router';
2

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

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

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

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

    
35
      var monthLength = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];
36

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

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

    
44
  }
45
  public static getDateToday():Date{
46
    var myDate = new Date();
47
    return myDate;
48

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

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

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

    
69
  }
70
  public static getDateFromString(date:string):Date{
71

    
72
    var myDate = new Date();
73
    myDate.setFullYear(+date.substring(0,4));
74
    myDate.setMonth(((date.length>5 )?(+date.substring(5,7)-1):(0)));
75
    myDate.setDate(((date.length>8 )?(+date.substring(8,11)):(1)));
76
    return myDate;
77

    
78
  }
79

    
80
}
81

    
82
export class DOI{
83

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

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

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

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

    
112
  public static unquote(params: string):string {
113
     if(params.length > 2 && (params[0]=='"' && params[params.length-1]=='"') || (params[0]=="'" && params[params.length-1]=="'")){
114
      params= params.substring(1, params.length-1);
115
    }
116
      return params;
117
  }
118
  public static URIEncode(params: string):string {
119
      return encodeURIComponent(params);
120
  }
121
  public static URIDecode(params: string):string {
122
      return decodeURIComponent(params);
123
  }
124
  public static  b64DecodeUnicode(str) {
125
      return decodeURIComponent(Array.prototype.map.call(atob(str), function(c) {
126
          return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
127
      }).join(''));
128
  }
129
  private emailValidator(email : any): boolean {
130
      if (email.match("^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$"))
131
          return true;
132
      else
133
          return false;
134
  }
135
  public static sliceString(mystr, size: number): string {
136
    const sliced = String(mystr).substr(0, size);
137
    return sliced + (String(mystr).length > size ? '...' : '');
138
  }
139

    
140
  public static URLSegmentsToPath(segments: UrlSegment[]): string {
141
    let path = '';
142
    segments.forEach(route => {
143
      path += '/' + route.path;
144
    })
145
    return path;
146
  }
147
}
(18-18/18)