Sha256: ef314c4a41a09f6b5abb87bda5b6bee3891e16657d70d9092987564a6d6550d1

Contents?: true

Size: 1.3 KB

Versions: 6

Compression:

Stored size: 1.3 KB

Contents

# -*- coding: utf-8 -*-

module LaTeX
  module Decode
    
    autoload :Accents, 'latex/decode/accents'
    autoload :Diacritics, 'latex/decode/diacritics'
    autoload :Punctuation, 'latex/decode/punctuation'
    autoload :Symbols, 'latex/decode/symbols'
    
    class Decoder
      class << self
        attr_reader :patterns, :map
    
        def inherited (base)
          subclasses << base
        end
        
        def subclasses
          @subclasses ||= []
        end
        
        def decode (string)
          decode!(string.dup)
        end
        
        def decode! (string)
          puts name unless patterns
          patterns.each do |pattern|
            string.gsub!(pattern) { |m| [$2,map[$1],$3].compact.join }
          end
          string
        end
      end
    end
    
    module Base
      
      module_function
      
      def normalize (string)
        string.gsub!(/\\(?:i|j)\b/) { |m| m == '\\i' ? 'ı' : 'ȷ' }
        string.gsub!(/(\\[a-zA-Z]+)\\(\s+)/, '\1{}\2') # \foo\ bar -> \foo{} bar
        string.gsub!(/([^{]\\\w)([;,.:%])/, '\1{}\2')  #} Aaaa\o, -> Aaaa\o{},        
        string
      end
      
      def strip_braces (string)
        string.gsub!(/(^|[^\\])([\{\}]+)/, '\1')
        string.gsub!(/\\(\{|\})/, '\1')
        string
      end
      
    end
    
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
latex-decode-0.0.7 lib/latex/decode/base.rb
latex-decode-0.0.6 lib/latex/decode/base.rb
latex-decode-0.0.5 lib/latex/decode/base.rb
latex-decode-0.0.4 lib/latex/decode/base.rb
latex-decode-0.0.3 lib/latex/decode/base.rb
latex-decode-0.0.2 lib/latex/decode/base.rb