Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
T
tallty_import_export
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
open-source
tallty_import_export
Commits
7f5e7e64
Commit
7f5e7e64
authored
Nov 05, 2024
by
liyijie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: try_chain error for numeric key
parent
1c20b6c1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
7 additions
and
4 deletions
+7
-4
export.rb
lib/tallty_import_export/export.rb
+7
-4
No files found.
lib/tallty_import_export/export.rb
View file @
7f5e7e64
...
@@ -245,11 +245,14 @@ module TalltyImportExport
...
@@ -245,11 +245,14 @@ module TalltyImportExport
def
try_chain
(
payload
,
arr
)
def
try_chain
(
payload
,
arr
)
arr
.
reduce
(
payload
)
do
|
r
,
m
|
arr
.
reduce
(
payload
)
do
|
r
,
m
|
if
m
=~
/^\d+$/
next
nil
unless
r
# 如果 r 为 nil,直接返回 nil 结束循环
if
m
=~
/^\d+$/
&&
r
.
is_a?
(
Array
)
index
=
m
.
to_i
index
=
m
.
to_i
r
[
index
]
if
r
.
is_a?
(
Array
)
||
(
r
.
respond_to?
(
:[]
)
&&
index
<
r
.
size
)
# If r is an Array or responds to :[]
r
[
index
]
if
index
<
r
.
size
# 如果 m 是数字,并且 r 是数组
else
else
r
.
try
(
m
)
||
r
.
try
(
:[]
,
m
)
||
r
.
try
(
:[]
,
m
.
to_sym
)
# 尝试按哈希键或方法访问
r
[
m
]
||
r
[
m
.
to_sym
]
||
(
r
.
respond_to?
(
m
)
?
r
.
send
(
m
)
:
nil
)
end
end
rescue
StandardError
rescue
StandardError
nil
nil
...
@@ -259,7 +262,7 @@ module TalltyImportExport
...
@@ -259,7 +262,7 @@ module TalltyImportExport
def
try_method
(
payload
,
method
,
prefix:
nil
)
def
try_method
(
payload
,
method
,
prefix:
nil
)
prefix_arr
=
prefix
.
to_s
.
split
(
/\./
)
prefix_arr
=
prefix
.
to_s
.
split
(
/\./
)
arr
=
method
.
split
(
'.'
).
flat_map
{
|
m
|
m
.
include?
(
'['
)
?
m
.
split
(
/\[\s*|\s*\]/
).
reject
(
&
:
empty?
)
:
m
}
arr
=
method
.
split
(
'.'
).
flat_map
{
|
m
|
m
.
include?
(
'['
)
?
m
.
split
(
/\[\s*|\s*\]/
).
reject
(
&
:
empty?
)
:
m
}
try_chain
payload
,
prefix_arr
+
arr
try_chain
(
payload
,
prefix_arr
+
arr
)
end
end
# 根据数据类型 attr_type 进行数据的格式化
# 根据数据类型 attr_type 进行数据的格式化
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment