Sha256: b92419a25f5738a5da3973807eef7ac9ac391f7f49a11036149c1606879a198c

Contents?: true

Size: 1.03 KB

Versions: 2

Compression:

Stored size: 1.03 KB

Contents

require 'kafo/data_type'

module Kafo
  class DataTypeParser
    TYPE_DEFINITION = /^type\s+([^\s=]+)\s*=\s*(.+?)(\s+#.*)?\s*$/

    attr_reader :types

    def initialize(manifest)
      @logger = KafoConfigure.logger

      lines = []
      type_line_without_newlines = +''
      manifest.each_line do |line|
        line = line.force_encoding("UTF-8").strip
        next if line.start_with?('#') || line.empty?

        line = line.split(' #').first.strip
        if line =~ TYPE_DEFINITION
          lines << type_line_without_newlines
          type_line_without_newlines = line
        else
          type_line_without_newlines << line
        end
      end
      lines << type_line_without_newlines

      @types = {}
      lines.each do |line|
        if (type = TYPE_DEFINITION.match(line))
          @types[type[1]] = type[2]
        end
      end
    end

    def register
      @types.each do |name,target|
        @logger.debug("Registering extended data type #{name}")
        DataType.register_type(name, target)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
kafo-7.6.0 lib/kafo/data_type_parser.rb
kafo-7.5.1 lib/kafo/data_type_parser.rb