Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dynamic Namespaces #1132

Open
17 tasks
StartAutomating opened this issue Jun 27, 2024 · 0 comments
Open
17 tasks

Dynamic Namespaces #1132

StartAutomating opened this issue Jun 27, 2024 · 0 comments
Assignees
Labels
enhancement New feature or request Philosophy Project Philosophy

Comments

@StartAutomating
Copy link
Owner

StartAutomating commented Jun 27, 2024

Dynamic Namespaces

Why should a dynamic language have static namespaces?

If a developer can dynamically define a variable, alias, or function with literally any name, and items can be queried efficiently enough, it makes a startling amount of sense to be able to dynamically define a namespace, too.

PipeScript should embrace dynamic namespacing.

That is, it should be easy to define a namespace in PipeScript, and the namespaces should be as dynamic as possible.

To that end, let us start to think of a dynamic namespace as "a pattern for names".

Justification

In many ways, it already has (see #452). Modules can define CommandTypes, which use a name and pattern to identify themselves.

This is a somewhat awkward name, as it overlaps with the built-in concept of Command Types.

By starting to call these namespaces, the concept should be clear to most programmers.

By letting them be as dynamic as the language they live in, they should be incredibly powerful.

Architecture

A namespace should be able to be self-described in any [PSObject], provided it has the typename 'Namespace'.

Core namespace support will be implemented in .types.ps1xml

Then any object can choose to become a namespace, simply by adding Namespace to it's .pstypenames.

Putting it very simply:

Once namespaces are easy to declare, they are easy to work with.

Implementation

Dynamic namespaces will bring some core changes to PipeScript:

Any namespace will be able to perform the following methods:

Any namespace will have the following ScriptProperties:

Any namespace will have the following ScriptMethods:

Namespaces should have fairly good formatting:

@StartAutomating StartAutomating added enhancement New feature or request Philosophy Project Philosophy labels Jun 27, 2024
@StartAutomating StartAutomating self-assigned this Jun 27, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request Philosophy Project Philosophy
Projects
None yet
Development

No branches or pull requests

1 participant