Skip to content

Commit d4b14ea

Browse files
committed
fix: message set pathes, close #565
1 parent 261ce4f commit d4b14ea

File tree

4 files changed

+28
-3
lines changed

4 files changed

+28
-3
lines changed

src/core/loaders/ComposedLoader.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ export class ComposedLoader extends Loader {
120120

121121
pendings = pendings.filter(i => i)
122122

123-
const distrubtedPendings: PendingWrite[][] = new Array(this.loadersReversed.length).fill(null).map(_ => [])
123+
const distrubtedPendings: PendingWrite[][] = new Array(this.loadersReversed.length).fill(null).map(() => [])
124124
const loaders = this.loadersReversed
125125
for (const pending of pendings) {
126126
let handled = false

src/core/loaders/Loader.ts

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/* eslint-disable @typescript-eslint/no-unused-vars */
12
import { Disposable, EventEmitter } from 'vscode'
23
import { uniq, isObject } from 'lodash'
34
import { LocaleTree, LocaleNode, LocaleRecord, FlattenLocaleTree } from '../Nodes'

src/core/loaders/LocaleLoader.ts

+1
Original file line numberDiff line numberDiff line change
@@ -467,6 +467,7 @@ export class LocaleLoader extends Loader {
467467
catch (e) {
468468
this.unsetFile(relativePath)
469469
Log.info(`🐛 Failed to load ${e}`, 2)
470+
// eslint-disable-next-line no-console
470471
console.error(e)
471472
}
472473
}

src/utils/utils.ts

+25-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { set } from 'lodash'
21
import { KeyStyle } from '../core/types'
32
import { ROOT_KEY } from './flat'
43
import { Node, LocaleTree, LocaleNode, LocaleRecord, Config } from '~/core'
@@ -45,14 +44,38 @@ export function resolveFlattenRoot(node?: Node) {
4544
return node
4645
}
4746

47+
export function set(obj: any, key: string, value: any, override = true) {
48+
if (Array.isArray(obj)) {
49+
const num = parseInt(key)
50+
if (!isNaN(num)) {
51+
if (override || obj[num] == null)
52+
obj[num] = value
53+
return obj[num]
54+
}
55+
}
56+
if (override || obj[key] == null)
57+
obj[key] = value
58+
return obj[key]
59+
}
60+
61+
export function setNested(obj: any, keys: string[], value: any) {
62+
if (!keys.length)
63+
return
64+
const key = keys[0]
65+
if (keys.length === 1)
66+
set(obj, key, value)
67+
else
68+
setNested(set(obj, key, {}, false), keys.slice(1), value)
69+
}
70+
4871
export function applyPendingToObject(obj: any, keypath: string, value: any, keyStyle?: KeyStyle) {
4972
if (!Config.disablePathParsing)
5073
keypath = resolveFlattenRootKeypath(keypath)
5174

5275
if (keyStyle === 'flat')
5376
obj[keypath] = value
5477
else
55-
set(obj, keypath, value)
78+
setNested(obj, keypath.split(/\./g), value)
5679

5780
return obj
5881
}

0 commit comments

Comments
 (0)