summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2014-12-14 11:50:10 +0100
committerAraq <rumpf_a@web.de>2014-12-14 11:50:10 +0100
commit9724bd4e1b44a23650b0f74c90766fe937ad778b (patch)
treed67f7fe18158ccc95888e107611598389deec14a
parentbebac34f878a87419c5d0e24a18edb50ebad5f0a (diff)
downloadNim-9724bd4e1b44a23650b0f74c90766fe937ad778b.tar.gz
minor improvements to the docs
-rw-r--r--compiler/jsgen.nim20
-rw-r--r--doc/manual/templates.txt2
-rw-r--r--doc/nimc.txt2
-rw-r--r--doc/tut1.txt59
-rw-r--r--doc/tut2.txt3
-rw-r--r--lib/pure/events.nim20
6 files changed, 54 insertions, 52 deletions
diff --git a/compiler/jsgen.nim b/compiler/jsgen.nim
index c9daba4d1..c838aa90b 100644
--- a/compiler/jsgen.nim
+++ b/compiler/jsgen.nim
@@ -33,7 +33,7 @@ import
   ast, astalgo, strutils, hashes, trees, platform, magicsys, extccomp,
   options, nversion, nimsets, msgs, crc, bitsets, idents, lists, types, os,
   times, ropes, math, passes, ccgutils, wordrecg, renderer, rodread, rodutils,
-  intsets, cgmeth
+  intsets, cgmeth, lowerings
 
 type
   TTarget = enum
@@ -1211,13 +1211,17 @@ proc genVarInit(p: PProc, v: PSym, n: PNode) =
 proc genVarStmt(p: PProc, n: PNode) = 
   for i in countup(0, sonsLen(n) - 1): 
     var a = n.sons[i]
-    if a.kind == nkCommentStmt: continue 
-    assert(a.kind == nkIdentDefs)
-    assert(a.sons[0].kind == nkSym)
-    var v = a.sons[0].sym
-    if lfNoDecl in v.loc.flags: continue 
-    genLineDir(p, a)
-    genVarInit(p, v, a.sons[2])
+    if a.kind != nkCommentStmt:
+      if a.kind == nkVarTuple:
+        let unpacked = lowerTupleUnpacking(a, p.prc)
+        genStmt(p, unpacked)
+      else:
+        assert(a.kind == nkIdentDefs)
+        assert(a.sons[0].kind == nkSym)
+        var v = a.sons[0].sym
+        if lfNoDecl notin v.loc.flags:
+          genLineDir(p, a)
+          genVarInit(p, v, a.sons[2])
 
 proc genConstant(p: PProc, c: PSym) =
   if lfNoDecl notin c.loc.flags and not p.g.generatedSyms.containsOrIncl(c.id):
diff --git a/doc/manual/templates.txt b/doc/manual/templates.txt
index d90c2203e..64bf71a96 100644
--- a/doc/manual/templates.txt
+++ b/doc/manual/templates.txt
@@ -250,7 +250,7 @@ Another common example is this:
     yield "Hello"
     yield "World"
 
-  var info = something().toSeq()
+  var info = toSeq(something())
 
 The problem here is that the compiler already decided that ``something()`` as
 an iterator is not callable in this context before ``toSeq`` gets its
diff --git a/doc/nimc.txt b/doc/nimc.txt
index 64ed6ce06..1f2675df8 100644
--- a/doc/nimc.txt
+++ b/doc/nimc.txt
@@ -42,7 +42,7 @@ List of warnings
 ----------------
 
 Each warning can be activated individually with ``--warning[NAME]:on|off`` or
-in a ``push`` pragma. 
+in a ``push`` pragma.
 
 ==========================       ============================================
 Name                             Description
diff --git a/doc/tut1.txt b/doc/tut1.txt
index 1a6530e6c..80ab2aab3 100644
--- a/doc/tut1.txt
+++ b/doc/tut1.txt
@@ -1013,17 +1013,16 @@ at runtime by 0, the second by 1 and so on. Example:
 .. code-block:: nim
 
   type
-    TDirection = enum
+    Direction = enum
       north, east, south, west
 
-  var x = south      # `x` is of type `TDirection`; its value is `south`
+  var x = south      # `x` is of type `Direction`; its value is `south`
   echo($x)           # writes "south" to `stdout`
 
