diff options
| author | Luc Donnet | 2017-12-20 10:18:01 +0100 |
|---|---|---|
| committer | GitHub | 2017-12-20 10:18:01 +0100 |
| commit | e6ab30bc089b9d30a4222df214a70097df651d72 (patch) | |
| tree | b62489c965045d0fa897f02caeeb0b59d436a062 /spec/support/helpers | |
| parent | c13540b1b10451c9b26045cbfcb5ec397d1ddbc0 (diff) | |
| parent | b4f0fe5ac25c1d58c7396f55fb66de7313783d9c (diff) | |
| download | chouette-core-e6ab30bc089b9d30a4222df214a70097df651d72.tar.bz2 | |
Merge pull request #124 from af83/5006-wb_import_filter_refs_with_foreign_lines
5006 wb import filter refs with foreign lines
Diffstat (limited to 'spec/support/helpers')
| -rw-r--r-- | spec/support/helpers/tree_walker.rb | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/spec/support/helpers/tree_walker.rb b/spec/support/helpers/tree_walker.rb new file mode 100644 index 000000000..b86c3a8e1 --- /dev/null +++ b/spec/support/helpers/tree_walker.rb @@ -0,0 +1,15 @@ +module TreeWalker extend self + MAX_LEVEL = 5 + def walk_tree path, max_level: MAX_LEVEL, level: 0, yield_dirs: :no, &blk + raise RuntimeError, "too many levels in tree walk, > #{max_level}" if level > max_level + Dir.glob(File.join(path, '*')) do | file | + if File.directory?( file ) + blk.(:dir, file) if yield_dirs == :before + walk_tree(file, max_level: max_level, level: level.succ, yield_dirs: yield_dirs, &blk) + blk.(:dir, file) if yield_dirs == :after + else + blk.(:file, file) + end + end + end +end |
