Module: Finitio

Extended by:
Finitio
Included in:
Finitio
Defined in:
lib/finitio.rb,
lib/finitio/type.rb,
lib/finitio/errors.rb,
lib/finitio/syntax.rb,
lib/finitio/system.rb,
lib/finitio/version.rb,
lib/finitio/data_type.rb,
lib/finitio/type/ad_type.rb,
lib/finitio/syntax/system.rb,
lib/finitio/type/any_type.rb,
lib/finitio/type/seq_type.rb,
lib/finitio/type/set_type.rb,
lib/finitio/type/sub_type.rb,
lib/finitio/syntax/ad_type.rb,
lib/finitio/syntax/heading.rb,
lib/finitio/syntax/support.rb,
lib/finitio/support/heading.rb,
lib/finitio/syntax/any_type.rb,
lib/finitio/syntax/contract.rb,
lib/finitio/syntax/seq_type.rb,
lib/finitio/syntax/set_type.rb,
lib/finitio/syntax/sub_type.rb,
lib/finitio/syntax/type_def.rb,
lib/finitio/syntax/type_ref.rb,
lib/finitio/type/tuple_type.rb,
lib/finitio/type/union_type.rb,
lib/finitio/syntax/attribute.rb,
lib/finitio/support/attribute.rb,
lib/finitio/syntax/expression.rb,
lib/finitio/syntax/tuple_type.rb,
lib/finitio/syntax/union_type.rb,
lib/finitio/type/builtin_type.rb,
lib/finitio/syntax/constraints.rb,
lib/finitio/syntax/definitions.rb,
lib/finitio/syntax/inline_pair.rb,
lib/finitio/syntax/lambda_expr.rb,
lib/finitio/type/relation_type.rb,
lib/finitio/syntax/builtin_type.rb,
lib/finitio/support/dress_helper.rb,
lib/finitio/support/type_factory.rb,
lib/finitio/syntax/external_pair.rb,
lib/finitio/syntax/relation_type.rb,
lib/finitio/syntax/constraint_def.rb,
lib/finitio/support/collection_type.rb,
lib/finitio/syntax/named_constraint.rb,
lib/finitio/syntax/unnamed_constraint.rb

Defined Under Namespace

Modules: CollectionType, DataType, Syntax, Version Classes: AdType, AnyType, Attribute, BuiltinType, DressHelper, Error, Heading, RelationType, SeqType, SetType, SubType, System, TupleType, Type, TypeError, TypeFactory, UnionType

Constant Summary collapse

DSL_METHODS =
[
  :attribute,
  :heading,
  :constraints,
  :any,
  :builtin,
  :adt,
  :subtype,
  :union,
  :seq,
  :set,
  :tuple,
  :relation,
  :type
]
DEFAULT_FACTORY =
TypeFactory.new
IDENTITY =
->(object){ object }
DEFAULT_SYSTEM =
system('Finitio/default')
VERSION =
Version.to_s

Instance Method Summary collapse

Instance Method Details

#ast(source) ⇒ Object



44
45
46
47
# File 'lib/finitio.rb', line 44

def ast(source)
  require "finitio/syntax"
  Syntax.ast(source)
end

#definition_files(of) ⇒ Object



58
59
60
61
# File 'lib/finitio.rb', line 58

def definition_files(of)
  dir = File.expand_path("../finitio/#{of}", __FILE__)
  Dir.glob("#{dir}/*.fio")
end

#parse(source) ⇒ Object



39
40
41
42
# File 'lib/finitio.rb', line 39

def parse(source)
  require "finitio/syntax"
  Syntax.compile(source)
end

#system(identifier) ⇒ Object



49
50
51
52
53
54
55
56
# File 'lib/finitio.rb', line 49

def system(identifier)
  f = File.expand_path("../finitio/#{identifier}.fio", __FILE__)
  if File.exists?(f)
    parse(File.read(f))
  else
    raise Error, "Unknown system #{identifier}"
  end
end