summary refs log tree commit diff stats
path: root/examples
diff options
context:
space:
mode:
authorLynn C. Rees <lcrees@gmail.com>2017-11-15 13:58:11 -0700
committerAndreas Rumpf <rumpf_a@web.de>2017-11-15 21:58:11 +0100
commitac5dff2e04f4f8e2c4aa6537e89d26c2ca09b946 (patch)
tree1ce0f9f39d2e50009881bbc8e0f8ffc88359e8cb /examples
parent5e66a7ce591f8abf2cddeffe8389c53a3183c2a8 (diff)
downloadNim-ac5dff2e04f4f8e2c4aa6537e89d26c2ca09b946.tar.gz
Change expr/stmt in examples to untyped (#6734)
Diffstat (limited to 'examples')
-rw-r--r--examples/cross_calculator/ios/resources/ui/NRViewController.xib2
-rw-r--r--examples/cross_calculator/lazarus/unit1.pas2
-rw-r--r--examples/cross_calculator/nim_commandline/nim.cfg2
-rw-r--r--examples/cross_calculator/readme.txt2
-rw-r--r--examples/cross_todo/nim_backend/backend.nim66
-rw-r--r--examples/cross_todo/nim_backend/testbackend.nim13
-rw-r--r--examples/cross_todo/nim_commandline/nim.cfg2
-rw-r--r--examples/cross_todo/nim_commandline/nimtodo.nim56
-rw-r--r--examples/cross_todo/nim_commandline/readme.txt2
-rw-r--r--examples/cross_todo/readme.txt2
-rw-r--r--examples/keyval.nim3
-rw-r--r--examples/readme.txt2
-rw-r--r--examples/talk/dsl.nim10
-rw-r--r--examples/talk/formatoptimizer.nim6
-rw-r--r--examples/talk/quasiquote.nim2
-rw-r--r--examples/talk/tags.nim3
16 files changed, 56 insertions, 119 deletions
diff --git a/examples/cross_calculator/ios/resources/ui/NRViewController.xib b/examples/cross_calculator/ios/resources/ui/NRViewController.xib
index b260db2af..2118b5044 100644
--- a/examples/cross_calculator/ios/resources/ui/NRViewController.xib
+++ b/examples/cross_calculator/ios/resources/ui/NRViewController.xib
@@ -85,7 +85,7 @@
 						<int key="IBUITag">2</int>
 						<bool key="IBUIUserInteractionEnabled">NO</bool>
 						<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
-						<string key="IBUIText">Nimrod Crossplatform Calculator</string>
+						<string key="IBUIText">Nim Crossplatform Calculator</string>
 						<object class="NSColor" key="IBUITextColor" id="128895179">
 							<int key="NSColorSpace">1</int>
 							<bytes key="NSRGB">MCAwIDAAA</bytes>
diff --git a/examples/cross_calculator/lazarus/unit1.pas b/examples/cross_calculator/lazarus/unit1.pas
index aa0ef6cf7..6091a61d3 100644
--- a/examples/cross_calculator/lazarus/unit1.pas
+++ b/examples/cross_calculator/lazarus/unit1.pas
@@ -42,7 +42,7 @@ function myAdd(x, y: longint): longint; cdecl; external;
 
 procedure TForm1.FormCreate(Sender: TObject);
 begin
-  // we initialize the Nimrod data structures here:
+  // we initialize the Nim data structures here:
   NimMain();
 end;
 
diff --git a/examples/cross_calculator/nim_commandline/nim.cfg b/examples/cross_calculator/nim_commandline/nim.cfg
index 41c034430..6f0cb4a01 100644
--- a/examples/cross_calculator/nim_commandline/nim.cfg
+++ b/examples/cross_calculator/nim_commandline/nim.cfg
@@ -1,4 +1,4 @@
-# Nimrod configuration file.
+# Nim configuration file.
 # The file is used only to add the path of the backend to the compiler options.
 
 path="../nim_backend"
diff --git a/examples/cross_calculator/readme.txt b/examples/cross_calculator/readme.txt
index 5011792b9..72e4130eb 100644
--- a/examples/cross_calculator/readme.txt
+++ b/examples/cross_calculator/readme.txt
@@ -2,7 +2,7 @@ The cross platform calculator illustrates how to use Nim to create a backend
 called by different native user interfaces.
 
 Since the purpose of the example is to show how the cross platform code
-interacts with Nimrod the actual backend code is just a simple addition proc.
+interacts with Nim the actual backend code is just a simple addition proc.
 By keeping your program logic in Nim you can easily reuse it in different
 platforms.
 
diff --git a/examples/cross_todo/nim_backend/backend.nim b/examples/cross_todo/nim_backend/backend.nim
index 6869665f8..513fe304f 100644
--- a/examples/cross_todo/nim_backend/backend.nim
+++ b/examples/cross_todo/nim_backend/backend.nim
@@ -4,9 +4,8 @@
 
 import db_sqlite, parseutils, strutils, times
 
-
 type
-  TTodo* = object
+  Todo* = object
     ## A todo object holding the information serialized to the database.
     id: int64                 ## Unique identifier of the object in the
                               ## database, use the getId() accessor to read it.
@@ -17,7 +16,7 @@ type
                               ## outside of this module, use the
                               ## getModificationDate accessor.
 
-  TPagedParams* = object
+  PagedParams* = object
     ## Contains parameters for a query, initialize default values with
     ## initDefaults().
     pageSize*: int64          ## Lines per returned query page, -1 for
@@ -27,11 +26,10 @@ type
     showUnchecked*: bool      ## Get unchecked objects.
     showChecked*: bool        ## Get checked objects.
 
-
 # - General procs
-#
-proc initDefaults*(params: var TPagedParams) =
-  ## Sets sane defaults for a TPagedParams object.
+
+proc initDefaults*(params: var PagedParams) =
+  ## Sets sane defaults for a PagedParams object.
   ##
   ## Note that you should always provide a non zero pageSize, either a specific
   ## positive value or negative for unbounded query results.
@@ -41,7 +39,6 @@ proc initDefaults*(params: var TPagedParams) =
   params.showUnchecked = true
   params.showChecked = false
 
-
 proc openDatabase*(path: string): DbConn =
   ## Creates or opens the sqlite3 database.
   ##
@@ -56,16 +53,14 @@ proc openDatabase*(path: string): DbConn =
       desc TEXT NOT NULL,
       modification_date INTEGER NOT NULL,
       CONSTRAINT Todos UNIQUE (id))"""
-
   db_sqlite.exec(conn, query)
   result = conn
 
+# - Procs related to Todo objects
 
-# - Procs related to TTodo objects
-#
 proc initFromDB(id: int64; text: string; priority: int, isDone: bool;
-               modificationDate: Time): TTodo =
-  ## Returns an initialized TTodo object created from database parameters.
+               modificationDate: Time): Todo =
+  ## Returns an initialized Todo object created from database parameters.
   ##
   ## The proc assumes all values are right. Note this proc is NOT exported.
   assert(id >= 0, "Identity identifiers should not be negative")
@@ -75,29 +70,25 @@ proc initFromDB(id: int64; text: string; priority: int, isDone: bool;
   result.isDone = isDone
   result.modificationDate = modificationDate
 
-
-proc getId*(todo: TTodo): int64 =
+proc getId*(todo: Todo): int64 =
   ## Accessor returning the value of the private id property.
   return todo.id
 
-
-proc getModificationDate*(todo: TTodo): Time =
-  ## Returns the last modification date of a TTodo entry.
+proc getModificationDate*(todo: Todo): Time =
+  ## Returns the last modification date of a Todo entry.
   return todo.modificationDate
 
-
-proc update*(todo: var TTodo; conn: DbConn): bool =
+proc update*(todo: var Todo; conn: DbConn): bool =
   ## Checks the database for the object and refreshes its variables.
   ##
   ## Use this method if you (or another entity) have modified the database and
   ## want to update the object you have with whatever the database has stored.
   ## Returns true if the update succeeded, or false if the object was not found
   ## in the database any more, in which case you should probably get rid of the
-  ## TTodo object.
+  ## Todo object.
   assert(todo.id >= 0, "The identifier of the todo entry can't be negative")
   let query = sql"""SELECT desc, priority, is_done, modification_date
     FROM Todos WHERE id = ?"""
-
   try:
     let rows = conn.getAllRows(query, $todo.id)
     if len(rows) < 1:
@@ -111,8 +102,7 @@ proc update*(todo: var TTodo; conn: DbConn): bool =
   except:
     echo("Something went wrong selecting for id " & $todo.id)
 
-
-proc save*(todo: var TTodo; conn: DbConn): bool =
+proc save*(todo: var Todo; conn: DbConn): bool =
   ## Saves the current state of text, priority and isDone to the database.
   ##
   ## Returns true if the database object was updated (in which case the
@@ -127,15 +117,13 @@ proc save*(todo: var TTodo; conn: DbConn): bool =
       WHERE id = ?"""
     rowsUpdated = conn.execAffectedRows(query, $todo.text,
       $todo.priority, $todo.isDone, $int(currentDate), $todo.id)
