Sha256: a1e2c818eab65492f7252f59a6802a3c8d1c1ebd255d70915495cadd5f2465b0

Contents?: true

Size: 1.01 KB

Versions: 61

Compression:

Stored size: 1.01 KB

Contents

module Redcar
  class Document
    class Indentation
      def initialize(doc, tab_width, soft_tabs)
        @doc, @tab_width, @soft_tabs = doc, tab_width, soft_tabs
      end
      
      def get_level(ix)
        whitespace_prefix(ix).scan(indent_consuming_regex).length
      end
      
      def whitespace_prefix(ix)
        line = @doc.get_line(ix)
        line.match(/^(\s*)([^\s]|$)/)[1].chomp
      end
      
      def set_level(ix, level)
        offset = @doc.offset_at_line(ix)
        prefix = whitespace_prefix(ix)
        if @soft_tabs
          @doc.replace(offset, prefix.length, " "*@tab_width*level)
        else
          @doc.replace(offset, prefix.length, "\t"*level)
        end
      end
      
      def trim_trailing_whitespace(ix)
        # don't have to check on delimiter at the end, @doc does that
        @doc.replace_line(ix, @doc.get_line(ix).rstrip)
      end
      
      private
      
      def indent_consuming_regex
        /( {0,#{@tab_width - 1}}\t| {#{@tab_width}})/
      end
    end
  end
end

Version data entries

61 entries across 61 versions & 2 rubygems

Version Path
redcar-0.13 plugins/edit_view/lib/edit_view/document/indentation.rb
redcar-dev-0.13.5dev plugins/edit_view/lib/edit_view/document/indentation.rb
redcar-dev-0.13.4dev plugins/edit_view/lib/edit_view/document/indentation.rb
redcar-dev-0.13.3dev plugins/edit_view/lib/edit_view/document/indentation.rb
redcar-dev-0.13.2dev plugins/edit_view/lib/edit_view/document/indentation.rb
redcar-dev-0.13.1dev plugins/edit_view/lib/edit_view/document/indentation.rb
redcar-0.12.1 plugins/edit_view/lib/edit_view/document/indentation.rb
redcar-dev-0.13.0dev plugins/edit_view/lib/edit_view/document/indentation.rb
redcar-0.12 plugins/edit_view/lib/edit_view/document/indentation.rb
redcar-dev-0.12.27dev plugins/edit_view/lib/edit_view/document/indentation.rb
redcar-dev-0.12.26dev plugins/edit_view/lib/edit_view/document/indentation.rb
redcar-dev-0.12.25dev plugins/edit_view/lib/edit_view/document/indentation.rb
redcar-dev-0.12.24dev plugins/edit_view/lib/edit_view/document/indentation.rb
redcar-dev-0.12.23dev plugins/edit_view/lib/edit_view/document/indentation.rb
redcar-dev-0.12.22dev plugins/edit_view/lib/edit_view/document/indentation.rb
redcar-dev-0.12.21dev plugins/edit_view/lib/edit_view/document/indentation.rb
redcar-dev-0.12.20dev plugins/edit_view/lib/edit_view/document/indentation.rb
redcar-dev-0.12.19dev plugins/edit_view/lib/edit_view/document/indentation.rb
redcar-dev-0.12.18dev plugins/edit_view/lib/edit_view/document/indentation.rb
redcar-dev-0.12.17dev plugins/edit_view/lib/edit_view/document/indentation.rb