Skip to content

Commit e78fbfd

Browse files
committed
Update namespace argument
1 parent 39ea554 commit e78fbfd

File tree

6 files changed

+71
-2
lines changed

6 files changed

+71
-2
lines changed

src/config.rs

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,35 @@ fn namespace_from_package_name(package_name: &str) -> String {
295295
}
296296

297297
impl Config {
298+
fn namespace_of_package_name(s: &str) -> String {
299+
let len = s.len();
300+
let mut buf = String::with_capacity(len);
301+
302+
fn aux(s: &str, capital: bool, buf: &mut String, off: usize) {
303+
if off >= s.len() {
304+
return;
305+
}
306+
307+
let ch = s.as_bytes()[off] as char;
308+
match ch {
309+
'a'..='z' | 'A'..='Z' | '0'..='9' | '_' => {
310+
let new_capital = false;
311+
buf.push(if capital { ch.to_ascii_uppercase() } else { ch });
312+
aux(s, new_capital, buf, off + 1);
313+
}
314+
'/' | '-' => {
315+
aux(s, true, buf, off + 1);
316+
}
317+
_ => {
318+
aux(s, capital, buf, off + 1);
319+
}
320+
}
321+
}
322+
323+
aux(s, true, &mut buf, 0);
324+
buf
325+
}
326+
298327
pub fn get_namespace(&self) -> packages::Namespace {
299328
let namespace_from_package = namespace_from_package_name(&self.name);
300329
match (self.namespace.as_ref(), self.namespace_entry.as_ref()) {
@@ -312,7 +341,8 @@ impl Config {
312341
namespace if namespace.is_case(Case::UpperFlat) => {
313342
packages::Namespace::Namespace(namespace.to_string())
314343
}
315-
namespace => packages::Namespace::Namespace(namespace.to_string().to_case(Case::Pascal)),
344+
namespace => packages::Namespace::Namespace(Self::namespace_of_package_name(namespace)),
345+
// namespace.to_string().to_case(Case::Pascal)),
316346
},
317347
(Some(self::NamespaceConfig::String(str)), Some(entry)) => match str.as_str() {
318348
"true" => packages::Namespace::NamespaceWithEntry {

testrepo/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
"packages/main",
77
"packages/dep01",
88
"packages/dep02",
9-
"packages/new-namespace"
9+
"packages/new-namespace",
10+
"packages/namespace-casing"
1011
]
1112
},
1213
"scripts": {
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"name": "@testrepo/namespace-casing",
3+
"version": "0.0.1",
4+
"keywords": [
5+
"rescript"
6+
],
7+
"author": "",
8+
"license": "MIT",
9+
"dependencies": {
10+
"rescript": "*"
11+
}
12+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"name": "namespace-casing",
3+
"namespace": "NamespaceCasingAPI",
4+
"sources": [
5+
{
6+
"dir": "src",
7+
"subdirs": true
8+
}
9+
],
10+
"package-specs": [
11+
{
12+
"module": "esmodule",
13+
"in-source": true
14+
}
15+
],
16+
"suffix": ".mjs",
17+
"bs-dependencies": [],
18+
"bsc-flags": [],
19+
"jsx": {
20+
"version": 4
21+
}
22+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
let x = Sample.meh(1)
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
let meh = (a: int) => {
2+
true
3+
}

0 commit comments

Comments
 (0)