mirror of
https://github.com/urbit/shrub.git
synced 2024-12-15 04:22:48 +03:00
133 lines
5.0 KiB
Plaintext
133 lines
5.0 KiB
Plaintext
!:
|
|
|%
|
|
++ react-elems :: XX /~
|
|
~+ %- sa ^- (list term)
|
|
:~ %a %abbr %address %area %article %aside %audio %b %base
|
|
%bdi %bdo %big %blockquote %body %br %button %canvas %caption
|
|
%cite %code %col %colgroup %data %datalist %dd %del %details
|
|
%dfn %dialog %div %dl %dt %em %embed %fieldset %figcaption
|
|
%figure %footer %form %h1 %h2 %h3 %h4 %h5 %h6 %head %header
|
|
%hr %html %i %iframe %img %input %ins %kbd %keygen %label
|
|
%legend %li %link %main %map %mark %menu %menuitem %meta
|
|
%meter %nav %noscript %object %ol %optgroup %option %output %p
|
|
%param %picture %pre %progress %q %rp %rt %ruby %s %samp
|
|
%script %section %select %small %source %span %strong %style
|
|
%sub %summary %sup %table %tbody %td %textarea %tfoot %th
|
|
%thead %time %title %tr %track %u %ul %var %video %wbr
|
|
%circle %defs %ellipse %g %line %linear-gradient %mask %path
|
|
%pattern %polygon %polyline %radial-gradient %rect %stop %svg
|
|
%text %tspan
|
|
==
|
|
++ react-attrs
|
|
~+ ^- (map term cord)
|
|
%- mo ^- (list ,[term cord])
|
|
:- [%class 'className']
|
|
=- (rash - (more next (cook |=(a=tape [(cass a) (crip a)]) (star alf))))
|
|
'''
|
|
accept acceptCharset accessKey action allowFullScreen allowTransparency alt
|
|
async autoComplete autoFocus autoPlay cellPadding cellSpacing charSet checked
|
|
classID className colSpan cols content contentEditable contextMenu controls
|
|
coords crossOrigin data dateTime defer dir disabled download draggable encType
|
|
form formAction formEncType formMethod formNoValidate formTarget frameBorder
|
|
headers height hidden high href hrefLang htmlFor httpEquiv icon id label lang
|
|
list loop low manifest marginHeight marginWidth max maxLength media mediaGroup
|
|
method min multiple muted name noValidate open optimum pattern placeholder
|
|
poster preload radioGroup readOnly rel required role rowSpan rows sandbox scope
|
|
scoped scrolling seamless selected shape size sizes span spellCheck src srcDoc
|
|
srcSet start step style tabIndex target title type useMap value width wmode
|
|
'''
|
|
++ react-vale
|
|
~(has in react-elems)
|
|
++ react-to-json
|
|
|= src=manx ^- json
|
|
?: ?=(_:/(**) src)
|
|
(jape v.i.a.g.src)
|
|
=+ atr=(mo a.g.src)
|
|
?: (~(has by atr) [%urb %codemirror])
|
|
?> ?=([[%pre *] _:/(**) ~] src)
|
|
$(src ;codemirror(value "{v.i.a.g.i.c.src}");)
|
|
?: (~(has by atr) [%urb %exec]) :: runnable code attribute tag
|
|
?> ?=([[%pre *] _:/(**) ~] src) :: verify its only a text node
|
|
=* code v.i.a.g.i.c.src
|
|
%_ $
|
|
src
|
|
=+ =< result=(mule .)
|
|
!.(|.((slap !>(.) (ream (crip code))))) :: compile and run safely
|
|
=+ claz=?:(-.result "rancode" "failedcode")
|
|
;div(class "{claz}")
|
|
;pre:"{code}"
|
|
;+ ?: ?=(& -.result)
|
|
;code:"{~(ram re (sell p.result))}"
|
|
;pre
|
|
;div:"error"
|
|
;* %+ turn p.result
|
|
|= a=tank
|
|
^- manx
|
|
;div:"{~(ram re a)}"
|
|
== ==
|
|
==
|
|
%- jobe :~
|
|
c/a/(turn c.src ..$)
|
|
gn/s/(mane-to-cord n.g.src)
|
|
=< ga/(jobe (turn a.g.src .))
|
|
|= [a=mane b=tape] ^- [cord json]
|
|
:_ (jape b)
|
|
?^ a (mane-to-cord a)
|
|
(fall (~(get by react-attrs) a) a)
|
|
==
|
|
::
|
|
++ mane-to-cord |=(a=mane `cord`?@(a a (rap 3 -.a ':' +.a ~)))
|
|
:: generates React javascript XX deprecated
|
|
++ react-to-tape
|
|
|= src=manx ^- tape
|
|
?: (~(has by (mo a.g.src)) [%urb %codemirror])
|
|
?> ?=([[%pre *] _:/(**) ~] src)
|
|
$(src ;codemirror(value "{v.i.a.g.i.c.src}");)
|
|
?: (~(has by (mo a.g.src)) [%urb %exec]) :: runnable code attribute tag
|
|
?> ?=([[%pre *] _:/(**) ~] src) :: verify its only a text node
|
|
=* code v.i.a.g.i.c.src
|
|
=+ ^= result
|
|
(mule |.((slap !>(.) (ream (crip code))))) :: compile and run safely
|
|
?: ?=(%.y -.result) :: it was ok
|
|
=+ ^= new
|
|
;div(class "rancode")
|
|
;pre:"{code}"
|
|
;code:"{~(ram re (sell p.result))}"
|
|
==
|
|
$(src new)
|
|
=+ ^= error
|
|
;div(class "failedcode")
|
|
;pre:"{code}"
|
|
;pre
|
|
;div:"error"
|
|
;* %+ turn
|
|
(scag (dec (lent p.result)) p.result) :: hide react trace
|
|
|= a=tank
|
|
^- manx
|
|
;div:"{~(ram re a)}"
|
|
==
|
|
==
|
|
$(src error)
|
|
;: weld
|
|
"React.createElement("
|
|
=* tan n.g.src
|
|
?^ tan !! :: namespaces unsupported
|
|
?: (react-vale tan)
|
|
"'{(trip tan)}'"
|
|
(trip tan)
|
|
", "
|
|
=- (pojo (jobe (turn a.g.src -)))
|
|
|= [a=mane b=tape]
|
|
=. a ?+(a a %class 'className')
|
|
?^(a !! [a (jape b)])
|
|
", "
|
|
=< ~(ram re %rose [", " "[" "]"] (turn c.src .))
|
|
|= a=manx
|
|
?: ?=(_:/(**) a)
|
|
leaf/(pojo (jape v.i.a.g.a))
|
|
leaf/^$(src a)
|
|
")"
|
|
==
|
|
--
|
|
=*(react . .)
|