text_helpers 1.0.0 → 1.2.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: 821b971353a180079293995889c2ac37c578e4afbeb2fb4ab4f2b23d885121fa
4
- data.tar.gz: 90b1c2814b154bd44b5c862c4cb65b3874eb4def96a8e3f87e7c39d28e9373da
3
+ metadata.gz: 196566e88af14d22f2703223fcb8a334f44d0bc6162b2a90e92ea722840da6a6
4
+ data.tar.gz: bdf313faa479139cac2acf301b8c80e28f83448de3da1d1e8145b1408c91cdaa
5
5
  SHA512:
6
- metadata.gz: ab19b219ea2f6b4877e1da8d103395836c7666154711591a255e093750059f72415fb283d6f427086ad96782375fa92cce9dfff4645b98fe38af203401b1a46f
7
- data.tar.gz: 07b98f9af2b8258d696b3cb067ad54a25bf8e68e4d51f490e5f449dca418ef055cd562ae91ead997eb4be4c62a9587f83bc52bc97b52fd3f811bc176003eccac
6
+ metadata.gz: 95e9ff9a22f917aa08ff7b227c922abc56f0285d29ef581e0b43402a26777c98979737364da42cf015f1719f64f992e8b48caa6f3f7d9dd58468c689a8801285
7
+ data.tar.gz: 4346400f3ffb3a02404d899fe28ebea2b57e3481afd65a13321215e91e16a04a6d788141486a7893c37c3f9d38993312ed9b67363c2b45e4c16bc96e9a6e23ee
data/CHANGELOG.md ADDED
@@ -0,0 +1,102 @@
1
+ # Change Log
2
+
3
+ ## [1.2.0] - 2022-01-05
4
+
5
+ ### Changes
6
+
7
+ - Add support for Rails 7 (thanks to @boatrite)
8
+
9
+ ## [1.1.1] - 2021-02-02
10
+
11
+ ### Changes
12
+
13
+ - Bump minimum redcarpet version for security (thanks to @n00dle)
14
+
15
+ ## [1.1.0] - 2020-12-02
16
+
17
+ ### New Features
18
+
19
+ - Add `rel=noopener` to external links (thanks to @n00dle)
20
+
21
+ ## [1.0.1] - 2020-12-02
22
+
23
+ ### Changes
24
+
25
+ - Support cascading backends by default
26
+
27
+ ## [1.0.0] - 2020-03-27
28
+
29
+ ### Changes
30
+
31
+ - **(Breaking)** Drop explicit support for Ruby versions below 2.6
32
+
33
+ ### Bug Fixes
34
+
35
+ - Properly support translations using I18n::Pluralization backend (thanks to @jhanggi)
36
+
37
+ ## [0.7.2] - 2019-07-06
38
+
39
+ ### Bug Fixes
40
+
41
+ - Improve orphaned text matcher targeting
42
+
43
+ ## [0.7.1] - 2019-07-05
44
+
45
+ ### Bug Fixes
46
+
47
+ - Prevent unnecessary non-breaking spaces in generated HTML
48
+
49
+ ### Changes
50
+
51
+ - Improve `NotImplementedError` messaging (thanks to @stephen-puiszis)
52
+ - Update README with spec setup instructions (thanks to @jhanggi)
53
+
54
+ ## [0.7.0] - 2016-05-06
55
+
56
+ ### New features
57
+
58
+ - Automatically load entire locale directory via Railtie
59
+
60
+ ## [0.6.1] - 2015-10-01
61
+
62
+ ### Changes
63
+
64
+ - Bump version requirement for Redcarpet gem to address memory leaks
65
+
66
+ ## [0.6.0] - 2015-06-15
67
+
68
+ ### New Features
69
+
70
+ - Apply `target=_blank` attribute to anchor tags pointed at external URLs
71
+
72
+ ## [0.5.3] - 2015-02-25
73
+
74
+ ### Changes
75
+
76
+ - Update spec helpers for compatibility with RSpec 3 (thanks to @gabrielg)
77
+
78
+ ## [0.5.2] - 2015-02-03
79
+
80
+ ### Changes
81
+
82
+ - Support cascading backends for interpolated keys (thanks to @gabrielg)
83
+
84
+ ## [0.5.1] - 2015-01-23
85
+
86
+ ### New Features
87
+
88
+ - Add RSpec helpers (thanks to @gabrielg)
89
+
90
+ [1.2.0]: https://github.com/ahorner/text-helpers/compare/v1.1.1...v1.2.0
91
+ [1.1.1]: https://github.com/ahorner/text-helpers/compare/v1.1.0...v1.1.1
92
+ [1.1.0]: https://github.com/ahorner/text-helpers/compare/v1.0.1...v1.1.0
93
+ [1.0.1]: https://github.com/ahorner/text-helpers/compare/v1.0.0...v1.0.1
94
+ [1.0.0]: https://github.com/ahorner/text-helpers/compare/v0.7.2...v1.0.0
95
+ [0.7.2]: https://github.com/ahorner/text-helpers/compare/v0.7.1...v0.7.2
96
+ [0.7.1]: https://github.com/ahorner/text-helpers/compare/v0.7.0...v0.7.1
97
+ [0.7.0]: https://github.com/ahorner/text-helpers/compare/v0.6.1...v0.7.0
98
+ [0.6.1]: https://github.com/ahorner/text-helpers/compare/v0.6.0...v0.6.1
99
+ [0.6.0]: https://github.com/ahorner/text-helpers/compare/v0.5.3...v0.6.0
100
+ [0.5.3]: https://github.com/ahorner/text-helpers/compare/v0.5.2...v0.5.3
101
+ [0.5.2]: https://github.com/ahorner/text-helpers/compare/v0.5.1...v0.5.2
102
+ [0.5.1]: https://github.com/ahorner/text-helpers/compare/v0.5.0...v0.5.1
@@ -65,8 +65,14 @@ module TextHelpers
65
65
  initializer "text_helpers.setup_exception_handling", after: 'after_initialize' do
