latex-decode 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,12 +2,12 @@ Feature: Decode LaTeX punctuation directives
2
2
  As a hacker who works with LaTeX
3
3
  I want to be able to decode LaTeX punctuation marks
4
4
 
5
- Scenario Outline: LaTeX to Unicode transformation
6
- When I decode the string '<latex>'
7
- Then the result should be '<unicode>'
5
+ Scenario Outline: LaTeX to Unicode transformation
6
+ When I decode the string '<latex>'
7
+ Then the result should be '<unicode>'
8
8
 
9
- Scenarios: Punctuation macros
10
- | latex | unicode |
9
+ Scenarios: Punctuation macros
10
+ | latex | unicode |
11
11
  | \\textendash | – |
12
12
  | \\textemdash | — |
13
13
  | \\textquoteleft | ‘ |
@@ -31,15 +31,15 @@ Feature: Decode LaTeX punctuation directives
31
31
  | \\rangle | ⟩ |
32
32
 
33
33
 
34
- Scenarios: Punctuation symbols
35
- | latex | unicode | description |
36
- | - | - | hyphen |
37
- | -- | – | en-dash |
38
- | --- | — | em-dash |
34
+ Scenarios: Punctuation symbols
35
+ | latex | unicode | description |
36
+ | - | - | hyphen |
37
+ | -- | – | en-dash |
38
+ | --- | — | em-dash |
39
39
 
40
- Scenarios: Quotation marks
41
- | latex | unicode | description |
42
- | `` | “ | left double quotes |
43
- | '' | ” | right double quotes |
44
- | ` | ‘ | left single quotes |
45
- | ' | ’ | right single quotes |
40
+ Scenarios: Quotation marks
41
+ | latex | unicode | description |
42
+ | `` | “ | left double quotes |
43
+ | '' | ” | right double quotes |
44
+ | ` | ‘ | left single quotes |
45
+ | ' | ’ | right single quotes |
@@ -0,0 +1,20 @@
1
+ Feature: Decode LaTeX special characters
2
+ As a hacker who works with LaTeX
3
+ I want to be able to decode a few special characters which are escaped by LaTeX
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: Special characters
10
+ | latex | unicode |
11
+ | \\\& | & |
12
+ | \\# | # |
13
+ | \\$ | $ |
14
+ | \\% | % |
15
+ | \\{ | { |
16
+ | \\} | } |
17
+ | \\_ | _ |
18
+ | \\~{} | ~ |
19
+ | \\textbackslash{} | \\ |
20
+ | \\textasciicircum{} | ^ |
@@ -23,6 +23,11 @@ require 'latex/decode/version'
23
23
  require 'latex/decode/compatibility'
24
24
  require 'latex/decode/base'
25
25
 
26
+ require 'latex/decode/accents'
27
+ require 'latex/decode/diacritics'
28
+ require 'latex/decode/punctuation'
29
+ require 'latex/decode/symbols'
30
+
26
31
  module LaTeX
27
32
 
28
33
  class << self
@@ -2,12 +2,7 @@
2
2
 
3
3
  module LaTeX
4
4
  module Decode
5
-
6
- autoload :Accents, 'latex/decode/accents'
7
- autoload :Diacritics, 'latex/decode/diacritics'
8
- autoload :Punctuation, 'latex/decode/punctuation'
9
- autoload :Symbols, 'latex/decode/symbols'
10
-
5
+
11
6
  class Decoder
12
7
  class << self
13
8
  attr_reader :patterns, :map
