omcg/module

Types

pub type BinaryOperationNS {
  BinaryOperationNS(
    create: fn(Module, Operator, Module) -> Module,
    access: fn(Module, Module) -> Module,
    pipe: fn(Module, Module) -> Module,
    string_concat: fn(Module, Module) -> Module,
  )
}

Constructors

pub type BuiltinTypesNS {
  BuiltinTypesNS(
    string: fn() -> Module,
    int: fn() -> Module,
    float: fn() -> Module,
  )
}

Constructors

pub type CaseBranchData {
  CaseBranchData(
    expression: Node,
    guard: option.Option(Node),
    body: List(Node),
  )
}

Constructors

pub type CaseBranchNS {
  CaseBranchNS(
    create: fn(Module) -> Module,
    create_default: fn() -> Module,
    add: fn(Module, Module) -> Module,
  )
}

Constructors

pub type CaseExpressionNS {
  CaseExpressionNS(
    create: fn(Module) -> Module,
    add: fn(Module, Module) -> Module,
  )
}

Constructors

pub type ConstDefinitionNS {
  ConstDefinitionNS(
    create: fn(String, Module) -> Module,
    public: fn(Module) -> Module,
    as_type: fn(Module) -> Module,
  )
}

Constructors

pub type Field {
  Field(name: option.Option(String), type_: Node)
}

Constructors

pub type FunctionCallNS {
  FunctionCallNS(
    create: fn(Module) -> Module,
    add: fn(Module, Module) -> Module,
    add_with_alias: fn(Module, String, Module) -> Module,
  )
}

Constructors

pub type FunctionCallParameter {
  FunctionCallParameter(
    alias: option.Option(String),
    value: Node,
  )
}

Constructors

pub type FunctionDefinitionNS {
  FunctionDefinitionNS(
    create: fn() -> Module,
    public: fn(Module) -> Module,
    with_name: fn(Module, String) -> Module,
    add_parameter: fn(Module, String, Module) -> Module,
    add_untyped_parameter: fn(Module, String) -> Module,
    add_aliased_parameter: fn(Module, String, String, Module) -> Module,
    with_return_type: fn(Module, Module) -> Module,
    add: fn(Module, Module) -> Module,
  )
}

Constructors

pub type FunctionDefinitionParameter {
  FunctionDefinitionParameter(
    alias: option.Option(String),
    name: String,
    type_: option.Option(Node),
  )
}

Constructors

pub type IdentifierNS {
  IdentifierNS(create: fn(String) -> Module, discard: Module)
}

Constructors

  • IdentifierNS(create: fn(String) -> Module, discard: Module)
pub type Import {
  Import(
    path: List(String),
    items: List(ImportItem),
    alias: option.Option(String),
  )
}

Constructors

pub type ImportItem {
  ImportType(name: String, alias: option.Option(String))
  ImportItem(name: String, alias: option.Option(String))
}

Constructors

pub type LetDefinitionNS {
  LetDefinitionNS(
    create: fn(Module, Module) -> Module,
    type_: fn(Module, Module) -> Module,
  )
}

Constructors

pub type Literal {
  String(value: String)
  Int(value: Int)
  Float(value: Float)
  Bool(value: Bool)
  Tuple(value: List(Node))
  List(value: List(Node))
}

Constructors

  • String(value: String)
  • Int(value: Int)
  • Float(value: Float)
  • Bool(value: Bool)
  • Tuple(value: List(Node))
  • List(value: List(Node))
pub type LiteralNS {
  LiteralNS(
    string: fn(String) -> Module,
    int: fn(Int) -> Module,
    float: fn(Float) -> Module,
    bool: fn(Bool) -> Module,
    tuple: fn(List(Module)) -> Module,
    nested_tuple: fn(List(Module)) -> Module,
    list: fn(List(Module)) -> Module,
    nil: Module,
  )
}

Constructors

pub type Module {
  Module(node: Node, imports: List(Import))
}

