diff --git a/lib/bidify/bidifier.rb b/lib/bidify/bidifier.rb index 9c36a31..aceaa55 100644 --- a/lib/bidify/bidifier.rb +++ b/lib/bidify/bidifier.rb @@ -24,6 +24,7 @@ def configure @bidifiable_tags = DEFAULT_BIDIFIABLE_TAGS.dup @bidifiable_tags.concat(TABLE_TAGS) if @options[:with_table_support] @bidifiable_tags.concat(@options[:including_tags]) if @options.key?(:including_tags) + @bidifiable_tags.delete_if { |tag| @options[:excluding_tags]&.include?(tag) } @bidifiable_tags = @options[:only_tags] if @options.key?(:only_tags) end diff --git a/spec/html_string_bidifier_spec.rb b/spec/html_string_bidifier_spec.rb index 5c22111..f45b3ec 100644 --- a/spec/html_string_bidifier_spec.rb +++ b/spec/html_string_bidifier_spec.rb @@ -292,4 +292,38 @@ expect(actual_output).to eq expected_output end + + it "doesn't bidify specified excluded tags using `excluding_tags` option" do + input = <<~HTML +

راست left

+
left راست
+ HTML + + expected_output = <<~HTML +

راست left

+
left راست
+ HTML + + bidifier = Bidify::HtmlStringBidifier.new(excluding_tags: ['div']) + actual_output = bidifier.apply(input) + + expect(actual_output).to eq expected_output + end + + it '`excluding_tags` option overrides `including_tags`' do + input = <<~HTML +

راست left

+ left راست + HTML + + expected_output = <<~HTML +

راست left

+ left راست + HTML + + bidifier = Bidify::HtmlStringBidifier.new(including_tags: ['xyz'], excluding_tags: ['xyz']) + actual_output = bidifier.apply(input) + + expect(actual_output).to eq expected_output + end end