aboutsummaryrefslogtreecommitdiff
path: root/autoload/languages/ruby.kak
blob: b4e08f4af26d7769f099381fca4048850aa18b65 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
hook global KakBegin .* %{
  declare-user-mode code-ruby
  map global code r ': enter-user-mode code-ruby<ret>' -docstring 'Ruby'
}

hook global BufSetOption filetype=(?:ruby) %{
  map global code-ruby t ': rails-edit-test<ret>' -docstring 'Open relevant spec file'
}

define-command rails-edit-test %{
  evaluate-commands %sh{
    open_spec_matching() {
      in_pattern="$1"
      out_pattern="$2"
      pattern=$(sed -E "s#.*/app/${in_pattern}[.]rb#${out_pattern}#" <<< "$kak_buffile");
      if [ ! -z "$pattern" ] && [ ! "$kak_buffile" = "$pattern" ]; then
        echo "findfzf-filtered 'spec/.*$pattern.*'"
      else
        echo "info 'unrecognized file'"
      fi
    }

    case "$kak_buffile" in
      *_controller.rb) open_spec_matching '.*/(\w+)_controller' 'requests/.*\1' ;;
      *)
        open_spec_matching \
          '(queries|interactors|domain|mailers|dashboards|presenters|validators|models|lib).*/((\w+/)?\w+)' \
          '\1.*\2'
  ;;
    esac
  }
}