mirror of
https://github.com/ilyakooo0/urbit.git
synced 2024-09-22 07:59:22 +03:00
Implements all cranes.
This commit is contained in:
parent
a4dfda9897
commit
fdcfebb73d
@ -26,6 +26,15 @@
|
||||
test-parse-scaffold-crane-fsbr
|
||||
test-parse-scaffold-crane-fsts
|
||||
test-parse-scaffold-crane-fsdt
|
||||
test-parse-scaffold-crane-fscm
|
||||
test-parse-scaffold-crane-fscn
|
||||
test-parse-scaffold-crane-fspm
|
||||
test-parse-scaffold-crane-fscb
|
||||
test-parse-scaffold-crane-fssm
|
||||
test-parse-scaffold-crane-fscl
|
||||
test-parse-scaffold-crane-fskt
|
||||
test-parse-scaffold-crane-fszp
|
||||
test-parse-scaffold-crane-fszy
|
||||
test-literal
|
||||
test-autocons-same
|
||||
test-autocons-different
|
||||
@ -346,6 +355,7 @@
|
||||
[1 1]
|
||||
"""
|
||||
/| /~ ~
|
||||
/~ ~
|
||||
==
|
||||
// /%/child/hoon
|
||||
"""
|
||||
@ -358,8 +368,14 @@
|
||||
libraries=~
|
||||
^= crane
|
||||
:~ :* %fsbr
|
||||
[%fssg %dbug [/~nul/desk/~1234.5.6/bar/foo [1 9] [1 10]] [%bust %null]]~
|
||||
== ==
|
||||
:~ :* %fssg %dbug
|
||||
[/~nul/desk/~1234.5.6/bar/foo [1 9] [1 10]]
|
||||
[%bust %null]
|
||||
==
|
||||
:* %fssg %dbug
|
||||
[/~nul/desk/~1234.5.6/bar/foo [2 9] [2 10]]
|
||||
[%bust %null]
|
||||
== == == ==
|
||||
^= sources
|
||||
:~ :* %indirect
|
||||
[[~nul %desk [%da ~1234.5.6]] /hoon/child/foo/bar]
|
||||
@ -425,7 +441,286 @@
|
||||
:~ :* %indirect
|
||||
[[~nul %desk [%da ~1234.5.6]] /hoon/child/foo/bar]
|
||||
== == ==
|
||||
|
||||
::
|
||||
++ test-parse-scaffold-crane-fscm
|
||||
~& %test-parse-scaffold-crane-fscm
|
||||
::
|
||||
=/ parsed
|
||||
%+ (full (parse-scaffold:ford-gate [[~nul %desk %da ~1234.5.6] /foo/bar]))
|
||||
[1 1]
|
||||
"""
|
||||
/,
|
||||
/path/to/a
|
||||
/~ !. a=5
|
||||
::
|
||||
/path/to/b
|
||||
/~ !. b=6
|
||||
==
|
||||
// /%/child/hoon
|
||||
"""
|
||||
?~ q.parsed
|
||||
[%leaf "failed to parse at {<p.parsed>}"]~
|
||||
%- expect-eq !>
|
||||
:_ p.u.q.parsed
|
||||
:* zuse-version=309
|
||||
structures=~
|
||||
libraries=~
|
||||
^= crane
|
||||
:~ :* %fscm
|
||||
:~ :- /path/to/a
|
||||
:* %fssg %dbug
|
||||
[/~nul/desk/~1234.5.6/bar/foo [3 7] [3 14]]
|
||||
(ream 'a=5')
|
||||
==
|
||||
:- /path/to/b
|
||||
:* %fssg %dbug
|
||||
[/~nul/desk/~1234.5.6/bar/foo [6 7] [6 14]]
|
||||
(ream 'b=6')
|
||||
== == == ==
|
||||
^= sources
|
||||
:~ :* %indirect
|
||||
[[~nul %desk [%da ~1234.5.6]] /hoon/child/foo/bar]
|
||||
== == ==
|
||||
::
|
||||
++ test-parse-scaffold-crane-fscn
|
||||
~& %test-parse-scaffold-crane-fscn
|
||||
::
|
||||
=/ parsed
|
||||
%+ (full (parse-scaffold:ford-gate [[~nul %desk %da ~1234.5.6] /foo/bar]))
|
||||
[1 1]
|
||||
"""
|
||||
/% /$ !. |=(a a)
|
||||
// /%/child/hoon
|
||||
"""
|
||||
?~ q.parsed
|
||||
[%leaf "failed to parse at {<p.parsed>}"]~
|
||||
%- expect-eq !>
|
||||
:_ p.u.q.parsed
|
||||
:* zuse-version=309
|
||||
structures=~
|
||||
libraries=~
|
||||
^= crane
|
||||
:~ :* %fscn %fsbc %dbug
|
||||
[/~nul/desk/~1234.5.6/bar/foo [1 9] [1 20]]
|
||||
(ream '|=(a a)')
|
||||
== ==
|
||||
^= sources
|
||||
:~ :* %indirect
|
||||
[[~nul %desk [%da ~1234.5.6]] /hoon/child/foo/bar]
|
||||
== == ==
|
||||
::
|
||||
++ test-parse-scaffold-crane-fspm
|
||||
~& %test-parse-scaffold-crane-fspm
|
||||
::
|
||||
=/ parsed
|
||||
%+ (full (parse-scaffold:ford-gate [[~nul %desk %da ~1234.5.6] /foo/bar]))
|
||||
[1 1]
|
||||
"""
|
||||
/= data /& mark /~ !. a=1
|
||||
// /%/child/hoon
|
||||
"""
|
||||
?~ q.parsed
|
||||
[%leaf "failed to parse at {<p.parsed>}"]~
|
||||
%- expect-eq !>
|
||||
:_ p.u.q.parsed
|
||||
:* zuse-version=309
|
||||
structures=~
|
||||
libraries=~
|
||||
^= crane
|
||||
:~ :* %fsts %data
|
||||
%fspm [%mark ~]
|
||||
%fssg %dbug
|
||||
[/~nul/desk/~1234.5.6/bar/foo [1 25] [1 32]]
|
||||
(ream 'a=1')
|
||||
== ==
|
||||
^= sources
|
||||
:~ :* %indirect
|
||||
[[~nul %desk [%da ~1234.5.6]] /hoon/child/foo/bar]
|
||||
== == ==
|
||||
::
|
||||
++ test-parse-scaffold-crane-fscb
|
||||
~& %test-parse-scaffold-crane-fscb
|
||||
::
|
||||
=/ parsed
|
||||
%+ (full (parse-scaffold:ford-gate [[~nul %desk %da ~1234.5.6] /foo/bar]))
|
||||
[1 1]
|
||||
"""
|
||||
/_ /mark/
|
||||
// /%/child/hoon
|
||||
"""
|
||||
?~ q.parsed
|
||||
[%leaf "failed to parse at {<p.parsed>}"]~
|
||||
%- expect-eq !>
|
||||
:_ p.u.q.parsed
|
||||
:* zuse-version=309
|
||||
structures=~
|
||||
libraries=~
|
||||
^= crane
|
||||
:~ :* %fscb %fszy %mark
|
||||
== ==
|
||||
^= sources
|
||||
:~ :* %indirect
|
||||
[[~nul %desk [%da ~1234.5.6]] /hoon/child/foo/bar]
|
||||
== == ==
|
||||
::
|
||||
++ test-parse-scaffold-crane-fssm
|
||||
~& %test-parse-scaffold-crane-fssm
|
||||
::
|
||||
=/ parsed
|
||||
%+ (full (parse-scaffold:ford-gate [[~nul %desk %da ~1234.5.6] /foo/bar]))
|
||||
[1 1]
|
||||
"""
|
||||
/= data
|
||||
/; !. |=(a=@u +(a))
|
||||
/~ !. 5
|
||||
// /%/child/hoon
|
||||
"""
|
||||
?~ q.parsed
|
||||
[%leaf "failed to parse at {<p.parsed>}"]~
|
||||
%- expect-eq !>
|
||||
:_ p.u.q.parsed
|
||||
:* zuse-version=309
|
||||
structures=~
|
||||
libraries=~
|
||||
^= crane
|
||||
:~ :* %fsts %data
|
||||
%fssm
|
||||
:* %dbug
|
||||
[/~nul/desk/~1234.5.6/bar/foo [2 7] [2 24]]
|
||||
(ream '|=(a=@u +(a))')
|
||||
==
|
||||
%fssg
|
||||
:* %dbug
|
||||
[/~nul/desk/~1234.5.6/bar/foo [3 7] [3 12]]
|
||||
(ream '5')
|
||||
== == ==
|
||||
^= sources
|
||||
:~ :* %indirect
|
||||
[[~nul %desk [%da ~1234.5.6]] /hoon/child/foo/bar]
|
||||
== == ==
|
||||
::
|
||||
++ test-parse-scaffold-crane-fscl
|
||||
~& %test-parse-scaffold-crane-fscl
|
||||
::
|
||||
=/ parsed
|
||||
%+ (full (parse-scaffold:ford-gate [[~nul %desk %da ~1234.5.6] /foo/bar]))
|
||||
[1 1]
|
||||
"""
|
||||
/= tests
|
||||
/: /===/tests
|
||||
/_ /mark/
|
||||
// /%/child/hoon
|
||||
"""
|
||||
?~ q.parsed
|
||||
[%leaf "failed to parse at {<p.parsed>}"]~
|
||||
%- expect-eq !>
|
||||
:_ p.u.q.parsed
|
||||
:* zuse-version=309
|
||||
structures=~
|
||||
libraries=~
|
||||
^= crane
|
||||
:~ :* %fsts %tests
|
||||
%fscl [[~ ~[~ ~ ~ [~ [%sand %tas 495.874.958.708]]]] ~]
|
||||
%fscb %fszy %mark
|
||||
== ==
|
||||
^= sources
|
||||
:~ :* %indirect
|
||||
[[~nul %desk [%da ~1234.5.6]] /hoon/child/foo/bar]
|
||||
== == ==
|
||||
::
|
||||
++ test-parse-scaffold-crane-fskt
|
||||
~& %test-parse-scaffold-crane-fskt
|
||||
::
|
||||
=/ parsed
|
||||
%+ (full (parse-scaffold:ford-gate [[~nul %desk %da ~1234.5.6] /foo/bar]))
|
||||
[1 1]
|
||||
"""
|
||||
/= data
|
||||
/^ !. (list @ud)
|
||||
/. /~ !. 1
|
||||
/~ !. 2
|
||||
==
|
||||
// /%/child/hoon
|
||||
"""
|
||||
?~ q.parsed
|
||||
[%leaf "failed to parse at {<p.parsed>}"]~
|
||||
%- expect-eq !>
|
||||
:_ p.u.q.parsed
|
||||
:* zuse-version=309
|
||||
structures=~
|
||||
libraries=~
|
||||
^= crane
|
||||
:~ :* %fsts %data
|
||||
%fskt
|
||||
:* %dbug
|
||||
[/~nul/desk/~1234.5.6/bar/foo [2 7] [2 21]]
|
||||
(ream '(list @ud)')
|
||||
==
|
||||
%fsdt
|
||||
:~ :* %fssg %dbug
|
||||
[/~nul/desk/~1234.5.6/bar/foo [3 11] [3 16]]
|
||||
(ream '1')
|
||||
==
|
||||
:* %fssg %dbug
|
||||
[/~nul/desk/~1234.5.6/bar/foo [4 11] [4 16]]
|
||||
(ream '2')
|
||||
== == == ==
|
||||
^= sources
|
||||
:~ :* %indirect
|
||||
[[~nul %desk [%da ~1234.5.6]] /hoon/child/foo/bar]
|
||||
== == ==
|
||||
::
|
||||
++ test-parse-scaffold-crane-fszp
|
||||
~& %test-parse-scaffold-crane-fszp
|
||||
::
|
||||
=/ parsed
|
||||
%+ (full (parse-scaffold:ford-gate [[~nul %desk %da ~1234.5.6] /foo/bar]))
|
||||
[1 1]
|
||||
"""
|
||||
/= data /!mark/
|
||||
// /%/child/hoon
|
||||
"""
|
||||
?~ q.parsed
|
||||
[%leaf "failed to parse at {<p.parsed>}"]~
|
||||
%- expect-eq !>
|
||||
:_ p.u.q.parsed
|
||||
:* zuse-version=309
|
||||
structures=~
|
||||
libraries=~
|
||||
^= crane
|
||||
:~ :* %fsts %data
|
||||
%fszp %mark
|
||||
== ==
|
||||
^= sources
|
||||
:~ :* %indirect
|
||||
[[~nul %desk [%da ~1234.5.6]] /hoon/child/foo/bar]
|
||||
== == ==
|
||||
::
|
||||
++ test-parse-scaffold-crane-fszy
|
||||
~& %test-parse-scaffold-crane-fszy
|
||||
::
|
||||
=/ parsed
|
||||
%+ (full (parse-scaffold:ford-gate [[~nul %desk %da ~1234.5.6] /foo/bar]))
|
||||
[1 1]
|
||||
"""
|
||||
/= data /mark/
|
||||
// /%/child/hoon
|
||||
"""
|
||||
?~ q.parsed
|
||||
[%leaf "failed to parse at {<p.parsed>}"]~
|
||||
%- expect-eq !>
|
||||
:_ p.u.q.parsed
|
||||
:* zuse-version=309
|
||||
structures=~
|
||||
libraries=~
|
||||
^= crane
|
||||
:~ :* %fsts %data
|
||||
%fszy %mark
|
||||
== ==
|
||||
^= sources
|
||||
:~ :* %indirect
|
||||
[[~nul %desk [%da ~1234.5.6]] /hoon/child/foo/bar]
|
||||
== == ==
|
||||
::
|
||||
++ test-literal
|
||||
~& %test-literal
|
||||
|
@ -1471,9 +1471,27 @@
|
||||
(stag %fsts ;~(pfix tis parse-face))
|
||||
:: `/.` null terminated list
|
||||
(stag %fsdt ;~(pfix dot parse-list))
|
||||
:: `/,` switch by path
|
||||
(stag %fscm ;~(pfix com parse-switch))
|
||||
:: `/%` propagate extra arguments into renderers
|
||||
(stag %fscn ;~(pfix cen subcrane))
|
||||
:: `/&` pass through a series of mark
|
||||
(stag %fspm ;~(pfix pam parse-pipe))
|
||||
:: `/_` run a crane on each file in the current directory
|
||||
(stag %fscb ;~(pfix cab subcrane))
|
||||
:: `/;` passes date through a gate
|
||||
(stag %fssm ;~(pfix sem parse-gate))
|
||||
:: `/:` evaluate at path
|
||||
(stag %fscl ;~(pfix col parse-at-path))
|
||||
:: `/^` cast
|
||||
(stag %fskt ;~(pfix ket parse-cast))
|
||||
:: `/!mark/ evaluate as hoon, then pass through mark
|
||||
(stag %fszp ;~(pfix zap ;~(sfix sym fas)))
|
||||
:: `/mark/` passes current path through :mark
|
||||
(stag %fszy ;~(sfix sym fas))
|
||||
==
|
||||
==
|
||||
:: +parse-alts
|
||||
:: +parse-alts: parse a set of alternatives
|
||||
::
|
||||
++ parse-alts
|
||||
%+ wide-or-tall
|
||||
@ -1491,6 +1509,38 @@
|
||||
%+ wide-or-tall
|
||||
fail
|
||||
;~(sfix (star subcrane) gap duz)
|
||||
:: +parse-switch: parses a list of [path crane]
|
||||
::
|
||||
++ parse-switch
|
||||
%+ wide-or-tall
|
||||
fail
|
||||
=- ;~(sfix (star -) gap duz)
|
||||
;~(pfix gap fas ;~(plug static-path subcrane))
|
||||
:: +parse-pipe: parses a pipe of mark conversions
|
||||
::
|
||||
++ parse-pipe
|
||||
%+ wide-or-tall
|
||||
;~(plug (plus ;~(sfix sym pam)) subcrane)
|
||||
=+ (cook |=(a=term [a ~]) sym)
|
||||
;~(pfix gap ;~(plug - subcrane))
|
||||
:: +parse-gate: parses a gate applied to a crane
|
||||
::
|
||||
++ parse-gate
|
||||
%+ wide-or-tall
|
||||
;~(plug ;~(sfix wide:hoon-parser sem) subcrane)
|
||||
;~(pfix gap ;~(plug tall:hoon-parser subcrane))
|
||||
:: +parse-at-path: parses a late bound bath
|
||||
::
|
||||
++ parse-at-path
|
||||
%+ wide-or-tall
|
||||
;~(plug ;~(sfix late-bound-path col) subcrane)
|
||||
;~(pfix gap ;~(plug late-bound-path subcrane))
|
||||
:: +parse-cast: parses a mold and then the subcrane to apply that mold to
|
||||
::
|
||||
++ parse-cast
|
||||
%+ wide-or-tall
|
||||
;~(plug ;~(sfix wide:hoon-parser ket) subcrane)
|
||||
;~(pfix gap ;~(plug tall:hoon-parser subcrane))
|
||||
:: +crane: parses a subcrane
|
||||
::
|
||||
++ subcrane
|
||||
@ -1503,7 +1553,7 @@
|
||||
|* [wide=rule tall=rule]
|
||||
?. allow-tall-form wide
|
||||
;~(pose wide tall)
|
||||
:: +hoon: parses hoon
|
||||
:: +hoon: parses hoon as an argument to a crane
|
||||
::
|
||||
++ hoon
|
||||
%+ wide-or-tall
|
||||
@ -1518,6 +1568,21 @@
|
||||
:: todo: ignoring :remote-location syntax for now as it is weird.
|
||||
(easy ~)
|
||||
==
|
||||
:: +static-path: parses a path
|
||||
::
|
||||
++ static-path
|
||||
(sear plex (stag %clsg (more fas hasp))):hoon-parser
|
||||
:: +late-bound-path: a path whose time varies
|
||||
::
|
||||
++ late-bound-path
|
||||
;~ pfix fas
|
||||
%+ cook |=(a/truss a)
|
||||
=> hoon-parser
|
||||
;~ plug
|
||||
(stag ~ gash)
|
||||
;~(pose (stag ~ ;~(pfix cen porc)) (easy ~))
|
||||
==
|
||||
==
|
||||
--
|
||||
:: +per-event: per-event core
|
||||
::
|
||||
|
Loading…
Reference in New Issue
Block a user