-
   if 1 == rowsUpdated:
     todo.modificationDate = currentDate
     result = true
 
-
 # - Procs dealing directly with the database
-#
-proc addTodo*(conn: DbConn; priority: int; text: string): TTodo =
+
+proc addTodo*(conn: DbConn; priority: int; text: string): Todo =
   ## Inserts a new todo into the database.
   ##
   ## Returns the generated todo object. If there is an error EDb will be raised.
@@ -145,10 +133,8 @@ proc addTodo*(conn: DbConn; priority: int; text: string): TTodo =
       (priority, is_done, desc, modification_date)
       VALUES (?, 'false', ?, ?)"""
     todoId = conn.insertId(query, priority, text, $int(currentDate))
-
   result = initFromDB(todoId, text, priority, false, currentDate)
 
-
 proc deleteTodo*(conn: DbConn; todoId: int64): int64 {.discardable.} =
   ## Deletes the specified todo identifier.
   ##
@@ -156,7 +142,6 @@ proc deleteTodo*(conn: DbConn; todoId: int64): int64 {.discardable.} =
   let query = sql"""DELETE FROM Todos WHERE id = ?"""
   result = conn.execAffectedRows(query, $todoId)
 
-
 proc getNumEntries*(conn: DbConn): int =
   ## Returns the number of entries in the Todos table.
   ##
@@ -170,38 +155,30 @@ proc getNumEntries*(conn: DbConn): int =
     echo("Something went wrong retrieving number of Todos entries")
     result = -1
 
-
-proc getPagedTodos*(conn: DbConn; params: TPagedParams;
-                    page = 0'i64): seq[TTodo] =
+proc getPagedTodos*(conn: DbConn; params: PagedParams; page = 0'i64): seq[Todo] =
   ## Returns the todo entries for a specific page.
   ##
   ## Pages are calculated based on the params.pageSize parameter, which can be
   ## set to a negative value to specify no limit at all.  The query will be
-  ## affected by the TPagedParams, which should have sane values (call
+  ## affected by the PagedParams, which should have sane values (call
   ## initDefaults).
   assert(page >= 0, "You should request a page zero or bigger than zero")
   result = @[]
-
   # Well, if you don't want to see anything, there's no point in asking the db.
   if not params.showUnchecked and not params.showChecked: return
-
   let
     order_by = [
       if params.priorityAscending: "ASC" else: "DESC",
       if params.dateAscending: "ASC" else: "DESC"]
-
     query = sql("""SELECT id, desc, priority, is_done, modification_date
       FROM Todos
       WHERE is_done = ? OR is_done = ?
       ORDER BY priority $1, modification_date $2, id DESC
       LIMIT ? * ?,?""" % order_by)
-
     args = @[$params.showChecked, $(not params.showUnchecked),
       $params.pageSize, $page, $params.pageSize]
-
   #echo("Query " & string(query))
   #echo("args: " & args.join(", "))
-
   var newId: BiggestInt
   for row in conn.fastRows(query, args):
     let numChars = row[0].parseBiggestInt(newId)
@@ -209,10 +186,9 @@ proc getPagedTodos*(conn: DbConn; params: TPagedParams;
     result.add(initFromDB(int64(newId), row[1], row[2].parseInt,
         row[3].parseBool, Time(row[4].parseInt)))
 
-
-proc getTodo*(conn: DbConn; todoId: int64): ref TTodo =
-  ## Returns a reference to a TTodo or nil if the todo could not be found.
-  var tempTodo: TTodo
+proc getTodo*(conn: DbConn; todoId: int64): ref Todo =
+  ## Returns a reference to a Todo or nil if the todo could not be found.
+  var tempTodo: Todo
   tempTodo.id = todoId
   if tempTodo.update(conn):
     new(result)
diff --git a/examples/cross_todo/nim_backend/testbackend.nim b/examples/cross_todo/nim_backend/testbackend.nim
index 6754f013a..4a71d5f2c 100644
--- a/examples/cross_todo/nim_backend/testbackend.nim
+++ b/examples/cross_todo/nim_backend/testbackend.nim
@@ -2,8 +2,7 @@
 
 import backend, db_sqlite, strutils, times
 
-
-proc showPagedResults(conn: DbConn; params: TPagedParams) =
+proc showPagedResults(conn: DbConn; params: PagedParams) =
   ## Shows the contents of the database in pages of specified size.
   ##
   ## Hmm... I guess this is more of a debug proc which should be moved outside,
@@ -11,7 +10,6 @@ proc showPagedResults(conn: DbConn; params: TPagedParams) =
   var
     page = 0'i64
     rows = conn.getPagedTodos(params)
-
   while rows.len > 0:
     echo("page " & $page)
     for row in rows:
@@ -25,7 +23,6 @@ proc showPagedResults(conn: DbConn; params: TPagedParams) =
     else:
       break
 
-
 proc dumTest() =
   let conn = openDatabase("todo.sqlite3")
   try:
@@ -35,10 +32,8 @@ proc dumTest() =
       # Fill some dummy rows if there are not many entries yet.
       discard conn.addTodo(3, "Filler1")
       discard conn.addTodo(4, "Filler2")
-
     var todo = conn.addTodo(2, "Testing")
     echo("New todo added with id " & $todo.getId)
-
     # Try changing it and updating the database.
     var clonedTodo = conn.getTodo(todo.getId)[]
     assert(clonedTodo.text == todo.text, "Should be equal")
@@ -49,13 +44,11 @@ proc dumTest() =
       echo("Updated priority $1, done $2" % [$todo.priority, $todo.isDone])
     else:
       assert(false, "Uh oh, I wasn't expecting that!")
-
     # Verify our cloned copy is different but can be updated.
     assert(clonedTodo.text != todo.text, "Should be different")
     discard clonedTodo.update(conn)
     assert(clonedTodo.text == todo.text, "Should be equal")
-
-    var params: TPagedParams
+    var params: PagedParams
     params.initDefaults
     conn.showPagedResults(params)
     conn.deleteTodo(todo.getId)
@@ -66,7 +59,6 @@ proc dumTest() =
       echo("Later priority $1, done $2" % [$todo.priority, $todo.isDone])
     else:
       echo("Can't update object $1 from db!" % $todo.getId)
-
     # Try to list content in a different way.
     params.pageSize = 5
     params.priorityAscending = true
@@ -77,7 +69,6 @@ proc dumTest() =
     conn.close
     echo("Database closed")
 
-
 # Code that will be run only on the commandline.
 when isMainModule:
   dumTest()
diff --git a/examples/cross_todo/nim_commandline/nim.cfg b/examples/cross_todo/nim_commandline/nim.cfg
index 41c034430..6f0cb4a01 100644
--- a/examples/cross_todo/nim_commandline/nim.cfg
+++ b/examples/cross_todo/nim_commandline/nim.cfg
@@ -1,4 +1,4 @@
-# Nimrod configuration file.
+# Nim configuration file.
 # The file is used only to add the path of the backend to the compiler options.
 
 path="../nim_backend"
diff --git a/examples/cross_todo/nim_commandline/nimtodo.nim b/examples/cross_todo/nim_commandline/nimtodo.nim
index c8993b2c8..be5b3407b 100644
--- a/examples/cross_todo/nim_commandline/nimtodo.nim
+++ b/examples/cross_todo/nim_commandline/nimtodo.nim
@@ -18,8 +18,8 @@ Commands:
   -h, --help  shows this help
 
 List options (optional):
-  -p=+|-      Sorts list by ascending|desdencing priority. Default:desdencing.
-  -m=+|-      Sorts list by ascending|desdencing date. Default:desdencing.
+  -p=+|-      Sorts list by ascending|descending priority. Default:descending.
+  -m=+|-      Sorts list by ascending|descending date. Default:descending.
   -t          Show checked entries. By default they are not shown.
   -z          Hide unchecked entries. By default they are shown.
 
@@ -33,7 +33,7 @@ Examples:
 """
 
 type
