Skip to content

Commit

Permalink
Added the ability to toggle between languages in tutorials.
Browse files Browse the repository at this point in the history
  • Loading branch information
heathermiller committed Jan 25, 2012
1 parent be466b9 commit 67fbf4e
Show file tree
Hide file tree
Showing 37 changed files with 92 additions and 35 deletions.
2 changes: 1 addition & 1 deletion _includes/tutorial-toc.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<p class="contents">Contents</p>
<ul>
{% for p in site.pages %}
{% if p.tutorial == page.tutorial %}
{% if p.tutorial == page.tutorial and p.language == page.language %}
<li><a href="{{ p.url }}">{{p.title}}</a></li>
{% endif %}
{% endfor %}
Expand Down
26 changes: 24 additions & 2 deletions _layouts/tutorial.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,30 @@

<div class="container">
<div class="row">

{% if page.title %}<h1>{{ page.title }}</h1>{% else %}<h1>{{ site.title }}</h1>{% endif %}

<div class="span10">{% if page.title %}<h1>{{ page.title }}</h1>{% else %}<h1>{{ site.title }}</h1>{% endif %}</div>

{% for pg in site.pages %}
{% if pg.tutorial == "scala-tour" and pg.languages %}
{% assign lang = pg.languages %}
{% endif %}
{% endfor %}

{% if page.language %}
{% capture intermediate %}{{ page.url | remove_first: page.language }}{% endcapture %}
{% capture rootTutorialURL %}{{ intermediate | remove_first: '/' }}{% endcapture %}
{% else %}
{% assign rootTutorialURL = page.url %}
{% endif %}

<div class="span6">
{% if lang %}
<a href="{{ site.baseurl }}{{ rootTutorialURL }}"><img src="{{ site.baseurl }}/resources/images/language/en.png" title="Language: en"/></a>
{% for l in lang %}
<a href="{{ site.baseurl }}/{{ l }}{{ rootTutorialURL }}"><img src="{{ site.baseurl }}/resources/images/language/{{ l }}.png" title="Language: {{ l }}"/></a>
{% endfor %}
{% endif %}
</div>

<div class="span10">
{{ content }}
Expand Down
3 changes: 2 additions & 1 deletion es/tutorials/tour/abstract-types.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@ title: Tipos Abstractos

disqus: true

tutorial: scala-tour-es
tutorial: scala-tour
num: 2
outof: 33
language: es
---

En Scala, las cases son parametrizadas con valores (los parámetros de construcción) y con tipos (si las clases son [genéricas](generic-classes.html)). Por razones de consistencia, no es posible tener solo valores como miembros de objetos; tanto los tipos como los valores son miembros de objetos. Además, ambos tipos de miembros pueden ser concretos y abstractos.
Expand Down
3 changes: 2 additions & 1 deletion es/tutorials/tour/annotations.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ title: Anotaciones

disqus: true

tutorial: scala-tour-es
tutorial: scala-tour
num: 3
language: es
---

Las anotaciones sirven para asociar meta-información con definiciones.
Expand Down
3 changes: 2 additions & 1 deletion es/tutorials/tour/anonymous-function-syntax.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ title: Sintaxis de funciones anónimas

disqus: true

tutorial: scala-tour-es
tutorial: scala-tour
num: 14
language: es
---

Scala provee una sintaxis relativamente livana para definir funciones anónimas. La siguiente expresión crea una función incrementadora para números enteros:
Expand Down
3 changes: 2 additions & 1 deletion es/tutorials/tour/automatic-closures.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ title: Construcción de closures automáticas

disqus: true

tutorial: scala-tour-es
tutorial: scala-tour
num: 16
language: es
---

Scala permite pasar a un método como parámetro funciones que no reciban parámetros. Cuando un método así es invocado, los parámetros reales de la función enviada sin parámetros no son evaluados y una función "nularia" (de aridad creo, 0-aria, o sin parámetros) es pasada en su llugar la cual encapsula el comportamiento del parámetro correspondiente (comunmente conocido como "llamada por nombre").
Expand Down
3 changes: 2 additions & 1 deletion es/tutorials/tour/case-classes.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ title: Clases Case

disqus: true

tutorial: scala-tour-es
tutorial: scala-tour
num: 5
language: es
---

Scala da soporte a la noción de _clases caso_ (en inglés _case classes_, desde ahora _clases Case_). Las clases Case son clases regulares las cuales exportan sus parámetros constructores y a su vez proveen una descomposición recursiva de sí mismas a través de [reconocimiento de patrones](pattern-matching.html).
Expand Down
3 changes: 2 additions & 1 deletion es/tutorials/tour/classes.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ title: Clases

