~/bend-docscommunity

main.bend source

main.bend on the hub · documented module

# selah-bend — pure Bend Bible parse / share / linkify (route.bible)# Run:     bend main.bend -- "John 3:16"# Publish: bend main.bend --publishimport Baseimport ./parse.bend as Pimport ./linkify.bend as Ldef join_args(xs: List<&1, String>) -> String:  match xs:    case Nil{}:      ""    case h <> Nil{}:      h    case h <> t:      String.append(h, String.append(" ", join_args(t)))def run_linkify_md(+q: String, +src: String, rewrite: Bool) -> IO(Unit):  IO.print(String.append(L.linkify_markdown_cli(q, src, rewrite), "\n"))# After --linkify: optional --src <tag> / --rewrite-existing, then text.type LfPh is Data:  LfGo{+src: String, rewrite: Bool}  LfNeedSrc{rewrite: Bool}  LfHead{+src: String, rewrite: Bool, is_rw: Bool, is_src: Bool, +h: String}def linkify_cli_go(fuel: Nat, ph: LfPh, xs: List<&1, String>) -> IO(Unit):  match fuel:    case 0n:      match ph:        case LfGo{+src, rewrite}:          run_linkify_md(join_args(xs), src, rewrite)        case LfNeedSrc{rewrite}:          run_linkify_md(join_args(xs), "", rewrite)        case LfHead{+src, rewrite, is_rw, is_src, +h}:          run_linkify_md(join_args(h <> xs), src, rewrite)    case 1n+p:      match ph:        case LfGo{+src, rewrite}:          match xs:            case Nil{}:              run_linkify_md("", src, rewrite)            case +h <> t:              linkify_cli_go(                p,                LfHead{src, rewrite, String.eq(h, "--rewrite-existing"), String.eq(h, "--src"), h},                t              )        case LfNeedSrc{rewrite}:          match xs:            case Nil{}:              run_linkify_md("", "", rewrite)            case +tag <> t:              linkify_cli_go(p, LfGo{tag, rewrite}, t)        case LfHead{+src, rewrite, is_rw, is_src, +h}:          match is_rw:            case True{}:              linkify_cli_go(p, LfGo{src, True{}}, xs)            case False{}:              match is_src:                case True{}:                  linkify_cli_go(p, LfNeedSrc{rewrite}, xs)                case False{}:                  run_linkify_md(join_args(h <> xs), src, rewrite)def linkify_cli(xs: List<&1, String>) -> IO(Unit):  linkify_cli_go(64n, LfGo{"", False{}}, xs)type MainPh is Data:  MainLink{is_link: Bool}def main_go_ph(ph: MainPh, +h: String, t: List<&1, String>) -> IO(Unit):  match ph:    case MainLink{is_link}:      match is_link:        case True{}:          linkify_cli(t)        case False{}:          P.run_args(h <> t)def main_go(xs: List<&1, String>) -> IO(Unit):  match xs:    case Nil{}:      P.usage()    case +h <> t:      main_go_ph(MainLink{String.eq(h, "--linkify")}, h, t)def main() -> IO(Unit):  do IO<Unit>:    args : List<&1, String> <- IO.args()    main_go(args)