001 package railo.transformer.bytecode.literal; 002 003 import railo.transformer.bytecode.Position; 004 005 006 public class Identifier extends LitString { 007 008 public static short CASE_ORIGNAL=0; 009 public static short CASE_UPPER=1; 010 public static short CASE_LOWER=2; 011 private String raw; 012 private short _case; 013 014 015 016 public static Identifier toIdentifier(String str, Position start,Position end) { 017 return new Identifier(str, CASE_ORIGNAL,start,end); 018 } 019 020 public static Identifier toIdentifier(String str, short _case, Position start,Position end) { 021 return new Identifier(str, _case,start,end); 022 } 023 024 private Identifier(String str, short _case,Position start,Position end) { 025 super(convert(str,_case), start,end); 026 this.raw=str; 027 this._case=_case; 028 } 029 030 /** 031 * @return the raw 032 */ 033 public String getRaw() { 034 return raw; 035 } 036 037 /** 038 * @return the _case 039 */ 040 public short getCase() { 041 return _case; 042 } 043 044 private static String convert(String str, short _case) { 045 if(CASE_UPPER==_case) return str.toUpperCase(); 046 if(CASE_LOWER==_case) return str.toLowerCase(); 047 return str; 048 } 049 050 051 public String getUpper() { 052 if(CASE_UPPER==_case)return getString(); 053 return raw.toUpperCase(); 054 } 055 056 public String getLower() { 057 if(CASE_LOWER==_case)return getString(); 058 return raw.toLowerCase(); 059 } 060 061 }