disqus: true

tutorial: scala-tour-es
tutorial: scala-tour
num: 4
language: es
---
En Scala, las clases son plantillas estáticas que pueden ser instanciadas por muchos objetos en tiempo de ejecución.
Aquí se presenta una clase la cual define la clase `Point`:
Expand Down
3 changes: 2 additions & 1 deletion es/tutorials/tour/compound-types.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ title: Tipos Compuestos

disqus: true

tutorial: scala-tour-es
tutorial: scala-tour
num: 6
language: es
---

Algunas veces es necesario expresar que el tipo de un objeto es un subtipo de varios otros tipos. En Scala esto puede ser expresado con la ayuda de *tipos compuestos*, los cuales pueden entenderse como la intersección de otros tipos.
Expand Down
3 changes: 2 additions & 1 deletion es/tutorials/tour/currying.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ title: Currying

disqus: true

tutorial: scala-tour-es
tutorial: scala-tour
num: 15
language: es
---

_Nota de traducción: Currying es una técnica de programación funcional nombrada en honor al matemático y lógico. Es por eso que no se intentará hacer ninguna traducción sobre el término Currying. Entiendase este como una acción, técnica base de PF. Como una nota al paso ,el lenguaje de programación Haskell debe su nombre a este eximio matemático._
Expand Down
3 changes: 2 additions & 1 deletion es/tutorials/tour/explicitly-typed-self-references.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ title: Autorefrencias explicitamente tipadas

disqus: true

tutorial: scala-tour-es
tutorial: scala-tour
num: 27
language: es
---

Cuando se está construyendo software extensible, algunas veces resulta útil declarar el tipo de la variable `this` explicitamente. Para motivar esto, realizaremos una pequeña representación de una estructura de datos Grafo, en Scala.
Expand Down
3 changes: 2 additions & 1 deletion es/tutorials/tour/extractor-objects.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ title: Objetos Extractores

disqus: true

tutorial: scala-tour-es
tutorial: scala-tour
num: 8
language: es
---

En Scala pueden ser definidos patrones independientemente de las clases Caso. Para este fin exite un método llamado `unapply` que proveera el ya dicho extractor. Por ejemplo, en el código siguiente se define el objeto extractor `Twice`
Expand Down
3 changes: 2 additions & 1 deletion es/tutorials/tour/generic-classes.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ title: Clases genéricas

disqus: true

tutorial: scala-tour-es
tutorial: scala-tour
num: 9
language: es
---

