Packages

A model management framework supporting multi-layered abstraction structures, pluggable data layers, and arbitrary command-line transform tools.

Current section

Files

Jump to
paradigm lib builtin filesystem.ex
Raw

lib/builtin/filesystem.ex

defmodule Paradigm.Builtin.Filesystem do
@moduledoc """
The filesystem model.
"""
alias Paradigm.{Package, Class, Property, PrimitiveType}
def definition do
%Paradigm{
name: "Filesystem",
description: "Describes file/folder structure including file contents.",
primitive_types: %{"string" => %PrimitiveType{name: "String"}},
packages: %{
"filesystem_package" => %Package{
name: "filesystem",
uri: "http://example.org/filesystem",
nested_packages: [],
owned_types: ["node", "file", "folder"]
}
},
classes: %{
"file" => %Class{
name: "File",
is_abstract: false,
properties: %{
"contents" => %Property{
name: "contents",
type: "string",
position: 0
},
"extension" => %Property{
name: "extension",
type: "string",
position: 1
}
},
super_classes: ["node"]
},
"folder" => %Class{
name: "Folder",
is_abstract: false,
properties: %{
"children" => %Property{
name: "children",
type: "node",
is_ordered: true,
is_composite: true,
lower_bound: 0,
upper_bound: :infinity,
position: 0
}
},
super_classes: ["node"]
},
"node" => %Class{
name: "Node",
is_abstract: true,
properties: %{
"name" => %Property{
name: "name",
type: "string",
position: 0
},
"parent" => %Property{
name: "parent",
type: "folder",
is_ordered: false,
is_composite: false,
lower_bound: 0,
upper_bound: 1,
position: 1
}
},
super_classes: []
}
},
enumerations: %{}
}
end
end