-(To prefix a new type with the letter ``T`` is a convention in Nim.)
 All comparison operators can be used with enumeration types.
 
 An enumeration's symbol can be qualified to avoid ambiguities:
-``TDirection.south``.
+``Direction.south``.
 
 The ``$`` operator can convert any enumeration value to its name, the ``ord``
 proc to its underlying integer value.
@@ -1037,7 +1036,7 @@ An explicit ordered enum can have *holes*:
 
 .. code-block:: nim
   type
-    TMyEnum = enum
+    MyEnum = enum
       a = 2, b = 4, c = 89
 
 
@@ -1075,11 +1074,11 @@ A subrange type is a range of values from an integer or enumeration type
 
 .. code-block:: nim
   type
-    TSubrange = range[0..5]
+    Subrange = range[0..5]
 
 
-``TSubrange`` is a subrange of ``int`` which can only hold the values 0
-to 5. Assigning any other value to a variable of type ``TSubrange`` is a
+``Subrange`` is a subrange of ``int`` which can only hold the values 0
+to 5. Assigning any other value to a variable of type ``Subrange`` is a
 compile-time or runtime error. Assignments from the base type to one of its
 subrange types (and vice versa) are allowed.
 
@@ -1106,9 +1105,9 @@ Arrays can be constructed via ``[]``:
 .. code-block:: nim
 
   type
-    TIntArray = array[0..5, int] # an array that is indexed with 0..5
+    IntArray = array[0..5, int] # an array that is indexed with 0..5
   var
-    x: TIntArray
+    x: IntArray
   x = [1, 2, 3, 4, 5, 6]
   for i in low(x)..high(x):
     echo(x[i])
@@ -1127,13 +1126,13 @@ array `a` and `high(a) <system.html#high>`_ the highest valid index.
 
 .. code-block:: nim
   type
-    TDirection = enum
+    Direction = enum
       north, east, south, west
-    TBlinkLights = enum
+    BlinkLights = enum
       off, on, slowBlink, mediumBlink, fastBlink
-    TLevelSetting = array[north..west, TBlinkLights]
+    LevelSetting = array[north..west, BlinkLights]
   var
-    level : TLevelSetting
+    level: LevelSetting
   level[north] = on
   level[south] = slowBlink
   level[east] = fastBlink
@@ -1152,9 +1151,9 @@ subdivided in height levels accessed through their integer index:
 
 .. code-block:: nim
   type
-    TLightTower = array[1..10, TLevelSetting]
+    LightTower = array[1..10, LevelSetting]
   var
-    tower: TLightTower
+    tower: LightTower
   tower[1][north] = slowBlink
   tower[1][east] = mediumBlink
   echo len(tower)     # --> 10
@@ -1165,24 +1164,24 @@ subdivided in height levels accessed through their integer index:
   #tower[0][1] = on
 
 Note how the built-in ``len`` proc returns only the array's first dimension
-length.  Another way of defining the ``TLightTower`` to show better its
-nested nature would be to omit the previous definition of the ``TLevelSetting``
+length.  Another way of defining the ``LightTower`` to show better its
+nested nature would be to omit the previous definition of the ``LevelSetting``
 type and instead write it embedded directly as the type of the first dimension:
 
 .. code-block:: nim
   type
-    TLightTower = array[1..10, array[north..west, TBlinkLights]]
+    LightTower = array[1..10, array[north..west, BlinkLights]]
 
 It is quite frequent to have arrays start at zero, so there's a shortcut syntax
 to specify a range from zero to the specified index minus one:
 
 .. code-block:: nim
   type
-    TIntArray = array[0..5, int] # an array that is indexed with 0..5
-    TQuickArray = array[6, int]  # an array that is indexed with 0..5
+    IntArray = array[0..5, int] # an array that is indexed with 0..5
+    QuickArray = array[6, int]  # an array that is indexed with 0..5
   var
-    x: TIntArray
-    y: TQuickArray
+    x: IntArray
+    y: QuickArray
   x = [1, 2, 3, 4, 5, 6]
   y = x
   for i in low(x)..high(x):
@@ -1436,16 +1435,16 @@ operators perform implicit dereferencing operations for reference types:
 .. code-block:: nim
 
   type
