latex-decode 0.2.0 → 0.3.2

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
- SHA1:
3
- metadata.gz: 0d7ee959a3494ff7a4944bb79f65ce12c6d881dc
4
- data.tar.gz: 7f3199fd6301438401a8a1e9f94fb2cc5dc555e4
2
+ SHA256:
3
+ metadata.gz: 9192df4a57585120960f5b8f6e2aba62bd900cdd8c649a15cefca04f4819f2f3
4
+ data.tar.gz: 6d692566a583b9bb70a67763c6c803f4b7e98c2e9c50b006a720cee30b39c72d
5
5
  SHA512:
6
- metadata.gz: 41713ce86f026006771e711511bf002992a7c7da8abeca6c88e3c1885a3611ead9c98a7ac2795c94d86a7141718427d5875d98b3f3db18fecc76835cf301a13d
7
- data.tar.gz: 82a459edb974a2d31908d210f91acd1f7db64074d971df9716709ec62b3f7fb11cfa554bb14488101ed353b54d52c472a02361e0374ce2c9011f813a8f7b3c8e
6
+ metadata.gz: 6a52d3db67061ed7c206cfa9b52d99ea181ff02bc2be8a21b6b55ebab19f8528565f3b4a882cef8c3b84f0319b99c63e5eef16d7c779ed80fc3405871bf95379
7
+ data.tar.gz: 0ac36cc1adaeff8d919ab78dc98fcecaadb663519ae6c3bd201327041a704c7e24b170f1143d700be8b999bb1561eb4c36e723b8aaf640fc4f78fb2b9ebfa5c8
@@ -2,14 +2,18 @@ language: ruby
2
2
  bundler_args: --without debug
3
3
  sudo: false
4
4
  cache: bundler
5
+ before_install:
6
+ - gem update --system
7
+ - gem update bundler
5
8
  rvm:
6
- - 1.9.3
7
- - 2.0.0
8
- - 2.1.0
9
- - 2.2.0
9
+ - 2.3
10
+ - 2.4
11
+ - 2.5
12
+ - 2.6
13
+ - 2.7
10
14
  - jruby-19mode
11
15
  - jruby-head
12
- - rbx-2
16
+ #- rbx-2
13
17
  notifications:
14
18
  email:
15
19
  recipients:
data/Gemfile CHANGED
@@ -15,7 +15,7 @@ group :debug do
15
15
  gem 'rubinius-compiler', :require => false, :platforms => :rbx
16
16
  end
17
17
 
18
- gem 'unicode', '~> 0.4', :platforms => [:mri, :rbx, :mswin, :mingw]
18
+ gem 'unicode', '~> 0.4', :platforms => [:mri, :rbx, :mswin, :mingw] if RUBY_VERSION < '2.4'
19
19
  gem 'ritex', '~> 1.0.1'
20
20
 
21
21
  gem 'rubysl', '~> 2.0', :platforms => :rbx
@@ -29,15 +29,18 @@ Feature: Decode LaTeX punctuation directives
29
29
  | \\textoverline | ‾ |
30
30
  | \\langle | ⟨ |
31
31
  | \\rangle | ⟩ |
32
+ | \\textquotesingle | ’ |
32
33
 
33
34
 
34
35
  Scenarios: Punctuation symbols
35
- | latex | unicode | description |
36
- | - | - | hyphen |
37
- | -- | – | en-dash |
38
- | --- | — | em-dash |
39
- | \\~{} | ~ | tilde |
40
- | X\\ X | X X | space |
36
+ | latex | unicode | description |
37
+ | - | - | hyphen |
38
+ | -- | – | en-dash |
39
+ | --- | — | em-dash |
40
+ | \\~{} | ~ | tilde |
41
+ | \\textasciitilde{} | ~ | tilde |
42
+ | \\textasciitilde | ~ | tilde |
43
+ | X\\ X | X X | space |
41
44
 
42
45
  Scenarios: Quotation marks
43
46
  | latex | unicode | description |
