latex-decode 0.1.1 → 0.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,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- Njg4ZWIyZGNmNTc1ZWNjNWE0ZGFkZjdmNzFlZmMwNmM5YWZkZjRlNg==
5
- data.tar.gz: !binary |-
6
- MDEzM2E3ZGI2NzFhYmU5MmI3OGMxMTljMDdmNWMzMWFiYWMyNjIzZg==
7
- !binary "U0hBNTEy":
8
- metadata.gz: !binary |-
9
- NDExYjMyNjdmYmU5OWYxMjNmMmE5OTZjNWIyNmIwOTcxNGZlYzQwMjc4OGE5
10
- NDJiYjdkMWQyN2JlN2FhMDYzZWRiMTFmMmM2YWQ0NTJjNjJjMmNjNzEzODNm
11
- NGFjNTVlODhlNDUxYjc2YmQxNDA4YTliMmE5M2U4NDljNWJlNGI=
12
- data.tar.gz: !binary |-
13
- NDZiMzJkMTRkZjY1OWRlYzJlYzk3YTU0NzhhOTVkZTIwYWVhM2MxNWQ1OWFh
14
- YzY1ZDhiNzhhMWU5YzVhM2M1MWVmZjNkZjUyZmE1NDIxM2Y3MjBhY2MxY2Ji
15
- MmY3MzYwOTI4MGFjYWNkOTY5NjU5M2NhZmZlMWQ1MzczNDFkZWU=
2
+ SHA1:
3
+ metadata.gz: 0d7ee959a3494ff7a4944bb79f65ce12c6d881dc
4
+ data.tar.gz: 7f3199fd6301438401a8a1e9f94fb2cc5dc555e4
5
+ SHA512:
6
+ metadata.gz: 41713ce86f026006771e711511bf002992a7c7da8abeca6c88e3c1885a3611ead9c98a7ac2795c94d86a7141718427d5875d98b3f3db18fecc76835cf301a13d
7
+ data.tar.gz: 82a459edb974a2d31908d210f91acd1f7db64074d971df9716709ec62b3f7fb11cfa554bb14488101ed353b54d52c472a02361e0374ce2c9011f813a8f7b3c8e
data/.gitignore CHANGED
@@ -1,3 +1,6 @@
1
1
  Gemfile.lock
2
2
  .ruby-version
3
3
  .rbx
4
+ .ruby-version
5
+ *swp
6
+ .bundle
data/.travis.yml CHANGED
@@ -1,19 +1,18 @@
1
1
  language: ruby
2
2
  bundler_args: --without debug
3
+ sudo: false
4
+ cache: bundler
3
5
  rvm:
4
6
  - 1.9.3
5
- - 1.9.2
6
7
  - 2.0.0
7
- - jruby-18mode
8
+ - 2.1.0
9
+ - 2.2.0
8
10
  - jruby-19mode
9
- # - rbx-18mode
10
- - rbx-19mode
11
- - ruby-head
12
11
  - jruby-head
13
- - 1.8.7
14
- - ree
12
+ - rbx-2
15
13
  notifications:
16
14
  email:
17
- - sk@semicolon.at
18
- on_success: change
19
- on_failure: always
15
+ recipients:
16
+ - sylvester@keil.or.at
17
+ on_success: change
18
+ on_failure: always
data/Gemfile CHANGED
@@ -3,15 +3,19 @@ gemspec
3
3
 
4
4
  group :test do
5
5
  gem 'rake'
6
- gem 'rspec', '~> 2.13'
7
- gem 'cucumber', '~> 1.2'
6
+ gem 'rspec', '~> 3.0'
7
+ gem 'cucumber', '~> 1.3'
8
8
  end
9
9
 
10
10
  group :debug do
