translighterate 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/translighterate.rb +26 -2
  3. metadata +58 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 782ac46b1b8cdafe7c616378e7b54b70c8c8a249
4
- data.tar.gz: 401581f59e8bcb4ac546b785eb2c3c27ab93174d
3
+ metadata.gz: 702abdb37c389df4421a0b0e337ea946dfd838c3
4
+ data.tar.gz: a1330ad9a48e6c9c8a7a0f0a8e616acf755beece
5
5
  SHA512:
6
- metadata.gz: f436ea5d5a1dde04363ecbd04bee8fd78f18fca7dc178ac444d5d62dbce9c7ad909832ebeed25d915747350a001ceb25ae06d0c7a0400018355927fd6f5c1f2e
7
- data.tar.gz: 245ed45ff51ec903dd4122bfb28a4ee85c834c0366115644425d5b5ac2ab154e25a071a318927e4ad1b3bbb1f985fe387d462082733d3d43017cc4f621620fdc
6
+ metadata.gz: c08ef0b945c23cf01aff56ea4b55f5d011316ddb0e35bd36d30b69f5b358712f869cb04119b445ef9ea9276165364cb3ff0927d56b13e6c8670efd1882709066
7
+ data.tar.gz: 643c4f1bacaac643553767dd2c1022409e721a532a4fa8e47c75d19ab83892e7bbfd73209926230e11951bcf376857fe65f96e61c989b8863ae68827a0702e55
@@ -1,5 +1,29 @@
1
+ require 'action_view'
2
+ include ActionView::Helpers::TextHelper
3
+
1
4
  class Translighterate
2
- def self.hi
3
- puts "Hello world"
5
+ def self.highlight(text, phrases, options = {})
6
+ text = sanitize(text) if options.fetch(:sanitize, true)
7
+
8
+ if text.blank? || phrases.blank?
9
+ text || ""
10
+ else
11
+ match = Array(phrases).map do |p|
12
+ Regexp === p ? p.to_s : Regexp.escape(p)
13
+ end.join('|')
14
+
15
+ # Transliteration trick from:
16
+ # https://github.com/cubing/worldcubeassociation.org/issues/238#issuecomment-234702800
17
+ transliterated = text.mb_chars.normalize(:kd).gsub(/[\p{Mn}]/,'').to_s
18
+ transliterated.gsub(/(#{match})(?![^<]*?>)/i) do |found|
19
+ original_text_found = text[Range.new(*$~.offset(0), true)]
20
+ if block_given?
21
+ yield original_text_found
22
+ else
23
+ highlighter = options.fetch(:highlighter, '<mark>\1</mark>')
24
+ highlighter.gsub(/\\1/, original_text_found)
25
+ end
26
+ end
27
+ end.html_safe
4
28
  end
5
29
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: translighterate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Fleischman
@@ -9,7 +9,63 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
  date: 2016-09-04 00:00:00.000000000 Z
12
- dependencies: []
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: actionview
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '5.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '5.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.5'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.5'
41
+ - !ruby/object:Gem::Dependency
42
+ name: byebug
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '9.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '9.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '11.2'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '11.2'
13
69
  description: For example, highlighting 'duss' in 'Düsseldorf' will actually match
14
70
  something.
15
71
  email: jeremyfleischman@gmail.com