@@ -48,7 +43,7 @@ module LaTeX
48
43
  string.gsub!(/([^{]\\\w)([;,.:%])/, '\1{}\2')
49
44
 
50
45
  # \c cb -> \c{cb}
51
- string.gsub!(/(\\[^\sij])\s+([[:alpha:]]+)\b/i, '\1{\2}')
46
+ string.gsub!(/(\\[^\sij&#\$\{\}_~%])\s+([[:alpha:]]+)\b/i, '\1{\2}')
52
47
 
53
48
  string
54
49
  end
@@ -5,7 +5,7 @@ module LaTeX
5
5
 
6
6
  class Punctuation < Decoder
7
7
 
8
- @macros = Hash[*%W{
8
+ @macros = Hash[*%w{
9
9
  textendash –
10
10
  textemdash —
11
11
  textquoteleft ‘
@@ -27,6 +27,8 @@ module LaTeX
27
27
  textoverline ‾
28
28
  langle ⟨
29
29
  rangle ⟩
30
+ textasciicircum ^
31
+ textbackslash \\
30
32
  }].freeze
31
33
 
32
34
  @symbols = Hash[*%w[
@@ -42,9 +44,9 @@ module LaTeX
42
44
  @map = @macros.merge(@symbols).freeze
43
45
 
44
46
  @patterns = [
45
- /\\(#{ @macros.keys.map { |k| Regexp.escape(k) }.compact.join('|') })(?:\{\}|\s+|\b)/ou,
47
+ /\\(#{ @macros.keys.map { |k| Regexp.escape(k) }.compact.join('|') })(?:\{\}|\s+|\b|$)/ou,
46
48
  /(-+|`{1,2}|'{1,2})/,
47
- /()\\([$%#_])(\{\})?/,
49
+ /()\\([$%#_&])(\{\})?/,
48
50
  /()\\(~)\{\}/
49
51
  ].freeze
50
52
 
@@ -4,7 +4,7 @@ module LaTeX
4
4
  module Decode
5
5
 
6
6
  class Symbols < Decoder
7
- @map = Hash[*%W{
7
+ @map = Hash[*%w{
8
8
  textcolonmonetary ₡
9
9
  textlira ₤
10
10
  textnaira ₦
@@ -1,5 +1,5 @@
1
1
  module LaTeX
2
2
  module Decode
3
- VERSION = '0.0.9'.freeze
3
+ VERSION = '0.0.10'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: latex-decode
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-10-28 00:00:00.000000000Z
12
+ date: 2011-12-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: unicode
16
- requirement: &2153130380 !ruby/object:Gem::Requirement
16
+ requirement: &70305758476260 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0.4'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2153130380
24
+ version_requirements: *70305758476260
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &2153129740 !ruby/object:Gem::Requirement
27
+ requirement: &70305758475220 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0.8'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *2153129740
35
+ version_requirements: *70305758475220
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: bundler
38
- requirement: &2153129080 !ruby/object:Gem::Requirement
38
+ requirement: &70305758473880 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '1.0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *2153129080
46
+ version_requirements: *70305758473880
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rdoc
49
- requirement: &2153128380 !ruby/object:Gem::Requirement
49
+ requirement: &70305758472780 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '3.6'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *2153128380
57
+ version_requirements: *70305758472780
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rspec
60
- requirement: &2153127640 !ruby/object:Gem::Requirement
60
+ requirement: &70305758470880 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '2.6'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *2153127640
68
+ version_requirements: *70305758470880
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: cucumber
71
- requirement: &2153126800 !ruby/object:Gem::Requirement
71
+ requirement: &70305758469080 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,7 +76,7 @@ dependencies:
76
76
  version: '1.0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *2153126800
79
+ version_requirements: *70305758469080
80
80
  description: Decodes strings formatted in LaTeX to equivalent Unicode strings.
81
81
  email:
82
82
  - http://sylvester.keil.or.at
@@ -94,6 +94,7 @@ files:
94
94
  - features/diacritics.feature
95
95
  - features/non-latex.feature
96
96
  - features/punctuation.feature
97
+ - features/special_characters.feature
97
98
  - features/step_definitions/latex.rb
98
99
  - features/support/env.rb
99
100
  - features/umlauts.feature
@@ -143,6 +144,7 @@ test_files:
143
144
  - features/diacritics.feature
144
145
  - features/non-latex.feature
145
146
  - features/punctuation.feature
147
+ - features/special_characters.feature
146
148
  - features/step_definitions/latex.rb
147
149
  - features/support/env.rb
148
150
  - features/umlauts.feature