-  TCommand = enum     # The possible types of commands
+  Command = enum     # The possible types of commands
     cmdAdd            # The user wants to add a new todo entry.
     cmdCheck          # User wants to check a todo entry.
     cmdUncheck        # User wants to uncheck a todo entry.
@@ -42,30 +42,27 @@ type
     cmdGenerate       # Add random rows to the database, for testing.
     cmdList           # User wants to list contents.
 
-  TParamConfig = object
+  ParamConfig = object
     # Structure containing the parsed options from the commandline.
-    command: TCommand         # Store the type of operation
+    command: Command         # Store the type of operation
     addPriority: int          # Only valid with cmdAdd, stores priority.
     addText: seq[string]      # Only valid with cmdAdd, stores todo text.
     todoId: int64             # The todo id for operations like check or delete.
-    listParams: TPagedParams  # Uses the backend structure directly for params.
+    listParams: PagedParams  # Uses the backend structure directly for params.
 
-
-proc initDefaults(params: var TParamConfig) =
+proc initDefaults(params: var ParamConfig) =
   ## Initialises defaults value in the structure.
   ##
   ## Most importantly we want to have an empty list for addText.
   params.listParams.initDefaults
   params.addText = @[]
 
-
 proc abort(message: string, value: int) =
   # Simple wrapper to abort also displaying the help to the user.
   stdout.write(USAGE)
   quit(message, value)
 
