Skip to content

Instantly share code, notes, and snippets.

@lepinekong
Last active April 27, 2018 22:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lepinekong/15d78322ecce84cfbcf892ce1cdbda88 to your computer and use it in GitHub Desktop.
Save lepinekong/15d78322ecce84cfbcf892ce1cdbda88 to your computer and use it in GitHub Desktop.
flexible seach function in red
((Search)) - searchString /in 'path /ext 'extension ->> searchString: form searchString
subgraph Init
searchString: form searchString
searchString: form searchString ->> ext?
subgraph extension
ext? - Yes ->> extension: form extension
extension: form extension ->> extension: to-file extension
ext? - No ->> extension: %.md
end
extension: %.md ->> root: any [path %./]
extension: to-file extension ->> root: any [path %./]
end
root: any [path %./] ->> isRootDirectory?
isRootDirectory? - isRootDirectory = Yes ->> find-where(*) root searchString
subgraph SearchFolder
find-where(*) root searchString
end
isRootDirectory? - isRootDirectory = No ->> splited-path: split-path file
subgraph SearchFile
splited-path: split-path file ->> path: splited-path/1
path: splited-path/1 ->> search-lines read/lines file
end
subgraph readPath
(((*)find-where)) - path searchString ->> files: read path
files: read path ->> foreach file files
foreach file files ->> do-events/no-wait
do-events/no-wait ->> file: rejoin [path file]
file: rejoin [path file] ->> fileOrFolder?
fileOrFolder? - file ->> extension=suffixOfFile?
extension=suffixOfFile? - Yes ->> content: read file
content: read file ->> searchStringFoundInContent?
end
subgraph searchStringFoundInContent
searchStringFoundInContent? - Yes ->> print fileName: to-string file
print fileName: to-string file ->> lines: read/lines file
lines: read/lines file ->> foreach file files
end
searchStringFoundInContent? - No ->> searchStringFoundInFileName = find (to-string file) searchstring
subgraph searchStringInFileName
searchStringFoundInFileName = find (to-string file) searchstring ->> searchStringFoundInFileName?
searchStringFoundInFileName? - No ->> foreach file files
searchStringFoundInFileName? - Yes ->> print read file
end
subgraph searchStringFoundInFileName
print read file
end
print read file ->> foreach file files
extension=suffixOfFile? - No ->> foreach file files
fileOrFolder? - folder ->> (((*)find-where))
; copy and paste in http://chartmage.com/index.html flowchart
((Search)) - searchString /in 'path /ext 'extension ->> searchString: form searchString
subgraph Init
searchString: form searchString
searchString: form searchString ->> ext?
subgraph extension
ext? - Yes ->> extension: form extension
extension: form extension ->> extension: to-file extension
ext? - No ->> extension: %.md
end
extension: %.md ->> root: any [path %./]
extension: to-file extension ->> root: any [path %./]
end
root: any [path %./] ->> dir?
dir? - Root = Yes ->> find-where(*) root searchString
subgraph SearchFolder
find-where(*) root searchString
end
dir? - Root = No ->> splited-path: split-path file
subgraph SearchFile
splited-path: split-path file ->> path: splited-path/1
path: splited-path/1 ->> search-lines read/lines file
end
(((*)find-where)) - path searchString ->> files: read path
files: read path - foreach file files ->> do-events/no-wait
do-events/no-wait ->> file: rejoin [path file]
file: rejoin [path file] ->> fileOrFolder?
fileOrFolder? - file ->> extension=suffixOfFile?
extension=suffixOfFile? - Yes ->> content: read file
content: read file ->> searchStringFoundInContent?
searchStringFoundInContent? - Yes ->> print file
subgraph searchStringFoundInFileContent
print file ->> lines: read/lines file
end
searchStringFoundInContent? - No ->> searchStringFoundInFileName = find (to-string file) searchstring
searchStringFoundInFileName = find (to-string file) searchstring ->> searchStringFoundInFileName?
searchStringFoundInFileName? - No ->> do-events/no-wait
searchStringFoundInFileName? - Yes ->> print read file
subgraph searchStringFoundInFileName
print read file
end
print read file ->> do-events/no-wait
extension=suffixOfFile? - No ->> do-events/no-wait
fileOrFolder? - folder ->> (((*)find-where))
@lepinekong
Copy link
Author

search

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment