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/support.rb,
lib/finitio/version.rb,
lib/finitio/inference.rb,
lib/finitio/generation.rb,
lib/finitio/json_schema.rb,
lib/finitio/syntax/expr.rb,
lib/finitio/syntax/node.rb,
lib/finitio/type/ad_type.rb,
lib/finitio/syntax/import.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/imports.rb,
lib/finitio/syntax/literal.rb,
lib/finitio/support/heading.rb,
lib/finitio/type/alias_type.rb,
lib/finitio/type/proxy_type.rb,
lib/finitio/type/tuple_type.rb,
lib/finitio/type/union_type.rb,
lib/finitio/support/contract.rb,
lib/finitio/support/metadata.rb,
lib/finitio/type/struct_type.rb,
lib/finitio/support/attribute.rb,
lib/finitio/type/builtin_type.rb,
lib/finitio/generation/ad_type.rb,
lib/finitio/support/constraint.rb,
lib/finitio/syntax/definitions.rb,
lib/finitio/type/relation_type.rb,
lib/finitio/generation/any_type.rb,
lib/finitio/generation/seq_type.rb,
lib/finitio/generation/set_type.rb,
lib/finitio/generation/sub_type.rb,
lib/finitio/json_schema/ad_type.rb,
lib/finitio/support/compilation.rb,
lib/finitio/support/fetch_scope.rb,
lib/finitio/syntax/expr/fn_call.rb,
lib/finitio/syntax/expr/literal.rb,
lib/finitio/syntax/expr/oo_call.rb,
lib/finitio/syntax/literal/real.rb,
lib/finitio/syntax/type/ad_type.rb,
lib/finitio/syntax/type/heading.rb,
lib/finitio/type/rel_based_type.rb,
lib/finitio/generation/heuristic.rb,
lib/finitio/json_schema/any_type.rb,
lib/finitio/json_schema/seq_type.rb,
lib/finitio/json_schema/set_type.rb,
lib/finitio/json_schema/sub_type.rb,
lib/finitio/support/dress_helper.rb,
lib/finitio/support/type_factory.rb,
lib/finitio/syntax/expr/arith_op.rb,
lib/finitio/syntax/type/any_type.rb,
lib/finitio/syntax/type/contract.rb,
lib/finitio/syntax/type/metadata.rb,
lib/finitio/syntax/type/seq_type.rb,
lib/finitio/syntax/type/set_type.rb,
lib/finitio/syntax/type/sub_type.rb,
lib/finitio/syntax/type/type_def.rb,
lib/finitio/syntax/type/type_ref.rb,
lib/finitio/type/collection_type.rb,
lib/finitio/type/hash_based_type.rb,
lib/finitio/type/high_order_type.rb,
lib/finitio/generation/alias_type.rb,
lib/finitio/generation/proxy_type.rb,
lib/finitio/generation/union_type.rb,
lib/finitio/syntax/expr/logic_not.rb,
lib/finitio/syntax/literal/string.rb,
lib/finitio/syntax/type/attribute.rb,
lib/finitio/syntax/type/main_type.rb,
lib/finitio/type/multi_tuple_type.rb,
lib/finitio/json_schema/alias_type.rb,
lib/finitio/json_schema/proxy_type.rb,
lib/finitio/json_schema/union_type.rb,
lib/finitio/support/proc_with_code.rb,
lib/finitio/support/proxy_resolver.rb,
lib/finitio/syntax/expr/comparison.rb,
lib/finitio/syntax/expr/identifier.rb,
lib/finitio/syntax/literal/boolean.rb,
lib/finitio/syntax/literal/integer.rb,
lib/finitio/syntax/type/expression.rb,
lib/finitio/syntax/type/tuple_type.rb,
lib/finitio/syntax/type/union_type.rb,
lib/finitio/generation/builtin_type.rb,
lib/finitio/json_schema/struct_type.rb,
lib/finitio/syntax/type/constraints.rb,
lib/finitio/syntax/type/inline_pair.rb,
lib/finitio/syntax/type/lambda_expr.rb,
lib/finitio/syntax/type/struct_type.rb,
lib/finitio/type/heading_based_type.rb,
lib/finitio/json_schema/builtin_type.rb,
lib/finitio/syntax/expr/logic_dyadic.rb,
lib/finitio/syntax/type/builtin_type.rb,
lib/finitio/type/multi_relation_type.rb,
lib/finitio/generation/rel_based_type.rb,
lib/finitio/syntax/expr/parenthesized.rb,
lib/finitio/syntax/type/external_pair.rb,
lib/finitio/syntax/type/heading_extra.rb,
lib/finitio/syntax/type/metadata_attr.rb,
lib/finitio/syntax/type/relation_type.rb,
lib/finitio/generation/hash_based_type.rb,
lib/finitio/json_schema/rel_based_type.rb,
lib/finitio/syntax/expr/unary_minus_op.rb,
lib/finitio/syntax/type/constraint_def.rb,
lib/finitio/generation/heuristic/random.rb,
lib/finitio/json_schema/hash_based_type.rb,
lib/finitio/syntax/type/high_order_vars.rb,
lib/finitio/syntax/type/named_constraint.rb,
lib/finitio/generation/heuristic/constant.rb,
lib/finitio/syntax/type/unnamed_constraint.rb,
lib/finitio/syntax/type/high_order_type_instantiation.rb

