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
187 188 189 190 191 192 193 |
# File 'lib/purple.rb', line 187 def self.__main line, pkg case line when /^package/ pkg.name = line.gsub(/^package\s+/, '') return 'package' end end |
.__package(line, pkg) ⇒ Object
196 197 198 199 200 201 202 203 |
# File 'lib/purple.rb', line 196 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
205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 |
# File 'lib/purple.rb', line 205 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
171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 |
# File 'lib/purple.rb', line 171 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 |