Simplify Unix Path
You can think about it as simplifying of the first argument "cd" command (a standart bash command). Simplifying means making shorter.
For instance if I do
cd a/../b
it works the same as
cd b
. Which means "b" is simplifying of "a/../b". It is much easier to explain everything using examples.
Input: String. Non-Empty valid unix path.
Output: String. Unix path.
Example:
# last slash is not important
simplify_path('/a/') == '/a'
# double slash can be united in one
simplify_path('/a//b/c') == '/a/b/c'
# double dot - go to previous folder
simplify_path('dir/fol/../no') == 'dir/no'
simplify_path('dir/fol/../../no') == 'no'
# one dot means current dir
simplify_path('/a/b/./ci') == '/a/b/ci'
simplify_path('vi/..') == '.'
simplify_path('./.') == '.'
# you can't go deeper than root folder
simplify_path('/for/../..') == '/'
simplify_path('/for/../../no/..') == '/'
# not all double-dots can be simplyfied in related path
simplify_path('for/../..') == '..'
simplify_path('../foo') == '../foo'