public Map map(Func f) { Type r = f.returns(); if (r == Sys.VoidType) { r = Sys.ObjType.toNullable(); } Map acc = new Map(m_type.m_k, r); if (this.ordered()) { acc.ordered(true); } if (this.caseInsensitive()) { acc.caseInsensitive(true); } IDictionaryEnumerator en = m_map.GetEnumerator(); while (en.MoveNext()) { object key = en.Key; object val = en.Value; acc.set(key, f.call(val, key)); } return(acc); }
private static Map initVars() { Map vars = new Map(Sys.StrType, Sys.StrType); try { vars.caseInsensitive(true); // predefined vars.set("os.name", Environment.OSVersion.Platform.ToString()); vars.set("os.version", Environment.OSVersion.Version.ToString()); // environment variables IDictionary getenv = Environment.GetEnvironmentVariables(); foreach (DictionaryEntry de in getenv) { string key = (string)de.Key; string val = (string)de.Value; vars.set(key, val); } } catch (Exception e) { Err.dumpStack(e); } return((Map)vars.toImmutable()); }
public Map exclude(Func f) { Map acc = new Map(m_type); if (this.ordered()) { acc.ordered(true); } if (this.caseInsensitive()) { acc.caseInsensitive(true); } IDictionaryEnumerator en = m_map.GetEnumerator(); while (en.MoveNext()) { object key = en.Key; object val = en.Value; if (f.call(val, key) == Boolean.False) { acc.set(key, val); } } return(acc); }
////////////////////////////////////////////////////////////////////////// // Lazy Load ////////////////////////////////////////////////////////////////////////// internal static Map emptyParams() { Map q = m_emptyQuery; if (q == null) { q = new Map(Sys.StrType, Sys.StrType); q.caseInsensitive(true); q = (Map)q.toImmutable(); m_emptyQuery = q; } return(q); }
public Map map(Func f) { Type r = f.returns(); if (r == Sys.VoidType) r = Sys.ObjType.toNullable(); Map acc = new Map(m_type.m_k, r); if (this.ordered()) acc.ordered(true); if (this.caseInsensitive()) acc.caseInsensitive(true); IDictionaryEnumerator en = m_map.GetEnumerator(); while (en.MoveNext()) { object key = en.Key; object val = en.Value; acc.set(key, f.call(val, key)); } return acc; }
public Map findAll(Func f) { Map acc = new Map(m_type); if (this.ordered()) acc.ordered(true); if (this.caseInsensitive()) acc.caseInsensitive(true); IDictionaryEnumerator en = m_map.GetEnumerator(); while (en.MoveNext()) { object key = en.Key; object val = en.Value; if (f.call(val, key) == Boolean.True) acc.set(key, val); } return acc; }
private static Map initVars() { Map vars = new Map(Sys.StrType, Sys.StrType); try { vars.caseInsensitive(true); // predefined vars.set("os.name", Environment.OSVersion.Platform.ToString()); vars.set("os.version", Environment.OSVersion.Version.ToString()); // environment variables IDictionary getenv = Environment.GetEnvironmentVariables(); foreach (DictionaryEntry de in getenv) { string key = (string)de.Key; string val = (string)de.Value; vars.set(key, val); } } catch (Exception e) { Err.dumpStack(e); } return (Map)vars.toImmutable(); }
private static Map doParseParams(string s, int offset) { Map pars = new Map(Sys.StrType, Sys.StrType); pars.caseInsensitive(true); bool inQuotes = false; int keyStart = offset; int valStart = -1; int valEnd = -1; int eq = -1; bool hasEsc = false; for (int i = keyStart; i<s.Length; ++i) { int c = s[i]; // let parens slide since sometimes they occur in cookies // if (c == '(' && !inQuotes) // throw ParseErr.make("MimeType", s, "comments not supported"); if (c == '=' && !inQuotes && valStart < 0) { eq = i++; while (FanInt.isSpace(s[i])) ++i; if (s[i] == '"') { inQuotes = true; ++i; c=s[i]; } else inQuotes = false; valStart = i; } if (eq < 0) continue; if (c == '\\' && inQuotes) { ++i; hasEsc = true; continue; } if (c == '"' && inQuotes) { valEnd = i-1; inQuotes = false; } if (c == ';' && !inQuotes) { if (valEnd < 0) valEnd = i-1; string key = s.Substring(keyStart, eq-keyStart).Trim(); string val = s.Substring(valStart, valEnd+1-valStart).Trim(); if (hasEsc) val = unescape(val); pars.set(key, val); keyStart = i+1; eq = valStart = valEnd = -1; hasEsc = false; } } if (keyStart < s.Length) { if (valEnd < 0) valEnd = s.Length-1; string key = s.Substring(keyStart, eq-keyStart).Trim(); string val = s.Substring(valStart, valEnd+1-valStart).Trim(); if (hasEsc) val = unescape(val); pars.set(key, val); } return pars; }
////////////////////////////////////////////////////////////////////////// // Lazy Load ////////////////////////////////////////////////////////////////////////// internal static Map emptyParams() { Map q = m_emptyQuery; if (q == null) { q = new Map(Sys.StrType, Sys.StrType); q.caseInsensitive(true); q = (Map)q.toImmutable(); m_emptyQuery = q; } return q; }
private static Map doParseParams(string s, int offset) { Map pars = new Map(Sys.StrType, Sys.StrType); pars.caseInsensitive(true); bool inQuotes = false; int keyStart = offset; int valStart = -1; int valEnd = -1; int eq = -1; bool hasEsc = false; for (int i = keyStart; i < s.Length; ++i) { int c = s[i]; // let parens slide since sometimes they occur in cookies // if (c == '(' && !inQuotes) // throw ParseErr.make("MimeType", s, "comments not supported"); if (c == '=' && !inQuotes && valStart < 0) { eq = i++; while (FanInt.isSpace(s[i])) { ++i; } if (s[i] == '"') { inQuotes = true; ++i; c = s[i]; } else { inQuotes = false; } valStart = i; } if (eq < 0) { continue; } if (c == '\\' && inQuotes) { ++i; hasEsc = true; continue; } if (c == '"' && inQuotes) { valEnd = i - 1; inQuotes = false; } if (c == ';' && !inQuotes) { if (valEnd < 0) { valEnd = i - 1; } string key = s.Substring(keyStart, eq - keyStart).Trim(); string val = s.Substring(valStart, valEnd + 1 - valStart).Trim(); if (hasEsc) { val = unescape(val); } pars.set(key, val); keyStart = i + 1; eq = valStart = valEnd = -1; hasEsc = false; } } if (keyStart < s.Length) { if (valEnd < 0) { valEnd = s.Length - 1; } string key = s.Substring(keyStart, eq - keyStart).Trim(); string val = s.Substring(valStart, valEnd + 1 - valStart).Trim(); if (hasEsc) { val = unescape(val); } pars.set(key, val); } return(pars); }