Sha256: 373f19cb4666f788860566eef4b6ab0e92a0978301b10b4603bb4cff197f33ef

Contents?: true

Size: 1.36 KB

Versions: 37

Compression:

Stored size: 1.36 KB

Contents

module Ruco
  class ArrayProcessor
    attr_accessor :lines

    def initialize
      @line_number = -1
      @lines = []
      @open_elements = []
      @still_open_elements = []
    end

    def open_tag(name, position)
      #puts "Open #{name}  #{@line_number}:#{position}"
      @open_elements << [name, position]
    end

    def close_tag(name, position)
      #puts "Close #{name} #{@line_number}:#{position}"
      open_element = @open_elements.pop || @still_open_elements.pop
      @lines[@line_number] << [name, open_element.last...position]
    end

    def new_line(line)
      #puts "Line #{line}"
      # close elements only opened in last line
      @open_elements.each do |name, position|
        @lines[@line_number] << [name, position...@line.size]
      end

      # surround last line in still open elements from previouse lines
      @still_open_elements.each do |name,_|
        @lines[@line_number] << [name, 0...@line.size]
      end

      # mark open as 'still open'
      # and let them start on column 0 -> if closed in this line its 0...position
      @still_open_elements += @open_elements.map{|name,_| [name,0]}
      @open_elements = []

      # proceed with next line
      @line = line
      @line_number += 1
      @lines[@line_number] = []
    end

    def start_parsing(name);end
    def end_parsing(name);end

    def inspect
      @lines
    end
  end
end

Version data entries

37 entries across 37 versions & 1 rubygems

Version Path
ruco-0.4.0 lib/ruco/array_processor.rb
ruco-0.3.0 lib/ruco/array_processor.rb
ruco-0.2.23 lib/ruco/array_processor.rb
ruco-0.2.22 lib/ruco/array_processor.rb
ruco-0.2.21 lib/ruco/array_processor.rb
ruco-0.2.20 lib/ruco/array_processor.rb
ruco-0.2.19 lib/ruco/array_processor.rb
ruco-0.2.18 lib/ruco/array_processor.rb
ruco-0.2.17 lib/ruco/array_processor.rb
ruco-0.2.16 lib/ruco/array_processor.rb
ruco-0.2.15 lib/ruco/array_processor.rb
ruco-0.2.14 lib/ruco/array_processor.rb
ruco-0.2.13 lib/ruco/array_processor.rb
ruco-0.2.12 lib/ruco/array_processor.rb
ruco-0.2.11 lib/ruco/array_processor.rb
ruco-0.2.10 lib/ruco/array_processor.rb
ruco-0.2.9 lib/ruco/array_processor.rb
ruco-0.2.8 lib/ruco/array_processor.rb
ruco-0.2.7 lib/ruco/array_processor.rb
ruco-0.2.6 lib/ruco/array_processor.rb