@@ -0,0 +1,21 @@
1
+ Feature: Decode LaTeX symbol directives
2
+ As a hacker who works with LaTeX
3
+ I want to be able to decode LaTeX symbol directives
4
+
5
+ Scenario Outline: LaTeX to Unicode transformation
6
+ When I decode the string '<latex>'
7
+ Then the result should be '<unicode>'
8
+
9
+ Scenarios: Arrows
10
+ | latex | unicode |
11
+ | \\leftarrow | ← |
12
+ | \\uparrow | ↑ |
13
+ | \\downarrow | ↓ |
14
+ | \\rightarrow | → |
15
+
16
+ Scenarios: Whitespace
17
+ | latex | unicode | description |
18
+ | x\\,x | x x | small space |
19
+ | x~x | x x | non-breaking space |
20
+ | ~x |  x | non-breaking space |
21
+
@@ -12,12 +12,11 @@ Gem::Specification.new do |s|
12
12
  s.homepage = 'http://github.com/inukshuk/latex-decode'
13
13
  s.summary = 'Decodes LaTeX to Unicode.'
14
14
  s.description = 'Decodes strings formatted in LaTeX to equivalent Unicode strings.'
15
- s.license = 'GPL-3'
15
+ s.license = 'GPL-3.0'
16
16
 
17
17
  if RUBY_PLATFORM =~ /java/
18
18
  s.platform = 'java'
19
19
  else
20
- s.add_dependency('unicode', '~> 0.4')
21
20
  s.platform = 'ruby'
22
21
  end
23
22
 
@@ -30,4 +29,4 @@ Gem::Specification.new do |s|
30
29
  s.extra_rdoc_files = %w{README.md LICENSE}
31
30
  end
32
31
 
33
- # vim: syntax=ruby
32
+ # vim: syntax=ruby
@@ -31,7 +31,7 @@ require 'latex/decode/greek'
31
31
  module LaTeX
32
32
 
33
33
  class << self
34
- def decode (string)
34
+ def decode(string)
35
35
  return string unless string.respond_to?(:to_s)
36
36
 
37
37
  string = string.is_a?(String) ? string.dup : string.to_s
@@ -7,7 +7,7 @@ module LaTeX
7
7
  class << self
8
8
  attr_reader :patterns, :map
9
9
 
10
- def inherited (base)
10
+ def inherited(base)
11
11
  subclasses << base
12
12
  end
13
13
 
@@ -15,11 +15,11 @@ module LaTeX
15
15
  @subclasses ||= []
16
16
  end
17
17
 
18
- def decode (string)
18
+ def decode(string)
19
19
  decode!(string.dup)
20
20
  end
21
21
 
22
- def decode! (string)
22
+ def decode!(string)
23
23
  patterns.each do |pattern|
24
24
  string.gsub!(pattern) { |m| [$2,map[$1],$3].compact.join }
25
25
  end
@@ -32,22 +32,25 @@ module LaTeX
32
32
 
33
33
  module_function
34
34
 
35
- def normalize (string)
35
+ def normalize(string)
36
36
  string.gsub!(/\\(?:i|j)\b/) { |m| m == '\\i' ? 'ı' : 'ȷ' }
37
37
 
38
- # \foo\ bar -> \foo{} bar
38
+ # \foo\ bar -> \foo{} bar
39
39
  string.gsub!(/(\\[a-zA-Z]+)\\(\s+)/, '\1{}\2')
40
40
 