66
66
  next unless config.text_helpers.raise_on_missing_translations
67
67
 
68
- if config.respond_to?(:action_view)
69
- config.action_view.raise_on_missing_translations = true
68
+ if Rails::VERSION::MAJOR >= 7
69
+ if config.respond_to?(:i18n)
70
+ config.i18n.raise_on_missing_translations = true
71
+ end
72
+ else
73
+ if config.respond_to?(:action_view)
74
+ config.action_view.raise_on_missing_translations = true
75
+ end
70
76
  end
71
77
 
72
78
  TextHelpers.install_i18n_exception_handler
@@ -12,7 +12,7 @@ module TextHelpers
12
12
  attributes = [
13
13
  ("href=\"#{link}\"" if link),
14
14
  ("title=\"#{title}\"" if title),
15
- ("target=\"_blank\"" if link =~ PROTOCOL_MATCHER),
15
+ ("target=\"_blank\" rel=\"noopener\"" if link.match?(PROTOCOL_MATCHER)),
16
16
  ]
17
17
 
18
18
  "<a #{attributes.compact.join(" ")}>#{content}</a>"
@@ -37,14 +37,14 @@ module TextHelpers
37
37
  options = html_safe_options(options)
38
38
  text = I18n.t(key, **{
39
39
  scope: self.translation_scope,
40
- default: "!#{key}!"
40
+ default: "!#{key}!",
41
+ cascade: true,
41
42
  }.merge(options)).strip
42
43
 
43
- interpolation_options = options.dup
44
- interpolation_options[:cascade] = true unless interpolation_options.has_key?(:cascade)
44
+ interpolation_options = { cascade: true }.merge(options)
45
45
 
46
46
  # Interpolate any keypaths (e.g., `!some.lookup.path/key!`) found in the text.
47
- while text =~ KEYPATH_MATCHER do
47
+ while text.match?(KEYPATH_MATCHER) do
48
48
  text = text.gsub(KEYPATH_MATCHER) { |match| I18n.t($1, **interpolation_options) }
49
49
  end
50
50
 