Constructors

pub type Node {
  Root(body: List(Node))
  FunctionDefinition(
    public: Bool,
    name: option.Option(String),
    parameters: List(FunctionDefinitionParameter),
    return_type: option.Option(Node),
    body: List(Node),
  )
  BinaryOperation(lhs: Node, operator: Operator, rhs: Node)
  Identifier(name: String)
  FunctionCall(
    lhs: Node,
    parameters: List(FunctionCallParameter),
  )
  TypeVariant(data: TypeVariantData)
  TypeDefinition(
    public: Bool,
    name: String,
    generics: List(String),
    variants: List(TypeVariantData),
  )
  ConstDefinition(
    public: Bool,
    as_type: Bool,
    name: String,
    value: Node,
  )
  CaseBranch(data: CaseBranchData)
  CaseExpression(
    expression: Node,
    branches: List(CaseBranchData),
  )
  UseExpression(parameters: List(String), rhs: Node)
  Literal(literal: Literal)
  SectionComment(comment: String)
  LetDefinition(
    pattern: Node,
    type_: option.Option(Node),
    value: Node,
  )
}

Constructors

pub type Operator {
  Access
  Add
  Subtract
  Multiply
  Divide
  FloatAdd
  FloatSubtract
  FloatDivide
  FloatMultiply
  StringConcat
  Pipe
}

Constructors

  • Access
  • Add
  • Subtract
  • Multiply
  • Divide
  • FloatAdd
  • FloatSubtract
  • FloatDivide
  • FloatMultiply
  • StringConcat
  • Pipe
pub type RootNS {
  RootNS(
    create: fn() -> Module,
    add: fn(Module, Module) -> Module,
  )
}

Constructors

pub type TypeDefinitionNS {
  TypeDefinitionNS(
    create: fn(String) -> Module,
    public: fn(Module) -> Module,
    add: fn(Module, Module) -> Module,
  )
}

Constructors

pub type TypeVariantData {
  TypeVariantData(name: String, fields: List(Field))
}

Constructors

  • TypeVariantData(name: String, fields: List(Field))
pub type TypeVariantNS {
  TypeVariantNS(
    create: fn(String) -> Module,
    field: fn(Module, option.Option(String), Module) -> Module,
  )
}

Constructors

pub type UseExpressionNS {
  UseExpressionNS(
    create: fn(Module) -> Module,
    add: fn(Module, String) -> Module,
  )
}

Constructors

Values

pub fn add_aliased_import(
  module module: Module,
  path path: List(String),
  alias alias: String,
) -> Module
pub fn add_aliased_item_import(
  module module: Module,
  path path: List(String),
  name name: String,
  alias alias: String,
) -> Module
pub fn add_aliased_type_import(
  module module: Module,
  path path: List(String),
  name name: String,
  alias alias: String,
) -> Module
pub fn add_import(
  module module: Module,
  path path: List(String),
) -> Module
pub fn add_item_import(
  module module: Module,
  path path: List(String),
  name name: String,
) -> Module
pub fn add_type_import(
  module module: Module,
  path path: List(String),
  name name: String,
) -> Module
pub const case_branch: CaseBranchNS
pub const case_expression: CaseExpressionNS
pub const const_definition: ConstDefinitionNS
pub const function_call: FunctionCallNS
pub const function_definition: FunctionDefinitionNS
pub const identifier: IdentifierNS
pub const let_definition: LetDefinitionNS
pub const literal: LiteralNS
pub fn merge_imports(a: Module, b: Module) -> Module
pub fn node_to_string(node: Node, indent: Int) -> String
pub const root: RootNS
pub fn section_comment(comment: String) -> Module
pub fn temptest() -> Module
pub fn to_string(module: Module) -> String
pub fn to_string2(module: Module) -> String
pub const type_definition: TypeDefinitionNS
pub const type_variant: TypeVariantNS
pub const use_expression: UseExpressionNS
✨ Search Document