Class: Ulla::JoyTem
- Inherits:
-
Object
- Object
- Ulla::JoyTem
- Defined in:
- lib/ulla/joy_tem.rb
Instance Attribute Summary collapse
-
#entries ⇒ Object
readonly
Returns the value of attribute entries.
-
#file ⇒ Object
readonly
Returns the value of attribute file.
Instance Method Summary collapse
- #alignment_length ⇒ Object
- #entry_codes ⇒ Object
- #entry_descriptions ⇒ Object
-
#initialize(file) ⇒ JoyTem
constructor
A new instance of JoyTem.
- #sequences ⇒ Object
Constructor Details
#initialize(file) ⇒ JoyTem
Returns a new instance of JoyTem.
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/ulla/joy_tem.rb', line 6 def initialize(file) @file = file io = File.exist?(file) ? File.open(file, 'r') : StringIO.new(file) @entries = {} ent_code = nil ent_desc = nil ent_data = nil parse_tag = nil io.each_with_index do |line, li| line.chomp! if line =~ /^#/ || line =~ /^\s*$/ next elsif line =~ /^>\S+;(\S+)/ parse_tag = :desc ent_code = $1 @entries[ent_code] = {} unless @entries.has_key?(ent_code) elsif line =~ /^(\S+.*)/ && parse_tag == :desc parse_tag = :data ent_desc = $1.strip @entries[ent_code][ent_desc] = '' elsif line =~ /^\s*(\S+.*)/ && parse_tag == :data ent_data = $1.strip.gsub('*', '') @entries[ent_code][ent_desc] += ent_data else $logger.error "Cannot parse line #{li+1}: #{line}" exit 1 end end end |
Instance Attribute Details
#entries ⇒ Object (readonly)
Returns the value of attribute entries.
4 5 6 |
# File 'lib/ulla/joy_tem.rb', line 4 def entries @entries end |
#file ⇒ Object (readonly)
Returns the value of attribute file.
4 5 6 |
# File 'lib/ulla/joy_tem.rb', line 4 def file @file end |
Instance Method Details
#alignment_length ⇒ Object
45 46 47 |
# File 'lib/ulla/joy_tem.rb', line 45 def alignment_length @entries[entry_codes[0]][entry_descriptions[0]].length end |
#entry_codes ⇒ Object
37 38 39 |
# File 'lib/ulla/joy_tem.rb', line 37 def entry_codes @entries.keys end |
#entry_descriptions ⇒ Object
41 42 43 |
# File 'lib/ulla/joy_tem.rb', line 41 def entry_descriptions @entries[entry_codes[0]].keys end |
#sequences ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/ulla/joy_tem.rb', line 49 def sequences seqs = [] @entries.keys.each do |code| if @entries[code].has_key?('sequence') seqs << Sequence.new(@entries[code]['sequence'], code) else $logger.error "Cannot find 'sequence' data for #{code} in JOY template: #{@file}" exit 1 end end seqs end |