bool xml_html_parser::build_valid_child (string parent, string child) { if (!html) return true; if ((parent == "<bottom>") || (parent == "html") || (parent == "body")) return true; if (html_empty_tag_table->contains (parent)) return false; if (!html_auto_close_table->contains (child)) return true; if (parent == "p") return !html_block_table->contains (child); if ((child == "dt") || (child == "dd")) return parent == "dl"; if (child == "li") return (parent == "ul") || (parent == "ol") || (parent == "dir") || (parent == "menu"); if (child == "option") return (parent == "select") || (parent == "optgroup"); if ((child == "thead") || (child == "tfoot") || (child == "tbody")) return parent == "table"; if (child == "colgroup") return parent == "table"; if (child == "col") return (parent == "table") || (parent == "colgroup"); if (child == "tr") return (parent == "table") || (parent == "thead") || (parent == "tfoot") || (parent == "tbody"); if ((child == "th") || (child == "td")) return (parent == "tr") || (parent == "table") || (parent == "thead") || (parent == "tfoot") || (parent == "tbody"); return true; }
void cache_load (string buffer) { if (!cache_loaded->contains (buffer)) { url cache_file = texmacs_home_path * url ("system/cache/" * buffer); //cout << "cache_file "<< cache_file << LF; string cached; if (!load_string (cache_file, cached, false)) { if (buffer == "file_cache" || buffer == "doc_cache") { int i=0, n= N(cached); while (i<n) { int start= i; while (i<n && cached[i] != '\n') i++; string key= cached (start, i); i++; start= i; while (i<n && (cached[i] != '\n' || !test (cached, i+1, "%-%-tm-cache-%-%"))) i++; string im= cached (start, i); i++; while (i<n && cached[i] != '\n') i++; i++; //cout << "key= " << key << "\n----------------------\n"; //cout << "im= " << im << "\n----------------------\n"; cache_data (tuple (buffer, key))= im; } } else { tree t= scheme_to_tree (cached); for (int i=0; i<N(t)-1; i+=2) cache_data (tuple (buffer, t[i]))= t[i+1]; } } cache_loaded->insert (buffer); } }
void cache_save (string buffer) { if (cache_changed->contains (buffer)) { url cache_file= texmacs_home_path * url ("system/cache/" * buffer); string cached; iterator<tree> it= iterate (cache_data); if (buffer == "file_cache" || buffer == "doc_cache") { while (it->busy ()) { tree ckey= it->next (); if (ckey[0] == buffer) { cached << ckey[1]->label << "\n"; cached << cache_data [ckey]->label << "\n"; cached << "%-%-tm-cache-%-%\n"; } } } else { cached << "(tuple\n"; while (it->busy ()) { tree ckey= it->next (); if (ckey[0] == buffer) { cached << tree_to_scheme (ckey[1]) << " "; cached << tree_to_scheme (cache_data [ckey]) << "\n"; } } cached << ")"; } (void) save_string (cache_file, cached); cache_changed->remove (buffer); } }
void xml_html_parser::build (tree& r) { while (i<n) { if (is_tuple (a[i], "begin")) { string name= a[i][1]->label; if (build_must_close (name)) return; tree sub= copy (a[i]); sub[0]= "tag"; i++; if (html && html_empty_tag_table->contains (name)) r << sub; else { stack= tuple (name, stack); build (sub); r << sub; stack= stack[1]; } } else if (is_tuple (a[i], "end")) { if (stack[0]->label == a[i][1]->label) { i++; return; } if (build_can_close (a[i][1]->label)) return; i++; } else r << a[i++]; } }
static bool is_thin (string s) { if (N(thin_delims) == 0) thin_delims << string ("|") << string ("||") << string ("interleave") << string ("[") << string ("]") << string ("lfloor") << string ("rfloor") << string ("lceil") << string ("rceil") << string ("llbracket") << string ("rrbracket") << string ("dlfloor") << string ("drfloor") << string ("dlceil") << string ("drceil") << string ("tlbracket") << string ("trbracket") << string ("tlfloor") << string ("trfloor") << string ("tlceil") << string ("trceil"); return thin_delims->contains (s); }
Future<Nothing> ExternalContainerizerProcess::__recover( const Option<state::SlaveState>& state, const hashset<ContainerID>& containers) { VLOG(1) << "Recover continuation triggered"; // An orphaned container is known to the external containerizer but // not to the slave, thus not recoverable but pending. hashset<ContainerID> orphaned = containers; if (state.isSome()) { foreachvalue (const FrameworkState& framework, state.get().frameworks) { foreachvalue (const ExecutorState& executor, framework.executors) { if (executor.info.isNone()) { LOG(WARNING) << "Skipping recovery of executor '" << executor.id << "' of framework " << framework.id << " because its info could not be recovered"; continue; } if (executor.latest.isNone()) { LOG(WARNING) << "Skipping recovery of executor '" << executor.id << "' of framework " << framework.id << " because its latest run could not be recovered"; continue; } // We are only interested in the latest run of the executor! const ContainerID& containerId = executor.latest.get(); Option<RunState> run = executor.runs.get(containerId); CHECK_SOME(run); if (run.get().completed) { VLOG(1) << "Skipping recovery of executor '" << executor.id << "' of framework " << framework.id << " because its latest run " << containerId << " is completed"; continue; } // Containers the external containerizer does not have // information on, should be skipped as their state is not // recoverable. if (!containers.contains(containerId)) { LOG(WARNING) << "Skipping recovery of executor '" << executor.id << "' of framework " << framework.id << " because the external containerizer has not " << " identified " << containerId << " as active"; continue; } LOG(INFO) << "Recovering container '" << containerId << "' for executor '" << executor.id << "' of framework " << framework.id; // Re-create the sandbox for this container. const string& directory = paths::createExecutorDirectory( flags.work_dir, state.get().id, framework.id, executor.id, containerId); Option<string> user = None(); if (flags.switch_user) { // The command (either in form of task or executor command) // can define a specific user to run as. If present, this // precedes the framework user value. if (executor.info.isSome() && executor.info.get().command().has_user()) { user = executor.info.get().command().user(); } else if (framework.info.isSome()) { user = framework.info.get().user(); } } Sandbox sandbox(directory, user); // Collect this container as being active. actives.put(containerId, Owned<Container>(new Container(sandbox))); // Assume that this container had been launched, if this proves // to be wrong, the containerizer::Termination delivered by the // subsequent wait invocation will tell us. actives[containerId]->launched.set(Nothing()); // Remove this container from the orphan collection as it is not // orphaned. orphaned.erase(containerId); } } }
bool has_been_visited (string id) { return visited_table->contains (id); }