Skip to content

Instantly share code, notes, and snippets.

@lnznt
Created May 1, 2012 03:43
Show Gist options
  • Save lnznt/2564779 to your computer and use it in GitHub Desktop.
Save lnznt/2564779 to your computer and use it in GitHub Desktop.
[sample] the % notation [ %q!...! ] (Ruby)
#!/usr/bin/env ruby
# -*- coding: UTF-8 -*-
#
# $ ruby -v
# ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
#
x = "xyz"
p %q!abc!
p %q"abc"
p %q#abc#
p %q$abc$
p %q%abc%
p %q&abc&
p %q'abc'
p %q(abc)
p %q)abc)
p %q*abc*
p %q+abc+
p %q,abc,
p %q-abc-
p %q.abc.
p %q/abc/
p %q:abc:
p %q;abc;
p %q<abc>
p %q=abc=
p %q>abc>
p %q?abc?
p %q@abc@
p %q[abc]
p %q\abc\
p %q]abc]
p %q^abc^
p %q_abc_
p %q`abc`
p %q{abc}
p %q|abc|
p %q}abc}
p %q~abc~
p ( %q!abc! )
p ( %q"abc" )
p ( %q#abc# )
p ( %q$abc$ )
p ( %q%abc% )
p ( %q&abc& )
p ( %q'abc' )
p ( %q(abc) )
p ( %q)abc) )
p ( %q*abc* )
p ( %q+abc+ )
p ( %q,abc, )
p ( %q-abc- )
p ( %q.abc. )
p ( %q/abc/ )
p ( %q:abc: )
p ( %q;abc; )
p ( %q<abc> )
p ( %q=abc= )
p ( %q>abc> )
p ( %q?abc? )
p ( %q@abc@ )
p ( %q[abc] )
p ( %q\abc\ )
p ( %q]abc] )
p ( %q^abc^ )
p ( %q_abc_ )
p ( %q`abc` )
p ( %q{abc} )
p ( %q|abc| )
p ( %q}abc} )
p ( %q~abc~ )
# vi:set ts=2 sw=2 et:
#!/usr/bin/env ruby
# -*- coding: UTF-8 -*-
#
# $ ruby -v
# ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
#
x = "xyz"
p %q!abc#{x}!
p %q"abc#{x}"
#p %q#abc#{x}# ### Syntax Error
p %q$abc#{x}$
p %q%abc#{x}%
p %q&abc#{x}&
p %q'abc#{x}'
p %q(abc#{x})
p %q)abc#{x})
p %q*abc#{x}*
p %q+abc#{x}+
p %q,abc#{x},
p %q-abc#{x}-
p %q.abc#{x}.
p %q/abc#{x}/
p %q:abc#{x}:
p %q;abc#{x};
p %q<abc#{x}>
p %q=abc#{x}=
p %q>abc#{x}>
p %q?abc#{x}?
p %q@abc#{x}@
p %q[abc#{x}]
p %q\abc#{x}\
p %q]abc#{x}]
p %q^abc#{x}^
p %q_abc#{x}_
p %q`abc#{x}`
p %q{abc#{x}}
p %q|abc#{x}|
#p %q}abc#{x}} ### Syntax Error
p %q~abc#{x}~
p ( %q!abc#{x}! )
p ( %q"abc#{x}" )
#p ( %q#abc#{x}# ) ### Syntax Error
p ( %q$abc#{x}$ )
p ( %q%abc#{x}% )
p ( %q&abc#{x}& )
p ( %q'abc#{x}' )
p ( %q(abc#{x}) )
p ( %q)abc#{x}) )
p ( %q*abc#{x}* )
p ( %q+abc#{x}+ )
p ( %q,abc#{x}, )
p ( %q-abc#{x}- )
p ( %q.abc#{x}. )
p ( %q/abc#{x}/ )
p ( %q:abc#{x}: )
p ( %q;abc#{x}; )
p ( %q<abc#{x}> )
p ( %q=abc#{x}= )
p ( %q>abc#{x}> )
p ( %q?abc#{x}? )
p ( %q@abc#{x}@ )
p ( %q[abc#{x}] )
p ( %q\abc#{x}\ )
p ( %q]abc#{x}] )
p ( %q^abc#{x}^ )
p ( %q_abc#{x}_ )
p ( %q`abc#{x}` )
p ( %q{abc#{x}} )
p ( %q|abc#{x}| )
#p ( %q}abc#{x}} ) ### Syntax Error
p ( %q~abc#{x}~ )
# vi:set ts=2 sw=2 et:
#!/usr/bin/env ruby
# -*- coding: UTF-8 -*-
#
# $ ruby -v
# ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
#
x = "xyz"
p %q!abc%s!% x
p %q"abc%s"% x
p %q#abc%s#% x
p %q$abc%s$% x
#p %q%abc%s%% x ### Syntax Error
p %q&abc%s&% x
p %q'abc%s'% x
p %q(abc%s)% x
p %q)abc%s)% x
p %q*abc%s*% x
p %q+abc%s+% x
p %q,abc%s,% x
p %q-abc%s-% x
p %q.abc%s.% x
p %q/abc%s/% x
p %q:abc%s:% x
p %q;abc%s;% x
p %q<abc%s>% x
p %q=abc%s=% x
p %q>abc%s>% x
p %q?abc%s?% x
p %q@abc%s@% x
p %q[abc%s]% x
p %q\abc%s\% x
p %q]abc%s]% x
p %q^abc%s^% x
p %q_abc%s_% x
p %q`abc%s`% x
p %q{abc%s}% x
p %q|abc%s|% x
p %q}abc%s}% x
p %q~abc%s~% x
p ( %q!abc%s!% x )
p ( %q"abc%s"% x )
p ( %q#abc%s#% x )
p ( %q$abc%s$% x )
#p ( %q%abc%s%% x ) ### Syntax Error
p ( %q&abc%s&% x )
p ( %q'abc%s'% x )
p ( %q(abc%s)% x )
p ( %q)abc%s)% x )
p ( %q*abc%s*% x )
p ( %q+abc%s+% x )
p ( %q,abc%s,% x )
p ( %q-abc%s-% x )
p ( %q.abc%s.% x )
p ( %q/abc%s/% x )
p ( %q:abc%s:% x )
p ( %q;abc%s;% x )
p ( %q<abc%s>% x )
p ( %q=abc%s=% x )
p ( %q>abc%s>% x )
p ( %q?abc%s?% x )
p ( %q@abc%s@% x )
p ( %q[abc%s]% x )
p ( %q\abc%s\% x )
p ( %q]abc%s]% x )
p ( %q^abc%s^% x )
p ( %q_abc%s_% x )
p ( %q`abc%s`% x )
p ( %q{abc%s}% x )
p ( %q|abc%s|% x )
p ( %q}abc%s}% x )
p ( %q~abc%s~% x )
# vi:set ts=2 sw=2 et:
#!/usr/bin/env ruby
# -*- coding: UTF-8 -*-
#
# $ ruby -v
# <%= RUBY_DESCRIPTION %>
#
x = "xyz"
<%
#string = 'abc'
#string = 'abc#{x}'
string = 'abc%s'
#arg = ""
arg = "% x"
q = "q"
wrap1 = -> s { s }
wrap2 = -> s { "( #{s} )" }
put_code = -> wrap do
(0x21..0x7e).map(&:chr)
.grep(/[_\W]/)
.map {|c| [c, {"(" => ")",
"<" => ">",
"[" => "]",
"{" => "}"}[c] || c] }
.map {|c1,c2| "\%#{q}#{c1}#{string}#{c2}#{arg}" }
.map(&wrap)
.map {|s| "p #{s}" } * "\n"
end
%>
<%= put_code.(wrap1) %>
<%= put_code.(wrap2) %>
# vi:set ts=2 sw=2 et:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment