diff --git a/src/lib/md.mbt b/src/lib/md.mbt index ebdbe25..6f789ec 100644 --- a/src/lib/md.mbt +++ b/src/lib/md.mbt @@ -16,17 +16,16 @@ fnalias @respo_node.( h3, h4, pre, - li, - text_node + li ) ///| -fnalias @respo.code_fonts +let code_fonts = @respo.code_fonts ///| fn[T] comp_code_block( lines : Array[String], - highlighter~ : (String, String) -> String = fn(x, _) -> String { x } + highlighter~ : (String, String) -> String = fn(x, _) -> String { x }, ) -> @respo_node.RespoNode[T] { let lang = lines[0] let content = lines[1:].to_array().join("\n") @@ -43,11 +42,11 @@ fn[T] comp_snippet( content : String, class_name? : String, highliter? : (String, String) -> String, - lang? : String + lang? : String, ) -> @respo_node.RespoNode[T] { - let highliter = highliter.or(fn(content, _) -> String { content }) - let highlighted = highliter(content, lang.or("text")) - return div(class_list=[style_snippet, class_name.or("")], [ + let highliter = highliter.unwrap_or(fn(content, _) -> String { content }) + let highlighted = highliter(content, lang.unwrap_or("text")) + return div(class_list=[style_snippet, class_name.unwrap_or("")], [ pre(class_name=style_code_block, children=[code(inner_text=highlighted)]), ]) } @@ -140,9 +139,9 @@ fn[T] comp_link(chunk : String) -> @respo_node.RespoNode[T] { ///| pub fn[T] comp_md( text : String, - class_name? : String + class_name? : String, ) -> @respo_node.RespoNode[T] { - div(class_name=class_name.or(""), render_inline(text)) + div(class_name=class_name.unwrap_or(""), render_inline(text)) } ///| @@ -150,12 +149,12 @@ pub fn[T] comp_md_block( text : String, class_name? : String, style? : @respo_node.RespoStyle, - highlighter~ : (String, String) -> String = fn(x, _) -> String { x } + highlighter~ : (String, String) -> String = fn(x, _) -> String { x }, ) -> @respo_node.RespoNode[T] { let blocks = split_block(text) return div( - class_list=[class_name.or(""), "md-block"], - style=style.or(respo_style()), + class_list=[class_name.unwrap_or(""), "md-block"], + style=style.unwrap_or(respo_style()), blocks .iter() .map(fn(block) { @@ -163,7 +162,7 @@ pub fn[T] comp_md_block( Text(lines) => comp_text_block(lines.to_array()) Code(lines) => comp_code_block(lines.to_array(), highlighter~) Table(lines) => comp_table_block(lines.to_array()) - _ => div([block.to_string() |> text_node]) + Empty => div([]) } }) .collect(), @@ -172,7 +171,7 @@ pub fn[T] comp_md_block( ///| fn[T] comp_table_block( - lines : Array[Array[String]] + lines : Array[Array[String]], ) -> @respo_node.RespoNode[T] { let header_line = lines[0] let mark_line = lines[1] diff --git a/src/lib/regex.mbt b/src/lib/regex.mbt index 570b70d..125d1a5 100644 --- a/src/lib/regex.mbt +++ b/src/lib/regex.mbt @@ -1,5 +1,6 @@ ///| -priv extern type JsRegex +#external +priv type JsRegex ///| extract basic information from a regex match result priv struct MatchResult { @@ -11,7 +12,7 @@ priv struct MatchResult { ///| extern "js" fn JsRegex::js_regex_create( pattern : String, - flags : String + flags : String, ) -> JsRegex = #| (pattern, flags) => new RegExp(pattern, flags) @@ -24,7 +25,8 @@ extern "js" fn JsRegex::match_str(regex : JsRegex, input : String) -> JsValue = #| } ///| -priv extern type JsValue +#external +priv type JsValue ///| extern "js" fn JsValue::is_null(obj : JsValue) -> Bool = @@ -34,18 +36,10 @@ extern "js" fn JsValue::is_null(obj : JsValue) -> Bool = extern "js" fn JsValue::get_length(obj : JsValue) -> UInt = #| (obj) => obj.length -///| -extern "js" fn JsValue::get_prop(obj : JsValue, p : String) -> JsValue = - #| (obj, p) => obj[p] - ///| extern "js" fn JsValue::reinterpret_as_string(obj : JsValue) -> String = #| (obj) => obj -///| -extern "js" fn JsValue::reinterpret_as_int(obj : JsValue) -> Int = - #| (obj) => obj - ///| extern "js" fn JsValue::get_index(obj : JsValue, index : UInt) -> JsValue = #| (obj, index) => obj[index] diff --git a/src/lib/util.mbt b/src/lib/util.mbt index 9ca64e1..0301f9c 100644 --- a/src/lib/util.mbt +++ b/src/lib/util.mbt @@ -22,7 +22,7 @@ priv enum Block { Text(@immut/array.T[String]) Code(@immut/array.T[String]) Table(@immut/array.T[Array[String]]) -} derive(Show, Eq) +} ///| fn split_block(text : String) -> Array[Block] { @@ -37,7 +37,7 @@ fn split_block(text : String) -> Array[Block] { fn split_block_iter( lines : Array[String], acc : Array[Block], - buffer : Block + buffer : Block, ) -> Array[Block] { if lines.is_empty() { if buffer is Empty { @@ -124,7 +124,7 @@ priv enum LineChunk { Image(String) Emphasis(String) Italic(String) -} derive(Show, Eq) +} ///| fn LineChunk::is_empty(self : LineChunk) -> Bool { @@ -149,7 +149,7 @@ fn split_line(line : String) -> Array[LineChunk] { fn split_line_iter( acc : Array[LineChunk], line : String, - mode : LineChunk + mode : LineChunk, ) -> Array[LineChunk] { if line == "" { if mode.is_empty() { diff --git a/src/main/container.mbt b/src/main/container.mbt index d1bda92..371eeae 100644 --- a/src/main/container.mbt +++ b/src/main/container.mbt @@ -15,14 +15,22 @@ fnalias @respo_node.( ) ///| -fnalias @respo.( - ui_row_middle, - ui_row, - ui_expand, - ui_textarea, - ui_font_code, - ui_input -) +let ui_row_middle = @respo.ui_row_middle + +///| +let ui_row = @respo.ui_row + +///| +let ui_expand = @respo.ui_expand + +///| +let ui_textarea = @respo.ui_textarea + +///| +let ui_font_code = @respo.ui_font_code + +///| +let ui_input = @respo.ui_input ///| struct ContainerState { @@ -32,7 +40,7 @@ struct ContainerState { ///| fn[Op : @respo_node.RespoAction] comp_container( - states : RespoStatesTree + states : RespoStatesTree, ) -> @respo_node.RespoNode[Op] { let cursor = states.path() let state = (states.cast_branch() : ContainerState) @@ -72,7 +80,7 @@ fn[Op : @respo_node.RespoAction] comp_container( placeholder="text inline", on_input=fn(e, dispatch) { if e is Input(value~, ..) { - dispatch.set_state!(cursor, { ..state, text: value }) + dispatch.set_state(cursor, { ..state, text: value }) } }, ), @@ -97,7 +105,7 @@ fn[Op : @respo_node.RespoAction] comp_container( ), on_input=fn(e, dispatch) { if e is Input(value~, ..) { - dispatch.set_state!(cursor, { ..state, draft: value }) + dispatch.set_state(cursor, { ..state, draft: value }) } }, ), diff --git a/src/main/main.mbt b/src/main/main.mbt index d57129c..aea2c77 100644 --- a/src/main/main.mbt +++ b/src/main/main.mbt @@ -1,5 +1,5 @@ ///| -fnalias @respo.ui_global +let ui_global = @respo.ui_global ///| fnalias @respo_node.(div, respo_style) @@ -9,8 +9,8 @@ let app_store_key : String = "mbt-workflow" ///| fn view( - store : Store -) -> @respo_node.RespoNode[ActionOp]!@respo_node.RespoCommonError { + store : Store, +) -> @respo_node.RespoNode[ActionOp] raise @respo_node.RespoCommonError { if false { raise @respo_node.RespoCommonError("TODO") } @@ -35,7 +35,7 @@ fn main { } app.backup_model_beforeunload() // @dom_ffi.log("store: " + app.store.val.to_json().stringify(indent=2)) - app.render_loop(fn() { view!(app.store.val) }, fn(op) { + app.render_loop(fn() { view(app.store.val) }, fn(op) { @dom_ffi.log("Action: " + op.to_string()) app.store.val.update(op) }) diff --git a/src/main/store.mbt b/src/main/store.mbt index ea110d7..7e59d53 100644 --- a/src/main/store.mbt +++ b/src/main/store.mbt @@ -47,8 +47,3 @@ fn update(self : Store, op : ActionOp) -> Unit { StatesChange(states) => self.states.set_in_mut(states) } } - -///| -impl Show for Store with output(self, logger) -> Unit { - logger.write_string(self.to_json().stringify(indent=2)) -}