ruby-mine

exploring the mine

Der Star der Ruby-Syntax

von murphy am 12.01.2010 (00 Uhr)

Also, ich wusste schon, dass man folgendes schreiben kann, um Methoden mit beliebig vielen Argumenten zu definieren:

1
2
3
4
def bist_du_aber_klein(*)
  super
  essen(:vitamine)
end

Hier werden die restlichen Argumente einfach verworfen, und keiner lokalen Variable zugewiesen.

Der Stern kann auch noch in anderen Beziehungen auftauchen, zum Beispiel in Mehrfachzuweisungen oder bei Blockparametern:

1
2
gewinner, *nieten = die_anderen_gehen_leer_aus
array_von_arrays { |erstes, zweites, *rest| puts 'Was für ein Wetter!' }

Interessanterweise kann man bei solchen Catch-all-Ausdrücken immer den Namen der Variable weglassen:

1
2
3
4
5
6
def gibs_mir *; end
ja, * = nein, nein, nein
obfusc do |*| end
for key, * in ENV
  # puts(*) geht aber nicht!
end

In Ruby 1.9 geht auch:

1
2
3
4
5
6
7
a, *, b = *1..10
[a, b]  #=> [1, 10]
def letzter(*, last)
  last
end
letzter(*1..10)  #=> 10
ENV.each.with_index { |(*, value), index| puts '%2d: %s' % [index, value] }

Noch ein ganz extremes Beispiel, das nichts sinnvolles tut:


def***;%****%**;end;*a=*(a**a);b{|*|* =:*.*(:**)}

Nützlich? Albern? Perl6? Eure Meinung!

 
Kommentare (8)

CodeRay 0.8.1

von murphy am 01.01.2009 (05 Uhr)

Frohes neues Jahr :)

Die erste neue Version von CodeRay seit zwei Jahren ist endlich fertig.

CodeRay ist eine Ruby-Bibliothek zum Syntax-Highlighting. Sie ist komplett in Ruby geschrieben und sehr schnell.

Neuigkeiten:

gem install coderay

Siehe auch:
 
Kommentare (0)

Simple Regexp Scanner

von murphy am 21.09.2008 (18 Uhr)

(Deutsche Übersetzung; Original auf murfy.de.)

Ich bin gerade dabei, den Java Scanner für CodeRay (Ticket #42 ^^) zu schreiben, und dachte, es wäre nett, eine Liste von eingebauten Typen zu haben, um sie hervorzuheben – wie String oder IllegalStateException. Ich wusste, dass TextMate recht gute Unterstützung für Java bietet, also schaute ich mir das Bundle genauer an.

Tatsächlich, irgendein schlauer Kerl hat dort einen ziemlich langen regulären Ausdruck in die Tokendefinitionen geschrieben:

support-type-built-ins-java = {
  name = 'support.type.built-ins.java';
  match = '\b(R(GBImageFilter|MI(S(ocketFactory|e(curity(Manager|Exception)|
    rver(SocketFactory|Impl(_Stub)?)?))|C(onnect(ion(Impl(_Stub)?)?|
    or(Server)?)|l(ientSocketFactory|assLoader(Spi)?))|IIOPServerImpl|
    JRMPServerImpl|FailureHandler)|SA(MultiPrimePrivateCrtKey(Spec)?|
    ...und so weiter über mehrere Bildschirmseiten...

Offenbar haben sie eine lange Liste von Typen in eine minimale Regexp umgewandelt, sicher mit Hilfe eine Scripts. Das war nicht ganz das, wonach ich gesucht hatte. Wie komme ich jetzt an die ursprüngliche Liste?


Vollständigen Artikel lesen...
 
Kommentare (3)

def ohne Ende

von murphy am 09.09.2008 (22 Uhr)

Zucker für Syntax-Spielkinder, diesmal:

Ruby-Mine präsentiert lustige Kommas am Ende von Methodendefinitionen.

Nein, keine Litschi, sondern ein weiteres interessantes Detail der Ruby-Syntax.


Vollständigen Artikel lesen...
 
Kommentare (1)

Warum einfach...

von murphy am 12.02.2008 (20 Uhr)

...wenn’s auch kompliziert geht?


Vollständigen Artikel lesen...
 
Kommentare (1)

Ruby 1.9: Aktuelle Benchmarks

von murphy am 13.01.2008 (00 Uhr)

Wie gehabt: Ruby 1.8.6 vs. Ruby 1.9.0.

Leider noch ohne Rails, da die Tests noch nicht laufen.

Veränderungen bei Ruby 1.9 gegenüber Ende Oktober:

Ansonsten erstaunlich wenig Bewegung.

 
Kommentare (0)

Ruby 1.9: Pflichtargumente nach optionalen Argumenten

von murphy am 10.01.2008 (15 Uhr)

Da Fragen aufgetaucht sind, beleuchten wir das neue Feature von Ruby 1.9 mal genauer. Nehmen wir uns eine Funktion, die alle möglichen Arten von Argumenten hat:

def foo(a, b = :default1, c = :default2, *d, e, &f)
  [a, b, c, d, e, f]
end


Vollständigen Artikel lesen...
 
Kommentare (2)

Was tun? Was tun!

von murphy am 08.01.2008 (12 Uhr)

Tja, jetzt ist Ruby aus den Top 10 geflogen – überholt von JavaScript und Delphi. So ziemlich jede Sprache scheint im Dezember zugelegt zu haben, mit großen Sprüngen. Zwar ist Python Sprache des Jahres geworden, aber auch die TIOBE-Kommentatoren wissen nicht genau, woher der Aufwind kam. Und die Vermutung, dass Python 2008 weiter an Beliebtheit gewinnen wird, ist sicher richtig.

Was passiert auf der Ruby-Seite?


Vollständigen Artikel lesen...
 
Kommentare (8)

Ruby 1.9 on Rails - Zwischenbericht

von murphy am 31.12.2007 (14 Uhr)

rake19 – das ist der Befehl, der in meinem Edge-Rails-Verzeichnis die Tests für Ruby 1.9.0 laufen lässt. So sieht die Ausgabe der Tests gegen Revision 8514 + ein paar Patches von mir zur Zeit unter Mac OS X 10.5 aus:

Also: Wenn ko1 den blöden module_eval-bug noch fixt, kann es eigentlich losgehen ;)

