From 5ee15661dbc2da70927f588e310315233aff6eea Mon Sep 17 00:00:00 2001
From: murphy
Date: Mon, 10 Apr 2006 03:06:50 +0000
Subject: Large update: Scanners for HTML, RHTML and Nitro-XHTML added.
CSS style changes/enhancments (mainly the new background color for inline code, affects all Ruby code.)
Demos and tests adjusted.
Plugin: new PluginHost::default method.
Scanner:
- New setup method
- ability to re-use a scanner
- ability to keep the tokens
- minor changes to token caching and string flattening
Encoder: Error if token content is neither String nor Symbol.
HTML encoder:
- more warnings for unclosed tokens
- output now UTF-8
Ruby Scanner:
- bug: symbols before => now do not include =; {:foo=>bar} is valid Ruby code
- try to close all open tokens
- constants now all with specific namespace (for speed, I hope)
Styles: new :entity/en class.
Test suite now gives hinted HTML output.
---
bench/bench.rb | 1 +
bench/example.rhtml | 561 ++++++++++++++++++++++++++++++++++++++++++++++++++++
bench/example.xhtml | 376 +++++++++++++++++++++++++++++++++++
3 files changed, 938 insertions(+)
create mode 100644 bench/example.rhtml
create mode 100644 bench/example.xhtml
(limited to 'bench')
diff --git a/bench/bench.rb b/bench/bench.rb
index 533a893..efda06e 100644
--- a/bench/bench.rb
+++ b/bench/bench.rb
@@ -69,6 +69,7 @@ Benchmark.bm(20) do |bm|
if $dump_input
@size = CodeRay::Tokens.load(data).text_size
else
+ raise 'Example file is empty.' if data.empty?
unless @size.zero?
data += data until data.size >= @size
data = data[0, @size]
diff --git a/bench/example.rhtml b/bench/example.rhtml
new file mode 100644
index 0000000..041bec1
--- /dev/null
+++ b/bench/example.rhtml
@@ -0,0 +1,561 @@
+<% @title = 'Moderatoren-Interface' %>
+
+
+ - <%= link_to 'Proben', :controller => '/admin/proben' %>
+ - Die angesetzten Proben des Orchesters
+ - <%= link_to 'Auftritte', :controller => '/admin/proben' %>
+ - Die Auftritte des Orchesters
+ <%- if @valid_user and @valid_user.admin? -%>
+ - <%= link_to 'Benutzer', :controller => '/admin/user' %>
+ - Benutzer organisieren (nur für den Admin)
+ <%- end -%>
+
+<% @title = 'Anmeldung' %>
+
+<%= render :partial => 'user_form', :object => @user %>
+<% @title = 'Administrator erstellen' %>
+
+<%= render :partial => 'user_form', :object => @user %>
+<%= form_tag %>
+
+
+ Name: |
+ <%= text_field 'user', 'name' %> |
+
+
+ Passwort: |
+ <%= password_field 'user', 'password' %> |
+
+
+ |
+ <%= submit_tag 'Anmelden' %> |
+
+<%= end_form_tag %>
+<% @title = 'Neuer Benutzer' -%>
+<%= error_messages_for :user %>
+<%= render :partial => 'form', :object => @user %>
+<%= form_tag %>
+
+
+ Name: |
+ <%= text_field 'user', 'name' %> |
+
+
+ Passwort: |
+ <%= password_field 'user', 'password' %> |
+
+
+ |
+ <%= submit_tag 'Anlegen' %> |
+
+<%= end_form_tag %>
+<% @title = 'Auftritte' %>
+
+
+ <%= render :partial => 'head' %>
+ <%= render :partial => 'day', :collection => @days %>
+
+<% day, auftritte = *day -%>
+<%
+ for auftritt in auftritte
+-%>
+
+
+
+ <%= colorize day.to_s(:dots) if day %>
+ <% if day and day.wday == 6 %> Samstag<% end %>
+ |
+
+ <%= colorize auftritt.time %>
+ |
+
+ <%= colorize auftritt.program %>
+ <%= link_to 'E', :controller => 'admin/auftritte', :action => :edit, :id => auftritt %>
+ |
+
+ <%= colorize(auftritt.place, 'Ort: ') + ' ' unless auftritt.place.blank? %>
+ |
+
+
+<%
+ day = nil
+ end
+-%>
+
+ Datum |
+ Zeit |
+ Programm |
+ Ort |
+
+<% @title = "Besetzung - #{@instrument.name}" %>
+
+
+<%= pluralize(@members.size, 'Schüler spielt', 'Schüler spielen') %> <%= h @instrument.name %>:
+
+
+
+ <%= render :partial => 'member', :collection => @members %>
+
+<% @title = 'Besetzung: %d Mitglieder' % Member.count -%>
+
+
+<% if params[:action] == 'all' -%>
+<%= link_to 'seitenweise', :action => :index %>
+<% else -%>
+<%= link_to_if @member_pages.current.previous, '<<', :page => @member_pages.current.previous %>
+| <%= link_to 'alle', :action => :all %> |
+<%= link_to_if @member_pages.current.next, '>>', :page => @member_pages.current.next %>
+<% end -%>
+| <%= link_to 'Nach Instrumenten', :action => :select_instrument %>
+
+
+
+<%= render :partial => 'member', :collection => @members %>
+
+<% @title = "Besetzung - Instrument wählen" %>
+
+
+<% for instr in @instruments -%>
+-
+ <%= link_to h(instr.name), :action => :instrument, :id => instr.name %>
+ (<%= h instr.members.size %>)
+
+<% end -%>
+
+<% @title = "Besetzung: #{@member.name}" -%>
+
+
+
+- Instrument / Aufgabe:
+- <%= link_to_instruments_of @member %>
+
+- Geburtstag:
+- <%= h @member.birthday.to_s(:dots) %>
+
+- Adresse:
+- <%= h @member.street %>
<%= h @member.plz %>
+
+- Telefon:
+- <%= h @member.phone %>
+
+- Email:
+- <%= mail_to @member.email, @member.email, :encode => 'javascript' %>
+
+
+
+ <%= link_to member.name, :action => :show, :id => member %>:
+ <%= link_to_instruments_of member %>
+ |
+
+<% @title = 'Arbeitsgruppen' -%>
+
+ Die Arbeitsgruppen sind verantwortlich für die Organisation und Durchführung verschiedenster Aufgaben:
+
+
+
+
+ - Plakate und Konzertkarten
+
+ - Frau Schraps
+ - Paul-Robert Achcenich
+ - Josefine Dahms
+
+
+
+ - Noten
+
+ - Frau Puppe
+ - Theresa Rebin
+
+
+
+ - Programme
+
+
+
+ - Instrumentenstransporte
+
+ - Frau Feldmann
+ - Knut Müller
+ - Patrick Wolter
+ - Alexaner Wolf
+
+
+
+ - Internetseite
+
+ - Frau Sternbeck
+ - Uwe Ritzschke
+ - Paul-Robert Achcenich
+ - Knut Müller
+ - Alexander Wolf
+
+
+
+
+<% @title = 'Chronik' -%>
+
+ Das Jugendsinfonieorchester Marzahn-Hellersdorf wurde im Januar 2005 an der
+ Musikschule Marzahn-Hellersdorf gegründet und gab im Mai 2005 sein erstes
+ umjubeltes Konzert im FEZ Wuhlheide. Das Orchester umfasst zur Zeit ca. 65
+ jugendliche Musiker und soll auf die Größe eines ausgewachsenen
+ Sinfonieorchesters erweitert werden (80-100 Musiker).
+
+
+
+ Als musikalischer Leiter konnte der Dirigent und Echo-Preisträger Jobst
+ Liebrecht gewonnen werden, der die Musikschule schon aus einer früheren
+ Zusammenarbeit anlässlich der Kinderoper 'Pollicino' von Hans Werner Henze
+ kennt. Das Orchester probt wöchentlich. Neben den Tuttiproben finden außerdem
+ ebenfalls wöchentlich Stimmsatzproben statt, die von Lehrkräften betreut werden.
+ Das gemeinsame Ziel ist der Aufbau eines leistungsstarken, lebendigen
+ Klangkörpers, der die Jugendlichen und die Zuhörer ganz neu und direkt für die
+ Orchestermusik begeistert und diese Musik in den sozialen Brennpunkt Marzahn-
+ Hellersdorf trägt.
+
+
+
+ Im Jahr sind etwa 2-3 Konzertprogramme geplant, mit denen wir in Konzertsälen
+ auftreten. Das erste Konzert des Jugendsinfonieorchesters Marzahn-Hellersdorf
+ wurde von DeutschlandRadio Kultur aufgezeichnet und in einer Sendung mit dem
+ Titel „EINSTAND: Nicht nur auf der Strasse herumhängen” porträtiert.
+ Wir wollen außerdem vor Ort in Marzahn und Hellersdorf in die Öffentlichkeit
+ gehen und spielen, um so für die Kultur zu werben und auch weitere Kinder und
+ Jugendliche für die Musik und fürs Mitmachen zu gewinnen. Durch die Einrichtung
+ eines zusätzlichen Vororchesters wird längerfristig versucht, die Arbeit auf ein
+ breites Fundament zu stellen, eine Werkstatt, ein musikalisches Bauhaus zu
+ gründen. Wenn die Orchesterarbeit erfolgreich angelaufen ist, sollen auch
+ übergreifende Projekte (Theater, Tanz, Chor) stattfinden.
+
+
+
+ Das Orchester will Musik von heute spielen in jedem Sinn, ob es sich um Stücke
+ aus der sinfonischen Tradition handelt oder um zeitgenössische Musik. Wir kennen
+ keine Berührungsängste und sind neugierig auf Musik aller Art und möchten diese
+ Neugierde mit unserem Publikum teilen.
+
+<% @title = 'Dirigent - Jobst Liebrecht' -%>
+
+ <%= image_tag 'jobstliebrecht.jpg', :alt => 'Jobst Liebrecht', :title => 'Jobst Liebrecht', :class => 'pic_right' %>
+ Jobst Liebrecht studierte Dirigieren an der Musikhochschule in München und bei Peter Eötvös. Sein spezielles Interesse
+ für neue Musik führte schnell zur Zusammenarbeit mit renommierten Ensembles auf dem Gebiet wie dem Ensemble Modern,
+ Frankfurt, dem Klangforum-Ensemble, Wien, dem Ensemble Köln sowie dem Ensemble United Berlin. Aufnahmen entstanden beim
+ WDR, beim DeutschlandRadio Berlin, beim BR und beim SFB. Er dirigierte u.a. das Rundfunk Sinfonieorchester Berlin, die
+ Duisburger Philharmoniker und das Münchner Kammerorchester sowie in den Opernhäusern in Halle und Giessen. Tourneen im
+ Ausland führten ihn nach Argentinien, Georgien, Südkorea und in die USA.
+
+
+
+ Zu den Ur- und Erstaufführungen, die er betreut hat, gehören die Opern 'Lunu' von Moritz Eggert, 'Gloria von Jaxtberg' von
+ HK Gruber sowie in Zusammenarbeit mit dem Regisseur Einar Schleef das Musiktheaterspiel 'Der Golem in Bayreuth' von Ulla
+ Berkewicz/Lesch Schmidt am Wiener Burgtheater.
+
+
+
+ Jobst Liebrecht war mehrere Jahre lang Assistent von Hans Werner Henze und auch immer wieder pädagogisch tätig. Seine
+ Aufnahme von Henzes Märchenoper 'Pollicino', die als CD bei Wergo erschienen ist, wurde mit dem ECHO-Preis 2004 in der
+ Sparte 'Klassik für Kinder' ausgezeichnet.
+
+
+
+ Als Komponist ist Jobst Liebrecht mit Liedern, Kammermusik sowie Bühnenmusiken an die Öffentlichkeit getreten.
+
+<% message, backtrace = session[:boom] -%>
+<% @title = 'Fehler in Zeile %d' % [backtrace[/line\s+#(\d+)/,1]] -%>
+
+<%= debug backtrace %>
+<% cache :action_suffix => (action = params[:action]) do -%>
+
+Der Inhalt für die Aktion <%= h action.inspect %> fehlt noch.
+
+<% end -%>
+<% @title = 'Schulferien Berlin' -%>
+
+ Unser Orchester besteht zu einem sehr großen Teil aus Schülern und auch die
+ Musikschule, der die meisten von uns entstammen, hat in den Schulferien
+ geschlossen.
+ Deshalb finden innerhalb der Berliner Ferienzeiten keine Proben statt.
+
+
+
+
+ Zeitraum |
+ 2006 |
+ 2007 |
+ 2008 |
+
+
+
+
+ Winter |
+
+ 30.01. - 03.02. |
+
+ 05.02. - 10.02. |
+
+ 04.02. - 09.02. |
+
+
+
+
+ Ostern/Frühjahr |
+
+ 10.04. - 21.04. |
+
+ 02.04. - 13.04. |
+
+ 17.03. - 28.03. |
+
+
+
+
+ Himmelf./Pfingsten |
+
+ 30.04. / 18.05. |
+
+ 30.04. / 18.05. |
+
+ 02.05. |
+
+
+
+
+ Sommer |
+
+ 06.07. - 19.08. |
+
+ 12.07. - 25.08. |
+
+ 17.07. - 30.08. |
+
+
+
+
+ Herbst |
+
+ 02.10. - 14.10. |
+
+ 15.10. - 27.10. |
+
+ |
+
+
+
+
+ Weihnachten |
+
+ 27.12. - 05.01.07 |
+
+ 24.12. - 04.01.08 |
+
+ |
+
+
+
+<% @title = 'Termine' -%>
+
+
+ - <%= link_to 'Auftritte', :controller => '/auftritte' %>
+ - <%= link_to 'Schulferien', :controller => '/content', :action => :schulferien %>
+
+
+
+
+ <%= tag 'meta', :'http-equiv' => 'content-language', :content => 'de' %>
+ <%= tag 'meta', :'http-equiv' => 'content-type', :content => 'text/html; charset=UTF-8' %>
+
+
+
+
+
+
+
+
+
+
+
+
+ JSO<%-if @title-%> - <%= h @title %><%- end -%>
+ <%= stylesheet_link_tag '/rcss/main' %>
+ <%#= stylesheet_link_tag 'main' %>
+ <%= javascript_include_tag 'nospam' %>
+ <%#= javascript_include_tag :defaults %>
+
+
+
+
+
+
+
+ <%= image_tag 'JSO-Logo.gif', :alt => 'JSO-Logo' %>
+ |
+
+
+ jugendsinfonieorchester
+ |
+
+
+
+<% if valid_user -%>
+
+<% end -%>
+<% cache :controller => 'menu', :action => 'main_menu' do -%>
+ <%= render_component :controller => 'menu', :action => 'index' %>
+<% end -%>
+ |
+
+<% unless @flash.keys.empty? -%>
+
+ <%- for kind, msg in @flash -%>
+ <%= h msg %>
+ <%- end -%>
+
+<% end -%>
+<%= content_tag 'h3', h(@title) if @title %>
+<%= @content_for_layout %>
+ |
+
+
+
+ |
+
+
+ powered by Ruby on Rails <%= Rails::Info.properties.value_for 'Rails version' %> [<%= h RAILS_ENV[/^./] %>]
+ <%= image_tag 'css.png', :alt => 'valid CSS', :title => 'valid Cascading Style Sheet', :style => 'display: inline; vertical-align: middle' %>
+ <%= image_tag 'xhtml11.png', :alt => 'valid XHTML 1.1', :title => 'valid eXtensible Hypertext Markup Language 1.1', :style => 'display: inline; vertical-align: middle' %>
+
+ |
+
+
+
+
+
+
+<% @title = 'Übersicht' -%>
+
+nächste Probe
+
+ <%= render :partial => 'proben/head' %>
+ <%= render :partial => 'proben/day', :object => @next_probe %>
+
+<%= link_to 'weitere Proben...', :controller => 'proben' %>
+
+nächster Auftritt
+
+ <%= render :partial => 'auftritte/head' %>
+ <%= render :partial => 'auftritte/day', :object => @next_auftritt %>
+
+<%= link_to 'mehr Auftritte...', :controller => 'auftritte' %>
+
+ <%= category 'Übersicht', home_url %>
+ <%= subcat 'Wer sind wir?', :wer %>
+ <%= subcat 'Dirigent' %>
+ <%= subcat 'Besetzung', url_for(:controller => '/besetzung') %>
+ <%= subcat 'Repertoire' %>
+
+ <%= category 'Termine' %>
+ <%= subcat 'Auftritte', url_for(:controller => '/auftritte', :action => :plan) %>
+ <%= subcat 'Schulferien' %>
+
+ <%= category 'Probenplan', url_for(:controller => '/proben', :action => :plan) %>
+
+ <%= category 'Organisation' %>
+ <%= subcat 'Orchesterrat' %>
+ <%= subcat 'Arbeitsgruppen' %>
+
+ <%= category 'Chronik' %>
+ <%= subcat 'Konzerte' %>
+ <%= subcat 'Audio' %>
+ <%= subcat 'Presse' %>
+
+ <%= category 'Links', '#' %>
+ <%= subcat 'Bilderseite', 'http://musikschule.iden04.de' %>
+ <%= subcat 'Musikschule', 'http://www.musikschule-marzahn-hellersdorf.de' %>
+
+
+
+ <%= category 'Kontakt' %>
+
+<% @title = 'Probenplan' %>
+
+
+ <%= render :partial => 'head' %>
+ <%= render :partial => 'day', :collection => @days %>
+
+
+
+Ort (wenn nicht anders angegeben): Schule am Pappelhof
+
+
+<%= render_partial 'raum' %>
+<% day, proben = *day -%>
+<%
+ for probe in proben
+-%>
+
+
+
+ <%= colorize day.to_s(:dots) if day %>
+ <% if day and day.wday == 6 %> Samstag<% end %>
+ |
+
+ <%= colorize probe.time %>
+ |
+
+ <%= colorize(probe.place, 'Ort: ') + ' ' unless probe.place.blank? %>
+ <%= colorize probe.program %>
+ <%= link_to 'E', :controller => 'admin/proben', :action => :edit, :id => probe %>
+ |
+
+ <%= h probe.instrumentation %>
+ |
+
+
+<%
+ day = nil
+ end
+-%>
+
+ Datum |
+ Zeit |
+ Stücke |
+ Besetzung |
+
+Probenräume
+
+
+ Wer |
+ Raum |
+ Adresse |
+
+
+
+ Streicher |
+ Schule am Pappelhof (Raum Nr.) |
+ (Anschrifft Pappelhofschule) |
+
+
+
+ Blechbläser |
+ Musikschule Marzahn (Raum Nr.) |
+ (Anschrifft Musikscule Marzahn) |
+
+
+ Holzbläser |
+
+ Schule am Pappelhof (Raum Nr.) |
+ (Anschrifft Pappelhofschule) |
+
+
+ ... |
+ (Ort) (Raum Nr.) |
+
+ (Anschrifft) |
+
+
diff --git a/bench/example.xhtml b/bench/example.xhtml
new file mode 100644
index 0000000..a08cf75
--- /dev/null
+++ b/bench/example.xhtml
@@ -0,0 +1,376 @@
+
+
+
+ Error
+
+
+
+ Error
+
+
+
+ Path: #{path}
+ #{CGI.escapeHTML(error.to_s)}
+
+
+
+ In file
'#{error.hot_file}' #{error.hot_file =~ /\.xhtml$/ ? '(line numbering is aproximate due to template transformation)' : nil}:
+
+
+
#{line}
+
+
#{line}
+
+
+
+
+
+
+
+
+
#{line}
+
+
#{line}
+
+
+
+
+
+
+
+
+
+
+
Parameters: #{request.params.reject{ |k,v| k == :__RELOADED__ }.inspect}
+
Cookies: #{request.cookies.inspect}
+
Headers:
#{request.headers.collect { |k, v| "#{k} => #{v}" }.join('
')}
+
+
+
+
+
Headers: #{request.response_headers.inspect}
+
Cookies: #{request.response_cookies.inspect}
+
+
+
+
+
Values: #{session.inspect}
+
+
+
+ Powered by Nitro version #{Nitro::Version}
+
+
+
+
+
+
+
+ Show editable
+ #{form_for @obj, :action => "#{base}/save", :cancel => "#{base}/list", :all => true}
+
+ Show all
+ #{form_for @obj, :action => "#{base}/save", :cancel => "#{base}/list"}
+
+
+#{form_for(@%name%)}
+
+
+ #{"%plural%".humanize}
+
+
+
+
+
+
+ Home > System > #{"%plural%".humanize}
+ New #{"%name%".humanize}
+
+
+
+
+
+
+
+
+
+
+ Show editable
+ #{form_for @obj, :action => "#{base}/save", :cancel => "#{base}/list", :all => true, :enctype => "multipart/form-data"}
+
+ Show all
+ #{form_for @obj, :action => "#{base}/save", :cancel => "#{base}/list", :enctype => "multipart/form-data"}
+
+
+
+
+
+
+
+
+
+ Search method is not implemented for this object
+
+
+
+
+
+
+
+ View %name%
+
+
+ #{@obj.to_yaml}
+
+
+Access denied
+
+
+ Home > System
+
+ Og managed classes
+
+
+
+ Class |
+ Count |
+ Cleanup |
+ Properties |
+
+
+
+ #{c.name} |
+ #{c.count} |
+ delete |
+ destroy |
+ #{c.properties.values.join(', ')} |
+
+
+
+
+ System configuration
+
+
+
+ Name |
+ Value |
+ Type |
+ Description |
+
+
+
+ #{s.owner}.#{s.name} |
+ #{s.value.inspect} |
+ #{s.type} |
+ #{s.options[:doc]} |
+
+
+
+
+
+
+
+
+ Test
+
+
+
+
+
+
+
+hello
+Hello #{username}
+
+how do you feel?
+
+Here is your Token: #{token}
+
+
+
+
Questions with Tags: #{@tags.join(" ")}
+
+ 0 ?>
+
+ Too many results for that Tag, please reduce the number by using one of the following Tags:
+ #{cloud_of(@qtags)}
+
+
+
+
+
+
+ #{excerpt}
+
+
#{q.answers.size.to_i} answers
+
+
+
+
+
+
+
+ 0 ?>
+
Tips with Tags: #{@tags.join(" ")}
+
+ Too many results for that Tag, please reduce the number by using one of the following Tags:
+ #{cloud_of(@ttags)}
+
+
+
+
+
+
+ #{excerpt}
+
+
+
+
+
+
+ 0 ?>
+
Tutorials with Tags: #{@tags.join(" ")}
+
+ Too many results for that Tag, please reduce the number by using one of the following Tags:
+ #{cloud_of(@tuttags)}
+
+
+
+
+
+
+ #{excerpt}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
--
cgit v1.2.1