-
-template parseTodoIdAndSetCommand(newCommand: TCommand): stmt =
+template parseTodoIdAndSetCommand(newCommand: Command): untyped =
   ## Helper to parse a big todo identifier into todoId and set command.
   try:
     let numChars = val.parseBiggestInt(newId)
@@ -75,8 +72,7 @@ template parseTodoIdAndSetCommand(newCommand: TCommand): stmt =
   except OverflowError:
     raise newException(ValueError, "Value $1 too big" % val)
 
-
-template verifySingleCommand(actions: stmt): stmt =
+template verifySingleCommand(actions: typed): typed =
   ## Helper to make sure only one command has been specified so far.
   if specifiedCommand:
     abort("Only one command can be specified at a time! (extra:$1)" % [key], 2)
@@ -84,7 +80,6 @@ template verifySingleCommand(actions: stmt): stmt =
     actions
     specifiedCommand = true
 
-
 proc parsePlusMinus(val: string, debugText: string): bool =
   ## Helper to process a plus or minus character from the commandline.
   ##
@@ -100,11 +95,10 @@ proc parsePlusMinus(val: string, debugText: string): bool =
   else:
     abort("$1 parameter should be + or - but was '$2'." % [debugText, val], 4)
 
-
-proc parseCmdLine(): TParamConfig =
+proc parseCmdLine(): ParamConfig =
   ## Parses the commandline.
   ##
