Class: Purple::PurpleFile
- Inherits:
-
Object
- Object
- Purple::PurpleFile
- Defined in:
- lib/purple.rb
Constant Summary collapse
- PROPS =
'longname|version|major|minor|identifier|description|url'
Class Method Summary collapse
- .__main(line, pkg) ⇒ Object
- .__package(line, pkg) ⇒ Object
- .infer_properties(pkg) ⇒ Object
- .parse(str) ⇒ Object
Class Method Details
.__main(line, pkg) ⇒ Object
158 159 160 161 162 163 164 |
# File 'lib/purple.rb', line 158 def self.__main line, pkg case line when /^package/ pkg.name = line.gsub(/^package\s+/, '') return 'package' end end |
.__package(line, pkg) ⇒ Object
167 168 169 170 171 172 173 174 |
# File 'lib/purple.rb', line 167 def self.__package line, pkg if (md = Regexp.new("^(#{PROPS})\s+(.*)$").match line) pkg.method("#{md[1]}=").call md[2] else self.infer_properties pkg if line == 'infer' end nil end |
.infer_properties(pkg) ⇒ Object
176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 |
# File 'lib/purple.rb', line 176 def self.infer_properties pkg if pkg.url if pkg.url =~ /prdownloads.sourceforge.net/ md = Regexp.new 'http://prdownloads.sourceforge.net/([^/])/(.*?)tar.(gz|bz2)?download' pkg.long_name = md[2] end end pkg.long_name = File.basename Dir.pwd if not pkg.long_name md = /([a-z\-]+)-([0-9\-\.]+.*)/.match pkg.long_name pkg.version = md[2] if not pkg.version md = /^([0-9]+)\.([0-9]+)/.match pkg.version pkg.major = md[1] if not pkg.major pkg.minor = md[2] if not pkg.minor end |
.parse(str) ⇒ Object
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 |
# File 'lib/purple.rb', line 142 def self.parse str pkg = PackageInfo.new receiver_stack = ['main'] str.split(/(\r\n|\r|\n)+/).each do |line| r = self.method("__#{receiver_stack.last}").call line.strip, pkg case r when -1 receiver_stack.pop when nil else receiver_stack.push r end end pkg end |