-    PNode = ref TNode
-    TNode = tuple[le, ri: PNode, data: int]
+    Node = ref NodeObj
+    NodeObj = object 
+      le, ri: PNode
+      data: int
   var
-    n: PNode
+    n: Node
   new(n)
   n.data = 9 
   # no need to write n[].data; in fact n[].data is highly discouraged!
 
-(As a convention, reference types use a 'P' prefix.)
-
 To allocate a new traced object, the built-in procedure ``new`` has to be used.
 To deal with untraced memory, the procedures ``alloc``, ``dealloc`` and
 ``realloc`` can be used. The documentation of the `system <system.html>`_
@@ -1573,11 +1572,11 @@ rules apply:
 
 .. code-block:: nim
   # Module A
-  proc x*(a: int): string = result = $a
+  proc x*(a: int): string = $a
 
 .. code-block:: nim
   # Module B
-  proc x*(a: string): string = result = $a
+  proc x*(a: string): string = $a
 
 .. code-block:: nim
   # Module C
diff --git a/doc/tut2.txt b/doc/tut2.txt
index d8f9071a9..6e239d681 100644
--- a/doc/tut2.txt
+++ b/doc/tut2.txt
@@ -11,8 +11,7 @@ Nim Tutorial (Part II)
 Introduction
 ============
 
-  "Object-oriented programming is an exceptionally bad idea which could
-  only have originated in California." --Edsger Dijkstra
+  "Repetition renders the ridiculous reasonable." -- Norman Wildberger
 
 
 This document is a tutorial for the advanced constructs of the *Nim*
diff --git a/lib/pure/events.nim b/lib/pure/events.nim
index 47dc6ba3f..77faa6a66 100644
--- a/lib/pure/events.nim
+++ b/lib/pure/events.nim
@@ -51,20 +51,20 @@ proc initEventHandler*(name: string): EventHandler =
   result.handlers = @[]
   result.name = name
 
-proc addHandler*(handler: var EventHandler, func: proc(e: EventArgs) {.closure.}) =
+proc addHandler*(handler: var EventHandler, fn: proc(e: EventArgs) {.closure.}) =
   ## Adds the callback to the specified event handler.
-  handler.handlers.add(func)
+  handler.handlers.add(fn)
 
-proc removeHandler*(handler: var EventHandler, func: proc(e: EventArgs) {.closure.}) =
+proc removeHandler*(handler: var EventHandler, fn: proc(e: EventArgs) {.closure.}) =
   ## Removes the callback from the specified event handler.
   for i in countup(0, len(handler.handlers) -1):
-    if func == handler.handlers[i]:
+    if fn == handler.handlers[i]:
       handler.handlers.del(i)
       break
     
-proc containsHandler*(handler: var EventHandler, func: proc(e: EventArgs) {.closure.}): bool =
+proc containsHandler*(handler: var EventHandler, fn: proc(e: EventArgs) {.closure.}): bool =
   ## Checks if a callback is registered to this event handler.
-  return handler.handlers.contains(func)
+  return handler.handlers.contains(fn)
 
 
 proc clearHandlers*(handler: var EventHandler) =
@@ -76,21 +76,21 @@ proc getEventHandler(emitter: var EventEmitter, event: string): int =
     if emitter.s[k].name == event: return k
   return -1
 
-proc on*(emitter: var EventEmitter, event: string, func: proc(e: EventArgs) {.closure.}) =
+proc on*(emitter: var EventEmitter, event: string, fn: proc(e: EventArgs) {.closure.}) =
   ## Assigns a event handler with the specified callback. If the event
   ## doesn't exist, it will be created.
   var i = getEventHandler(emitter, event)
   if i < 0:
     var eh = initEventHandler(event)
-    addHandler(eh, func)
+    addHandler(eh, fn)
     emitter.s.add(eh)
   else:
-    addHandler(emitter.s[i], func)
+    addHandler(emitter.s[i], fn)
   
 proc emit*(emitter: var EventEmitter, eventhandler: var EventHandler, 
            args: EventArgs) =
   ## Fires an event handler with specified event arguments.
-  for func in items(eventhandler.handlers): func(args)
+  for fn in items(eventhandler.handlers): fn(args)
 
 proc emit*(emitter: var EventEmitter, event: string, args: EventArgs) =
   ## Fires an event handler with specified event arguments.