Sha256: db8941f79a14fe8d6b4a72062c6dc7261ff92b7476169b09b9ba768440ee01c5

Contents?: true

Size: 1.9 KB

Versions: 6

Compression:

Stored size: 1.9 KB

Contents

#  Phusion Passenger - http://www.modrails.com/
#  Copyright (C) 2008  Phusion
#
#  Phusion Passenger is a trademark of Hongli Lai & Ninh Bui.
#
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; version 2 of the License.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License along
#  with this program; if not, write to the Free Software Foundation, Inc.,
#  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

require 'erb'
module Passenger

class ConsoleTextTemplate
	TEMPLATE_DIR = "#{File.dirname(__FILE__)}/templates"

	def initialize(input, options = {})
		@buffer = ''
		if input[:file]
			data = File.read("#{TEMPLATE_DIR}/#{input[:file]}.txt.erb")
		else
			data = input[:text]
		end
		@template = ERB.new(substitute_color_tags(data),
			nil, nil, '@buffer')
		options.each_pair do |name, value|
			self[name] = value
		end
	end
	
	def []=(name, value)
		instance_variable_set("@#{name}".to_sym, value)
		return self
	end
	
	def result
		return @template.result(binding)
	end

private
	DEFAULT_TERMINAL_COLORS = "\e[0m\e[37m\e[40m"

	def substitute_color_tags(data)
		data = data.gsub(%r{<b>(.*?)</b>}m, "\e[1m\\1#{DEFAULT_TERMINAL_COLORS}")
		data.gsub!(%r{<red>(.*?)</red>}m, "\e[1m\e[31m\\1#{DEFAULT_TERMINAL_COLORS}")
		data.gsub!(%r{<green>(.*?)</green>}m, "\e[1m\e[32m\\1#{DEFAULT_TERMINAL_COLORS}")
		data.gsub!(%r{<yellow>(.*?)</yellow>}m, "\e[1m\e[33m\\1#{DEFAULT_TERMINAL_COLORS}")
		data.gsub!(%r{<banner>(.*?)</banner>}m, "\e[33m\e[44m\e[1m\\1#{DEFAULT_TERMINAL_COLORS}")
		return data
	end
end

end # module Passenger

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
passenger-2.0.1 lib/passenger/console_text_template.rb
passenger-2.0.2 lib/passenger/console_text_template.rb
passenger-2.0.3 lib/passenger/console_text_template.rb
passenger-2.0.4 lib/passenger/console_text_template.rb
passenger-2.0.5 lib/passenger/console_text_template.rb
passenger-2.0.6 lib/passenger/console_text_template.rb