Neugierige können sich den Patch herunterladen und selber testen. Oder einfach noch ein wenig warten.

Update 2008-01-07: Nichts neues :(.


Vollständigen Artikel lesen...
 
Kommentare (6)

Warum Ruby 1.9.0?

von bovi am 25.12.2007 (17 Uhr)

Matz ist vorbeigekommen und er hat uns etwas mitgebracht! Einen funkelnden Rubin mit der Aufschrift 1.9.0

Nun höre ich schon die ersten Leute grummeln:

Schon wieder ein neues Release? Es gab doch gerade mal vor knapp 7 Monaten die 1.8.6, sollte diese Version nicht überings 1.9.1 heißen und 0.0.4 Versionspunkte sind ja auch nicht gerade viel. ALLES DOOF!!".

Diese Leute irren sich! Die 0.0.4 Versionspunkte haben es in sich.


Vollständigen Artikel lesen...
 
Kommentare (6)

def !?

von murphy am 12.12.2007 (01 Uhr)

Jawohl :)

class Feeling

  def ~
    p :drunk
  end

  def !
    p :alert
  end

  def -@
    p :bad
  end

  def +@
    p :good
  end

end

feeling = Feeling.new

-feeling  # => :bad
+feeling  # => :good
!feeling  # => :alert
~feeling  # => :drunk
# >> :bad
# >> :good
# >> :alert
# >> :drunk

Der Fachmann/Die Fachmassaigiraffe sieht hier mehrere Dinge:

matz sagt:

For good news, I have no big change left.

 
Kommentare (6)

TIOBE 9

von murphy am 05.11.2007 (13 Uhr)

Nine? Doch!

Nur für’s Protokoll: Ruby ist jetzt auf Platz 9 vor JavaScript und direct hinter C#. Und das, obwohl auch JavaScript immer populärer wird. Wenn jetzt noch Lua und D statt Perl und C++ in die Top 10 aufsteigen, ist die Welt doch beinahe in Ordnung ^^

 
Kommentare (2)

Leopard kommt mit Ruby on Rails

von murphy am 16.10.2007 (19 Uhr)

Werden diese Raubkatzen nicht irgendwann zu fett, um Langhörner zu fangen?

Was soll’s. Mac OS 10.5 hat Rails eingebaut:

Ruby on Rails

Work in a developer’s dreamland. Leopard is the perfect platform for Ruby on Rails development, with Rails, Mongrel, and Capistrano built in.

Welche Version, das sagen sie leider nicht. Ich befürchte, es ist nicht die neueste (die CDs müssen ja gebrannt werden), und damit mal wieder wertlos für die Entwicklung (10.4 kam mit kaputtem Ruby.) Aber ich vermute auch, dass jetzt Rubygems eingebaut ist – ein sudo gem up sollte also reichen.

Schön, dass sich Apple so um seine Kunden bemüht.

Update: Ruby 1.8.6 ist es – fragt sich, welches Patchlevel. Da sind sogar Links auf die Seiten von Rails, Mongrel und Capistrano! o_O Bloß nicht auf ruby-lang.org.

Update: Es ist Rails 1.2.3.

Update: Gem-Liste

 
Kommentare (2)

Rails 1.2.5

von murphy am 14.10.2007 (01 Uhr)

Öhm…die neueste Version von Rails ist da ^^ Schon wieder…diesmal mit HTML-Escaping für JSON.

 
Kommentare (1)

Rails 1.2.4

von murphy am 10.10.2007 (02 Uhr)

Die neueste Version von Rails ist da!

 
Kommentare (0)