Class Galena::BalanceStack
In: lib/galena.rb
Parent: Object

balances \#= and \#=end blocks

Methods

dedent   dedent=   do_line   indent   new  

Public Class methods

[Source]

# File lib/galena.rb, line 189
        def initialize
            @stack = []
            @seeking = false
            @block = false
        end

Public Instance methods

return the current dedent

[Source]

# File lib/galena.rb, line 234
        def dedent(p=0)
            if @stack.empty?
                0
            else
                @stack.last[-1-p]
            end
        end

dedent a line

[Source]

# File lib/galena.rb, line 229
        def dedent=(dd)
            @stack.last[1]=dd
        end

process a new line

[Source]

# File lib/galena.rb, line 196
        def do_line line
            s_len = line.match(/^\s*/)[0].length
            case line
            when /^\s*\^^</
                @block = false
                push(s_len)
                @seeking = true
            when /^\s*\^^>/
                pop
            else
                if @seeking
                    if @block == true
                       self.dedent = 0
                    else
                        self.dedent = dedent + s_len - indent
                    end
                end
                @seeking = false
            end
            # puts "#{dedent}, #{@stack.length}, #{line}"
            if @stack.empty?
                line
            else
                line = Galena.ladj(line, s_len - dedent)
            end
        end

indent a line

[Source]

# File lib/galena.rb, line 224
        def indent
            @stack.last[0]
        end

[Validate]