Skip to content

Commit

Permalink
refactor: Move the standard library modules to their own rust module
Browse files Browse the repository at this point in the history
  • Loading branch information
Marwes committed Apr 13, 2019
1 parent e4c890a commit 5f43862
Show file tree
Hide file tree
Showing 7 changed files with 21 additions and 22 deletions.
21 changes: 7 additions & 14 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -38,16 +38,9 @@ extern crate gluon_codegen;
pub extern crate gluon_vm as vm;

pub mod compiler_pipeline;
#[cfg(feature = "http")]
pub mod http;
#[macro_use]
pub mod import;
pub mod io;
pub mod process;
#[cfg(all(feature = "random", not(target_arch = "wasm32")))]
pub mod rand_bind;
#[cfg(feature = "regex")]
pub mod regex_bind;
pub mod std_lib;

pub use crate::vm::thread::{RootedThread, Thread};

Expand Down Expand Up @@ -801,8 +794,8 @@ impl VmBuilder {
add_extern_module(&vm, "std.channel.prim", crate::vm::channel::load_channel);
add_extern_module(&vm, "std.thread.prim", crate::vm::channel::load_thread);
add_extern_module(&vm, "std.debug.prim", crate::vm::debug::load);
add_extern_module(&vm, "std.io.prim", crate::io::load);
add_extern_module(&vm, "std.process.prim", crate::process::load);
add_extern_module(&vm, "std.io.prim", crate::std_lib::io::load);
add_extern_module(&vm, "std.process.prim", crate::std_lib::process::load);

add_extern_module_if!(
#[cfg(feature = "serialization")],
Expand All @@ -813,25 +806,25 @@ impl VmBuilder {
add_extern_module_if!(
#[cfg(feature = "regex")],
available_if = "gluon is compiled with the 'regex' feature",
args(&vm, "std.regex.prim", crate::regex_bind::load)
args(&vm, "std.regex.prim", crate::std_lib::regex::load)
);

add_extern_module_if!(
#[cfg(feature = "web")],
available_if = "gluon is compiled with the 'web' feature",
args(&vm, "std.http.prim_types", crate::http::load_types)
args(&vm, "std.http.prim_types", crate::std_lib::http::load_types)
);

add_extern_module_if!(
#[cfg(feature = "web")],
available_if = "gluon is compiled with the 'web' feature",
args(&vm, "std.http.prim", crate::http::load)
args(&vm, "std.http.prim", crate::std_lib::http::load)
);

add_extern_module_if!(
#[cfg(all(feature = "random", not(target_arch = "wasm32")))],
available_if = "gluon is compiled with the 'random' feature and is not targeting WASM",
args(&vm, "std.random.prim", crate::rand_bind::load)
args(&vm, "std.random.prim", crate::std_lib::random::load)
);

vm
Expand Down
8 changes: 8 additions & 0 deletions src/std_lib.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#[cfg(feature = "http")]
pub mod http;
pub mod io;
pub mod process;
#[cfg(all(feature = "random", not(target_arch = "wasm32")))]
pub mod random;
#[cfg(feature = "regex")]
pub mod regex;
2 changes: 1 addition & 1 deletion src/http.rs → src/std_lib/http.rs
Original file line number Diff line number Diff line change
Expand Up @@ -406,7 +406,7 @@ macro_rules! uri_binds {

mod std {
pub(crate) mod http {
pub(crate) use crate::http as prim;
pub(crate) use crate::std_lib::http as prim;
}
}

Expand Down
6 changes: 2 additions & 4 deletions src/io.rs → src/std_lib/io.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,7 @@ use crate::vm::thread::{RootedThread, Thread, ThreadInternal};
use crate::vm::types::*;
use crate::vm::{self, ExternModule, Result};

use crate::compiler_pipeline::*;

use super::{Compiler, Error};
use crate::{compiler_pipeline::*, Compiler, Error};

fn print(s: &str) -> IO<()> {
print!("{}", s);
Expand Down Expand Up @@ -334,7 +332,7 @@ fn load_script(

mod std {
pub mod io {
pub use crate::io as prim;
pub use crate::std_lib::io as prim;
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/process.rs → src/std_lib/process.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ fn execute(create: CreateProcess) -> IO<Option<i32>> {

mod std {
pub mod process {
pub use crate::process as prim;
pub use crate::std_lib::process as prim;
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/rand_bind.rs → src/std_lib/random.rs
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ fn xor_shift_next(gen: &XorShiftRng) -> RngNext<XorShiftRng> {

mod std {
pub mod random {
pub use crate::rand_bind as prim;
pub use crate::std_lib::random as prim;
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/regex_bind.rs → src/std_lib/regex.rs
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ fn error_to_string(err: &Error) -> &str {

mod std {
pub mod regex {
pub use crate::regex_bind as prim;
pub use crate::std_lib::regex as prim;
}
}

Expand Down

0 comments on commit 5f43862

Please sign in to comment.