Mercurial Hosting > d2o
comparison icf/icf.go @ 4:dacc92aae6d5
expand vars in vars
| author | Atarwn Gard <a@qwa.su> |
|---|---|
| date | Mon, 09 Mar 2026 03:07:18 +0500 |
| parents | d19133be91ba |
| children | 54ab94198677 |
comparison
equal
deleted
inserted
replaced
| 3:eb705d4cdcd7 | 4:dacc92aae6d5 |
|---|---|
| 45 return nil, err | 45 return nil, err |
| 46 } | 46 } |
| 47 | 47 |
| 48 // --- Pass 1: collect variables --- | 48 // --- Pass 1: collect variables --- |
| 49 vars := make(map[string]string) | 49 vars := make(map[string]string) |
| 50 subst := makeSubst(vars) | |
| 51 | |
| 50 for _, line := range lines { | 52 for _, line := range lines { |
| 51 if i := strings.Index(line, "="); i > 0 && !strings.HasPrefix(line, "|>") { | 53 if i := strings.Index(line, "="); i > 0 && !strings.HasPrefix(line, "|>") { |
| 52 key := line[:i] | 54 key := line[:i] |
| 53 if isVarName(key) { | 55 if isVarName(key) { |
| 54 vars[key] = strings.TrimSpace(line[i+1:]) | 56 vars[key] = subst(strings.TrimSpace(line[i+1:]), nil) |
| 55 } | 57 } |
| 56 } | 58 } |
| 57 } | 59 } |
| 58 | |
| 59 subst := makeSubst(vars) | |
| 60 | 60 |
| 61 // --- Pass 2: parse blocks (raw, no capture substitution yet) --- | 61 // --- Pass 2: parse blocks (raw, no capture substitution yet) --- |
| 62 var raws []rawBlock | 62 var raws []rawBlock |
| 63 var cur *rawBlock | 63 var cur *rawBlock |
| 64 | 64 |
