rails-paradedb 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e28ebb1ec7734474a1ed321766b2e652f4aa1d56aadcc16d48667ac4ddbfc5bc
4
- data.tar.gz: 51c25b12045eed272ad0e71475c22f9a670c4da6ff46fcad6d99ce32e3bc1f6e
3
+ metadata.gz: 5ac93df076da5e2c2ae979b925233b7f11195c1f3a1695d92980c64941b307a4
4
+ data.tar.gz: 410859f0b81ea85841c558f85b5b5d7cedcb9612d7036bb08587e9f94f00b89b
5
5
  SHA512:
6
- metadata.gz: 4fced3ee50bef2ef4c59567246e9c5382a7e2e3f60293a785d33fe4e9e857abea685740fcf2c2da38c98dce4371d13010f9eacbbbe1c580df760208a20542f3d
7
- data.tar.gz: 2e3efbf965bb99866dffe45de2963528ccf9ebfaa4a947abe5b72211306409d5b006eb1e90621cc6591e72f473d91593348b0d1bcaaa1e96cbc08cbe252e8615
6
+ metadata.gz: 19bd553913503c9a588f43a0793ad735844de0104b0e45c926affaa3763f7b7e3c9417b04a1c3d494bb9938a7984b3cb3d7a300a6c5a0192802acb8428325f1b
7
+ data.tar.gz: d999e0166ef6cd962d658b8bedf527a70a367caa9a82070846d4f4285adb55dc45f6cfcef717e818ad37c59b0b6afcf8079be90d57bc92c3c91d48dc86765cc6
data/CHANGELOG.md CHANGED
@@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file. The format
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.8.0] - 2026-06-15
8
+
9
+ ### Changed
10
+
11
+ - **BREAKING**: The `Tokenizer` class is now namespaced as `ParadeDB::Tokenizer`. Update references from `Tokenizer.simple(...)` to `ParadeDB::Tokenizer.simple(...)`. Schema dumps (`schema.rb`) now emit the fully-qualified constant.
12
+
7
13
  ## [0.7.0] - 2026-04-21
8
14
 
9
15
  ### Changed
@@ -132,7 +138,8 @@ All notable changes to this project will be documented in this file. The format
132
138
  - Schema dump/load round-trip for tokenizer configuration and index options
133
139
  (including `target_segment_count`)
134
140
 
135
- [Unreleased]: https://github.com/paradedb/rails-paradedb/compare/v0.7.0...HEAD
141
+ [Unreleased]: https://github.com/paradedb/rails-paradedb/compare/v0.8.0...HEAD
142
+ [0.8.0]: https://github.com/paradedb/rails-paradedb/releases/tag/v0.8.0
136
143
  [0.7.0]: https://github.com/paradedb/rails-paradedb/releases/tag/v0.7.0
137
144
  [0.6.0]: https://github.com/paradedb/rails-paradedb/releases/tag/v0.6.0
138
145
  [0.5.0]: https://github.com/paradedb/rails-paradedb/releases/tag/v0.5.0
@@ -302,7 +302,7 @@ module ParadeDB
302
302
  def apply_tokenizer(node, tokenizer)
303
303
  return node if tokenizer.nil?
304
304
 
305
- unless tokenizer.is_a?(Tokenizer)
305
+ unless tokenizer.is_a?(ParadeDB::Tokenizer)
306
306
  raise ArgumentError, "tokenizer must be a Tokenizer"
307
307
  end
308
308
 
@@ -53,7 +53,7 @@ module ParadeDB
53
53
 
54
54
  class << self
55
55
  def parse(source_name, tokenizer, context:)
56
- unless tokenizer.is_a?(Tokenizer)
56
+ unless tokenizer.is_a?(ParadeDB::Tokenizer)
57
57
  raise InvalidIndexDefinition, "#{context} for #{source_name.inspect} must be a Tokenizer"
58
58
  end
59
59
 
@@ -695,13 +695,13 @@ module ParadeDB
695
695
  end
696
696
 
697
697
  def bm25_tokenizer_ruby(name, positional_args, options)
698
- if name.match?(/\A[a-z_][a-z0-9_]*\z/) && Tokenizer.respond_to?(name)
698
+ if name.match?(/\A[a-z_][a-z0-9_]*\z/) && ParadeDB::Tokenizer.respond_to?(name)
699
699
  args = positional_args.map { |arg| ruby_literal(arg) }
700
700
  args << "options: #{ruby_hash_literal(options)}" unless options.empty?
701
- return "Tokenizer.#{name}(#{args.join(', ')})"
701
+ return "ParadeDB::Tokenizer.#{name}(#{args.join(', ')})"
702
702
  end
703
703
 
704
- "Tokenizer.new(#{name.inspect}, #{ruby_literal(positional_args.empty? ? nil : positional_args)}, #{ruby_literal(options.empty? ? nil : options)})"
704
+ "ParadeDB::Tokenizer.new(#{name.inspect}, #{ruby_literal(positional_args.empty? ? nil : positional_args)}, #{ruby_literal(options.empty? ? nil : options)})"
705
705
  end
706
706
 
707
707
  def split_sql_arguments(args_sql)
@@ -1,95 +1,97 @@
1
- class Tokenizer
2
- attr_reader :name, :positional_args, :options
1
+ module ParadeDB
2
+ class Tokenizer
3
+ attr_reader :name, :positional_args, :options
4
+
5
+ def initialize(name, positional_args, options)
6
+ @name = name
7
+ @positional_args = positional_args
8
+ @options = options
9
+ end
3
10
 
