tree:

globKeys(tree)

Treats the keys of tree as simple glob patterns. The following patterns are supported:

  • * matches any text
  • ? matches a single character
  • ** matches any level of a tree
$ cat globKeys.yaml
"*.jpg": false
"*.txt": true
$ ori "globKeys(globKeys.yaml)/foo.jpg"
false
$ ori "globKeys(globKeys.yaml)/foo.txt"
true

Filtering

globKeys can be used in conjunction with tree:filter to filter values based on glob patterns.

This Origami function accepts a tree, then applies a filter using globKeys to return just the values whose keys have image file extensions:

// images.ori

// Return only the image files in the given tree
(tree) => filter(tree, globKeys({
  // Apply these globs at all levels
  **: {
    *.gif: true
    *.ico: true
    *.jpeg: true
    *.jpg: true
    *.png: true
    *.svg: true
    *.tif: true
    *.tiff: true
    *.webp: true
  }
}))

This would typically be applied to a tree of files, but for demonstration purposes a YAML file can simulate a small set of files:

# files.yaml
index.html: Index page
favicon.ico: (image data)
about:
  index.html: About page
  logo.jpeg: (image data)

Applying the filter to the data gives:

$ ori images.ori files.yaml
favicon.ico: (image data)
about:
  logo.jpeg: (image data)