[#15701] Ruby 1.9.0-1 snapshot released — Yukihiro Matsumoto <matz@...>
Hi,
[#15704] Proc#curry doesn't work on func which produces func — Lin Jen-Shin <godfat@...>
Proc#curry doesn't work on function which produces function,
Hi,
>>>>> "Y" == Yusuke ENDOH <mame@tsg.ne.jp> writes:
[#15707] Schedule for the 1.8.7 release — "Akinori MUSHA" <knu@...>
Hi, developers,
On Sat, Mar 01, 2008 at 08:58:00PM +0900, Akinori MUSHA wrote:
Hi,
At Fri, 21 Mar 2008 23:16:54 +0900,
At Mon, 24 Mar 2008 21:39:45 +0900,
[#15709] capitalize and downcase — Trans <transfire@...>
I've always wondered why String#capitalize downcases the whole string
[#15713] Ruby String hash key overflow when converting to Fixnum. — "Chiyuan Zhang" <pluskid@...>
Hi, all! I've opened a issue at rubyforge:
[#15728] Question on build process - skipping unsupported extensions — Daniel Berger <djberg96@...>
Hi,
[#15740] Copy-on-write friendly garbage collector — Hongli Lai <hongli@...99.net>
Hi.
Hi,
Yukihiro Matsumoto wrote:
Yukihiro Matsumoto wrote:
Hi.
Hongli Lai wrote:
Hi.
Hi,
I believe I managed to close the performance gap to only 6% slower than
Daniel DeLorme wrote:
[#15746] Am I misinterpreting the new keyword arguments to IO.foreach and friends? — Dave Thomas <dave@...>
I was expecting this to pass lines to the block:
[#15756] embedding Ruby 1.9.0 inside pthread — "Suraj Kurapati" <sunaku@...>
Hello,
Hi,
Hi,
Yukihiro Matsumoto wrote:
Suraj N. Kurapati wrote:
Hi,
Nobuyoshi Nakada wrote:
Suraj N. Kurapati wrote:
Hongli Lai wrote:
[#15775] next(n), succ(n) ? — Trans <transfire@...>
Can anyone see any reason against adding an optional parameter to
[#15778] Named captures and regular captures — Dave Thomas <dave@...>
It seems that once you have a named capture in a regular expression,
[#15783] Adding startup and shutdown to Test::Unit — Daniel Berger <Daniel.Berger@...>
Hi all,
Daniel Berger wrote:
On Wed, Mar 05, 2008 at 07:52:40AM +0900, Daniel Berger wrote:
[#15835] TimeoutError in core, timeouts for ConditionVariable#wait — MenTaLguY <mental@...>
I've been reworking JRuby's stdlib to improve performance and fix
On Sun, 2008-03-09 at 12:13 +0900, MenTaLguY wrote:
[#15837] Correct procedure for patch review? — Hongli Lai <hongli@...99.net>
Hi.
[#15855] Ruby 1.8.6 trace return line numbers wrong — "Rocky Bernstein" <rocky.bernstein@...>
Consider this program:
[#15860] Webrick directory traversal exploit on UNIX — Jos Backus <jos@...>
DSecRG Advisory #DSECRG-08-026 aka -018 describes a remote directory traversal
[#15871] Sparc architecture optimizations — Thomas Enebo <Thomas.Enebo@...>
Someone at Sun has been looking at Ruby on Sparc:
Thomas Enebo wrote:
Hello Ruby-core,
Hi,
Yukihiro Matsumoto wrote:
Prashant Srinivasan wrote:
[#15880] Ruby 1.8.6 binding value after "if" expression evaluation — "Rocky Bernstein" <rocky.bernstein@...>
Here's another trace hook weirdness that I've encountered.
Hello,
Thanks. The output you report matches what I get in 1.8.6 and suggests where
I think I've found why this is happening. The trace hook for NODE_IF is
[#15907] Range#member? semantics seem wrong — Dave Thomas <dave@...>
Range#member? has been changed so that it the start and end of the
[#15909] RARRAY_PTR — "Laurent Sansonetti" <laurent.sansonetti@...>
Hi,
[#15917] Ruby 1.9 (trunk) crashes when running RubyGems and Rake — Hongli Lai <hongli@...99.net>
Ruby 1.9 (trunk) seems to crash when running the supplied RubyGems and Rake:
Hi,
Nobuyoshi Nakada wrote:
On Mon, Mar 17, 2008 at 06:53:19PM +0900, Hongli Lai wrote:
[#15927] how to create a block with a block parameter in C? — Paul Brannan <pbrannan@...>
This works in Ruby (1.9):
>>>>> "P" == Paul Brannan <pbrannan@atdesk.com> writes:
[#15933] complex and rational — Dave Thomas <dave@...>
Before I start doing the documentation for the PickAxe, could I just
[#15936] Are Depreciated Methods "add_final" & "remove_final" supposed to ACTUALLY WORK? — Charles Thornton <ceo@...>
In Working on IRHG Docs for GC the following
>>>>> "C" == Charles Thornton <ceo@hawthorne-press.com> writes:
ts wrote:
[#15938] Questions on Enumerator#skip_first and Enumerable#first — "Artem Voroztsov" <artem.voroztsov@...>
I asked in ruby-talk, but did not get answer.
On Mar 18, 2008, at 6:20 AM, Artem Voroztsov wrote:
[#15975] Bugs in REXML — "Federico Builes" <federico.builes@...>
Hi,
On Mar 21, 2008, at 17:35, Federico Builes wrote:
[#15980] 1.8.6 memory leak? — "Stephen Sykes" <sdsykes@...>
Hi,
[#15983] Changing the algorithm of String#* — apeiros <apeiros@...>
Hi there
[#15990] Recent changes in Range#step behavior — "Vladimir Sizikov" <vsizikov@...>
Hi,
Hi Dave,
Hi Dave,
Hi,
Hi,
Hi,
On Wed, Mar 26, 2008 at 7:01 PM, Dave Thomas <dave@pragprog.com> wrote:
Dave Thomas wrote:
Dave Thomas wrote:
Dave Thomas wrote:
Dave,
This is all a semantic problem. Different people have different
[#16011] New ERb mode — Marc Haisenko <haisenko@...>
Hi folks,
On Tuesday 25 March 2008, Marc Haisenko wrote:
ERb already does this:
On Tuesday 25 March 2008, Jason Roelofs wrote:
On Tue, Mar 25, 2008 at 11:39 AM, Marc Haisenko <haisenko@comdasys.com> wro=
On Tuesday 25 March 2008, Jason Roelofs wrote:
[#16023] some Enumerable methods slower in 1.9 on OS X after revision 15124 — Chris Shea <cmshea@...>
All,
Hi,
Hi,
On Thu, Mar 27, 2008 at 02:26:51PM +0900, Nobuyoshi Nakada wrote:
Hi,
Nobuyoshi Nakada wrote:
Hi,
[#16057] About the license of gserver.rb being "freeware"? — "XiaoLiang Liu" <liuxlsh@...>
Hello everyone,
[#16088] command_call in parse.y — Adrian Thurston <thurston@...>
Hi,
[PATCH] New ERb mode
Hi folks,
I've implemented a new ERb mode and would like to share it with you guys since
we're using Ruby (with that modification) on our products and Ruby is GPL'd
(would share it anyways because we like being good Open Source citizens; one
hand washes the other :-))
The attached patch adds a mode "-T m" (for Marc ;-)). This mode strips out
lines that have nothing but white-space and <% ... %> sections. For example:
----------
<% 1.upto(3) do %>
Hello !
<% end %>
----------
With normal "erb" this produces:
----------
Hello !
Hello !
Hello !
----------
With "erb -T m" this produces:
----------
Hello !
Hello !
Hello !
----------
Same with stuff like this:
----------
<% bar = true %>
Foo
<% if bar %> <% one = "1" %>
Bar
<% end %>
Baz
----------
Normal mode:
----------
Foo
Bar
Baz Foo
<% if bar %>
Bar
<% end %>
Baz
----------
"erb -T m":
----------
Foo
Bar
Baz
----------
The code is not very beautiful and if someone considers integrating this stuff
in the official ERb then "-T m" might not be a good mode name but
nevertheless, here's the code.
Comments welcome.
Bye,
Marc
--
Marc Haisenko
Comdasys AG
R端desheimer Str. 7
80686 M端nchen
Germany
Tel.: +49 (0)89 548 433 321
--Boundary-00=_1UR6HlOPZN2uw13
Content-Type: text/x-diff;
charset="utf-8";
name="ruby-1.8.6-akira-erb-mode.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="ruby-1.8.6-akira-erb-mode.patch"
diff -ur ruby-1.8.6.orig/bin/erb ruby-1.8.6/bin/erb
--- ruby-1.8.6.orig/bin/erb 2007-02-13 00:01:19.000000000 +0100
+++ ruby-1.8.6/bin/erb 2008-03-25 15:32:08.000000000 +0100
@@ -37,6 +37,8 @@
return '%<>'
when '-'
return '%-'
+ when 'm'
+ return '%m'
end
end
module_function :trim_mode_opt
@@ -66,7 +68,7 @@
safe_level = arg.to_i
when '-T' # trim mode
arg = ARGV.req_arg
- if arg == '-'
+ if arg == '-' || arg == 'm'
trim_mode = arg
next
end
@@ -106,7 +108,8 @@
-r [library] load a library
-K [kcode] specify KANJI code-set
-S [safe_level] set $SAFE (0..4)
- -T [trim_mode] specify trim_mode (0..2, -)
+ -T [trim_mode] specify trim_mode (0..2, -, m)
+ (the 'm' mode is a Comdasys addition)
-P ignore lines which start with "%"
EOU
exit 1
diff -ur ruby-1.8.6.orig/lib/erb.rb ruby-1.8.6/lib/erb.rb
--- ruby-1.8.6.orig/lib/erb.rb 2007-02-13 00:01:19.000000000 +0100
+++ ruby-1.8.6/lib/erb.rb 2008-03-25 15:42:22.000000000 +0100
@@ -295,6 +295,13 @@
@scan_line = self.method(:trim_line2)
elsif @trim_mode == '-'
@scan_line = self.method(:explicit_trim_line)
+ elsif @trim_mode == 'm'
+ # Comdasys addition: Marc's trim mode (see "trim_marc").
+ # Initialize variables.
+ @scan_line = self.method(:trim_marc)
+ @inside_ruby = false
+ @only_space = true
+ @has_ruby = false
else
@scan_line = self.method(:scan_line)
end
@@ -365,6 +372,105 @@
end
end
+ # Marc's trim mode. If there's only whitespace before and after
+ # '<% ... %>' blocks then suppress the whitespace. Also works with
+ # multiple '<% ... %>' blocks in a line but falls back to the "normal"
+ # behaviour if '<%= ... %>' blocks are present.
+ #
+ # Since this stuff operates line by line we need to save our current
+ # state in instance variables.
+ #
+ # It has a problem, however: the following input will leave "Bar" at the
+ # beginning of a line:
+ #
+ # <% i = 0
+ # i = 1 %>Bar
+ #
+ # Should be fixed someday....
+ def trim_marc(line)
+ # Array into which we're saving the tokens. We can only decide
+ # afterwards whether to strip whitespace.
+ tokens = []
+ # What was the state of @inside_ruby when we entered this method ?
+ started_inside_ruby = @inside_ruby
+
+ # Split into tokens...
+ line.split(TrimSplitRegexp).each do |token|
+ next if token.empty?
+
+ if @inside_ruby
+ # If we're inside a <% ... %> we pass everything unprocessed until
+ # we find a '%>'.
+ case token
+ when "%>\n"
+ # Has a newline, so we need to abort here.
+ @inside_ruby = false
+ tokens << '%>'
+ tokens << "\n"
+ break
+ when '%>'
+ @inside_ruby = false
+ end
+ else
+ # Outside of <% ... %> blocks.
+ case token
+ when "\n"
+ # Newline found, abort here.
+ tokens << token
+ break
+ when /^[[:space:]]*$/
+ # Do nothing.
+ when '<%', '<%=', '<%#'
+ # We're inside a <% ... %> block now.
+ @inside_ruby = true
+ @has_ruby = true
+ else
+ # Must be some non-whitespace stuff.
+ @only_space = false
+ end
+ end
+ tokens << token
+ end
+
+ if @only_space && @has_ruby
+ # So we need to process the tokens. Supress all whitespace-only
+ # tokens outside of <% ... %> blocks.
+ @inside_ruby = started_inside_ruby
+ for token in tokens
+ if @inside_ruby
+ yield token
+ @inside_ruby = false if token == '%>'
+ else
+ case token
+ when "\n"
+ # Emit an empty line so that line numbers in stack traces
+ # still match.
+ yield :cr
+ when /^[[:space:]]*$/
+ next
+ when '<%', '<%=', '<%#'
+ @inside_ruby = true
+ yield token
+ else
+ yield token
+ end
+ end
+ end
+ else
+ # No special processing necessary.
+ for token in tokens
+ yield token
+ end
+ end
+
+ # If we're not inside a <% ... %> block then we need to reset our
+ # state variables.
+ unless @inside_ruby
+ @has_ruby = false
+ @only_space = true
+ end
+ end
+
ExplicitTrimRegexp = /(^[ \t]*<%-)|(-%>\n?\z)|(<%-)|(-%>)|(<%%)|(%%>)|(<%=)|(<%#)|(<%)|(%>)|(\n)/
def explicit_trim_line(line)
line.split(ExplicitTrimRegexp).each do |token|
@@ -588,6 +694,8 @@
perc = mode.include?('%')
if mode.include?('-')
return [perc, '-']
+ elsif mode.include?('m')
+ return [perc, 'm']
elsif mode.include?('<>')
return [perc, '<>']
elsif mode.include?('>')
--Boundary-00=_1UR6HlOPZN2uw13--