From e4ac3c9e6e5464a0fc0f8fd3763a572e0e180c04 Mon Sep 17 00:00:00 2001 From: Kartik Agaram Date: Sat, 1 Dec 2018 14:13:33 -0800 Subject: 4814 --- html/052tangle.cc.html | 95 ++++++++++++++++++++++++++------------------------ 1 file changed, 49 insertions(+), 46 deletions(-) (limited to 'html/052tangle.cc.html') diff --git a/html/052tangle.cc.html b/html/052tangle.cc.html index 54968c93..ab68c1f3 100644 --- a/html/052tangle.cc.html +++ b/html/052tangle.cc.html @@ -11,21 +11,23 @@ @@ -60,6 +62,7 @@ if ('onhashchange' in window) { +https://github.com/akkartik/mu/blob/master/052tangle.cc
   1 //: Allow code for recipes to be pulled in from multiple places and inserted
   2 //: at special labels called 'waypoints' using two new top-level commands:
@@ -95,25 +98,25 @@ if ('onhashchange' in window) {
  32 //: while loading recipes, load before/after fragments
  33 
  34 :(before "End Globals")
- 35 map<string /*label*/, recipe> Before_fragments, After_fragments;
- 36 set<string /*label*/> Fragments_used;
+ 35 map<string /*label*/, recipe> Before_fragments, After_fragments;
+ 36 set<string /*label*/> Fragments_used;
  37 :(before "End Reset")
- 38 Before_fragments.clear();
- 39 After_fragments.clear();
- 40 Fragments_used.clear();
+ 38 Before_fragments.clear();
+ 39 After_fragments.clear();
+ 40 Fragments_used.clear();
  41 
  42 :(before "End Command Handlers")
  43 else if (command == "before") {
  44   string label = next_word(in);
  45   if (label.empty()) {
  46     assert(!has_data(in));
- 47     raise << "incomplete 'before' block at end of file\n" << end();
+ 47     raise << "incomplete 'before' block at end of file\n" << end();
  48     return result;
  49   }
  50   recipe tmp;
  51   slurp_body(in, tmp);
  52   if (is_waypoint(label))
- 53     Before_fragments[label].steps.insert(Before_fragments[label].steps.end(), tmp.steps.begin(), tmp.steps.end());
+ 53     Before_fragments[label].steps.insert(Before_fragments[label].steps.end(), tmp.steps.begin(), tmp.steps.end());
  54   else
  55     raise << "can't tangle before non-waypoint " << label << '\n' << end();
  56   // End before Command Handler
@@ -122,13 +125,13 @@ if ('onhashchange' in window) {
  59   string label = next_word(in);
  60   if (label.empty()) {
  61     assert(!has_data(in));
- 62     raise << "incomplete 'after' block at end of file\n" << end();
+ 62     raise << "incomplete 'after' block at end of file\n" << end();
  63     return result;
  64   }
  65   recipe tmp;
  66   slurp_body(in, tmp);
  67   if (is_waypoint(label))
- 68     After_fragments[label].steps.insert(After_fragments[label].steps.begin(), tmp.steps.begin(), tmp.steps.end());
+ 68     After_fragments[label].steps.insert(After_fragments[label].steps.begin(), tmp.steps.begin(), tmp.steps.end());
  69   else
  70     raise << "can't tangle after non-waypoint " << label << '\n' << end();
  71   // End after Command Handler
@@ -137,7 +140,7 @@ if ('onhashchange' in window) {
  74 //: after all recipes are loaded, insert fragments at appropriate labels.
  75 
  76 :(after "Begin Instruction Inserting/Deleting Transforms")
- 77 Transform.push_back(insert_fragments);  // NOT idempotent
+ 77 Transform.push_back(insert_fragments);  // NOT idempotent
  78 
  79 //: We might need to perform multiple passes, in case inserted fragments
  80 //: include more labels that need further insertions. Track which labels we've
@@ -149,7 +152,7 @@ if ('onhashchange' in window) {
  86 
  87 :(code)
  88 void insert_fragments(const recipe_ordinal r) {
- 89   insert_fragments(get(Recipe, r));
+ 89   insert_fragments(get(Recipe, r));
  90 }
  91 
  92 void insert_fragments(recipe& r) {
@@ -168,19 +171,19 @@ if ('onhashchange' in window) {
 105       }
 106       inst.tangle_done = true;
 107       made_progress = true;
-108       Fragments_used.insert(inst.label);
+108       Fragments_used.insert(inst.label);
 109       ostringstream prefix;
 110       prefix << '+' << r.name << '_' << pass << '_' << i;
 111       // ok to use contains_key even though Before_fragments uses [],
 112       // because appending an empty recipe is a noop
-113       if (contains_key(Before_fragments, inst.label)) {
+113       if (contains_key(Before_fragments, inst.label)) {
 114         trace(9992, "transform") << "insert fragments before label " << inst.label << end();
-115         append_fragment(result, Before_fragments[inst.label].steps, prefix.str());
+115         append_fragment(result, Before_fragments[inst.label].steps, prefix.str());
 116       }
 117       result.push_back(inst);
-118       if (contains_key(After_fragments, inst.label)) {
+118       if (contains_key(After_fragments, inst.label)) {
 119         trace(9992, "transform") << "insert fragments after label " << inst.label << end();
-120         append_fragment(result, After_fragments[inst.label].steps, prefix.str());
+120         append_fragment(result, After_fragments[inst.label].steps, prefix.str());
 121       }
 122     }
 123     r.steps.swap(result);
@@ -228,12 +231,12 @@ if ('onhashchange' in window) {
 165 check_insert_fragments();
 166 :(code)
 167 void check_insert_fragments() {
-168   for (map<string, recipe>::iterator p = Before_fragments.begin();  p != Before_fragments.end();  ++p) {
-169     if (!contains_key(Fragments_used, p->first))
+168   for (map<string, recipe>::iterator p = Before_fragments.begin();  p != Before_fragments.end();  ++p) {
+169     if (!contains_key(Fragments_used, p->first))
 170       raise << "could not locate insert before label " << p->first << '\n' << end();
 171   }
-172   for (map<string, recipe>::iterator p = After_fragments.begin();  p != After_fragments.end();  ++p) {
-173     if (!contains_key(Fragments_used, p->first))
+172   for (map<string, recipe>::iterator p = After_fragments.begin();  p != After_fragments.end();  ++p) {
+173     if (!contains_key(Fragments_used, p->first))
 174       raise << "could not locate insert after label " << p->first << '\n' << end();
 175   }
 176 }
@@ -507,29 +510,29 @@ if ('onhashchange' in window) {
 444 :(code)
 445 void test_new_fragment_after_tangle() {
 446   // define a recipe
-447   load("def foo [\n"
-448        "  local-scope\n"
-449        "  <label>\n"
-450        "]\n"
-451        "after <label> [\n"
-452        "  1:num/raw <- copy 34\n"
-453        "]\n");
+447   load("def foo [\n"
+448        "  local-scope\n"
+449        "  <label>\n"
+450        "]\n"
+451        "after <label> [\n"
+452        "  1:num/raw <- copy 34\n"
+453        "]\n");
 454   transform_all();
 455   CHECK_TRACE_DOESNT_CONTAIN_ERRORS();
-456   Hide_errors = true;
+456   Hide_errors = true;
 457   // try to tangle into recipe foo after transform
-458   load("before <label> [\n"
-459        "  2:num/raw <- copy 35\n"
-460        "]\n");
+458   load("before <label> [\n"
+459        "  2:num/raw <- copy 35\n"
+460        "]\n");
 461   CHECK_TRACE_CONTAINS_ERRORS();
 462 }
 463 
 464 :(before "End before Command Handler")
-465 if (contains_key(Fragments_used, label))
-466   raise << "we've already tangled some code at label " << label << " in a previous call to transform_all(). Those locations won't be updated.\n" << end();
+465 if (contains_key(Fragments_used, label))
+466   raise << "we've already tangled some code at label " << label << " in a previous call to transform_all(). Those locations won't be updated.\n" << end();
 467 :(before "End after Command Handler")
-468 if (contains_key(Fragments_used, label))
-469   raise << "we've already tangled some code at label " << label << " in a previous call to transform_all(). Those locations won't be updated.\n" << end();
+468 if (contains_key(Fragments_used, label))
+469   raise << "we've already tangled some code at label " << label << " in a previous call to transform_all(). Those locations won't be updated.\n" << end();
 
-- cgit 1.4.1-2-gfad0