Sha256: bcf76ca31909f76ff28c51a0fc7fde48b826160f2a874c00a2e2d14fc7f22ae0

Contents?: true

Size: 1.26 KB

Versions: 8

Compression:

Stored size: 1.26 KB

Contents

#  Copyright 2013 Petr Chalupa <git+algebrick@pitr.ch>
#
#  Licensed under the Apache License, Version 2.0 (the "License");
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.

module Algebrick
  module ProductConstructors
    class Basic < Abstract
      def to_s
        "#{self.class.type.name}[" +
            fields.map(&:to_s).join(', ') + ']'
      end

      def pretty_print(q)
        q.group(1, "#{self.class.type.name}[", ']') do
          fields.each_with_index do |value, i|
            if i == 0
              q.breakable ''
            else
              q.text ','
              q.breakable ' '
            end
            q.pp value
          end
        end
      end

      def self.type=(type)
        super(type)
        raise if type.field_names?
      end

      def update(fields)
        type[*fields]
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
algebrick-0.7.5 lib/algebrick/product_constructors/basic.rb
algebrick-0.7.4 lib/algebrick/product_constructors/basic.rb
algebrick-0.7.3 lib/algebrick/product_constructors/basic.rb
algebrick-0.7.2 lib/algebrick/product_constructors/basic.rb
algebrick-0.7.1 lib/algebrick/product_constructors/basic.rb
algebrick-0.7.0 lib/algebrick/product_constructors/basic.rb
algebrick-0.6.0 lib/algebrick/product_constructors/basic.rb
algebrick-0.5.0 lib/algebrick/product_constructors/basic.rb