Sha256: 80a6e320ffb93758d1d9b6aadd0c62b866b4795d91f831cc526f85a3aa59aa0a

Contents?: true

Size: 1.16 KB

Versions: 5

Compression:

Stored size: 1.16 KB

Contents

require 'xcpretty/snippet'

module XCPretty
  class Syntax
    def self.register_filetype(type, extensions)
      @filetypes ||= {}
      extensions.each { |ext| @filetypes[ext] = type }
    end

    register_filetype 'c++',    ['.cpp', '.hpp', '.c++', '.cxx', '.cc']
    register_filetype 'objc',   ['.m', '.h']
    register_filetype 'objc++', ['.mm', '.hh']
    register_filetype 'swift',  ['.swift']
    register_filetype 'dylan',  ['.dyl', '.dylan']
    register_filetype 'ruby',   ['.ruby', '.rb']

    def self.highlight(snippet, options = '')
      if Pygments.available?
        language = file_language(File.basename(snippet.file_path))
        Pygments.pygmentize(snippet.contents, language, options)
      else
        snippet.contents
      end
    end

    private

    def self.file_language(filename)
      ext = File.extname(filename)
      @filetypes[ext] || 'objc'
    end
  end

  class Pygments
    def self.pygmentize(code, language, options)
      `echo '#{code}' | pygmentize -f 256 -l #{language} #{options if options}`
    end

    def self.available?
      @available = system('which pygmentize > /dev/null') if @available.nil?
      @available
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
xcpretty-0.1.12 lib/xcpretty/syntax.rb
xcpretty-0.1.11 lib/xcpretty/syntax.rb
xcpretty-0.1.10 lib/xcpretty/syntax.rb
xcpretty-0.1.9 lib/xcpretty/syntax.rb
xcpretty-0.1.8 lib/xcpretty/syntax.rb