Skip to content

Commit

Permalink
feat: Create components at specific paths by using the path parameter.
Browse files Browse the repository at this point in the history
  • Loading branch information
TheWii committed Apr 10, 2022
1 parent abf5fe0 commit ad07f1d
Showing 1 changed file with 10 additions and 10 deletions.
20 changes: 10 additions & 10 deletions integrity/components.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,37 +8,37 @@

@dataclass
class Components:
ctx: Context
ctx: Context = field(repr=False)
components: Dict[str, "Component"] = field(default_factory=dict)
api: Integrity = field(init=False)
api: Integrity = field(init=False, repr=False)

def __post_init__(self):
self.api = self.ctx.inject(Integrity)

def __call__(self, name: str = None):
return self.create(name)
def __call__(self, *args, **kwargs):
return self.create(*args, **kwargs)

def create(self, name: str = None):
path = self.generate_path(name)
def create(self, name: str = None, path: str = None):
if path is None:
path = self.generate_path(name)
if path in self.components:
raise ValueError(
f"Path '{path}' is already being used by another component."
)
component = Component(self, name, path)
component = Component(self, path)
self.components[path] = component
return component

def generate_path(self, name: str = None):
current = self.api._runtime.get_path()
if not name:
if name is None:
return f"{current}/component"
return f"{current}/components/{name}"


@dataclass
class Component:
ref: Components
name: str
ref: Components = field(repr=False)
root: str
data: Dict[str, Any] = field(default_factory=dict)
mcfunctions: Dict[str, str] = field(default_factory=dict)
Expand Down

0 comments on commit ad07f1d

Please sign in to comment.