Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
This repository was archived by the owner on Nov 8, 2022. It is now read-only.

Commitf51e197

Browse files
committed
refactor(editor): remove middle parse_block macro layer
1 parent5129ae6 commitf51e197

File tree

8 files changed

+52
-209
lines changed

8 files changed

+52
-209
lines changed

‎lib/helper/converter/editor_to_html/class.ex‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,15 @@ defmodule Helper.Converter.EditorToHTML.Class do
2525
"list"=>%{
2626
"wrapper"=>"list-wrapper",
2727
"item"=>"list-item",
28-
"checklist_item"=>"list-checklist__item",
2928
"label"=>"list-label",
3029
"label__default"=>"list-label__default",
3130
"label__red"=>"list-label__red",
3231
"label__green"=>"list-label__green",
3332
"label__warn"=>"list-label__warn",
33+
"checklist_item"=>"list-checklist__item",
34+
"checklist_checkbox"=>"checklist__item-checkbox",
35+
"checklist_checkbox_checked"=>"checklist__item-check-sign-active",
36+
"checklist_checksign"=>"checklist__item-check-sign",
3437
"text"=>"list-item-text",
3538
"checklist_text"=>"list-checklist__item-text"
3639
}

‎lib/helper/converter/editor_to_html/frags/list.ex‎

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ defmodule Helper.Converter.EditorToHTML.Frags.List do
55
see https://editorjs.io/
66
"""
77
aliasHelper.Converter.EditorToHTML.Class
8+
aliasHelper.Types,as:T
89

910
@classget_in(Class.article(),["list"])
1011

@@ -39,12 +40,16 @@ defmodule Helper.Converter.EditorToHTML.Frags.List do
3940
</div>)
4041
end
4142

42-
@specfrag(:checkbox,Boolean.t())::String.t()
43-
deffrag(:checkbox,_checked)do
43+
@specfrag(:checkbox,Boolean.t())::T.html()
44+
deffrag(:checkbox,checked)do
4445
checked_svg=svg(:checked)
4546

46-
~s(<div class="checklist__item-checkbox checklist__item-check-sign-active">
47-
<div class="checklist__item-check-sign">
47+
checkbox_class=@class["checklist_checkbox"]
48+
checkbox_checked_class=ifchecked,do:@class["checklist_checkbox_checked"],else:""
49+
checkbox_checksign_class=@class["checklist_checksign"]
50+
51+
~s(<div class="#{checkbox_class}#{checkbox_checked_class}">
52+
<div class="#{checkbox_checksign_class}">
4853
#{checked_svg}
4954
</div>
5055
</div>)

‎lib/helper/converter/editor_to_html/header.ex‎

Lines changed: 0 additions & 21 deletions
This file was deleted.

‎lib/helper/converter/editor_to_html/index.ex‎

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,16 @@ defmodule Helper.Converter.EditorToHTML do
1212
see https://editorjs.io/
1313
"""
1414

15-
useHelper.Converter.EditorToHTML.{Header,Paragraph,List}
1615
aliasHelper.Types,as:T
17-
1816
aliasHelper.Utils
17+
1918
aliasHelper.Converter.{EditorToHTML,HtmlSanitizer}
20-
aliasEditorToHTML.{Class,Validator}
19+
aliasEditorToHTML.{Class,Frags,Validator}
2120

2221
# alias EditorToHTML.Assets.{DelimiterIcons}
2322
@root_classClass.article()
2423