-  ## Returns a TParamConfig structure filled with the proper values or directly
+  ## Returns a ParamConfig structure filled with the proper values or directly
   ## calls quit() with the appropriate error message.
   var
     specifiedCommand = false
@@ -112,15 +106,12 @@ proc parseCmdLine(): TParamConfig =
     p = initOptParser()
     key, val: TaintedString
     newId: BiggestInt
-
   result.initDefaults
-
   try:
     while true:
       next(p)
       key = p.key
       val = p.val
-
       case p.kind
       of cmdArgument:
         if specifiedCommand and cmdAdd == result.command:
@@ -180,17 +171,13 @@ proc parseCmdLine(): TParamConfig =
         break
   except ValueError:
     abort("Invalid integer value '$1' for parameter '$2'." % [val, key], 7)
-
   if not specifiedCommand:
     abort("Didn't specify any command.", 8)
-
   if cmdAdd == result.command and result.addText.len < 1:
     abort("Used the add command, but provided no text/description.", 9)
-
   if usesListParams and cmdList != result.command:
     abort("Used list options, but didn't specify the list command.", 10)
 
-
 proc generateDatabaseRows(conn: DbConn) =
   ## Adds some rows to the database ignoring errors.
   discard conn.addTodo(1, "Watch another random youtube video")
@@ -208,19 +195,16 @@ proc generateDatabaseRows(conn: DbConn) =
   discard conn.addTodo(6, "Learn a functional programming language")
   echo("Generated some entries, they were added to your database.")
 
-
-proc listDatabaseContents(conn: DbConn; listParams: TPagedParams) =
+proc listDatabaseContents(conn: DbConn; listParams: PagedParams) =
   ## Dumps the database contents formatted to the standard output.
   ##
   ## Pass the list/filter parameters parsed from the commandline.
   var params = listParams
   params.pageSize = -1
