public override void SetMethod( iCalLineContent content ){ this.Method = new iCalMethod( content, this ); }
public override void SetScale( iCalLineContent content ){ this.Scale = new iCalScale( content, this ); }
public override void SetVersion( iCalLineContent content ){ this.Version = new iCalVersion( content, this ); }
public override void SetProductIdentifier( iCalLineContent content ){ this.ProductId = new iCalProductIdentifier( content, this ); }
public iCalParserEventArgs( iCalLineContent content ) { this.Content = content; }
public iCalLineContent ReadContent() { // contentLine = name *(";" param-name '=' paramvalue, *( "," paramvalue ) ) ":" value // name, param-name, is alphabe or digit or '-' // param-value is any char except double-quote("), comma(,), colon(:), semi-colon(;) // param-value may quoted. in that case, any char except // double-quote(") inside. // name of property, param, enumed value and param value is case-insensitive String contentLine = this.ReadLine(); if( contentLine == null ) return null; int mode = 1; iCalLineContent content = new iCalLineContent(); content.original = contentLine; String paramName = ""; String paramValue = ""; iCalParameterFactory factory = new iCalParameterFactory(); iCalParameter param = null; for( int i = 0 ; i < contentLine.Length; i++ ){ Char c = contentLine[i]; if ( mode == 1 ){ // parsing name if( c == ':' ){ mode = 2; } else if ( c == ';' ) { mode = 3; // param = new iCalParameter(); paramName = ""; } else { content.Name += Char.ToLower( c ); } } else if ( mode == 2 ) { // value content.Value = contentLine.Substring( i ); // end of line parse break; } else if ( mode == 3 ) { // parameter name if( c == '=' ){ mode = 4; // paramName = param.Name; param = factory.Create( paramName ); param.Name = paramName; content.Params[ paramName ] = param; paramValue = ""; } else if( c == ';' ) { // irregular param = factory.Create( paramName ); content.Params[ paramName ] = param; param = null; } else if( c == ':' ) { // irregular param = factory.Create( paramName ); content.Params[ paramName ] = param; mode = 2; } else { paramName += Char.ToLower( c ); } } else if ( mode == 4 ){ // parameter value if( c == ',' ){ content.Params[ paramName ].Values.Add( paramValue ); paramValue = ""; } else if( c == ';' ) { content.Params[ paramName ].Values.Add( paramValue ); param = new iCalParameter(); paramValue = ""; paramName = ""; mode = 3; } else if( c == ':' ) { content.Params[paramName].Values.Add(paramValue); mode = 2; } else if( c == '\"' ){ mode = 5; } else { paramValue += c; } } else if ( mode == 5 ){ // double quoted parameter value if( c == '\"' ){ mode = 4; } else { // parameter value in double-quote is case sensitive paramValue += c; } } } return content; }