41
- # Aaaa\o, -> Aaaa\o{},
41
+ # Aaaa\o, -> Aaaa\o{},
42
42
  string.gsub!(/([^{]\\\w)([;,.:%])/, '\1{}\2')
43
43
 
44
- # \c cb -> \c{cb}
44
+ # \c cb -> \c{cb}
45
45
  string.gsub!(/(\\[^\sij&#\$\{\}_~%])\s+([[:alpha:]]+)\b/i, '\1{\2}')
46
46
 
47
+ # non-breaking spaces
48
+ string.gsub!(/(\A|[^\\])~/, LaTeX.to_unicode("\\1\u00a0"))
49
+
47
50
  string
48
51
  end
49
52
 
50
- def strip_braces (string)
53
+ def strip_braces(string)
51
54
  string.gsub!(/(^|[^\\])([\{\}]+)/, '\1')
52
55
  string.gsub!(/\\(\{|\})/, '\1')
53
56
  string
@@ -33,27 +33,35 @@ if RUBY_PLATFORM == 'java'
33
33
  end
34
34
 
35
35
  else
36
- begin
37
- require 'unicode'
38
-
39
- # Use the Unicode gem
36
+ if RUBY_VERSION >= '2.3'
40
37
  module LaTeX
41
38
  def self.normalize_C(string)
42
- Unicode::normalize_C(string)
39
+ string.unicode_normalize(:nfc)
43
40
  end
44
41
  end
45
- rescue LoadError
42
+ else
46
43
  begin
47
- require 'active_support/multibyte/chars'
44
+ require 'unicode'
48
45
 
49
- # Use ActiveSupport's normalizer
46
+ # Use the Unicode gem
50
47
  module LaTeX
51
48
  def self.normalize_C(string)
52
- ActiveSupport::Multibyte::Chars.new(string).normalize(:c).to_s
49
+ Unicode::normalize_C(string)
53
50
  end
54
51
  end
55
52
  rescue LoadError
56
- fail "Failed to load unicode normalizer: please gem install unicode (or active_support)"
53
+ begin
54
+ require 'active_support/multibyte/chars'
55
+
56
+ # Use ActiveSupport's normalizer
57
+ module LaTeX
58
+ def self.normalize_C(string)
59
+ ActiveSupport::Multibyte::Chars.new(string).normalize(:c).to_s
60
+ end
61
+ end
62
+ rescue LoadError
63
+ fail "Failed to load unicode normalizer: please gem install unicode (or active_support)"
64
+ end
57
65
  end
58
66
  end
59
67
  end
@@ -6,7 +6,7 @@ module LaTeX
6
6
  /\$([^\$]+)\$/
7
7
  ].freeze
8
8
 
9
- def self.decode! (string)
9
+ def self.decode!(string)
10
10
  patterns.each do |pattern|
11
11
  string.gsub!(pattern) do
12
12
  LaTeX.to_math_ml($1)
@@ -30,6 +30,7 @@ module LaTeX
30
30
  textasciicircum ^
31
31
  textbackslash \\
32
32
  textasciitilde ~
33
+ textquotesingle '
33
34
  }].freeze
34
35
 
35
36
  @symbols = Hash[*%w[
@@ -4,7 +4,8 @@ module LaTeX
4
4
  module Decode
5
5
 
6
6
  class Symbols < Decoder
7
- @map = Hash[*%w{
7
+
8
+ @map = Hash[*%W{
8
9
  textcolonmonetary ₡
9
10
  textlira ₤
10
11
  textnaira ₦
@@ -211,7 +212,8 @@ module LaTeX
211
212
  tone1 ˩
212
213
  ss ß
213
214
  , \u2009
214
- }].freeze
215
+ }.map { |s| LaTeX.to_unicode(s) }].freeze
216
+
215
217
 
216
218
  @patterns = [
217
219
  /\\(#{ map.keys.map { |k| Regexp.escape(k) }.join('|') })(?:\{\}|\s+|\b)/ou
@@ -1,5 +1,5 @@
1
1
  module LaTeX
2
2
  module Decode
3
- VERSION = '0.2.0'.freeze
3
+ VERSION = '0.3.2'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: latex-decode
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sylvester Keil
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-02 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: unicode
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '0.4'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '0.4'
11
+ date: 2020-10-14 00:00:00.000000000 Z
12
+ dependencies: []
27
13
  description: Decodes strings formatted in LaTeX to equivalent Unicode strings.
28
14
  email:
29
15
  - http://sylvester.keil.or.at
@@ -49,6 +35,7 @@ files:
49
35
  - features/special_characters.feature
50
36
  - features/step_definitions/latex.rb
51
37
  - features/support/env.rb
38
+ - features/symbols.feature
52
39
  - features/umlauts.feature
53
40
  - latex-decode.gemspec
54
41
  - lib/latex/decode.rb
@@ -63,9 +50,9 @@ files:
63
50
  - lib/latex/decode/version.rb
64
51
  homepage: http://github.com/inukshuk/latex-decode
65
52
  licenses:
66
- - GPL-3
53
+ - GPL-3.0
67
54
  metadata: {}
68
- post_install_message:
55
+ post_install_message:
69
56
  rdoc_options:
70
57
  - "--line-numbers"
71
58
  - "--inline-source"
@@ -87,9 +74,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
87
74
  - !ruby/object:Gem::Version
88
75
  version: '0'
89
76
  requirements: []
90
- rubyforge_project:
91
- rubygems_version: 2.4.5
92
- signing_key:
77
+ rubygems_version: 3.1.2
78
+ signing_key:
93
79
  specification_version: 4
94
80
  summary: Decodes LaTeX to Unicode.
95
81
  test_files:
@@ -102,5 +88,5 @@ test_files:
102
88
  - features/special_characters.feature
103
89
  - features/step_definitions/latex.rb
104
90
  - features/support/env.rb
91
+ - features/symbols.feature
105
92
  - features/umlauts.feature
106
- has_rdoc: