Sha256: 92f4cd4bf4421c46bd6819100e0de5a3e519a9e515d1cc1df63c97fcc606eeb2

Contents?: true

Size: 960 Bytes

Versions: 1

Compression:

Stored size: 960 Bytes

Contents

class RubyReadsPHP
	attr_accessor :constants

	def initialize
		self.constants = {}
	end 

	def self.read(file_name)
		rrp = self.new
		rrp.parse(file_name)
	end


	def parse(file_name)
		file_name << '.php' unless file_name.match(/.php/)
		file = File.new(file_name, "r")
		data = parse_file(file)
		self
	end

	def parse_file(file)		
		constant_regex = /define\((\s)*('|")((\w|\s)+)('|")(\s)*,(\s)*(('|")?)([^'"]*)(('|")?)(\s)*\);/
		while (line = file.gets)
      if line.match(constant_regex)
				contant_key = line[constant_regex, 3]
				constant_value = line[constant_regex, 10]
				if line[constant_regex, 9].nil?
					#This value was not wrapped in quotes. cast it to either an integer or a float
					constant_value = cast_not_string_value(constant_value)
				end
				constants[contant_key] = constant_value
			end
		end
  end

	def cast_not_string_value(value)
		if value.match(/\./)
			return value.to_f
		else
			return value.to_i
		end
	end


end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mattfawcett-ruby-reads-php-1.1.0 lib/ruby_reads_php.rb