-
   let todos = conn.getPagedTodos(params)
   if todos.len < 1:
     echo("Database empty")
     return
-
   echo("Todo id, is done, priority, last modification date, text:")
   # First detect how long should be our columns for formatting.
   var cols: array[0..2, int]
@@ -228,7 +212,6 @@ proc listDatabaseContents(conn: DbConn; listParams: TPagedParams) =
     cols[0] = max(cols[0], ($todo.getId).len)
     cols[1] = max(cols[1], ($todo.priority).len)
     cols[2] = max(cols[2], ($todo.getModificationDate).len)
-
   # Now dump all the rows using the calculated alignment sizes.
   for todo in todos:
     echo("$1 $2 $3, $4, $5" % [
@@ -238,7 +221,6 @@ proc listDatabaseContents(conn: DbConn; listParams: TPagedParams) =
       ($todo.getModificationDate).align(cols[2]),
       todo.text])
 
-
 proc deleteOneTodo(conn: DbConn; todoId: int64) =
   ## Deletes a single todo entry from the database.
   let numDeleted = conn.deleteTodo(todoId)
@@ -247,7 +229,6 @@ proc deleteOneTodo(conn: DbConn; todoId: int64) =
   else:
     quit("Couldn't delete todo id " & $todoId, 11)
 
-
 proc deleteAllTodos(conn: DbConn) =
   ## Deletes all the contents from the database.
   ##
@@ -256,43 +237,35 @@ proc deleteAllTodos(conn: DbConn) =
   ## ourselfves to the API exported by backend.
   var
     counter: int64
-    params: TPagedParams
-
+    params: PagedParams
   params.initDefaults
   params.pageSize = -1
   params.showUnchecked = true
   params.showChecked = true
-
   let todos = conn.getPagedTodos(params)
   for todo in todos:
     if conn.deleteTodo(todo.getId) > 0:
       counter += 1
     else:
       quit("Couldn't delete todo id " & $todo.getId, 12)
-
   echo("Deleted $1 todo entries from database." % $counter)
 
-
 proc setTodoCheck(conn: DbConn; todoId: int64; value: bool) =
   ## Changes the check state of a todo entry to the specified value.
   let
     newState = if value: "checked" else: "unchecked"
     todo = conn.getTodo(todoId)
-
   if todo == nil:
     quit("Can't modify todo id $1, its not in the database." % $todoId, 13)
-
   if todo[].isDone == value:
     echo("Todo id $1 was already set to $2." % [$todoId, newState])
     return
-
   todo[].isDone = value
   if todo[].save(conn):
     echo("Todo id $1 set to $2." % [$todoId, newState])
   else:
     quit("Error updating todo id $1 to $2." % [$todoId, newState])
 
-
 proc addTodo(conn: DbConn; priority: int; tokens: seq[string]) =
   ## Adds to the database a todo with the specified priority.
   ##
@@ -302,17 +275,14 @@ proc addTodo(conn: DbConn; priority: int; tokens: seq[string]) =
   echo("Created todo entry with id:$1 for priority $2 and text '$3'." % [
     $todo.getId, $todo.priority, todo.text])
 
-
 when isMainModule:
   ## Main entry point.
   let
     opt = parseCmdLine()
     dbPath = getConfigDir() / "nimtodo.sqlite3"
-
   if not dbPath.existsFile:
     createDir(getConfigDir())
     echo("No database found at $1, it will be created for you." % dbPath)
-
   let conn = openDatabase(dbPath)
   try:
     case opt.command
diff --git a/examples/cross_todo/nim_commandline/readme.txt b/examples/cross_todo/nim_commandline/readme.txt
index ca4b67521..7d68bbc8b 100644
--- a/examples/cross_todo/nim_commandline/readme.txt
+++ b/examples/cross_todo/nim_commandline/readme.txt
@@ -14,6 +14,6 @@ generation switch can be used to fill the database with some basic todo entries
 you can play with.
 
 Compilation is fairly easy despite having the source split in different
-directories. Thanks to the Nim.cfg file, which adds the ../Nim_backend
+directories. Thanks to the nim.cfg file, which adds the ../Nim_backend
 directory as a search path, you can compile and run the example just fine from
 the command line with 'nim c -r nimtodo.nim'.
