From 5f1e01a68c3a3baec499b3dc97b836ab1cac09ba Mon Sep 17 00:00:00 2001 From: Joseph Kato Date: Thu, 30 May 2024 03:16:17 -0700 Subject: [PATCH] feat: Ruby support --- internal/lint/code/lang.go | 2 ++ internal/lint/code/rb.go | 18 ++++++++++++++++++ testdata/features/fragments.feature | 9 +++++++++ testdata/fixtures/fragments/.vale.ini | 2 +- testdata/fixtures/fragments/test.rb | 2 ++ 5 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 internal/lint/code/rb.go diff --git a/internal/lint/code/lang.go b/internal/lint/code/lang.go index c488e2ac..811a8223 100644 --- a/internal/lint/code/lang.go +++ b/internal/lint/code/lang.go @@ -28,6 +28,8 @@ func GetLanguageFromExt(ext string) (*Language, error) { return Rust(), nil case ".py": return Python(), nil + case ".rb": + return Ruby(), nil default: return nil, fmt.Errorf("unsupported extension: '%s'", ext) } diff --git a/internal/lint/code/rb.go b/internal/lint/code/rb.go new file mode 100644 index 00000000..46f89d98 --- /dev/null +++ b/internal/lint/code/rb.go @@ -0,0 +1,18 @@ +package code + +import ( + "regexp" + + "github.com/smacker/go-tree-sitter/ruby" +) + +func Ruby() *Language { + return &Language{ + Delims: regexp.MustCompile(`#|=begin|=end`), + Parser: ruby.GetLanguage(), + Queries: []string{`(comment)+ @comment`}, + Padding: func(s string) int { + return computePadding(s, []string{"#", `=begin`, `=end`}) + }, + } +} diff --git a/testdata/features/fragments.feature b/testdata/features/fragments.feature index d14f30f5..cfd74ba2 100644 --- a/testdata/features/fragments.feature +++ b/testdata/features/fragments.feature @@ -12,6 +12,15 @@ Feature: Fragments test.py:18:29:Vale.Spelling:Did you really mean 'docmentation'? test.py:20:20:Vale.Spelling:Did you really mean 'ducmenation'? test.py:24:13:Vale.Spelling:Did you really mean 'parapp'? + test.rb:2:23:Vale.Spelling:Did you really mean 'thre'? + test.rb:6:6:Vale.Spelling:Did you really mean 'stil'? + test.rb:9:36:Vale.Spelling:Did you really mean 'coment'? + test.rb:11:16:Vale.Spelling:Did you really mean 'foof'? + test.rb:11:21:Vale.Spelling:Did you really mean 'hopl'? + test.rb:15:16:Vale.Spelling:Did you really mean 'foof'? + test.rb:15:21:Vale.Spelling:Did you really mean 'hopll'? + test.rb:17:16:Vale.Spelling:Did you really mean 'foof'? + test.rb:17:21:Vale.Spelling:Did you really mean 'hopl'? test.rs:3:22:Vale.Spelling:Did you really mean 'representd'? test.rs:5:22:Vale.Spelling:Did you really mean 'representd'? test.rs:7:39:Vale.Spelling:Did you really mean 'mattter'? diff --git a/testdata/fixtures/fragments/.vale.ini b/testdata/fixtures/fragments/.vale.ini index 4bdae5b5..7bbd0ea3 100644 --- a/testdata/fixtures/fragments/.vale.ini +++ b/testdata/fixtures/fragments/.vale.ini @@ -10,7 +10,7 @@ go = md rb = md cc = md -[*.{go,py,rs}] +[*.{go,py,rs,rb}] BasedOnStyles = Vale [*.cc] diff --git a/testdata/fixtures/fragments/test.rb b/testdata/fixtures/fragments/test.rb index 6af20fde..e9ba3d89 100644 --- a/testdata/fixtures/fragments/test.rb +++ b/testdata/fixtures/fragments/test.rb @@ -15,3 +15,5 @@ # XXX: this is foof hopll. # XXX: this is foof hopl. + +foof = 1 \ No newline at end of file