Sha256: 62430239e63b3fe807c83e04cc3dcb9a2a383048ae46fb36ad78558b3fb2f369

Contents?: true

Size: 1.63 KB

Versions: 25

Compression:

Stored size: 1.63 KB

Contents

module Expressir
  module Model
    class Function
      include Scope
      include Identifier

      attr_accessor :parameters
      attr_accessor :return_type
      attr_accessor :declarations
      attr_accessor :constants
      attr_accessor :variables
      attr_accessor :statements

      def initialize(options = {})
        @id = options[:id]

        @parameters = options[:parameters]
        @return_type = options[:return_type]
        @declarations = options[:declarations]
        @constants = options[:constants]
        @variables = options[:variables]
        @statements = options[:statements]
      end

      def types
        @declarations.select{|x| x.instance_of? Expressir::Model::Type}
      end

      def entities
        @declarations.select{|x| x.instance_of? Expressir::Model::Entity}
      end

      def subtype_constraints
        @declarations.select{|x| x.instance_of? Expressir::Model::SubtypeConstraint}
      end

      def functions
        @declarations.select{|x| x.instance_of? Expressir::Model::Function}
      end

      def procedures
        @declarations.select{|x| x.instance_of? Expressir::Model::Procedure}
      end

      def children
        items = []
        items.push(*@parameters) if @parameters
        items.push(*@declarations.flat_map do |x|
          [
            x,
            *if x.instance_of? Expressir::Model::Type and x.type.instance_of? Expressir::Model::Types::Enumeration
              x.type.items
            end
          ]
        end) if @declarations
        items.push(*@constants) if @constants
        items.push(*@variables) if @variables
        items
      end
    end
  end
end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
expressir-0.2.9 lib/expressir/model/function.rb
expressir-0.2.9-x86_64-linux lib/expressir/model/function.rb
expressir-0.2.9-x86_64-darwin lib/expressir/model/function.rb
expressir-0.2.9-x86-mingw32 lib/expressir/model/function.rb
expressir-0.2.9-x86-linux lib/expressir/model/function.rb
expressir-0.2.9-x64-mingw32 lib/expressir/model/function.rb
expressir-0.2.9-arm64-darwin lib/expressir/model/function.rb
expressir-0.2.8 lib/expressir/model/function.rb
expressir-0.2.8-x86_64-linux lib/expressir/model/function.rb
expressir-0.2.8-x86_64-darwin lib/expressir/model/function.rb
expressir-0.2.8-x86-mingw32 lib/expressir/model/function.rb
expressir-0.2.8-x86-linux lib/expressir/model/function.rb
expressir-0.2.8-x64-mingw32 lib/expressir/model/function.rb
expressir-0.2.8-arm64-darwin lib/expressir/model/function.rb
expressir-0.2.7 lib/expressir/model/function.rb
expressir-0.2.7-x86-mingw32 lib/expressir/model/function.rb
expressir-0.2.7-x64-mingw32 lib/expressir/model/function.rb
expressir-0.2.7-x86_64-linux lib/expressir/model/function.rb
expressir-0.2.7-x86-linux lib/expressir/model/function.rb
expressir-0.2.7-x86_64-darwin lib/expressir/model/function.rb