11
- gem 'debugger', :platforms => [:mri_19, :mri_20]
12
- gem 'ruby-debug', :platforms => [:mri_18]
11
+ gem 'debugger', :platforms => :mri_19
12
+ gem 'byebug', :platforms => :mri if RUBY_VERSION > '2.0'
13
+
14
+ gem 'rubinius-debugger', :require => false, :platforms => :rbx
15
+ gem 'rubinius-compiler', :require => false, :platforms => :rbx
13
16
  end
14
17
 
15
18
  gem 'unicode', '~> 0.4', :platforms => [:mri, :rbx, :mswin, :mingw]
16
-
17
19
  gem 'ritex', '~> 1.0.1'
20
+
21
+ gem 'rubysl', '~> 2.0', :platforms => :rbx
data/README.md CHANGED
@@ -36,7 +36,7 @@ describe the example above as:
36
36
  Feature: Decode LaTeX accents
37
37
  As a hacker who works with LaTeX
38
38
  I want to be able to decode LaTeX accents
39
-
39
+
40
40
  Scenario: A French sentence
41
41
  When I decode the string "dipl\\^{o}me d'\\'{e}tudes sup\\'erieures"
42
42
  Then the result should be "diplôme d'études supérieures"
@@ -47,7 +47,7 @@ Credits
47
47
  Kudos and thanks to all [contributors](https://github.com/inukshuk/latex-decode/contributors)
48
48
  who have made LaTeX::Decode possible!
49
49
 
50
- Copyright (C) 2011-2013 [Sylvester Keil](sylvester.keil.or.at)
50
+ Copyright (C) 2011-2015 [Sylvester Keil](sylvester.keil.or.at)
51
51
 
52
52
  Copyright (C) 2010 François Charette
53
53
 
data/Rakefile CHANGED
@@ -19,7 +19,7 @@ task :console, [:script] do |t,args|
19
19
 
20
20
  require 'irb'
21
21
  require 'latex/decode'
22
-
22
+
23
23
  IRB.conf[:SCRIPT] = args.script
24
24
  IRB.start
25
25
  end
@@ -0,0 +1,13 @@
1
+ Feature: Decode LaTeX Greek Letters
2
+ As a hacker who works with LaTeX
3
+ I want to be able to decode Greek letters
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: Greek
10
+ | latex | unicode |
11
+ | \\alpha | α |
12
+ | \\lambda | λ |
13
+ | \\Lambda | Λ |
@@ -1,7 +1,7 @@
1
1
  # Feature: Convert LaTeX maths to MathML
2
2
  # As a maths-inclined hacker who works with LaTeX
3
3
  # I want to convert LaTeX maths to MathML
4
- #
4
+ #
5
5
  # Scenario: Inline maths environment
6
6
  # When I decode the string '$I_{S}A$'
7
7
  # Then the result should be '<msub><mi>I</mi><mrow><mi>S</mi></mrow></msub><mi>A</mi>'
@@ -37,6 +37,7 @@ Feature: Decode LaTeX punctuation directives
37
37
  | -- | – | en-dash |
38
38
  | --- | — | em-dash |
39
39
  | \\~{} | ~ | tilde |
40
+ | X\\ X | X X | space |
40
41
 
41
42
  Scenarios: Quotation marks
42
43
  | latex | unicode | description |
@@ -3,5 +3,5 @@ When /^I decode the string ('|")(.*)\1$/ do |quote,string|
3
3
  end
4
4
 
5
5
  Then /^the result should be ('|")(.*)\1$/ do |quote,value|
6
- @result.should == value
7
- end
6
+ expect(@result).to eq(value)
7
+ end
@@ -1,7 +1,14 @@
1
1
  begin
2
- require 'debugger'
2
+ case
3
+ when defined?(RUBY_ENGINE) && RUBY_ENGINE == 'rbx'
4
+ require 'rubinius/debugger'
5
+ when RUBY_VERSION > '2.0'
6
+ require 'byebug'
7
+ else
8
+ require 'debugger'
9
+ end
3
10
  rescue LoadError
4
11
  # ignore
5
12
  end
6
-
13
+
7
14
  require 'latex/decode'
data/lib/latex/decode.rb CHANGED
@@ -26,6 +26,7 @@ require 'latex/decode/diacritics'
26
26
  require 'latex/decode/maths'
27
27
  require 'latex/decode/punctuation'
28
28
  require 'latex/decode/symbols'
29
+ require 'latex/decode/greek'
29
30
 
30
31
  module LaTeX
31
32
 
@@ -43,10 +44,11 @@ module LaTeX
43
44
  Decode::Diacritics.decode!(string)
44
45
  Decode::Punctuation.decode!(string)
45
46
  Decode::Symbols.decode!(string)
47
+ Decode::Greek.decode!(string)
46
48
 
47
49
  Decode::Base.strip_braces(string)
48
50
 
49
51
  LaTeX.normalize_C(string)
50
52
  end
51
53
  end
52
- end
54
+ end
@@ -2,23 +2,23 @@
2
2
 
3
3
  module LaTeX
4
4
  module Decode
5
-
5
+
6
6
  class Decoder
7
7
  class << self
8
8
  attr_reader :patterns, :map
9
-
9
+
10
10
  def inherited (base)
11
11
  subclasses << base
12
12
  end
13
-
13
+
14
14
  def subclasses
15
15
  @subclasses ||= []
16
16
  end
17
-
17
+
18
18
  def decode (string)
19
19
  decode!(string.dup)
20
20
  end
21
-
21
+
22
22
  def decode! (string)
23
23
  patterns.each do |pattern|
24
24
  string.gsub!(pattern) { |m| [$2,map[$1],$3].compact.join }
@@ -27,11 +27,11 @@ module LaTeX
27
27
  end
28
28
  end
29
29
  end
30
-
30
+
31
31
  module Base
32
-
32
+
33
33
  module_function
34
-
34
+
35
35
  def normalize (string)
36
36
  string.gsub!(/\\(?:i|j)\b/) { |m| m == '\\i' ? 'ı' : 'ȷ' }
37
37
 
@@ -43,17 +43,17 @@ module LaTeX
43
43
 
44
44
  # \c cb -> \c{cb}
45
45
  string.gsub!(/(\\[^\sij&#\$\{\}_~%])\s+([[:alpha:]]+)\b/i, '\1{\2}')
46
-
46
+
47
47
  string
48
48
  end
49
-
49
+
50
50
  def strip_braces (string)
51
51
  string.gsub!(/(^|[^\\])([\{\}]+)/, '\1')
52
52
  string.gsub!(/\\(\{|\})/, '\1')
53
53
  string
54
54
  end
55
-
55
+
56
56
  end
57
-
57
+
58
58
  end
59
- end
59
+ end
@@ -1,16 +1,16 @@
1
1
 
2
2
  if RUBY_VERSION < "1.9"
3
3
  $KCODE = 'U'
4
-
4
+
5
5
  module LaTeX
6
6
  def self.to_unicode(string)
7
7
  string.gsub(/\\?u([\da-f]{4})/i) { |m| [$1.to_i(16)].pack('U') }
8
8
  end
9
9
  end
10
-
10
+
11
11
  def ruby_18; yield; end
12
12
  def ruby_19; false; end
13
- else
13
+ else
14
14
 
15
15
  module LaTeX
16
16
  def self.to_unicode(string)
@@ -24,14 +24,14 @@ end
24
24
 
25
25
  if RUBY_PLATFORM == 'java'
26
26
  require 'java'
27
-
27
+
28
28
  # Use the Java native Unicode normalizer
29
29
  module LaTeX
30
30
  def self.normalize_C(string)
31
31
  java.text.Normalizer.normalize(string, java.text.Normalizer::Form::NFC).to_s
32
32
  end
33
33
  end
34
-
34
+
35
35
  else
36
36
  begin
37
37
  require 'unicode'
@@ -45,7 +45,7 @@ else
45
45
  rescue LoadError
46
46
  begin
47
47
  require 'active_support/multibyte/chars'
48
-
48
+
49
49
  # Use ActiveSupport's normalizer
50
50
  module LaTeX
51
51
  def self.normalize_C(string)
@@ -73,7 +73,7 @@ module LaTeX
73
73
  rescue LoadError
74
74
  begin
75
75
  require 'math_ml'
76
-
76
+
77
77
  def self.to_math_ml(string)
78
78
  MathML::String.mathml_latex_parser.parse(string, false)
79
79
  end
@@ -0,0 +1,61 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ module LaTeX
4
+ module Decode
5
+
6
+ class Greek < Decoder
7
+ @map = Hash[*%w{
8
+ alpha α
9
+ beta β
10
+ gamma γ
11
+ delta δ
12
+ epsilon ε
13
+ zeta ζ
14
+ eta η
15
+ theta θ
16
+ iota ι
17
+ kappa κ
18
+ lambda λ
19
+ mu μ
20
+ nu ν
21
+ xi ξ
22
+ rho ρ
23
+ sigma σ
24
+ tau τ
25
+ upsilon υ
26
+ phi φ
27
+ chi χ
28
+ psi ψ
29
+ omega ω
30
+ Alpha Α
31
+ Beta Β
32
+ Gamma Γ
33
+ Delta Δ
34
+ Epsilon Ε
35
+ Zeta Ζ
36
+ Eta Η
37
+ Theta Θ
38
+ Iota Ι
39
+ Kappa Κ
40
+ Lambda Λ
41
+ Mu Μ
42
+ Nu Ν
43
+ Xi Ξ
44
+ Rho Ρ
45
+ Sigma Σ
46
+ Tau Τ
47
+ Upsilon Υ
48
+ Phi Φ
49
+ Chi Χ
50
+ Psi Ψ
51
+ Omega Ω
52
+ }].freeze
53
+
54
+ @patterns = [
55
+ /\\(#{ map.keys.map { |k| Regexp.escape(k) }.join('|') })(?:\{\}|\s+|\b)/ou
56
+ ].freeze
57
+
58
+ end
59
+
60
+ end
61
+ end
@@ -1,11 +1,11 @@
1
1
  module LaTeX
2
2
  module Decode
3
-
3
+
4
4
  class Maths < Decoder
5
5
  @patterns = [
6
6
  /\$([^\$]+)\$/
7
7
  ].freeze
8
-
8
+
9
9
  def self.decode! (string)
10
10
  patterns.each do |pattern|
11
11
  string.gsub!(pattern) do
@@ -18,4 +18,4 @@ module LaTeX
18
18
  end
19
19
 
20
20
  end
21
- end
21
+ end
@@ -2,9 +2,9 @@
2
2
 
3
3
  module LaTeX
4
4
  module Decode
5
-
5
+
6
6
  class Punctuation < Decoder
7
-
7
+
8
8
  @macros = Hash[*%w{
9
9
  textendash –
10
10
  textemdash —
@@ -43,15 +43,16 @@ module LaTeX
43
43
  ]].freeze
44
44
 
45
45
  @map = @macros.merge(@symbols).freeze
46
-
46
+
47
47
  @patterns = [
48
48
  /\\(#{ @macros.keys.map { |k| Regexp.escape(k) }.compact.join('|') })(?:\{\}|\s+|\b|$)/ou,
49
49
  /(-+|`{1,2}|'{1,2})/,
50
50
  /()\\([$%;#_&])(\{\})?/,
51
- /()\\(~)\{\}/
51
+ /()\\(~)\{\}/,
52
+ /()\\( )/
52
53
  ].freeze
53
-
54
+
54
55
  end
55
56
 
56
57
  end
57
- end
58
+ end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module LaTeX
4
4
  module Decode
5
-
5
+
6
6
  class Symbols < Decoder
7
7
  @map = Hash[*%w{
8
8
  textcolonmonetary ₡
@@ -216,8 +216,8 @@ module LaTeX
216
216
  @patterns = [
217
217
  /\\(#{ map.keys.map { |k| Regexp.escape(k) }.join('|') })(?:\{\}|\s+|\b)/ou
218
218
  ].freeze
219
-
219
+
220
220
  end
221
221
 
222
222
  end
223
- end
223
+ end
@@ -1,5 +1,5 @@
1
1
  module LaTeX
2
2
  module Decode
3
- VERSION = '0.1.1'.freeze
3
+ VERSION = '0.2.0'.freeze
4
4
  end
5
- end
5
+ end
metadata CHANGED
@@ -1,27 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: latex-decode
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sylvester Keil
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-06 00:00:00.000000000 Z
11
+ date: 2015-02-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: unicode
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0.4'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0.4'
27
27
  description: Decodes strings formatted in LaTeX to equivalent Unicode strings.
@@ -33,8 +33,8 @@ extra_rdoc_files:
33
33
  - README.md
34
34
  - LICENSE
35
35
  files:
36
- - .gitignore
37
- - .travis.yml
36
+ - ".gitignore"
37
+ - ".travis.yml"
38
38
  - Gemfile
39
39
  - LICENSE
40
40
  - README.md
@@ -42,6 +42,7 @@ files:
42
42
  - cucumber.yml
43
43
  - features/brackets.feature
44
44
  - features/diacritics.feature
45
+ - features/greek.feature
45
46
  - features/maths.feature
46
47
  - features/non-latex.feature
47
48
  - features/punctuation.feature
@@ -55,6 +56,7 @@ files:
55
56
  - lib/latex/decode/base.rb
56
57
  - lib/latex/decode/compatibility.rb
57
58
  - lib/latex/decode/diacritics.rb
59
+ - lib/latex/decode/greek.rb
58
60
  - lib/latex/decode/maths.rb
59
61
  - lib/latex/decode/punctuation.rb
60
62
  - lib/latex/decode/symbols.rb
@@ -65,34 +67,35 @@ licenses:
65
67
  metadata: {}
66
68
  post_install_message:
67
69
  rdoc_options:
68
- - --line-numbers
69
- - --inline-source
70
- - --title
71
- - ! '"LaTeX-Decode Documentation"'
72
- - --main
70
+ - "--line-numbers"
71
+ - "--inline-source"
72
+ - "--title"
73
+ - '"LaTeX-Decode Documentation"'
74
+ - "--main"
73
75
  - README.md
74
- - --webcvs=http://github.com/inukshuk/latex-decode/tree/master/
76
+ - "--webcvs=http://github.com/inukshuk/latex-decode/tree/master/"
75
77
  require_paths:
76
78
  - lib
77
79
  required_ruby_version: !ruby/object:Gem::Requirement
78
80
  requirements:
79
- - - ! '>='
81
+ - - ">="
80
82
  - !ruby/object:Gem::Version
81
83
  version: '0'
82
84
  required_rubygems_version: !ruby/object:Gem::Requirement
83
85
  requirements:
84
- - - ! '>='
86
+ - - ">="
85
87
  - !ruby/object:Gem::Version
86
88
  version: '0'
87
89
  requirements: []
88
90
  rubyforge_project:
89
- rubygems_version: 2.0.3
91
+ rubygems_version: 2.4.5
90
92
  signing_key:
91
93
  specification_version: 4
92
94
  summary: Decodes LaTeX to Unicode.
93
95
  test_files:
94
96
  - features/brackets.feature
95
97
  - features/diacritics.feature
98
+ - features/greek.feature
96
99
  - features/maths.feature
97
100
  - features/non-latex.feature
98
101
  - features/punctuation.feature