25-
@specto_html(String.t())::T.ok_html()
24+
@specto_html(String.t())::{:ok,T.html()}
2625
defto_html(string)whenis_binary(string)do
2726
with{:ok,parsed}=string_to_json(string),
2827
{:ok,_}<-Validator.is_valid(parsed)do
@@ -49,6 +48,18 @@ defmodule Helper.Converter.EditorToHTML do
4948
{:ok,~s(<div class="#{viewer_class}">#{content}</div>)}
5049
end
5150

51+
defpparse_block(%{"type"=>"paragraph","data"=>%{"text"=>text}}),do:"<p>#{text}</p>"
52+
53+
defpparse_block(%{"type"=>"header","data"=>data}),do:Frags.Header.get(data)
54+
55+
defpparse_block(%{"type"=>"list","data"=>data})do
56+
%{"items"=>items,"mode"=>mode}=data
57+
58+
Enum.reduce(items,"",fnitem,acc->
59+
acc<>Frags.List.get_item(mode|>String.to_atom(),item)
60+
end)
61+
end
62+
5263
# defp parse_block(%{"type" => "image", "data" => data}) do
5364
# url = get_in(data, ["file", "url"])
5465

‎lib/helper/converter/editor_to_html/list.ex‎

Lines changed: 0 additions & 137 deletions
This file was deleted.

‎lib/helper/converter/editor_to_html/paragraph.ex‎

Lines changed: 0 additions & 14 deletions
This file was deleted.

‎lib/helper/types.ex‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,5 +42,4 @@ defmodule Helper.Types do
4242
html fragment
4343
"""
4444
@typehtml::String.t()
45-
@typeok_html::{:ok,String.t()}
4645
end

‎test/helper/converter/editor_to_html_test/list_test.exs‎

Lines changed: 24 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -4,53 +4,50 @@ defmodule GroupherServer.Test.Helper.Converter.EditorToHTML.List do
44
useGroupherServerWeb.ConnCase,async:true
55

66
aliasHelper.Converter.EditorToHTML,as:Parser
7-
aliasHelper.Converter.EditorToHTML.{Class,Frags}
7+
aliasHelper.Converter.EditorToHTML.Class
88

99
@root_classClass.article()
10-
#@class get_in(@root_class, ["list"])
10+
@classget_in(@root_class,["list"])
1111

1212
describe"[list block unit]"do
13+
@items[
14+
%{
15+
"checked"=>true,
16+
"hideLabel"=>false,
17+
"indent"=>0,
18+
"label"=>"label",
19+
"labelType"=>"default",
20+
"text"=>"list item"
21+
},
22+
%{
23+
"checked"=>false,
24+
"hideLabel"=>false,
25+
"indent"=>0,
26+
"label"=>"label",
27+
"labelType"=>"default",
28+
"text"=>"list item"
29+
}
30+
]
1331
@editor_json%{
1432
"time"=>1_567_250_876_713,
1533
"blocks"=>[
1634
%{
1735
"type"=>"list",
1836
"data"=>%{
1937
"mode"=>"checklist",
20-
"items"=>[
21-
%{
22-
"checked"=>true,
23-
"hideLabel"=>false,
24-
"indent"=>0,
25-
"label"=>"label",
26-
"labelType"=>"default",
27-
"text"=>"list item"
28-
}
29-
]
38+
"items"=>@items
3039
}
3140
}
3241
],
3342
"version"=>"2.15.0"
3443
}
35-
@tag:wip
44+
@tag:wip2
3645
test"valid list parse should work"do
3746
{:ok,editor_string}=Jason.encode(@editor_json)
38-
# assert {:ok, converted} = Parser.to_html(editor_string)
3947
{:ok,converted}=Parser.to_html(editor_string)
4048

41-
real=
42-
Frags.List.get_item(:checklist,%{
43-
"checked"=>true,
44-
"hideLabel"=>false,
45-
"indent"=>0,
46-
"label"=>"label",
47-
"labelType"=>"default",
48-
"text"=>"list item"
49-
})
50-
51-
viewer_class=@root_class["viewer"]
52-
bb=~s(<div class="#{viewer_class}">#{real}</div>)
53-
assertconverted==bb|>String.replace(" viewbox=\""," viewBox=\"")
49+
checked_class=@class["checklist_checkbox_checked"]
50+
assertconverted|>String.split(checked_class)|>length()==2
5451
end
5552

5653
@editor_json%{

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp