Forum: Radiant CMS language_redirect

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
8aeb5ff3546efc726bab713e4e572a40?d=identicon&s=25 Keymone (Guest)
on 2007-06-29 15:12
(Received via mailing list)
Hello!

did somebody noticed that language_redirect does not handle windows line
endings?
it redirects me to something like /uk/%0D instead of just /uk/

i tried to fix it myself but this:

q = lambda { |str| /;q=/ =~ str ? Float($') : 1 }
langs = langs.collect do |ele|
  [q.call(ele), ele.split(/;/)[0].downcase]
end.sort { |l, r| r[0] <=> l[0] }.collect { |ele| ele[1] }

is strangest code i've ever seen in my life :D
isn't ruby supposed to be easy-readable? ;)
4b9ddc0a8f597b5145d676a205b1a615?d=identicon&s=25 Giovanni Intini (Guest)
on 2007-06-29 15:28
(Received via mailing list)
That code is quite interesting actually. John did you write it?

The first line (q= ...) defines a lambda, that is a proc, that is a
method that can be assigned to a variable.

It's equal to

def q(str)
  if str.match(/;q=/)
    $'.to_f # $' returns the string that follows the matched part
  else
    1
  end
end

The second line uses Array#collect to build an array of size-two
arrays. Each one has the result of q as first element and the language
code as second element.

The last part sorts this array by priority (which is the result of q)
and then collects only the language names.

The final result then is an array of languages ordered by priority.
8aeb5ff3546efc726bab713e4e572a40?d=identicon&s=25 Keymone (Guest)
on 2007-06-29 15:31
(Received via mailing list)
thanks :)
anyway problem is few lines upper:

--- app/models/language_redirect_page.rb        (revision 3)
+++ app/models/language_redirect_page.rb        (working copy)
@@ -18,7 +18,9 @@

   protected
     def config
-      Hash[*render_part(:config).split(/[\n:]/)]
+      rules = render_part(:config)
+      rules[/\r\n/] = "\n"
+      Hash[*rules.split(/[\n:]/)]
     end

     def languages

this fixes problem for me

if somebody can - commit this to repository

thanks :)
This topic is locked and can not be replied to.