MCPcopy
hub / github.com/gobyexample-cn/gobyexample / parseExamples

Function parseExamples

tools/generate.go:244–293  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

242}
243
244func parseExamples() []*Example {
245 var exampleNames []string
246 for _, line := range readLines("examples.txt") {
247 if line != "" && !strings.HasPrefix(line, "#") {
248 exampleNames = append(exampleNames, line)
249 }
250 }
251 examples := make([]*Example, 0)
252 for i, exampleName := range exampleNames {
253 if verbose() {
254 fmt.Printf("Processing %s [%d/%d]\n", exampleName, i+1, len(exampleNames))
255 }
256 example := Example{Name: exampleName}
257 exampleID := strings.ToLower(exampleName)
258 exampleID = strings.Replace(exampleID, " ", "-", -1)
259 exampleID = strings.Replace(exampleID, "/", "-", -1)
260 exampleID = strings.Replace(exampleID, "'", "", -1)
261 exampleID = dashPat.ReplaceAllString(exampleID, "-")
262 example.ID = exampleID
263 example.Segs = make([][]*Seg, 0)
264 sourcePaths := mustGlob("examples/" + exampleID + "/*")
265 for _, sourcePath := range sourcePaths {
266 if !isDir(sourcePath) {
267 if strings.HasSuffix(sourcePath, ".hash") {
268 example.GoCodeHash, example.URLHash = parseHashFile(sourcePath)
269 } else {
270 sourceSegs, filecontents := parseAndRenderSegs(sourcePath)
271 if filecontents != "" {
272 example.GoCode = filecontents
273 }
274 example.Segs = append(example.Segs, sourceSegs)
275 }
276 }
277 }
278 newCodeHash := sha1Sum(example.GoCode)
279 if example.GoCodeHash != newCodeHash {
280 example.URLHash = resetURLHashFile(newCodeHash, example.GoCode, "examples/"+example.ID+"/"+example.ID+".hash")
281 }
282 examples = append(examples, &example)
283 }
284 for i, example := range examples {
285 if i > 0 {
286 example.PrevExample = examples[i-1]
287 }
288 if i < (len(examples) - 1) {
289 example.NextExample = examples[i+1]
290 }
291 }
292 return examples
293}
294
295func renderIndex(examples []*Example) {
296 if verbose() {

Callers 1

mainFunction · 0.85

Calls 8

verboseFunction · 0.85
mustGlobFunction · 0.85
parseHashFileFunction · 0.85
parseAndRenderSegsFunction · 0.85
sha1SumFunction · 0.85
resetURLHashFileFunction · 0.85
readLinesFunction · 0.70
isDirFunction · 0.70

Tested by

no test coverage detected