Class: Ms::Mascot::Dat::Section
- Inherits:
-
Object
- Object
- Ms::Mascot::Dat::Section
- Defined in:
- lib/ms/mascot/dat/section.rb
Overview
Represents a ‘section’ section of a dat file, formatted like this:
Content-Type: application/x-Mascot; name="parameters"
LICENSE=Licensed to: Matrix Science Internal use only - Frill, (4 processors).
MP=
NM=
COM=Peptide Mass Fingerprint Example
IATOL=
...
Example from mascot data F981122.dat
Constant Summary collapse
- CONTENT_TYPE_REGEXP =
Matches a content-type declaration plus any preceding/following whitespace. The section name is matched in slot 0.
/\s*Content-Type: application\/x-Mascot; name=\"(.*?)\"\n\s*/
- TO_S_FORMAT =
A format string used to format parameters as a string.
"%s=%s\n"
Instance Attribute Summary collapse
-
#dat ⇒ Object
readonly
A backreference to the dat containing self.
-
#data ⇒ Object
readonly
A hash of data in self.
-
#section_name ⇒ Object
readonly
The class section_name.
Class Method Summary collapse
-
.parse(str, archive = nil) ⇒ Object
Parses a new instance from str.
-
.section_name ⇒ Object
Returns the name of the section represented by this class.
Instance Method Summary collapse
-
#initialize(data = {}, section_name = self.class.section_name, dat = nil) ⇒ Section
constructor
A new instance of Section.
-
#to_s ⇒ Object
Formats self as a string with the content-type header.
Constructor Details
#initialize(data = {}, section_name = self.class.section_name, dat = nil) ⇒ Section
Returns a new instance of Section.
73 74 75 76 77 |
# File 'lib/ms/mascot/dat/section.rb', line 73 def initialize(data={}, section_name=self.class.section_name, dat=nil) @data = data @section_name = section_name @dat = dat end |
Instance Attribute Details
#dat ⇒ Object (readonly)
A backreference to the dat containing self.
71 72 73 |
# File 'lib/ms/mascot/dat/section.rb', line 71 def dat @dat end |
#data ⇒ Object (readonly)
A hash of data in self.
65 66 67 |
# File 'lib/ms/mascot/dat/section.rb', line 65 def data @data end |
#section_name ⇒ Object (readonly)
The class section_name.
68 69 70 |
# File 'lib/ms/mascot/dat/section.rb', line 68 def section_name @section_name end |
Class Method Details
.parse(str, archive = nil) ⇒ Object
Parses a new instance from str. Section after then content-type declaration are parsed into the parameters hash. Section follow a simple “key=valuen” pattern.
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/ms/mascot/dat/section.rb', line 33 def parse(str, archive=nil) params = {} scanner = StringScanner.new(str) # skip whitespace and content type declaration unless scanner.scan(CONTENT_TYPE_REGEXP) raise "unknown content type: #{content_type}" end section_name = scanner[1] # scan each pair. while key = scanner.scan(/[^=]+/) scanner.skip(/\=/) params[key] = scanner.scan(/[^\n]*/) scanner.skip(/\n/) end new(params, section_name, archive) end |
.section_name ⇒ Object
59 60 61 |
# File 'lib/ms/mascot/dat/section.rb', line 59 def section_name @section_name ||= to_s.split('::').last.downcase end |
Instance Method Details
#to_s ⇒ Object
Formats self as a string with the content-type header.
80 81 82 83 84 85 86 |
# File 'lib/ms/mascot/dat/section.rb', line 80 def to_s %Q{ Content-Type: application/x-Mascot; name="#{section_name}" #{data.to_a.collect {|entry| self.class::TO_S_FORMAT % entry}.join}} end |