diff --git a/examples/cross_todo/readme.txt b/examples/cross_todo/readme.txt
index 5be01e197..44e8c47aa 100644
--- a/examples/cross_todo/readme.txt
+++ b/examples/cross_todo/readme.txt
@@ -1,4 +1,4 @@
-The cross platform todo illustrates how to use Nim to create a backend
+This cross platform todo illustrates how to use Nim to create a backend
 called by different native user interfaces.
 
 This example builds on the knowledge learned from the cross_calculator example.
diff --git a/examples/keyval.nim b/examples/keyval.nim
index ae8cb8f08..a594c0fa8 100644
--- a/examples/keyval.nim
+++ b/examples/keyval.nim
@@ -3,7 +3,6 @@ import re
 
 for x in lines("myfile.txt"):
   if x =~ re"(\w+)=(.*)":
-    echo "Key: ", matches[0],
-         " Value: ", matches[1]
+    echo "Key: ", matches[0], " Value: ", matches[1]
 
 
diff --git a/examples/readme.txt b/examples/readme.txt
index dc3d3fb9b..176bc8239 100644
--- a/examples/readme.txt
+++ b/examples/readme.txt
@@ -1,4 +1,4 @@
-In this directory you will find several examples for how to use the Nimrod
+In this directory you will find several examples for how to use the Nim
 library.
 
 Copyright (c) 2004-2012 Andreas Rumpf.
diff --git a/examples/talk/dsl.nim b/examples/talk/dsl.nim
index 1034c99d4..2dde51790 100644
--- a/examples/talk/dsl.nim
+++ b/examples/talk/dsl.nim
@@ -1,20 +1,20 @@
 
 import strutils
 
-template html(name: expr, matter: stmt) {.immediate.} =
+template html(name, matter: untyped) =
   proc name(): string =
     result = "<html>"
     matter
     result.add("</html>")
 
-template nestedTag(tag: expr) {.immediate.} =
-  template tag(matter: stmt) {.immediate.} =
+template nestedTag(tag: untyped) =
+  template tag(matter: typed) =
     result.add("<" & astToStr(tag) & ">")
     matter
     result.add("</" & astToStr(tag) & ">")
 
-template simpleTag(tag: expr) {.immediate.} =
-  template tag(matter: expr) {.immediate.} =
+template simpleTag(tag: untyped) =
+  template tag(matter: untyped) =
     result.add("<$1>$2</$1>" % [astToStr(tag), matter])
 
 nestedTag body
diff --git a/examples/talk/formatoptimizer.nim b/examples/talk/formatoptimizer.nim
index db11d112d..104214e19 100644
--- a/examples/talk/formatoptimizer.nim
+++ b/examples/talk/formatoptimizer.nim
@@ -5,7 +5,7 @@ import macros
 proc invalidFormatString() =
   echo "invalidFormatString"
 
-template formatImpl(handleChar: expr) =
+template formatImpl(handleChar: untyped) =
   var i = 0
   while i < f.len:
     if f[i] == '$':
@@ -24,11 +24,11 @@ template formatImpl(handleChar: expr) =
       i += 1
 
 proc `%`*(f: string, a: openArray[string]): string =
-  template identity(x: expr): expr = x
+  template identity(x: untyped): untyped = x
   result = ""
   formatImpl(identity)
 
-macro optFormat{`%`(f, a)}(f: string{lit}, a: openArray[string]): expr =
+macro optFormat{`%`(f, a)}(f: string{lit}, a: openArray[string]): untyped =
   result = newNimNode(nnkBracket)
   #newCall("&")
   let f = f.strVal
diff --git a/examples/talk/quasiquote.nim b/examples/talk/quasiquote.nim
index df4003e6e..b3c7bb971 100644
--- a/examples/talk/quasiquote.nim
+++ b/examples/talk/quasiquote.nim
@@ -1,7 +1,7 @@
 
 import macros
 
-macro check(ex: expr): stmt =
+macro check(ex: untyped): typed =
   var info = ex.lineinfo
   var expString = ex.toStrLit
   result = quote do:
diff --git a/examples/talk/tags.nim b/examples/talk/tags.nim
index 12b9a08c3..8bf3450c9 100644
--- a/examples/talk/tags.nim
+++ b/examples/talk/tags.nim
@@ -1,8 +1,9 @@
 
-template htmlTag(tag: expr) {.immediate.} =
+template htmlTag(tag: untyped) =
   proc tag(): string = "<" & astToStr(tag) & ">"
 
 htmlTag(br)
 htmlTag(html)
 
 echo br()
+echo html()
\ No newline at end of file