This file is indexed.

/usr/lib/ruby/vendor_ruby/tilt.rb is in ruby-tilt 2.0.0+really1.4.1-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
module Tilt
  VERSION = '1.4.1'

  @preferred_mappings = Hash.new
  @template_mappings = Hash.new { |h, k| h[k] = [] }

  # Hash of template path pattern => template implementation class mappings.
  def self.mappings
    @template_mappings
  end

  def self.normalize(ext)
    ext.to_s.downcase.sub(/^\./, '')
  end

  # Register a template implementation by file extension.
  def self.register(template_class, *extensions)
    if template_class.respond_to?(:to_str)
      # Support register(ext, template_class) too
      extensions, template_class = [template_class], extensions[0]
    end

    extensions.each do |ext|
      ext = normalize(ext)
      mappings[ext].unshift(template_class).uniq!
    end
  end

  # Makes a template class preferred for the given file extensions. If you
  # don't provide any extensions, it will be preferred for all its already
  # registered extensions:
  #
  #   # Prefer RDiscount for its registered file extensions:
  #   Tilt.prefer(Tilt::RDiscountTemplate)
  #
  #   # Prefer RDiscount only for the .md extensions:
  #   Tilt.prefer(Tilt::RDiscountTemplate, '.md')
  def self.prefer(template_class, *extensions)
    if extensions.empty?
      mappings.each do |ext, klasses|
        @preferred_mappings[ext] = template_class if klasses.include? template_class
      end
    else
      extensions.each do |ext|
        ext = normalize(ext)
        register(template_class, ext)
        @preferred_mappings[ext] = template_class
      end
    end
  end

  # Returns true when a template exists on an exact match of the provided file extension
  def self.registered?(ext)
    mappings.key?(ext.downcase) && !mappings[ext.downcase].empty?
  end

  # Create a new template for the given file using the file's extension
  # to determine the the template mapping.
  def self.new(file, line=nil, options={}, &block)
    if template_class = self[file]
      template_class.new(file, line, options, &block)
    else
      fail "No template engine registered for #{File.basename(file)}"
    end
  end

  # Lookup a template class for the given filename or file
  # extension. Return nil when no implementation is found.
  def self.[](file)
    pattern = file.to_s.downcase
    until pattern.empty? || registered?(pattern)
      pattern = File.basename(pattern)
      pattern.sub!(/^[^.]*\.?/, '')
    end

    # Try to find a preferred engine.
    preferred_klass = @preferred_mappings[pattern]
    return preferred_klass if preferred_klass

    # Fall back to the general list of mappings.
    klasses = @template_mappings[pattern]

    # Try to find an engine which is already loaded.
    template = klasses.detect do |klass|
      if klass.respond_to?(:engine_initialized?)
        klass.engine_initialized?
      end
    end

    return template if template

    # Try each of the classes until one succeeds. If all of them fails,
    # we'll raise the error of the first class.
    first_failure = nil

    klasses.each do |klass|
      begin
        klass.new { '' }
      rescue Exception => ex
        first_failure ||= ex
        next
      else
        return klass
      end
    end

    raise first_failure if first_failure
  end

  # Deprecated module.
  module CompileSite
  end

  # Extremely simple template cache implementation. Calling applications
  # create a Tilt::Cache instance and use #fetch with any set of hashable
  # arguments (such as those to Tilt.new):
  #   cache = Tilt::Cache.new
  #   cache.fetch(path, line, options) { Tilt.new(path, line, options) }
  #
  # Subsequent invocations return the already loaded template object.
  class Cache
    def initialize
      @cache = {}
    end

    def fetch(*key)
      @cache[key] ||= yield
    end

    def clear
      @cache = {}
    end
  end


  # Template Implementations ================================================

  require 'tilt/string'
  register StringTemplate, 'str'

  require 'tilt/erb'
  register ERBTemplate,    'erb', 'rhtml'
  register ErubisTemplate, 'erb', 'rhtml', 'erubis'

  require 'tilt/etanni'
  register EtanniTemplate, 'etn', 'etanni'

  require 'tilt/haml'
  register HamlTemplate,   'haml'

  require 'tilt/css'
  register SassTemplate, 'sass'
  register ScssTemplate, 'scss'
  register LessTemplate, 'less'

  require 'tilt/csv'
  register CSVTemplate, 'rcsv'

  require 'tilt/coffee'
  register CoffeeScriptTemplate, 'coffee'

  require 'tilt/nokogiri'
  register NokogiriTemplate, 'nokogiri'

  require 'tilt/builder'
  register BuilderTemplate,  'builder'

  require 'tilt/markaby'
  register MarkabyTemplate,  'mab'

  require 'tilt/liquid'
  register LiquidTemplate, 'liquid'

  require 'tilt/radius'
  register RadiusTemplate, 'radius'

  require 'tilt/markdown'
  register MarukuTemplate,    'markdown', 'mkd', 'md'
  register KramdownTemplate,  'markdown', 'mkd', 'md'
  register BlueClothTemplate, 'markdown', 'mkd', 'md'
  register RDiscountTemplate, 'markdown', 'mkd', 'md'
  register RedcarpetTemplate::Redcarpet1, 'markdown', 'mkd', 'md'
  register RedcarpetTemplate::Redcarpet2, 'markdown', 'mkd', 'md'
  register RedcarpetTemplate, 'markdown', 'mkd', 'md'

  require 'tilt/textile'
  register RedClothTemplate, 'textile'

  require 'tilt/rdoc'
  register RDocTemplate, 'rdoc'

  require 'tilt/wiki'
  register CreoleTemplate,    'wiki', 'creole'
  register WikiClothTemplate, 'wiki', 'mediawiki', 'mw'

  require 'tilt/yajl'
  register YajlTemplate, 'yajl'

  require 'tilt/asciidoc'
  register AsciidoctorTemplate, 'ad', 'adoc', 'asciidoc'

  require 'tilt/plain'
  register PlainTemplate, 'html'
end