Sha256: 232b80c86bccfb81f18b2cd89db35dc93abf8ba9c50143e434c3cde5d9328d7a

Contents?: true

Size: 1.37 KB

Versions: 9

Compression:

Stored size: 1.37 KB

Contents

module Lolita
  module Menu
    module Autocomplete
      class LinkSet
        include ::Rails.application.routes.url_helpers

        def initialize(&block)
          @links = []
          @new_stream = false
        end

        def add *args
          open_file("a+")
          @file.add(*args)
          if @new_stream
            finalize_file!
          end
        end

        def remove *args
          finalize_file!
          open_file("r")
          lines = @file.reject_lines_with(*args)
          finalize_file!
          open_file("w")
          @file.write_lines(lines)
          finalize_file!
        end

        def exist? *args
          @file.exist?(*args)
          if @new_stream
            finalize_file!
          end
        end

        def create &block
          @file = Lolita::Menu::Autocomplete::FileBuilder.new("w")
          begin
            instance_eval(&block)
          ensure
            finalize_file!
          end
        end

        def clear
          open_file("w")
          finalize_file!
        end

        private

        def finalize_file!
          if @file
            @file.finalize! 
            @file = nil
          end
        end

        def open_file mode
          unless @file
            @file = Lolita::Menu::Autocomplete::FileBuilder.new(mode)
            @new_stream = true
          end
        end

      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
lolita-menu-0.4.2 lib/lolita-menu/autocomplete/link_set.rb
lolita-menu-0.4.1 lib/lolita-menu/autocomplete/link_set.rb
lolita-menu-0.4.0 lib/lolita-menu/autocomplete/link_set.rb
lolita-menu-0.3.6 lib/lolita-menu/autocomplete/link_set.rb
lolita-menu-0.3.5 lib/lolita-menu/autocomplete/link_set.rb
lolita-menu-0.3.4 lib/lolita-menu/autocomplete/link_set.rb
lolita-menu-0.3.2 lib/lolita-menu/autocomplete/link_set.rb
lolita-menu-0.3.1 lib/lolita-menu/autocomplete/link_set.rb
lolita-menu-0.3.0 lib/lolita-menu/autocomplete/link_set.rb