mirror of
https://github.com/rojo-rbx/rojo.git
synced 2026-04-20 20:55:50 +00:00
Rename RbxItem -> RbxInstance
This commit is contained in:
@@ -6,12 +6,12 @@ This is a super rough draft that I'm trying to use to lay out some of my thought
|
|||||||
### POST `/read`
|
### POST `/read`
|
||||||
Accepts a `Vec<Route>` of items to read.
|
Accepts a `Vec<Route>` of items to read.
|
||||||
|
|
||||||
Returns `Vec<Option<RbxItem>>`, in the same order as the request.
|
Returns `Vec<Option<RbxInstance>>`, in the same order as the request.
|
||||||
|
|
||||||
### POST `/write`
|
### POST `/write`
|
||||||
Accepts a `Vec<{ Route, RbxItem }>` of items to write.
|
Accepts a `Vec<{ Route, RbxInstance }>` of items to write.
|
||||||
|
|
||||||
I imagine that the `Name` attribute of the top-level `RbxItem` would be ignored in favor of the route name?
|
I imagine that the `Name` attribute of the top-level `RbxInstance` would be ignored in favor of the route name?
|
||||||
|
|
||||||
## CLI
|
## CLI
|
||||||
The `rojo serve` command uses three major components:
|
The `rojo serve` command uses three major components:
|
||||||
@@ -21,7 +21,7 @@ The `rojo serve` command uses three major components:
|
|||||||
|
|
||||||
### Transform Plugins
|
### Transform Plugins
|
||||||
Transform plugins (or filter plugins?) can interject in three places:
|
Transform plugins (or filter plugins?) can interject in three places:
|
||||||
* Transform a `VfsItem` that's being read into an `RbxItem` in the VFS
|
* Transform a `VfsItem` that's being read into an `RbxInstance` in the VFS
|
||||||
* Transform an `Rbxitem` that's being written into a `VfsItem` in the VFS
|
* Transform an `Rbxitem` that's being written into a `VfsItem` in the VFS
|
||||||
* Transform a file change into paths that need to be updated in the VFS watcher
|
* Transform a file change into paths that need to be updated in the VFS watcher
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
use rbx::RbxItem;
|
use rbx::RbxInstance;
|
||||||
use vfs::VfsItem;
|
use vfs::VfsItem;
|
||||||
use core::Route;
|
use core::Route;
|
||||||
|
|
||||||
// TODO: Add error case?
|
// TODO: Add error case?
|
||||||
pub enum TransformFileResult {
|
pub enum TransformFileResult {
|
||||||
Value(Option<RbxItem>),
|
Value(Option<RbxInstance>),
|
||||||
Pass,
|
Pass,
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -20,7 +20,7 @@ pub enum FileChangeResult {
|
|||||||
|
|
||||||
pub trait Plugin {
|
pub trait Plugin {
|
||||||
fn transform_file(&self, plugins: &PluginChain, vfs_item: &VfsItem) -> TransformFileResult;
|
fn transform_file(&self, plugins: &PluginChain, vfs_item: &VfsItem) -> TransformFileResult;
|
||||||
fn handle_rbx_change(&self, route: &Route, rbx_item: &RbxItem) -> RbxChangeResult;
|
fn handle_rbx_change(&self, route: &Route, rbx_item: &RbxInstance) -> RbxChangeResult;
|
||||||
fn handle_file_change(&self, route: &Route) -> FileChangeResult;
|
fn handle_file_change(&self, route: &Route) -> FileChangeResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -35,7 +35,7 @@ impl PluginChain {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn transform_file(&self, vfs_item: &VfsItem) -> Option<RbxItem> {
|
pub fn transform_file(&self, vfs_item: &VfsItem) -> Option<RbxInstance> {
|
||||||
for plugin in &self.plugins {
|
for plugin in &self.plugins {
|
||||||
match plugin.transform_file(self, vfs_item) {
|
match plugin.transform_file(self, vfs_item) {
|
||||||
TransformFileResult::Value(rbx_item) => return rbx_item,
|
TransformFileResult::Value(rbx_item) => return rbx_item,
|
||||||
@@ -46,7 +46,7 @@ impl PluginChain {
|
|||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn handle_rbx_change(&self, route: &Route, rbx_item: &RbxItem) -> Option<VfsItem> {
|
pub fn handle_rbx_change(&self, route: &Route, rbx_item: &RbxInstance) -> Option<VfsItem> {
|
||||||
for plugin in &self.plugins {
|
for plugin in &self.plugins {
|
||||||
match plugin.handle_rbx_change(route, rbx_item) {
|
match plugin.handle_rbx_change(route, rbx_item) {
|
||||||
RbxChangeResult::Write(vfs_item) => return vfs_item,
|
RbxChangeResult::Write(vfs_item) => return vfs_item,
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ use std::collections::HashMap;
|
|||||||
|
|
||||||
use core::Route;
|
use core::Route;
|
||||||
use plugin::{Plugin, PluginChain, TransformFileResult, RbxChangeResult, FileChangeResult};
|
use plugin::{Plugin, PluginChain, TransformFileResult, RbxChangeResult, FileChangeResult};
|
||||||
use rbx::{RbxItem, RbxValue};
|
use rbx::{RbxInstance, RbxValue};
|
||||||
use vfs::VfsItem;
|
use vfs::VfsItem;
|
||||||
|
|
||||||
/// A plugin with simple transforms:
|
/// A plugin with simple transforms:
|
||||||
@@ -26,7 +26,7 @@ impl Plugin for DefaultPlugin {
|
|||||||
value: contents.clone(),
|
value: contents.clone(),
|
||||||
});
|
});
|
||||||
|
|
||||||
TransformFileResult::Value(Some(RbxItem {
|
TransformFileResult::Value(Some(RbxInstance {
|
||||||
name: vfs_item.name().clone(),
|
name: vfs_item.name().clone(),
|
||||||
class_name: "StringValue".to_string(),
|
class_name: "StringValue".to_string(),
|
||||||
children: Vec::new(),
|
children: Vec::new(),
|
||||||
@@ -45,7 +45,7 @@ impl Plugin for DefaultPlugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TransformFileResult::Value(Some(RbxItem {
|
TransformFileResult::Value(Some(RbxInstance {
|
||||||
name: vfs_item.name().clone(),
|
name: vfs_item.name().clone(),
|
||||||
class_name: "Folder".to_string(),
|
class_name: "Folder".to_string(),
|
||||||
children: rbx_children,
|
children: rbx_children,
|
||||||
@@ -59,7 +59,7 @@ impl Plugin for DefaultPlugin {
|
|||||||
FileChangeResult::MarkChanged(Some(vec![route.clone()]))
|
FileChangeResult::MarkChanged(Some(vec![route.clone()]))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn handle_rbx_change(&self, _route: &Route, _rbx_item: &RbxItem) -> RbxChangeResult {
|
fn handle_rbx_change(&self, _route: &Route, _rbx_item: &RbxInstance) -> RbxChangeResult {
|
||||||
RbxChangeResult::Pass
|
RbxChangeResult::Pass
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ use serde_json;
|
|||||||
|
|
||||||
use core::Route;
|
use core::Route;
|
||||||
use plugin::{Plugin, PluginChain, TransformFileResult, RbxChangeResult, FileChangeResult};
|
use plugin::{Plugin, PluginChain, TransformFileResult, RbxChangeResult, FileChangeResult};
|
||||||
use rbx::{RbxItem, RbxValue};
|
use rbx::{RbxInstance, RbxValue};
|
||||||
use vfs::VfsItem;
|
use vfs::VfsItem;
|
||||||
|
|
||||||
lazy_static! {
|
lazy_static! {
|
||||||
@@ -27,7 +27,7 @@ impl Plugin for JsonModelPlugin {
|
|||||||
None => return TransformFileResult::Pass,
|
None => return TransformFileResult::Pass,
|
||||||
};
|
};
|
||||||
|
|
||||||
let mut rbx_item: RbxItem = match serde_json::from_str(contents) {
|
let mut rbx_item: RbxInstance = match serde_json::from_str(contents) {
|
||||||
Ok(v) => v,
|
Ok(v) => v,
|
||||||
Err(_) => {
|
Err(_) => {
|
||||||
eprintln!("Unable to parse JSON Model File named {}", vfs_item.name());
|
eprintln!("Unable to parse JSON Model File named {}", vfs_item.name());
|
||||||
@@ -50,7 +50,7 @@ impl Plugin for JsonModelPlugin {
|
|||||||
FileChangeResult::Pass
|
FileChangeResult::Pass
|
||||||
}
|
}
|
||||||
|
|
||||||
fn handle_rbx_change(&self, _route: &Route, _rbx_item: &RbxItem) -> RbxChangeResult {
|
fn handle_rbx_change(&self, _route: &Route, _rbx_item: &RbxInstance) -> RbxChangeResult {
|
||||||
RbxChangeResult::Pass
|
RbxChangeResult::Pass
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use regex::Regex;
|
|||||||
|
|
||||||
use core::Route;
|
use core::Route;
|
||||||
use plugin::{Plugin, PluginChain, TransformFileResult, RbxChangeResult, FileChangeResult};
|
use plugin::{Plugin, PluginChain, TransformFileResult, RbxChangeResult, FileChangeResult};
|
||||||
use rbx::{RbxItem, RbxValue};
|
use rbx::{RbxInstance, RbxValue};
|
||||||
use vfs::VfsItem;
|
use vfs::VfsItem;
|
||||||
|
|
||||||
lazy_static! {
|
lazy_static! {
|
||||||
@@ -49,7 +49,7 @@ impl Plugin for ScriptPlugin {
|
|||||||
value: contents.clone(),
|
value: contents.clone(),
|
||||||
});
|
});
|
||||||
|
|
||||||
TransformFileResult::Value(Some(RbxItem {
|
TransformFileResult::Value(Some(RbxInstance {
|
||||||
name: rbx_name,
|
name: rbx_name,
|
||||||
class_name: class_name,
|
class_name: class_name,
|
||||||
children: Vec::new(),
|
children: Vec::new(),
|
||||||
@@ -117,7 +117,7 @@ impl Plugin for ScriptPlugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn handle_rbx_change(&self, _route: &Route, _rbx_item: &RbxItem) -> RbxChangeResult {
|
fn handle_rbx_change(&self, _route: &Route, _rbx_item: &RbxInstance) -> RbxChangeResult {
|
||||||
RbxChangeResult::Pass
|
RbxChangeResult::Pass
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,10 +2,10 @@ use std::collections::HashMap;
|
|||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct RbxItem {
|
pub struct RbxInstance {
|
||||||
pub name: String,
|
pub name: String,
|
||||||
pub class_name: String,
|
pub class_name: String,
|
||||||
pub children: Vec<RbxItem>,
|
pub children: Vec<RbxInstance>,
|
||||||
pub properties: HashMap<String, RbxValue>,
|
pub properties: HashMap<String, RbxValue>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ use serde_json;
|
|||||||
use core::Config;
|
use core::Config;
|
||||||
use project::Project;
|
use project::Project;
|
||||||
use vfs::{Vfs, VfsChange};
|
use vfs::{Vfs, VfsChange};
|
||||||
use rbx::RbxItem;
|
use rbx::RbxInstance;
|
||||||
use plugin::PluginChain;
|
use plugin::PluginChain;
|
||||||
|
|
||||||
static MAX_BODY_SIZE: usize = 25 * 1024 * 1024; // 25 MiB
|
static MAX_BODY_SIZE: usize = 25 * 1024 * 1024; // 25 MiB
|
||||||
@@ -26,7 +26,7 @@ struct ServerInfo<'a> {
|
|||||||
#[derive(Debug, Serialize)]
|
#[derive(Debug, Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
struct ReadResult<'a> {
|
struct ReadResult<'a> {
|
||||||
items: Vec<Option<RbxItem>>,
|
items: Vec<Option<RbxInstance>>,
|
||||||
server_id: &'a str,
|
server_id: &'a str,
|
||||||
current_time: f64,
|
current_time: f64,
|
||||||
}
|
}
|
||||||
@@ -43,7 +43,7 @@ struct ChangesResult<'a> {
|
|||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
struct WriteSpecifier {
|
struct WriteSpecifier {
|
||||||
route: String,
|
route: String,
|
||||||
item: RbxItem,
|
item: RbxInstance,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn json<T: serde::Serialize>(value: T) -> rouille::Response {
|
fn json<T: serde::Serialize>(value: T) -> rouille::Response {
|
||||||
|
|||||||
Reference in New Issue
Block a user