Sha256: ed0105693beade0ebea2677fcfdf2029163c7ca1331fc08db1d6db3f3e1461f3

Contents?: true

Size: 946 Bytes

Versions: 26

Compression:

Stored size: 946 Bytes

Contents

module BEL
  module LibBEL

    class BelTokenList < FFI::ManagedStruct
      include Enumerable

      layout :length,    :int,
             :tokens,    BelToken.ptr

      def each
        if block_given?
          iterator = LibBEL::bel_new_token_iterator(self.pointer)
          while LibBEL::bel_token_iterator_end(iterator).zero?
            current_token = LibBEL::bel_token_iterator_get(iterator)
            yield LibBEL::BelToken.new(current_token)
            LibBEL::bel_token_iterator_next(iterator)
          end
          LibBEL::free_bel_token_iterator(iterator)
        else
          enum_for(:each)
        end
      end

      def token_at(position)
        self.each_with_index { |tk, index|
          if (tk.pos_start..tk.pos_end).include? position
            return [tk, index]
          end
        }
        nil
      end

      def self.release(ptr)
        LibBEL::free_bel_token_list(ptr)
      end
    end
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
bel-1.1.2 lib/bel/libbel/bel_token_list.rb
bel-1.1.1 lib/bel/libbel/bel_token_list.rb
bel-1.1.0 lib/bel/libbel/bel_token_list.rb
bel-1.0.1 lib/bel/libbel/bel_token_list.rb
bel-1.0.0 lib/bel/libbel/bel_token_list.rb
bel-0.7.0 lib/bel/libbel/bel_token_list.rb
bel-0.6.0 lib/bel/libbel/bel_token_list.rb
bel-0.5.0 lib/bel/libbel/bel_token_list.rb
bel-0.4.2 lib/bel/libbel/bel_token_list.rb
bel-0.4.1 lib/bel/libbel/bel_token_list.rb
bel-0.4.0 lib/bel/libbel/bel_token_list.rb
bel-0.4.0.beta.13 lib/bel/libbel/bel_token_list.rb
bel-0.4.0.beta.12 lib/bel/libbel/bel_token_list.rb
bel-0.4.0.beta.11 lib/bel/libbel/bel_token_list.rb
bel-0.4.0.beta.10 lib/bel/libbel/bel_token_list.rb
bel-0.4.0.beta.9 lib/bel/libbel/bel_token_list.rb
bel-0.4.0.beta.8 lib/bel/libbel/bel_token_list.rb
bel-0.4.0.beta.7 lib/bel/libbel/bel_token_list.rb
bel-0.4.0.beta.5 lib/bel/libbel/bel_token_list.rb
bel-0.4.0.beta.4 lib/bel/libbel/bel_token_list.rb