Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦境迷离
Scala Macro Tools
提交
39283867
S
Scala Macro Tools
项目概览
梦境迷离
/
Scala Macro Tools
上一次同步 1 年多
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
Scala Macro Tools
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
39283867
编写于
5月 02, 2022
作者:
梦境迷离
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add StringUtils and test
上级
f9284653
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
56 addition
and
1 deletion
+56
-1
build.sbt
build.sbt
+0
-1
csv-core/src/main/scala/org/bitlap/csv/core/StringUtils.scala
...core/src/main/scala/org/bitlap/csv/core/StringUtils.scala
+28
-0
csv-core/src/test/scala/org/bitlap/csv/core/test/CsvableAndScalableTest.scala
...ala/org/bitlap/csv/core/test/CsvableAndScalableTest.scala
+21
-0
csv-core/src/test/scala/org/bitlap/csv/core/test/StringUtilsTest.scala
...test/scala/org/bitlap/csv/core/test/StringUtilsTest.scala
+7
-0
未找到文件。
build.sbt
浏览文件 @
39283867
import
sbt.librarymanagement.InclExclRule
import
sbt.
{
Def
,
Test
}
import
sbtrelease.ReleaseStateTransformations._
...
...
csv-core/src/main/scala/org/bitlap/csv/core/StringUtils.scala
浏览文件 @
39283867
...
...
@@ -22,6 +22,8 @@
package
org.bitlap.csv.core
import
scala.collection.mutable.ListBuffer
import
java.util.regex.Pattern
import
scala.util.matching.Regex
/**
* split csv column value by columnSeparator.
...
...
@@ -31,6 +33,32 @@ import scala.collection.mutable.ListBuffer
*/
object
StringUtils
{
private
val
regex
:
Regex
=
"\\{(.*?)\\}"
.
r
private
val
kvr
:
Regex
=
"(.*):(.*)"
.
r
private
val
pattern
:
Pattern
=
Pattern
.
compile
(
regex
.
toString
())
def
extraJsonPairs
(
input
:
String
)
:
String
=
{
val
matcher
=
pattern
.
matcher
(
input
)
while
(
matcher
.
find
)
{
val
tail
=
matcher
.
group
().
tail
.
init
if
(
tail
!=
null
&&
tail
.
nonEmpty
)
{
return
tail
}
else
return
null
}
null
}
def
extraJsonValues
[
T
<:
Product
](
jsonString
:
String
)(
func
:
(
String
,
String
)
=>
T
)
:
List
[
T
]
=
{
val
pairs
=
extraJsonPairs
(
jsonString
)
if
(
pairs
==
null
)
return
Nil
val
jsonElements
=
pairs
.
split
(
","
)
val
kvs
=
jsonElements
.
collect
{
case
kvr
(
k
,
v
)
if
k
.
length
>
2
&&
v
.
length
>
2
=>
k
.
init
.
tail
->
v
.
init
.
tail
}
kvs
.
toList
.
map
(
f
=>
func
(
f
.
_1
,
f
.
_2
))
}
def
splitColumns
(
line
:
String
,
columnSeparator
:
Char
)
:
List
[
String
]
=
{
val
listBuffer
=
ListBuffer
[
String
]()
val
columnBuffer
=
ListBuffer
[
Char
]()
...
...
csv-core/src/test/scala/org/bitlap/csv/core/test/CsvableAndScalableTest.scala
浏览文件 @
39283867
...
...
@@ -21,6 +21,8 @@
package
org.bitlap.csv.core.test
import
org.bitlap.csv.core.StringUtils
import
org.scalatest.flatspec.AnyFlatSpec
import
org.scalatest.matchers.should.Matchers
import
org.bitlap.csv.core.ScalableBuilder
...
...
@@ -122,4 +124,23 @@ class CsvableAndScalableTest extends AnyFlatSpec with Matchers {
assert
(
metrics
.
head
.
get
.
dimensions
.
head
.
key
==
"city"
)
assert
(
metrics
.
head
.
get
.
dimensions
.
head
.
value
==
"北京"
)
}
"CsvableAndScalable3"
should
"ok when using StringUtils"
in
{
val
metrics
=
csvData
.
split
(
"\n"
)
.
map
(
csv
=>
ScalableBuilder
[
Metric2
]
.
setField
[
Seq
[
Dimension3
]](
_
.
dimensions
,
dims
=>
StringUtils
.
extraJsonValues
[
Dimension3
](
dims
)((
k
,
v
)
=>
Dimension3
(
k
,
v
))
)
.
build
(
csv
)
.
toScala
)
println
(
metrics
.
toList
)
assert
(
metrics
.
head
.
get
.
dimensions
.
head
.
key
==
"city"
)
assert
(
metrics
.
head
.
get
.
dimensions
.
head
.
value
==
"北京"
)
}
}
csv-core/src/test/scala/org/bitlap/csv/core/test/StringUtilsTest.scala
浏览文件 @
39283867
...
...
@@ -37,4 +37,11 @@ class StringUtilsTest extends AnyFlatSpec with Matchers {
println
(
csv
)
assert
(
csv
.
size
==
8
)
}
"StringUtilsTest2"
should
"ok"
in
{
val
line
=
"""abc,"{""a"":""b"",""c"":""d""}",d,12,2,false,0.1,0.23333"""
val
csv
=
StringUtils
.
extraJsonValues
[
Dimension3
](
line
)((
k
,
v
)
=>
Dimension3
(
k
,
v
))
println
(
csv
)
assert
(
csv
.
toString
()
==
"List(Dimension3(a,b), Dimension3(c,d))"
)
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录