Defined Under Namespace

Modules: CollectionType, HashBasedType, HeadingBasedType, JsonSchema, Metadata, RelBasedType, Support, Syntax, Version Classes: AdType, AliasType, AnyType, Attribute, BuiltinType, Compilation, Constraint, Contract, DressHelper, Error, FetchScope, Generation, Heading, HighOrderType, Inference, MultiRelationType, MultiTupleType, ProcWithCode, ProxyResolver, ProxyType, RelationType, SeqType, SetType, StructType, SubType, System, TupleType, Type, TypeError, TypeFactory, UnionType

Constant Summary collapse

IDENTITY =
->(object){ object }
ANY_TYPE =
AnyType.new
LOCK =
Mutex.new
STDLIB_PATHS =
[
  File.expand_path('../finitio/stdlib', __FILE__)
]
MEMOIZED_SYSTEMS =
{}
DEFAULT_SYSTEM =
system(File.read(
  File.expand_path('../finitio/stdlib/finitio/data.fio', __FILE__)
))
VERSION =
Version.to_s

Instance Method Summary collapse

Instance Method Details

#ast(source) ⇒ Object



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

def ast(source)
  Syntax.ast(source)
end

#clear_saved_systems!Object



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

def clear_saved_systems!
  LOCK.synchronize {
    MEMOIZED_SYSTEMS.clear
  }
end

#is_stdlib_source?(source) ⇒ Boolean

Returns:

  • (Boolean)


62
63
64
65
66
67
68
69
70
# File 'lib/finitio.rb', line 62

def is_stdlib_source?(source)
  return false unless source.respond_to?(:to_path)
  stdlib = STDLIB_PATHS.any?{|stdlib|
    a_list = File.expand_path(source.to_path).split('/')
    b_list = File.expand_path(stdlib).split('/')
    a_list[0..b_list.size-1] == b_list
  }
  stdlib ? File.expand_path(source.to_path) : nil
end

#parse(source) ⇒ Object



33
34
35
# File 'lib/finitio.rb', line 33

def parse(source)
  Syntax.parse(source)
end

#stdlib_path(path) ⇒ Object



27
28
29
30
31
# File 'lib/finitio.rb', line 27

def stdlib_path(path)
  LOCK.synchronize {
    STDLIB_PATHS << path
  }
end

#system(source) ⇒ Object



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

def system(source)
  LOCK.synchronize {
    _system(source)
  }
end