All pastes #386631 Raw Edit

Something

public java v1 · immutable
·published 2007-03-08 20:16 UTC
rendered paste body
	@SuppressWarnings("serial")	public Map<String, ? extends Map<String, String>> readString(String string){		HashMap<String, HashMap<String, String>> sections;		HashMap<String, String> sectiondata;		StringCharacterIterator si=new StringCharacterIterator(string);		boolean readingtitle=false;		boolean havetitle=false;		boolean readingkey=false;		boolean readingvalue=false;		boolean inquotes=false;		boolean escaping=false;		boolean sectioncomplete=false;		boolean keycomplete=false;		boolean valuecomplete=false;		StringBuilder key=null;		StringBuilder value=null;		StringBuilder title=null;				sections=new HashMap<String, HashMap<String, String>>(){			public String toString(){							}		};		sectiondata=new HashMap<String, String>();				for(char ch=si.first();ch!=si.DONE;ch=si.next()){						if(!escaping && !inquotes && ch!='\"'){				if(ch=='['){					readingtitle=!havetitle;					if(readingvalue | readingkey){						sectioncomplete=true;					}else{						continue;					}				}else if(ch==']'){					havetitle=readingtitle;					readingtitle=false;					continue;				}else if(havetitle){					readingkey=true;					if(ch=='='){						readingkey=false;						keycomplete=true;						readingvalue=true;						continue;					}else if(ch=='\"'){						if(!escaping){							inquotes=!inquotes;						}						continue;					}else if(ch==' ' | ch=='\t' | ch=='\n'){						if(readingkey){							continue;						}else if(readingvalue){							readingvalue=false;							valuecomplete=true;							readingkey=true;							continue;						}					}else if(ch=='\\'){						escaping=true;						continue;					}				}			}						if(readingtitle){				title.append(ch);			}else if(readingkey){				key.append(ch);			}else if(readingvalue){				value.append(ch);			}else if(sectioncomplete){				sections.put(title.toString(), sectiondata);				sectiondata=new HashMap<String, String>();				havetitle=false;				sectioncomplete=false;			}else if(keycomplete){				keycomplete=false;			}else if(valuecomplete){				sectiondata.put(key.toString(), value.toString());				key=null;				value=null;				valuecomplete=false;			}			escaping=false;		}		return sections;	}