p true ? 1 : 2 #breakpoint module M555 def r;4 end #breakpoint r=r.nil? #2nd r seems like it should be MethNameToken, but is VarNameToken (for matz too) #breakpoint end #breakpoint p ?e.+?y p ?e.+ ?y p ?e.-?y p ?e.*?y p ?e./?y p ?e.<"PMK:njs;d| foobar0 p 0.9 p 1.45000000000000000000000000000000000000001 p 9.999999999999999999999999999999999999999999 p 9.999999999999999999999999999999999999999999e999999999999999999999999999 p 0b0100011001 p 0o123456701 p 0123456701 p 0x123456789abcdefABCDEF01 p % foo p % foo p % foo p eval "%\sfoo\s" p eval "%\tfoo\t" p :p p :p p eval "%\vfoo\v" p eval "%\rfoo\r" p :p p :p p eval "%\nfoo\n" p eval "%\0foo\0" p eval "%\r\nfoo\r\n" p eval "%\n\rfoo\n\r" #ruby get this wrong p eval "%\n\rfoo\n" #this shouldn't work but does p eval "%\r\nfoo\r" #this does not work, p eval "%\r\nfoo\n" #this shouldn't work but does p "Hi, my name is #{"Slim #{(4)>2?"Whitman":"Shady"} "}." p "Hi, my name is #{"Slim #{(4)<2?"Whitman":"Shady"} "}." #breakpoint p(String *Class) class String class Class end end #def String(x) x.to_s end #it's already built-in. duh! def String.*(right) [self,right] end def String.<<(right) [self,:<<,right] end def String./(right) [self,:/,right] end def String.[](right) [self,:[],right] end p(String::Class) p(String:: Class) p(String ::Class) p(String :: Class) p(String< p end q=9 Q=99 p:p8 false ? p: p8 p :p8 false ? p : p8 false ? q:p8 false ? q: p8 false ? q :p8 false ? q : p8 #false ? Q:p8 #gives ruby indigestion false ? Q: p8 #false ? Q :p8 #gives ruby indigestion false ? Q : p8 p?:p8 false ? p?: p8 p? :p8 false ? p? : p8 p??1 p? ?1 p(p?? 1 : 2) p(p? ? 1 : 2) P?:p8 false ? P?: p8 P? :p8 false ? P? : p8 P??1 P? ?1 p(P?? 1 : 2) p(P? ? 1 : 2) self.[]:p8 false ? self.[]: p8 self.[] :p8 false ? self.[] : p8 self.<=>:p8 false ? self.<=>: p8 self.<=> :p8 false ? self.<=> : p8 self <=>:p8 #false ? self <=>: p8 #gives ruby indigestion self <=> :p8 #false ? self <=> : p8 #gives ruby indigestion end #breakpoint p <2) p(p >2) p(p> 2) p(p > 2) #breakpoint end #breakpoint module M34 p(p~6) p(p ~6) p(p~ 6) p(p ~ 6) p(p*[1]) p(p *[1]) p(p* [1]) p(p * [1]) p(p&proc{}) p(p &proc{}) p(p& proc{}) p(p & proc{}) p(p !1) p(p ?1) p(p ! 1) p(p ? 1 : 6) p(p@a) p(p @a) # p(p@ a) #wont # p(p @ a) #work p(p#a ) p(p #a ) p(p# a ) p(p # a ) p(p$a) p(p $a) # p(p$ a) #wont # p(p $ a) #work p(p%Q{:foo}) p(p %Q{:foo}) p(p% Q{:foo}) p(p % Q{:foo}) p(p^6) p(p ^6) p(p^ 6) p(p ^ 6) p(p&7) p(p &proc{7}) p(p& 7) p(p & 7) p(p(2)) p(p (2)) p(p( 2)) p(p ( 2)) p(p(p)) p(p()) p(p (p)) p(p ()) p(p ( p)) p(p ( )) p(p( p)) p(p( )) p(p) p((p)) p(p ) p((p )) p((p p)) p((p p,p)) p((p p)) p((p p,p)) p(p-0) p(p -1) p(p- 0) p(p - 0) p(p+9) p(p +9) p(p+ 9) p(p + 9) p(p[1]) p(p [1]) p(p[ 1]) p(p [ 1]) p(p{1}) p(p {1}) p(p{ 1}) p(p { 1}) p(p/1) p(p /22/) p(p/ 1) p(p / 22) p(p._) p(p ._) p(p. _) p(p . _) p(p:f) p(p :f) p(false ? p: f) p(false ? p : f) p((p;1)) p((p ;1)) p((p; 1)) p((p ; 1)) p(p<1) p(p <1) p(p< 1) p(p < 1) p(p<<1) p(p <<1) foobar 1 p(p<< 1) p(p << 1) p(p'j') p(p 'j') p(p' j') p(p ' j') p(p"k") p(p "k") p(p" k") p(p " k") p(p|4) p(p |4) p(p| 4) p(p | 4) p(p>2) p(p >2) p(p> 2) p(p > 2) end def bob(x) x end def bill(x) x end p(bob %(22)) for bob in [100] do p(bob %(22)) end p(bob %(22)) def %(n) to_s+"%#{n}" end p(bill %(22)) begin sdjkfsjkdfsd; rescue Object => bill; p(bill %(22)) end p(bill %(22)) undef % class Object public :` def `(s) print "bq: #{s}\n" end end 69.`('what a world') 79::`('what a word') p :` p{} p {} a=5 p p +5 p a +5 def nil.+(x) ~x end def nil.[](*x) [x] end p( p + 5 ) p( p +5 ) p( p+5 ) p( p[] ) p( p [] ) p( p [ ] ) class NilClass; undef +,[] end class Foou public def [] x=-100,&y; p x; 100 end end a0=8 p Foou.new.[]!false #value p Foou.new.[] !false #value p Foou.new.[]~9 #value p Foou.new.[] ~9 #value p Foou.new.[]-9 #op p Foou.new.[]+9 #op p Foou.new.[] -9 #value p Foou.new.[] +9 #value p Foou.new.[]<<9 #op p Foou.new.[] <<9 #value foobar 9 p Foou.new.[]%9 #op p Foou.new.[]/9 #op p Foou.new.[] %(9) #value p Foou.new.[] /9/ #value p Foou.new.[]$9 #value p Foou.new.[]a0 #value p Foou.new.[] $9 #value p Foou.new.[] a0 #value p Foou.new.[]{9} #lambda (op) p Foou.new.[] {9} #lambda (op) if p then p end p({:foo=>:bar}) #why does this work? i'd think that ':foo=' would be 1 token p EMPTY = 0 p BLACK = 1 p WHITE = - BLACK a=b=c=0 a ? b:c a ?b:c p(a ? b:c) p(a ?b:c) p~4 p:f p(~4){} p(:f){} h={} h.default=:foo p def (h="foobar").default= v; p @v=v;v end p h p h.default=:b x, (*y) = [:x, :y, :z] p x p y x, *y = [:x, :y, :z] p x p y x, * = [:x, :y, :z] p x p Array("foo\nbar") p +(4) p -(4) p :'\\' class Foop def Foop.bar a,b p a,b end end Foop.bar 1,2 Foop::bar 3,4 class Foop def Foop::baz a,b p :baz,a,b end end Foop.baz 5,6 Foop::baz 7,8 without_creating=widgetname=nil if without_creating && !widgetname #foo fail ArgumentError, "if set 'without_creating' to true, need to define 'widgetname'" end =begin disable for now #class, module, and def should temporarily hide local variables def mopsdfjskdf arg; arg*2 end mopsdfjskdf=5 class C p mopsdfjskdf %(3) #calls method end module M p mopsdfjskdf %(4) #calls method end def d p mopsdfjskdf %(5) #calls method end p d p mopsdfjskdf %(6) #reads variable p proc{mopsdfjskdf %(7)}[] #reads variable #fancy symbols not supported yet p %s{symbol} =end #multiple assignment test proc { a,b,c,d,e,f,g,h,i,j,k=1,2,3,4,5,6,7,8,9,10,11 p(b %(c)) p(a %(c)) p(k %(c)) p(p %(c)) }.call =begin disable for now p "#{<~m) p <(foo=100)} p( foo %(5)) }.call p "#{<"PMK:njs;d| foobar1 }" def foo(a=<>|\|\||\&\&)=|\&\&|\|\|)/) p(:%) p( { :class => class_=0}) p cls_name = {}[:class] p foo p "#{$!.class}" p :p p(:p) p(:"[]") p :"[]" p("\\") p(/\\/) p(/[\\]/) p 0x80 p ?p p 0.1 p 0.8 p 0.9 p(-1) p %/p/ p %Q[
  • ] i=99 p %Q[
  • #{i[0]+i[1]+(i[2])}\n] p(:side=>:top) p %w[a b c d e f] p %w[a b c\n d e f] p %w[\\] p %w[\]] p :+ p 99 / 3 a=99;b=3 p 1+(a / b) p %Q[\"] p %Q[ some [nested] text] if false formatter.format_element(element) do amrita_expand_and_format1(element, context, formatter) end end if false ret = <<-END @@parts_template = #{template.to_ruby} def parts_template @@parts_template end #{c.const_def_src.join("\n")} def amrita_expand_and_format(element, context, formatter) if element.tagname_symbol == :span and element.attrs.size == 0 amrita_expand_and_format1(element, context, formatter) else formatter.format_element(element) do amrita_expand_and_format1(element, context, formatter) end end end def amrita_expand_and_format1(element, context, formatter) #{method_src} end END j=55 end p ' ' p '\n' p " " p "\n" p %w/ / p %w/\n/ p %W/ / p %W/\n/ p(/ /) p(/\n/) p proc { p ` ` p `\n` } p(%r[foo]i) p <