i18n-transformers 0.1.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 +7 -0
- data/.gitignore +12 -0
- data/.rspec +2 -0
- data/.travis.yml +7 -0
- data/Gemfile +7 -0
- data/LICENSE.txt +21 -0
- data/README.md +247 -0
- data/Rakefile +6 -0
- data/bin/console +8 -0
- data/bin/setup +8 -0
- data/i18n-transformers.gemspec +32 -0
- data/lib/i18n-transformers.rb +1 -0
- data/lib/i18n/transformers.rb +32 -0
- data/lib/i18n/transformers/collection.rb +70 -0
- data/lib/i18n/transformers/collection/base.rb +20 -0
- data/lib/i18n/transformers/collection/generic.rb +17 -0
- data/lib/i18n/transformers/collection/markdown.rb +70 -0
- data/lib/i18n/transformers/version.rb +5 -0
- metadata +159 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 3821ea791dc50519a326ea4b283819bb98856e66
|
4
|
+
data.tar.gz: 5bb8cf9ecb191945bf972e9e041e52daa1351d4a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f03a43f72084e0972395565f5cf92c3ac16f7c6af28ee271bc4ac87affda2c9e7b6df59ecac3ebfb5821adddc4b953393c0344914dae093e6e48e05868c57f11
|
7
|
+
data.tar.gz: 8926319b1e500a4d2babc19a20a81361d638711bfb111882280775a221e07c9d4e410a0bb57081864b47974f7ef25d84004600e786e237a68fabf89d2fab1921
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2017 Tim Masliuchenko
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,247 @@
|
|
1
|
+
# I18n::Transformers
|
2
|
+
|
3
|
+
[](https://travis-ci.org/timsly/i18n-transformers)
|
4
|
+
|
5
|
+
Transformers for `I18n` ruby library
|
6
|
+
|
7
|
+
`I18n::Transformers` is a `I18n` ruby library plugin that allows transform translations.
|
8
|
+
|
9
|
+
`I18n::Transformers` can be used if some or even all translations keys require some transformation.
|
10
|
+
For example parsing markdown or replacing some symbol.
|
11
|
+
|
12
|
+
## Installation
|
13
|
+
|
14
|
+
Add this line to your application's Gemfile:
|
15
|
+
|
16
|
+
```ruby
|
17
|
+
gem 'i18n-transformers'
|
18
|
+
```
|
19
|
+
|
20
|
+
And then execute:
|
21
|
+
|
22
|
+
$ bundle
|
23
|
+
|
24
|
+
Or install it yourself as:
|
25
|
+
|
26
|
+
$ gem install i18n-transformers
|
27
|
+
|
28
|
+
## Usage
|
29
|
+
|
30
|
+
The core of this library is `I18n.transformers.register` method.
|
31
|
+
It can be used to register various transformers or reset all available transformers.
|
32
|
+
It is designed to register transformers globally.
|
33
|
+
It returns transformer instance that can be later used with `before`/`after` options.
|
34
|
+
|
35
|
+
If some transformers have to be applied only for some set of keys
|
36
|
+
then this logic has to implemented in the transformer class itself.
|
37
|
+
Also, it is very important to return original value in this case(see [Transformers chain section](#transformers-chain))
|
38
|
+
|
39
|
+
The gem comes with a few built-in transformers:
|
40
|
+
|
41
|
+
* generic transformer
|
42
|
+
* markdown transformer
|
43
|
+
|
44
|
+
If symbol was passed as the first argument to `.register` call
|
45
|
+
it will search thought built-in transformers and try to register it.
|
46
|
+
If there is no match generic adapter will be used.
|
47
|
+
|
48
|
+
### Generic transformer
|
49
|
+
|
50
|
+
Generic transformer is designed to handle custom transformers defined as a block.
|
51
|
+
It is useful for simple transformations.
|
52
|
+
|
53
|
+
To register generic transformer call:
|
54
|
+
|
55
|
+
```ruby
|
56
|
+
I18n.transformers.register do |key, value|
|
57
|
+
"transformered-#{value}"
|
58
|
+
end
|
59
|
+
```
|
60
|
+
|
61
|
+
`I18n.translate` key and translation value will be passed to the block.
|
62
|
+
|
63
|
+
Each transformer has its name that helps to register transformer after or before some specific transformer.
|
64
|
+
By default generic transformer generates unique name for each transformer,
|
65
|
+
but it can be also explicitly specified by passing name as the first argument.
|
66
|
+
|
67
|
+
```ruby
|
68
|
+
I18n.transformers.register 'my_transformer' do |key, value|
|
69
|
+
"transformered-#{value}"
|
70
|
+
end
|
71
|
+
```
|
72
|
+
|
73
|
+
All transformers can be registered before, after or at specific position.
|
74
|
+
`before`, `after` and `at` options are used for that.
|
75
|
+
|
76
|
+
```ruby
|
77
|
+
I18n.transformers.register 'my_transformer' do |key, value|
|
78
|
+
"transformered1-#{value}"
|
79
|
+
end
|
80
|
+
|
81
|
+
another_transformer = I18n.transformers.register after: 'my_transformer' do |key, value|
|
82
|
+
"transformered2-#{value}"
|
83
|
+
end
|
84
|
+
|
85
|
+
I18n.transformers.register before: another_transformer, do |key, value|
|
86
|
+
"transformered3-#{value}"
|
87
|
+
end
|
88
|
+
|
89
|
+
I18n.transformers.register at: 1, do |key, value|
|
90
|
+
"transformered4-#{value}"
|
91
|
+
end
|
92
|
+
```
|
93
|
+
|
94
|
+
### Markdown transformer
|
95
|
+
|
96
|
+
To register built-in markdown transformer use:
|
97
|
+
|
98
|
+
```ruby
|
99
|
+
I18n.transformers.register :markdown
|
100
|
+
```
|
101
|
+
|
102
|
+
Currently it supports [`redcarpet`](https://github.com/vmg/redcarpet) and [`kramdown`](https://github.com/gettalong/kramdown) markdown parsers.
|
103
|
+
|
104
|
+
It uses first available adapter so if both are available `redcarpet` will be picked.
|
105
|
+
To specify adapter use:
|
106
|
+
|
107
|
+
```ruby
|
108
|
+
I18n.transformers.register :markdown, adapter: :redcarpet
|
109
|
+
```
|
110
|
+
|
111
|
+
Markdown transformer is designed to be triggered only for some set of keys.
|
112
|
+
By default it triggers only for keys ended with `_md` and `.md`.
|
113
|
+
|
114
|
+
So specify custom key pattern use:
|
115
|
+
|
116
|
+
```ruby
|
117
|
+
I18n.transformers.register :markdown, key_pattern: /_markdown$/
|
118
|
+
```
|
119
|
+
|
120
|
+
In the example above markdown transformer will be triggered only if key ended with `_markdown`.
|
121
|
+
|
122
|
+
If block was specified it will be used instead.
|
123
|
+
It can be useful to override default transformation behavior.
|
124
|
+
|
125
|
+
```ruby
|
126
|
+
I18n.transformers.register :markdown do |key, value|
|
127
|
+
MyMarkdownParser.parse(value)
|
128
|
+
end
|
129
|
+
```
|
130
|
+
|
131
|
+
Please note that it will be still running only if key matches `key_pattern` option.
|
132
|
+
|
133
|
+
Markdown transformer always uses the same name - `'markdown'` - so to register some transformer after/before it use
|
134
|
+
|
135
|
+
```ruby
|
136
|
+
I18n.transformers.register :markdown
|
137
|
+
|
138
|
+
I18n.transformers.register 'my_custom_transformer', after: 'markdown' do |key, value|
|
139
|
+
Smth.transform(key, value)
|
140
|
+
end
|
141
|
+
```
|
142
|
+
|
143
|
+
It is designed to be registered only once that's why `name` is always `markdown`.
|
144
|
+
|
145
|
+
### Custom transformers
|
146
|
+
|
147
|
+
To register custom transformer use:
|
148
|
+
|
149
|
+
```ruby
|
150
|
+
I18n.transformers.register MyCustomTransformer
|
151
|
+
```
|
152
|
+
|
153
|
+
`MyCustomTransformer` has to be inherited from `I18n::Transformers::Collection::Base` class.
|
154
|
+
Also, to not break transformers chain(see [Transformers chain section](#transformers-chain)),
|
155
|
+
it is responsible for returning correct value if it needs to be applied only for some set of keys
|
156
|
+
|
157
|
+
All options except `before`, `after` and `at` will be passed as the first argument to `.new` call.
|
158
|
+
|
159
|
+
Transformer instance can be passed too:
|
160
|
+
|
161
|
+
```ruby
|
162
|
+
I18n.transformers.register MyCustomTransformer.new(:val1, :val2)
|
163
|
+
```
|
164
|
+
|
165
|
+
### Transformers chain
|
166
|
+
|
167
|
+
It is very important to return some value from either block or `#transform` method from the custom transformer class
|
168
|
+
otherwise transformers chain will be broken.
|
169
|
+
|
170
|
+
Here is the bad example of custom transformer:
|
171
|
+
|
172
|
+
```ruby
|
173
|
+
I18n.transformers.register do |key, value|
|
174
|
+
if key.to_s.start_with? 'key_prefix'
|
175
|
+
value.gsub('^symbol^', 'REPLACED_SYMBOL')
|
176
|
+
end
|
177
|
+
end
|
178
|
+
```
|
179
|
+
|
180
|
+
The code above most likely will be broken for all keys that don't start with `key_prefix`.
|
181
|
+
To fix that we should always fallback to the original value
|
182
|
+
|
183
|
+
```ruby
|
184
|
+
I18n.transformers.register do |key, value|
|
185
|
+
if key.to_s.start_with? 'key_prefix'
|
186
|
+
value.gsub('^symbol^', 'REPLACED_SYMBOL')
|
187
|
+
else
|
188
|
+
value
|
189
|
+
end
|
190
|
+
end
|
191
|
+
```
|
192
|
+
|
193
|
+
### Reseting transformers
|
194
|
+
|
195
|
+
This library is designed to register all transformers globally.
|
196
|
+
In a rails app it can be done in initializer.
|
197
|
+
But if there is a need to reset all transformers `.reset` method can be used.
|
198
|
+
|
199
|
+
```ruby
|
200
|
+
I18n.transformers.reset
|
201
|
+
```
|
202
|
+
|
203
|
+
## Example
|
204
|
+
|
205
|
+
To illustrate how this gem works let's assume the following setup
|
206
|
+
|
207
|
+
```yaml
|
208
|
+
en:
|
209
|
+
key: my key1 value ^symbol^
|
210
|
+
key_md: '**Text with ^symbol^**'
|
211
|
+
key_markdown: '*^symbol^*'
|
212
|
+
```
|
213
|
+
|
214
|
+
```ruby
|
215
|
+
I18n.transformers.register :markdown # let's assume redcarpet gem is available
|
216
|
+
|
217
|
+
I18n.transformers.register do |key, value|
|
218
|
+
value.gsub('^symbol^', 'REPLACED_SYMBOL')
|
219
|
+
end
|
220
|
+
```
|
221
|
+
|
222
|
+
Then
|
223
|
+
```ruby
|
224
|
+
I18n.translate :key # => my key1 value REPLACED_SYMBOL
|
225
|
+
|
226
|
+
I18n.translate :key_md # => <p><strong>Text with REPLACED_SYMBOL</strong></p>
|
227
|
+
|
228
|
+
I18n.translate :key_markdown # => *REPLACED_SYMBOL*
|
229
|
+
```
|
230
|
+
|
231
|
+
## Development
|
232
|
+
|
233
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
234
|
+
|
235
|
+
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
236
|
+
|
237
|
+
## TODO
|
238
|
+
|
239
|
+
* Think more about missing translations and find a nice way to handle them
|
240
|
+
|
241
|
+
## Contributing
|
242
|
+
|
243
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/timsly/i18n-transformers.
|
244
|
+
|
245
|
+
## License
|
246
|
+
|
247
|
+
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
data/Rakefile
ADDED
data/bin/console
ADDED
data/bin/setup
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'i18n/transformers/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'i18n-transformers'
|
8
|
+
spec.version = I18n::Transformers::VERSION
|
9
|
+
spec.authors = ['Tim Masliuchenko']
|
10
|
+
spec.email = ['insside@gmail.com']
|
11
|
+
|
12
|
+
spec.summary = 'Transformers for I18n ruby library'
|
13
|
+
spec.description = 'Transformers for I18n ruby library'
|
14
|
+
spec.homepage = 'https://github.com/timsly/i18n-transformers'
|
15
|
+
spec.license = 'MIT'
|
16
|
+
|
17
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
18
|
+
f.match(%r{^(test|spec|features)/})
|
19
|
+
end
|
20
|
+
spec.bindir = 'exe'
|
21
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
22
|
+
spec.require_paths = ['lib']
|
23
|
+
|
24
|
+
spec.add_dependency 'i18n'
|
25
|
+
spec.add_dependency 'activesupport'
|
26
|
+
|
27
|
+
spec.add_development_dependency 'bundler', '~> 1.15'
|
28
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
29
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
30
|
+
spec.add_development_dependency 'redcarpet'
|
31
|
+
spec.add_development_dependency 'kramdown'
|
32
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'i18n/transformers'
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'i18n'
|
2
|
+
require 'active_support/inflector'
|
3
|
+
|
4
|
+
require 'i18n/transformers/version'
|
5
|
+
|
6
|
+
require 'i18n/transformers/collection'
|
7
|
+
require 'i18n/transformers/collection/base'
|
8
|
+
require 'i18n/transformers/collection/generic'
|
9
|
+
require 'i18n/transformers/collection/markdown'
|
10
|
+
|
11
|
+
module I18n
|
12
|
+
module Transformers
|
13
|
+
def transformers
|
14
|
+
@transformers ||= Collection.new
|
15
|
+
end
|
16
|
+
|
17
|
+
def translate(*args)
|
18
|
+
result = super
|
19
|
+
|
20
|
+
# TODO: Handle missing translations.
|
21
|
+
# In theory we don't need to pass them to transformers, but there is no nice way to do that,
|
22
|
+
# only with force raising and handling it again
|
23
|
+
|
24
|
+
key = args.first
|
25
|
+
transformers.all.inject(result) do |transformed, transformer|
|
26
|
+
transformer.transform(key, transformed)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
extend Transformers
|
32
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
module I18n
|
2
|
+
module Transformers
|
3
|
+
class Collection
|
4
|
+
def initialize
|
5
|
+
@collection = []
|
6
|
+
end
|
7
|
+
|
8
|
+
def all
|
9
|
+
@collection
|
10
|
+
end
|
11
|
+
|
12
|
+
def find(name_or_obj, index: false)
|
13
|
+
name = name_or_obj.respond_to?(:name) ? name_or_obj.name : name_or_obj.to_s
|
14
|
+
method = index ? :index : :find
|
15
|
+
|
16
|
+
all.send(method) { |item| item.name == name }
|
17
|
+
end
|
18
|
+
|
19
|
+
def register(name = nil, options = {}, &block)
|
20
|
+
name, options = nil, name if name.is_a?(Hash)
|
21
|
+
position = options.extract! :before, :after, :at
|
22
|
+
|
23
|
+
transformer = if name.respond_to?(:transform)
|
24
|
+
name
|
25
|
+
else
|
26
|
+
klass = name.is_a?(Symbol) ? collection_class_for(name) : name
|
27
|
+
klass = I18n::Transformers::Collection::Generic if !klass || name.is_a?(String)
|
28
|
+
klass.new(options.merge(name: name), &block)
|
29
|
+
end
|
30
|
+
|
31
|
+
insert(transformer, position)
|
32
|
+
end
|
33
|
+
|
34
|
+
def insert(transformer, at: nil, before: nil, after: nil)
|
35
|
+
unless transformer.respond_to?(:transform)
|
36
|
+
raise ArgumentError, 'passed object need to response to transform method'
|
37
|
+
end
|
38
|
+
|
39
|
+
if [at, before, after].count(&:nil?) < 2
|
40
|
+
raise ArgumentError, 'before, after and at cannot be used at the same time'
|
41
|
+
end
|
42
|
+
|
43
|
+
index = at || find(before || after, index: true)
|
44
|
+
|
45
|
+
if index
|
46
|
+
raise ArgumentError, 'invalid index' if index < 0 || index > all.size
|
47
|
+
@collection.insert(after ? index + 1 : index, transformer)
|
48
|
+
else
|
49
|
+
@collection << transformer
|
50
|
+
end
|
51
|
+
|
52
|
+
transformer
|
53
|
+
end
|
54
|
+
|
55
|
+
def reset
|
56
|
+
@collection = []
|
57
|
+
self
|
58
|
+
end
|
59
|
+
|
60
|
+
private
|
61
|
+
|
62
|
+
def collection_class_for(shortcut)
|
63
|
+
klass = shortcut.to_s.classify
|
64
|
+
"I18n::Transformers::Collection::#{klass}".constantize
|
65
|
+
rescue NameError
|
66
|
+
nil
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module I18n
|
2
|
+
module Transformers
|
3
|
+
class Collection
|
4
|
+
class Base
|
5
|
+
def initialize(**options, &block)
|
6
|
+
@options = options
|
7
|
+
@block = block
|
8
|
+
end
|
9
|
+
|
10
|
+
def name
|
11
|
+
@name ||= self.class.to_s.demodulize.underscore
|
12
|
+
end
|
13
|
+
|
14
|
+
def transform(key, value)
|
15
|
+
raise NonImplementedError
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module I18n
|
2
|
+
module Transformers
|
3
|
+
class Collection
|
4
|
+
class Generic < Base
|
5
|
+
def initialize(name: nil, **options, &block)
|
6
|
+
super options, &block
|
7
|
+
@name = name ? name.to_s : to_s
|
8
|
+
raise ArgumentError, 'block is missing' unless @block
|
9
|
+
end
|
10
|
+
|
11
|
+
def transform(key, value)
|
12
|
+
@block.call(key, value)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
module I18n
|
2
|
+
module Transformers
|
3
|
+
class Collection
|
4
|
+
class Markdown < Base
|
5
|
+
def initialize(key_pattern: /(\b|_|\.)md$/, adapter: nil, **options, &block)
|
6
|
+
super options, &block
|
7
|
+
self.key_pattern = key_pattern
|
8
|
+
self.adapter = adapter
|
9
|
+
end
|
10
|
+
|
11
|
+
def key_pattern=(pattern)
|
12
|
+
@key_pattern = pattern.is_a?(Regexp) ? pattern : Regexp.quote(pattern.to_s)
|
13
|
+
end
|
14
|
+
|
15
|
+
def adapter=(adptr)
|
16
|
+
return unless adptr
|
17
|
+
|
18
|
+
require adptr
|
19
|
+
@adapter = adptr
|
20
|
+
end
|
21
|
+
|
22
|
+
def transform(key, value)
|
23
|
+
return value unless @key_pattern =~ key.to_s
|
24
|
+
|
25
|
+
res = @block ? @block.call(key, value) : markdown_to_html(value)
|
26
|
+
res.respond_to?(:html_safe) ? res.html_safe : res
|
27
|
+
end
|
28
|
+
|
29
|
+
def adapter
|
30
|
+
@adapter ||= begin
|
31
|
+
current_adapter = nil
|
32
|
+
available_adapters.each do |a|
|
33
|
+
begin
|
34
|
+
self.adapter = a
|
35
|
+
current_adapter = a
|
36
|
+
break
|
37
|
+
rescue LoadError
|
38
|
+
next
|
39
|
+
end
|
40
|
+
end
|
41
|
+
current_adapter
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def available_adapters
|
46
|
+
@available_adapters ||= private_methods
|
47
|
+
.grep(/^transform_with_(.+)$/) { |m| $~[1].to_s }
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
|
52
|
+
def markdown_to_html(value)
|
53
|
+
method = "transform_with_#{adapter}"
|
54
|
+
raise "Unknown adapter: #{adapter}" unless respond_to?(method, true)
|
55
|
+
|
56
|
+
send method, value
|
57
|
+
end
|
58
|
+
|
59
|
+
def transform_with_redcarpet(value)
|
60
|
+
@redcarpet ||= Redcarpet::Markdown.new(Redcarpet::Render::HTML, @options)
|
61
|
+
@redcarpet.render(value)
|
62
|
+
end
|
63
|
+
|
64
|
+
def transform_with_kramdown(value)
|
65
|
+
Kramdown::Document.new(value).to_html
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
metadata
ADDED
@@ -0,0 +1,159 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: i18n-transformers
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Tim Masliuchenko
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-10-24 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: i18n
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: activesupport
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.15'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.15'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '10.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '10.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '3.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: redcarpet
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: kramdown
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
description: Transformers for I18n ruby library
|
112
|
+
email:
|
113
|
+
- insside@gmail.com
|
114
|
+
executables: []
|
115
|
+
extensions: []
|
116
|
+
extra_rdoc_files: []
|
117
|
+
files:
|
118
|
+
- ".gitignore"
|
119
|
+
- ".rspec"
|
120
|
+
- ".travis.yml"
|
121
|
+
- Gemfile
|
122
|
+
- LICENSE.txt
|
123
|
+
- README.md
|
124
|
+
- Rakefile
|
125
|
+
- bin/console
|
126
|
+
- bin/setup
|
127
|
+
- i18n-transformers.gemspec
|
128
|
+
- lib/i18n-transformers.rb
|
129
|
+
- lib/i18n/transformers.rb
|
130
|
+
- lib/i18n/transformers/collection.rb
|
131
|
+
- lib/i18n/transformers/collection/base.rb
|
132
|
+
- lib/i18n/transformers/collection/generic.rb
|
133
|
+
- lib/i18n/transformers/collection/markdown.rb
|
134
|
+
- lib/i18n/transformers/version.rb
|
135
|
+
homepage: https://github.com/timsly/i18n-transformers
|
136
|
+
licenses:
|
137
|
+
- MIT
|
138
|
+
metadata: {}
|
139
|
+
post_install_message:
|
140
|
+
rdoc_options: []
|
141
|
+
require_paths:
|
142
|
+
- lib
|
143
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
144
|
+
requirements:
|
145
|
+
- - ">="
|
146
|
+
- !ruby/object:Gem::Version
|
147
|
+
version: '0'
|
148
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
requirements: []
|
154
|
+
rubyforge_project:
|
155
|
+
rubygems_version: 2.5.2
|
156
|
+
signing_key:
|
157
|
+
specification_version: 4
|
158
|
+
summary: Transformers for I18n ruby library
|
159
|
+
test_files: []
|