Tal como en Java 5 ([JDK 1.5](http://java.sun.com/j2se/1.5/)), Scala provee soporte nativo para parametrizar clases con tipos. Eso es llamado clases genéricas y son especialmente importantes para el desarrollo de clases tipo colección.
Expand Down
3 changes: 2 additions & 1 deletion es/tutorials/tour/higher-order-functions.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ title: Funciones de orden superior

disqus: true

tutorial: scala-tour-es
tutorial: scala-tour
num: 18
language: es
---

Scala permite la definición de funciones de orden superior. Estas funciones son las que _toman otras funciones como parámetros_, o las cuales _el resultado es una función_. Aquí mostramos una función `apply` la cual toma otra función `f` y un valor `v` como parámetros y aplica la función `f` a `v`:
Expand Down
3 changes: 2 additions & 1 deletion es/tutorials/tour/implicit-parameters.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ title: Parámetros implícitos

disqus: true

tutorial: scala-tour-es
tutorial: scala-tour
num: 10
language: es
---

Un método con _parámetros implícitos_ puede ser aplicado a argumentos tal como un método normal. En este caso la etiqueta `implicit` no tiene efecto. De todas maneras, si a un método le faltan argumentos para sus parámetros implícitos, tales argumentos serán automáticamente provistos.
Expand Down
3 changes: 2 additions & 1 deletion es/tutorials/tour/inner-classes.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ title: Clases Internas

disqus: true

tutorial: scala-tour-es
tutorial: scala-tour
num: 11
language: es
---

En Scala es posible que las clases tengan como miembro otras clases. A diferencia de lenguajes tipo Java donde ese tipo de clases internas son miembros de las clases que las envuelven, en Scala esas clases internas están ligadas al objeto externo. Para ilustrar esta diferencia, vamos a mostrar rápidamente una implementación del tipo grafo:
Expand Down
3 changes: 2 additions & 1 deletion es/tutorials/tour/local-type-inference.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ title: Inferencia de tipos Local

disqus: true

tutorial: scala-tour-es
tutorial: scala-tour
num: 29
language: es
---

Scala tiene incorporado un mecanismo de inferencia de tipos el cual permite al programador omitir ciertos tipos de anotaciones. Por ejemplo, generalmente no es necesario especificar el tipo de una variable, ya que el compilador puede deducir el tipo mediante la expresión de inicialización de la variable. También puede generalmente omitirse los tipos de retorno de métodos ya que se corresponden con el tipo del cuerpo, que es inferido por el compilador.
Expand Down
3 changes: 2 additions & 1 deletion es/tutorials/tour/lower-type-bounds.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ title: Límite de tipado inferior

disqus: true

tutorial: scala-tour-es
tutorial: scala-tour
num: 26
language: es
---

Mientras que los [límites de tipado superior](upper-type-bounds.html) limitan el tipo de un subtipo de otro tipo, los *límites de tipado inferior* declaran que un tipo sea un supertipo de otro tipo. El término `T >: A` expresa que el parámetro de tipo `T` o el tipo abstracto `T` se refiera a un supertipo del tipo `A`
Expand Down
3 changes: 2 additions & 1 deletion es/tutorials/tour/mixin-class-composition.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ title: Composición de clases mixin

disqus: true

tutorial: scala-tour-es
tutorial: scala-tour
num: 12
language: es
---
_Nota de traducción: La palabra `mixin` puede ser traducida como mezcla, dando título a esta sección de: Composición de clases Mezcla, pero es preferible utilizar la notación original_

Expand Down
3 changes: 2 additions & 1 deletion es/tutorials/tour/nested-functions.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ title: Funciones Anidadas

disqus: true

tutorial: scala-tour-es
tutorial: scala-tour
num: 13
language: es
---

En scala es posible anidar definiciones de funciones. El siguiente objeto provee una función `filter` para extraer valores de una lista de enteros que están por debajo de un determinado valor:
Expand Down
3 changes: 2 additions & 1 deletion es/tutorials/tour/operators.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ title: Operadores

disqus: true

tutorial: scala-tour-es
tutorial: scala-tour
num: 17
language: es
---

En Scala, cualquier método el cual reciba un solo parámetro puede ser usado como un *operador de infijo (infix)*. Aquí se muestra la definición de la clase `MyBool`, la cual define tres métodos `and`, `or`, y `negate`.
Expand Down
3 changes: 2 additions & 1 deletion es/tutorials/tour/pattern-matching.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ title: Reconocimiento de patrones

disqus: true

tutorial: scala-tour-es
tutorial: scala-tour
num: 20
language: es
---

_Nota de traducción: Es dificil encontrar en nuestro idioma una palabra que se relacione directamente con el significado de `match` en inglés. Podemos entender a `match` como "coincidir" o "concordar" con algo. En algunos lugares se utiliza la palabra `machear`, aunque esta no existe en nuestro idioma con el sentido que se le da en este texto, sino que se utiliza como traducción de `match`._
Expand Down
3 changes: 2 additions & 1 deletion es/tutorials/tour/polymorphic-methods.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ title: Métodos polimórficos

disqus: true

tutorial: scala-tour-es
tutorial: scala-tour
num: 21
language: es
---

Los métodos en Scala pueden ser parametrizados tanto con valores como con tipos. Como a nivel de clase, parámetros de valores son encerrados en un par de paréntesis, mientras que los parámetros de tipo son declarados dentro de un par de corchetes.
Expand Down
3 changes: 2 additions & 1 deletion es/tutorials/tour/regular-expression-patterns.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ title: Patrones basados en expresiones regulares

disqus: true

tutorial: scala-tour-es
tutorial: scala-tour
num: 22
language: es
---

## Patrones de secuencias que ignoran a la derecha ##
Expand Down
3 changes: 2 additions & 1 deletion es/tutorials/tour/sequence-comprehensions.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ title: Sequencias por Comprensión

disqus: true

tutorial: scala-tour-es
tutorial: scala-tour
num: 7
language: es
---

Scala cuenta con una notación ligera para expresar *sequencias por comprensión* (*sequence comprehensions*). Las comprensiones tienen la forma `for (enumeradores) yield e`, donde `enumeradores` se refiere a una lista de enumeradores separados por el símbolo punto y coma (;). Un *enumerador* puede ser tanto un generador el cual introduce nuevas variables, o un filtro. La comprensión evalúa el cuerpo `e` por cada paso (o ciclo) generado por los enumeradores y retorna una secuencia de estos valores.
Expand Down
3 changes: 2 additions & 1 deletion es/tutorials/tour/tour-of-scala.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ title: Introduction

disqus: true

tutorial: scala-tour-es
tutorial: scala-tour
num: 1
language: es
---

Scala es un moderno lenguaje de programación multi-paradigma diseñado para expresar patrones de programación comunes de una forma concisa, elegante, y de tipado seguro. Integra facilmente características de lenguajes orientados a objetos y funcionales.
Expand Down
3 changes: 2 additions & 1 deletion es/tutorials/tour/traits.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ title: Traits

disqus: true

tutorial: scala-tour-es
tutorial: scala-tour
num: 24
language: es
---

_Nota de traducción: La palabra `trait` en inglés puede traducirse literalmente como `rasgo` o `caracteristica`. Preferimos la designación oringial trait por ser una característica muy natural de Scala._
Expand Down
3 changes: 2 additions & 1 deletion es/tutorials/tour/unified-types.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ title: Tipos Unificados

disqus: true

tutorial: scala-tour-es
tutorial: scala-tour
num: 30
language: es
---

A diferencia de Java, todos los valores en Scala son objetos (incluyendo valores numéricos y funciones). Dado que Scala está basado en clases, todos los valores son instancias de una clase. El diagrama siguiente ilustra esta jerarquía de clases:
Expand Down
3 changes: 2 additions & 1 deletion es/tutorials/tour/upper-type-bounds.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ title: Límite de tipado superior

disqus: true

tutorial: scala-tour-es
tutorial: scala-tour
num: 25
language: es
---

En Scala, los [parámetros de tipo](generic-classes.html) y los [tipos abstractos](abstract-types.html) pueden ser restringidos por un límite de tipado. Tales límites de tipado limitan los valores concretos de las variables de tipo y posiblemente revelan más información acerca de los miembros de tales tipos. Un _límite de tipado superior_ `T <: A` declara que la variable de tipo `T` es un subtipo del tipo `A`.
Expand Down
3 changes: 2 additions & 1 deletion es/tutorials/tour/variances.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ title: Varianzas

disqus: true

tutorial: scala-tour-es
tutorial: scala-tour
num: 31
language: es
---

Scala soporta anotaciones de varianza para parámetros de tipo para [clases genéricas.](generic-classes.html). A diferencia de Java 5 (es decir: [JDK 1.5](http://java.sun.com/j2se/1.5/)), las anotaciones de varianza pueden ser agregadas cuando una abstracción de clase es definidia, mientras que en Java 5, las anotaciones de varianza son dadas por los clientes cuando una albstracción de clase es usada.
Expand Down
3 changes: 2 additions & 1 deletion es/tutorials/tour/views.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ title: Vistas

disqus: true

tutorial: scala-tour-es
tutorial: scala-tour
num: 32
language: es
---

[Parámetros implícitos](implicit-parameters.html) y métodos también pueden definir conversiones implícitas llamadas _vistas_. Una vista de tipo `S` a `T` es definida por un valor implícito que tiene una función del tipo `S => T`, o por un método convertible a un valor de tal tipo.
Expand Down
3 changes: 2 additions & 1 deletion es/tutorials/tour/xml-processing.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ title: Procesamiento de documentos XML

disqus: true

tutorial: scala-tour-es
tutorial: scala-tour
num: 33
language: es
---

Scala can be used to easily create, parse, and process XML documents. XML data can be represented in Scala either by using a generic data representation, or with a data-specific data representation. The latter approach is supported by the *data-binding* tool `schema2src`.
Expand Down
Binary file added resources/images/language/en.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added resources/images/language/es.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added resources/images/language/fr.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 6 additions & 2 deletions tutorials/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,9 @@ title: Tutorials
</div>
{% for pg in site.pages %}
{% if pg.tutorial == "scala-tour" and pg.outof %}
{% assign totalPagesTour = pg.outof %}
{% unless pg.language %}
{% assign totalPagesTour = pg.outof %}
{% endunless %}
{% endif %}
{% endfor %}

Expand All @@ -54,7 +56,9 @@ title: Tutorials
{% for i in (1..totalPagesTour) %}
{% for pg in site.pages %}
{% if pg.tutorial == "scala-tour" and pg.num and pg.num == i %}
<li class="tour-of-scala"><a href="{{ pg.url }}">{{ pg.title }}</a></li>
{% unless pg.language %}
<li class="tour-of-scala"><a href="{{ pg.url }}">{{ pg.title }}</a></li>
{% endunless %}
{% endif %}
{% endfor %}
{% endfor %}
Expand Down
Loading

0 comments on commit 67fbf4e

Please sign in to comment.