@@ -1,3 +1,3 @@
1
1
  module TextHelpers
2
- VERSION = "1.0.0"
2
+ VERSION = "1.2.0"
3
3
  end
@@ -1,4 +1,4 @@
1
- require_relative '../../test_helper'
1
+ require_relative "../../test_helper"
2
2
 
3
3
  describe TextHelpers::Translation do
4
4
  before do
@@ -119,12 +119,12 @@ describe TextHelpers::Translation do
119
119
  assert_equal "<em>#{@scoped_text}</em>\n", @helper.html(:test_key, inline: true, orphans: true)
120
120
  end
121
121
 
122
- it "renders internal links without a target" do
122
+ it "renders internal links without a target or rel" do
123
123
  assert_equal "<a href=\"/internal/path\">Internal&nbsp;link</a>\n", @helper.html(:internal_link, inline: true)
124
124
  end
125
125
 
126
- it "renders external links with target='_blank'" do
127
- assert_equal "<a href=\"http://external.com\" target=\"_blank\">External&nbsp;link</a>\n", @helper.html(:external_link, inline: true)
126
+ it "renders external links with target='_blank' and rel='noopener'" do
127
+ assert_equal "<a href=\"http://external.com\" target=\"_blank\" rel=\"noopener\">External&nbsp;link</a>\n", @helper.html(:external_link, inline: true)
128
128
  end
129
129
 
130
130
  it "interpolates values wrapped in !!" do
@@ -242,6 +242,14 @@ describe TextHelpers::Translation do
242
242
  I18n.backend = @original_backend
243
243
  end
244
244
 
245
+ it "cascades the requested key by default" do
246
+ I18n.backend.store_translations(:en, {test_scoped_key: "a translation"})
247
+ assert_equal "a translation", @helper.text(:test_scoped_key, scope: "some.unnecessary.scope")
248
+
249
+ I18n.backend.store_translations(:en, {some: {test_scoped_key: "a scoped translation"}})
250
+ assert_equal "a scoped translation", @helper.text(:test_scoped_key, scope: "some.unnecessary.scope")
251
+ end
252
+
245
253
  it "cascades the interpolated key by default" do
246
254
  I18n.backend.store_translations(:en, {test_scoped_key: "a translation"})
247
255
 
data/text_helpers.gemspec CHANGED
@@ -24,7 +24,7 @@ Gem::Specification.new do |gem|
24
24
 
25
25
  gem.add_dependency("activesupport")
26
26
  gem.add_dependency("i18n", ">=0.6.8")
27
- gem.add_dependency("redcarpet", ">=3.3.3")
27
+ gem.add_dependency("redcarpet", ">=3.5.1")
28
28
 
29
29
  gem.add_development_dependency("rake")
30
30
  gem.add_development_dependency("railties")
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: text_helpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Horner
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-27 00:00:00.000000000 Z
11
+ date: 2022-01-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 3.3.3
47
+ version: 3.5.1
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: 3.3.3
54
+ version: 3.5.1
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -89,6 +89,7 @@ extra_rdoc_files: []
89
89
  files:
90
90
  - ".gitignore"
91
91
  - ".travis.yml"
92
+ - CHANGELOG.md
92
93
  - Gemfile
93
94
  - LICENSE
94
95
  - README.md
@@ -108,7 +109,7 @@ homepage: https://github.com/ahorner/text-helpers
108
109
  licenses:
109
110
  - MIT
110
111
  metadata: {}
111
- post_install_message:
112
+ post_install_message:
112
113
  rdoc_options: []
113
114
  require_paths:
114
115
  - lib
@@ -123,8 +124,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
123
124
  - !ruby/object:Gem::Version
124
125
  version: '0'
125
126
  requirements: []
126
- rubygems_version: 3.1.2
127
- signing_key:
127
+ rubygems_version: 3.2.32
128
+ signing_key:
128
129
  specification_version: 4
129
130
  summary: TextHelpers is a gem which supplies some basic utilities for text localization
130
131
  in Rails projects. The library is intended to make it simple to keep your application's