4
- def initialize(name, positional_args, options)
5
- @name = name
6
- @positional_args = positional_args
7
- @options = options
8
- end
11
+ def render()
12
+ if options.nil? && positional_args.nil?
13
+ return "pdb.#{name}"
14
+ end
9
15
 
10
- def render()
11
- if options.nil? && positional_args.nil?
12
- return "pdb.#{name}"
13
- end
16
+ args = []
17
+ if !positional_args.nil?
18
+ args.concat(positional_args.map { |x| render_positional_arg(x) })
19
+ end
20
+ if !options.nil?
21
+ args.concat(options.map {|k, v| quote_term("#{k}=#{v}")})
22
+ end
14
23
 
15
- args = []
16
- if !positional_args.nil?
17
- args.concat(positional_args.map { |x| render_positional_arg(x) })
18
- end
19
- if !options.nil?
20
- args.concat(options.map {|k, v| quote_term("#{k}=#{v}")})
24
+ return "pdb.#{name}(#{args.join(",")})"
21
25
  end
22
26
 
23
- return "pdb.#{name}(#{args.join(",")})"
24
- end
25
-
26
- def self.whitespace(options: nil)
27
- new("whitespace", nil, options)
28
- end
27
+ def self.whitespace(options: nil)
28
+ new("whitespace", nil, options)
29
+ end
29
30
 
30
- def self.unicode_words(options: nil)
31
- new("unicode_words", nil, options)
32
- end
31
+ def self.unicode_words(options: nil)
32
+ new("unicode_words", nil, options)
33
+ end
33
34
 
34
- def self.ngram(min_gram, max_gram, options: nil)
35
- new("ngram", [min_gram, max_gram], options)
36
- end
35
+ def self.ngram(min_gram, max_gram, options: nil)
36
+ new("ngram", [min_gram, max_gram], options)
37
+ end
37
38
 
38
- def self.simple(options: nil)
39
- new("simple", nil, options)
40
- end
39
+ def self.simple(options: nil)
40
+ new("simple", nil, options)
41
+ end
41
42
 
42
- def self.literal(options: nil)
43
- new("literal", nil, options)
44
- end
43
+ def self.literal(options: nil)
44
+ new("literal", nil, options)
45
+ end
45
46
 
46
- def self.literal_normalized(options: nil)
47
- new("literal_normalized", nil, options)
48
- end
47
+ def self.literal_normalized(options: nil)
48
+ new("literal_normalized", nil, options)
49
+ end
49
50
 
50
- def self.edge_ngram(min_gram, max_gram, options: nil)
51
- new("edge_ngram", [min_gram, max_gram], options)
52
- end
51
+ def self.edge_ngram(min_gram, max_gram, options: nil)
52
+ new("edge_ngram", [min_gram, max_gram], options)
53
+ end
53
54
 
54
- def self.regex_pattern(pattern, options: nil)
55
- new("regex_pattern", [pattern], options)
56
- end
55
+ def self.regex_pattern(pattern, options: nil)
56
+ new("regex_pattern", [pattern], options)
57
+ end
57
58
 
58
- def self.chinese_compatible(options: nil)
59
- new("chinese_compatible", nil, options)
60
- end
59
+ def self.chinese_compatible(options: nil)
60
+ new("chinese_compatible", nil, options)
61
+ end
61
62
 
62
- def self.lindera(dictionary, options: nil)
63
- new("lindera", [dictionary], options)
64
- end
63
+ def self.lindera(dictionary, options: nil)
64
+ new("lindera", [dictionary], options)
65
+ end
65
66
 
66
- def self.icu(options: nil)
67
- new("icu", nil, options)
68
- end
67
+ def self.icu(options: nil)
68
+ new("icu", nil, options)
69
+ end
69
70
 
70
- def self.jieba(options: nil)
71
- new("jieba", nil, options)
72
- end
71
+ def self.jieba(options: nil)
72
+ new("jieba", nil, options)
73
+ end
73
74
 
74
- def self.source_code(options: nil)
75
- new("source_code", nil, options)
76
- end
75
+ def self.source_code(options: nil)
76
+ new("source_code", nil, options)
77
+ end
77
78
 
78
- private
79
+ private
79
80
 
80
- def quote_term(value)
81
- escaped = value.gsub("'", "''")
82
- "'#{escaped}'"
83
- end
81
+ def quote_term(value)
82
+ escaped = value.gsub("'", "''")
83
+ "'#{escaped}'"
84
+ end
84
85
 
85
- def render_positional_arg(value)
86
- case value
87
- when true, false, Numeric
88
- value.to_s
89
- when String
90
- quote_term(value)
91
- else
92
- raise InvalidArgumentError, "Unsupported tokenizer arg type: #{value.class}"
86
+ def render_positional_arg(value)
87
+ case value
88
+ when true, false, Numeric
89
+ value.to_s
90
+ when String
91
+ quote_term(value)
92
+ else
93
+ raise ArgumentError, "Unsupported tokenizer arg type: #{value.class}"
94
+ end
93
95
  end
94
96
  end
95
97
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ParadeDB
4
- VERSION = "0.7.0"
4
+ VERSION = "0.8.0"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-paradedb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ParadeDB